HeYStRanGeR
article thumbnail

(23.03.18)

이번에 정리한 supervised learning 모델은

k-nn, SVM, decision tree, ensemble, random forest이다.

 

SVM 관련 코드 구현 ><

https://github.com/gompaang/machine_learning_practice/blob/main/code/support_vector_machine.ipynb

 

GitHub - gompaang/machine_learning_practice

Contribute to gompaang/machine_learning_practice development by creating an account on GitHub.

github.com


 

K-nn

- classification을 수행하는 것으로, supervised learning 모델 중 하나이다. 주어진 데이터들의 label을 알고 있는 상태에서 진행된다.

- 예측하고자 하는 데이터가 들어왔을 때, 해당 데이터 근처의 K개의 neighbor을 파악하여 어떤 label에 할당할지 정한다. k가 짝수가 될 경우에는 또 다른 결정 문제가 발생하게 되어 k는 주로 홀수로 설정한다.

 

 

 

SVM (support vector machine)

- 두 데이터 집합을 나누는 hyperplane을 찾는 방법으로 supervised learning 모델 중 하나이다.

- margin: hyperplane과 가장 가까운 data 사이의 거리 (폭)

==> svm의 goal: margin이 가장 큰 hyperplane 찾기

 

1. hard margin svm: 어떠한 data도 margin 내에 들어오지 않도록 하는 경우

margin 내의 데이터가 엄격하게 제한되기 때문에 small noise에도 민감하다. 

 

2. soft margin svm: 일부 data는 margin 내에 들어오도록 허용하는 경우

이때는 margin내에 들어가는 data의 수를 제어하는 변수가 필요한데, 이를 slack이라고 한다.

 

 

 

 

decision tree (결정트리)

- classification과 regression이 모두 가능한 supervised learning 모델이다.

- yes/no, True/False 질문을 통해 트리를 구성하고 최종 결정을 내린다.

- 가장 처음의 node를 root node, 중간 node를 intermediate node, 마지막 node를 leaf node라고 한다. 

- 그런데, decision tree를 지나치게 깊게 생성하다보면, overfitting 되는 문제가 발생한다. 이를 해결하고자 prunning(가지치기) 기법을 사용하기도 한다. tree의 최대 깊이, terminal node의 최대 개수, 한 node에 들어가는 최소 데이터 수 등등의 방법이 있다. 

 

decision tree에서 어떤 속성을 기준으로 두 그룹으로 나눌 텐데, 그 속성을 무엇으로 하느냐가 좋은 예측을 할 수 있도록 할 것이다.

그 속성을 정하는 기준에 대해 2가지 방법이 있다.

 

1. ID3 (정보이득 기준): 데이터를 어떤 속성에 대해서 두 그룹으로 나누었을 때, 정보이득이 최대가 되도록하는 속성을 찾는 방법

- 정보이득: 특정 속성에 따라 데이터를 나누었을 때 줄어드는 엔트로피 

= (기존 정보량) - (분할 후 정보량)

- 엔트로피: 정보량의 측정도 -> 엔트로피가 클수록 많은 정보가 담긴 것.

 

2. CART (지니불순도 기준): 데이터를 어떤 속성에 대해서 두 그룹을 나누었을 때, 지니불순도가 최소가 되도록하는 속성을 찾는 방법

 

 

 

 

 

Ensemble

- 여러 개의 학습 모델이 예측한 결과를 다수결을 통해 합치는 방법

 

1. bagging: bootstrap aggregation 

- bootstrap (랜덤 추출) + aggregation (결과 다수결로 정하기)

- 이미 선택된 data가 다시 학습에 사용될 수 있다. 전체 data set에서 매번 랜덤하게 training set 추출한다.

- overfitting 발생 가능성은 낮다.

 

2. boosting

- bagging에서 개선되었다.

- 이전 모델 결과를 반영해서 잘 예측된 데이터의 비율을 높여 더 집중적으로 학습하는 방법

- 순차적으로 학습을 진행한다. (첫번째 모델 결과를 반영하여 두번째..., 두번째 모델 결과를 반영하여 세번째...)

- 예측 성능은 좋지만, overfitting 발생할 확률이 높고, 속도가 느리다.

 

 

 

 

 

Random Forest

- bagging을 적용한 decision tree의 ensemble !!

- 전체 data set에서 중복을 허용하여 랜덤하게 training set을 추출한다. decision tree를 통해 예측한 결과를 ensemble - bagging 기법을 적용하여 합한다. 

---> decision tree의 overfitting 문제를 해결하고자 하는 방법이다. : 몇몇 decision tree가 잘못 예측하더라도 ensemble - bagging 기법을 적용하면, 해당 오차가 상대적으로 무시되는 경향이 있다. 

+++ random forest 기법을 dataset이 아니라 feature에도 적용할 수 있다. feature 들을 랜덤하게 선택하여 학습하고 예측한 뒤, 이들 중에서 정보이득이 가장 높게 나오는 feature들만 선택하면 된다. 

 

 

 

 

728x90
profile

HeYStRanGeR

@HeYStRanGeR

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!