Skip to content
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 등
- 각각의 기법에 따라 차원 축소 후의 결과가 다르게 나타남
___
44 changes: 44 additions & 0 deletions week7/1팀_임세훈.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Ch.08 이미지를 위한 인공 신경망
## 1. 합성곱 신경망<span style = "color: grey"> Convolutional Layer</span>
### 기존의 신경망
- 처음에 가중치와 절편을 랜덤하게 초기화한다
- 에포트를 반복하며 경사 하강법 알고리즘을 사용한다
- 손실이 작은 최적의 가중치와 절편을 찾는다
- 밀집층의 뉴런만큼 출력이 나온다

### 합성곱 신경망
- <span style = "background-color: #fff591"> 입력 데이터 일부</span>에 가중치를 곱한다
- 이 가중치를 한칸씩 아래로 이동해가면서 출력을 만든다
- <span style = "background-color: #fff591"> 밀집층의 뉴런 개수 - 가중치 개수 + 1개</span>만큼 출력이 나온다
- <span style = "background-color: #fff591">데이터가 1차원이 아니어도 그대로 처리 가능</span>, 이때 필터는 데이터의 차원을 따른다

### 용어
- **필터/커널** : 신경망에서의 뉴런과 같은 의미
- **특성 맵** : 합성곱 계산을 통해 얻은 출력

### 패딩과 스트라이드
- **패딩** : 입력 배열의 주위를 가상의 원소로 채우는 것
- **세임 패딩** : 가상의 값이기 때문에 모두 0으로 채우는 것
- **밸리드 패딩** : 패딩 없이 순수한 입력 배열에서만 합성곱을 하는 것
- 패딩을 하는 이유 : 모서리 값이 덜 사용되는 것을 줄이기 위해서
- **스트라이드** : 커널이 이동하는 거리(기본값 : 1)
- 스트라이드의 값을 크게 하면 특성 맵의 크기가 더 작아진다.

### 풀링
- **풀링** : 합성곱 층에서 특성 맵의 크기를 줄이는 것
- 풀링을 하는 이유 : 성능 증가(경험적)
- 풀링에는 가중치가 없다
- **최대 풀링** : 커널에서 가장 큰 값을 고르는 것
- **평균 풀링** : 커널의 평균값을 계산하는 것
___
## 2. 합성곱 신경망의 시각화

### 가중치 시각화
- 가중치의 역할 : 입력 이미지의 어떤 특징을 크게 두드러지게 하는 것
- ex) 가중치가 위로 볼록하게 큰 값을 가진 경우 : 위로 볼록한 형태에 대한 출력값이 높게 나온다
- 각 layer마다 weights 객체에 가중치를 저장

### 특성 맵 시각화
- conv_acti.predict 함수가 출력하는 값을 matplotlib을 이용하여 시각화
- 각각의 필터에 대해서 특정 필터가 감지하는 형태를 시각화할 수 있음
- 합성곱 층을 많이 쌓을수록 직관적으로 이해하기 어려운 plot이 나옴(추상적인 정보 학습)