Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[5주차 과제 제출]1팀 임세훈 #65

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 82 additions & 0 deletions week3/6팀_임세훈.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# 트리 알고리즘
___
## 결정 트리
> 결정 트리란?

![](https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwlH1u%2FbtqwWZI9Xen%2FkFJDjGSFJAPxhyatC3Xhs0%2Fimg.png)

- 조건문에 대한 참과 거짓으로 데이터를 판별
- 조건을 확인할 수 있기 때문에 직관적
- 조건에 따라 데이터를 분류하기 때문에 회귀보다는 분류 문제에 적합
- 탐욕 알고리즘의 일종

>로지스틱 회귀와 다른 점

|로지스틱 회귀 | 결정 트리|
| :--:| :--: |
|선형 | 비선형 |
|데이터가 특정 범주에 속할 확률 확인|데이터가 특정 범주에 속하는 이유 확인|
| | |

> 루트 노드와 리프 노드

- 노드 : 결정 트리를 구성하는 핵심 요소. 데이터의 특서엥 대한 테스트 표현

- 루트 노드 : 결정 트리의 맨 위에 있는 노드
- 리프 노드 : 결정 트리의 맨 아래 끝에 달린 노드

> 노드를 이루는 구성 요소

- 테스트 조건 : 훈련 데이터에 대한 테스트를 표현하는 요소
- gini : 데이터가 얼마나 섞여있는지를 표현하는 요소(불순도)
- samples : 총 샘플의 수를 표현하는 요소
- value : 각 클래스 별의 샘플 수를 보여주는 요소

> 불순도
- Criterion 매개변수에서 데이터의 분할 기준을 결정하는 값
- 기본값은 gini, 엔트로피와 같은 다른 불순도도 존재
- gini = 1-((음성 클래스 비율)^2 + (양성 클래스 비율)^2)
- 부모 노드와 자식 노드의 불순도 차를 크게 만드는 것이 좋음(정보 이득)
- 정보 이득 : 부모와 자식 노드 사이의 불순도 차이

> 가지치기
- max_depth : 트리의 최대 깊이를 조절하는 하이퍼파라미터
- scikitlearn에서는 GridSearchCV()를 통해 자동으로 하이퍼파라미터를 탐색
- 최대 깊이가 커질수록 정확도가 높아지지만 너무 커지면 과대적합이 발생

___
## 교차 검증과 그리드 서치

>Validation set(검증 세트) & Cross Validation(교차 검증)
- 기존의 훈련 세트를 한번 더 나누어서 과적합 문제를 방지
- 검증 세트를 떼어내고 교차 검증을 하면서 안정적인 검증 점수를 얻음
- k - 폴드 교차 검증 : 훈련 세트를 k개로 나누어서 검증 세트를 떼어내고 평가하는 과정을 반복


___
## 트리의 앙상블
>RandomForest
- 랜덤하게 결정 트리를 형성해 여러 개의 결정 트리로 숲을 이루는 방식
- 각 결정 트리의 예측으로부터 최종 예측값을 도출
- 부트스트랩 샘플을 이용
- 부트스트랩 : 각각의 트리를 학습시키기 위해 학습 데이터를 중복을 허용하여 랜덤하게 뽑는 것

>ExtraTree
- Randomforest와 동일하게 작용하지만 샘플을 뽑는 방식에서 차별점을 둠
- 무작위 분할 실행
- 앙상블의 다양성을 높이고, 과대적합을 방지하는 효과

> Gradient Boosting
- 깊이가 낮은 트리 여러개를 사용
- 과대적합 방지, 일반화 성능 구현
- 경사 하강법과 유사한 과정
- max_depth 값을 점차 줄여나가며 이동
- 분류 문제는 로지스틱 손실 함수, 회귀 문제는 평균 제곱 오차 함수를 사용
- 성능이 좋지만 속도가 느리다는 단점

> Histogram-based Gradient Boosting
- Gradient Boosting + Histogram
- 입력 특성을 256개의 구간으로 나눔
- 이중 하나는 누락된 값을 위하여 사용(누락된 값 전처리할 필요 X)
- Gradient Boosting에서 속도/성능 개선
- 머신러닝 알고리즘 중 가장 인기가 높음
78 changes: 78 additions & 0 deletions week5/1팀_임세훈.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# Ch.06 비지도 학습
## 1. 비지도 학습<span style = "color: grey"> Unsupervised learning</span>
### 비지도 학습이란?
- 결과정보가 없는 데이터들에 대해 특정 패턴을 찾는 것
- 데이터의 잠재 구조, 계층 구조 찾기
- 숨겨진 사용자 집단 찾기
- 사용 패턴 찾기

### 비지도 학습의 대상
1. 군집화 <span style = "color: grey"> Clustering</span>
2. 밀도 추정<span style = "color: grey"> Density estimation</span>
3. 차원 축소<span style = "color: grey"> Dementionality reduction</span>
___
## 2. k-평균 알고리즘 <span style = "color: grey"> k-Mean Clustering Algorithm</span>

### 원리
1. 센트로이드 랜덤 선정
2. 샘플에 레이블을 할당하고 센트로이드 업데이트
3. 센트로이드 변화가 없을 때까지 2를 반복

### 업데이트 방식
- inertia
- 샘플과 센트로이드 가이의 거리를 측정하여 모델의 대략적인 성능 확인
- 특정 클러스터 개수에서 inertia 급격하게 감소

### 최적의 클러스터 개수 찾기
- inertia가 급격하게 감소하는 지점의 클러스터 개수 찾기
- 실루엣 score가 1에 가까운 클러스터 개수 찾기

### 문제점
- 변동성 문제
- 센트로이드의 초기값에 따라서 결과가 달라질 수 있음
- Outlier에 예민
- Outlier 하나하나에 센트로이드가 민감하게 반응
- 다양한 모양의 클러스터에 취약
- 거리만을 측정하여 센트로이드 값을 업데이트하기 때문
___
## 3. 차원 축소 <span style = "color: grey">Demensionally Reduction</span>

### 고차원 데이터의 문제점
- 계산 복잡성 증가
- 노이즈 발생 가능성 증가
- 변수들의 상관관계가 많을 수록 모델 성능 감소

### 해결책
- 차원 축소
- 저차원에서도 데이터를 잘 설명하는 변수들만 사용
___
## 4. PCA <span style = "color: grey">Principal Component Analysis</span>

### 원리
- 원본 데이터의 분산을 보존하는 수직인 기저 집합 찾기
- 데이터가 Projection된 이후에도 데이터의 분산 보존
- 차원 축소 이후 데이터의 분산이 큰 방향으로 진행
- 공분산
- 어떤 변수의 증감에 따라 다른 변수가 따라가는 정도를 의미
- 이러한 관계를 수치적으로 표현

### 과정
1. Data Centering
- 데이터의 중심을 평균값으로 조정한다.
(이후 공분산을 계산할 때 유용)
2. 최적화 문제 계산
- 벡터를 기저에 투영시켰을 때의 공분산을 계산
- 공분산이 큰 쪽으로 진행
3. Lagrangian multiplier
- Lagrangian multiplier을 이용하여 Eigenvectors와 Eigenvalues를 구한다.
4. 적용
- Eigenvectors, Eigenvalues를 통해 lambda값을 계산(lambda값에 따라 원 데이터의 분산이 잘 보존되는지 알 수 있음)

### 데이터 재구성
- 압축된 데이터셋에 PCA변환을 반대로 적용하면 원래 차원으로 되돌릴 수 있음
- 이 경우 원본 데이터와의 차이(재구성 오차)가 발생

### PCA 이외의 차원 축소 기법
- Isomap, t-SNE, MDS 등
- 각각의 기법에 따라 차원 축소 후의 결과가 다르게 나타남
___