k-최근접 이웃(k-Nearest Neighbors; kNN)
- 모델 구조


위에 ? 샘플은 이웃 세 개(k=3)로 설정되어 있고 초록색이 더 많으니까 초록색으로 판단을 할 것이고, 밑에 ? 샘플은 세 개의 이웃(k=3) 가운데 파란색이 더 많으니까 파란색이라고 판단할 것이다.

왼쪽 ? 샘플은 이웃 세 개(k=3)로 설정되어 있고 이웃의 클래스 값들이 1, 2, 3 이니까 이들의 평균인 2로 클래스 값을 예측 할 것이고, 오른쪽 ? 샘플은 세 개의 이웃(k=3) 가운데 클래스 값들이 8, 8, 9 이니까 이들의 평균으로 클래스 값을 예측 할 것이다.
- 주요 파라미터와 설정 방법
▶이웃 수(k):홀수로 설정하며, 특징 수 대비 샘플 수가 적은 경우에는 k를 작게 설정하는 것이 바람직하다.
->홀수로 설정한 이유는 동점이 나오는 것을 방지하기 위해서이다. 예를들어 분류의 경우 이웃이 4개일때 클래스1이 2개, 클래스2가 2개일때 동점이 발생함으로써 분류를 할 수가 없다.
▶거리 및 유사도 척도
모든 변수가 서열형 혹은 정수인 경우:맨하탄 거리
방향성이 중요한 경우(예:상품 추천 시스템):코사인 유사도
모든 변수가 이진형이면서 희소하지 않은 경우:매칭 유사도
모든 변수가 이진형이면서 희소한 경우:자카드 유사도
그외:유클리디안 거리
- 특징 추출이 어려우나 유사도 및 거리 계산만 가능한 경우(예:시퀀스 데이터)에 주로 활용한다.
- 모든 특징이 연속형이고 샘플 수가 많지 않은 경우에 좋은 성능을 보인다고 알려져 있다.
- (거리 기반으로)특징 간 스케일 차이에 크게 영향을 받아, 스케일링이 반드시 필요하다(코사인 유사도는 방향성을 보는 것이기 때문에 코사인 유사도를 사용할 경우 스케일링을 할 필요가 없다.)
- 거리 및 유사도 계산에 문제가 없다면, 별다른 특징 변환이 필요하지 않다.
의사결정나무(Decision tree)

- 예측 과정을 잘 설명할 수 있다는 장점(설명력이 높기 때문에)덕분에 많은 프로젝트에서 활용한다.
예시1) A 보험사: 고객의 이탈 여부를 예측하고, 그 원인을 파악해라
->이탈 여부를 잘 맞추는 것 보다 그 고객이 왜 이탈하는지 설명이 필요하기 때문에 즉, 설명이 필요한 과제에서는 가장 먼저 생각할수 있는 모델이 Decision tree이다.
- 의사결정나무의 가장 큰 단점은 선형 분류기라는 한계로 예측력이 좋은 편에 속하지 못한다. 하지만 최근 각광받고 있는 앙상블 모델(예:XGBoost, LightGBM, RandomForest 등)의 기본 모형으로 사용됨으로써 좋은 예측력을 보인다. 이런 앙상블 모델은 예측력은 좋을지 모르지만 설명력이 떨어진다는 문제가 있다.
- 주요 파라미터
▶max_depth: 최대 깊이로 그 크기가 클수록 모델이 복잡해진다.
▶min_samples_leaf:잎 노드(끝마디)에 있어야 하는 최소 샘플 수로, 그 크기가 작을수록 모델이 복잡해진다.
->복잡도에 영향을 주는 파라미터가 2개 이상인 경우에는 반드시 조정을 할 때 둘을 같이 고려해야한다.
나이브 베이즈(Naive Bayes)
- 모델 구조
베이즈 정리를 사용하고 특징 간 독립을 가정하여 사후 확률 Pr(ylx)을 계산한다.

가능도 Pr(xj l y)은 조건부 분포를 가정하여 추정한다.
-이진형 변수 : 베르누이 분포
-범주형 변수 : 다항 분포
-연속형 변수 : 가우시안 분포
- 모델 특성
1. 특징 간 독립이라는 것 자체가 통계학에서 많이 쓰이는 가정임에도 불구하고 굉장히 비현실적이므로 일반적으로 높은 성능을 기대하기 어렵다.
2. 연속형 변수에 대해서 베르누이 분포를 가정 혹은 이진형 변수에 대해서 가우시안 분포를 가정했다 라고 하면 당연히 좋은 결과를 기대하기 어렵다. 즉, 설정한 분포에 따라 성능 차이가 크므로 특징의 타입이 서로 같은 경우에 사용하기 바람직하다. 예를 들어 이진형 변수와 연속형 변수가 섞여있는 경우에는 어떤 분포를 가정하더라도 좋은 결과를 내기 어렵다.
->나이브 베이즈는 특징의 타입이 전부 같은 경우에 사용하는게 바람직하다.
3. 특징이 매우 많고 그 타입이 같은 문제(예:이진형 텍스트 분류)에 주로 사용된다.
서포트 벡터 머신(Support Vector Machine; SVM)
- 모델 구조

서포트 벡터 머신의 구조는 일반 선형 분류기랑 완벽히 같다.
- 최적화 모델

목적식에서 왼쪽에 있는 llwll(가중치 벡터의 2차 norm)이 모델의 마진, 크사이i 부분이 모델의 오차를 나타낸다.
# norm은 벡터의 길이나 크기를 측정하는 방법이다.
제약식은 모든 샘플들을 잘 분류하는데 그 때 오차로 크사이i까지 봐주겠다라고 해석한다.
(목적식과 제약식 부분 이해가 잘안가네...)
- 오차를 최소화하면서 동시에 마진을 최대화하는 분류, 예측 모델로 커널 트릭을 활용하여 저차원 공간을 고차원 공간으로 매핑한다. 이 때 매핑시키는 이유는 선형 분류가 불가능한 경우가 훨씬 많기 때문에 선형분류가 가능하게 하기 위해서이다.
- 마진의 개념을 회귀에 활용한 모델을 서포트 벡터 회귀(Support Vector Regression)이라 한다.
- 주요 파라미터
▶kernel: 통상적으로 이진 변수가 많으면 linear 커널이, 연속 변수가 많으면 rbf 커널이 잘 맞는다고 알려져 있다.
->linear 커널은 기본적으로 두 특징간 곱을 커널에 반영시키고 rbf 커널은 두 특징간 차이를 커널에 반영시킨다. 그러면 이진 변수 같은 경우 두 변수의 곱이 의미있는 경우가 많지만 차이는 유의한 경우가 별로 없다.(연속 변수는 이진 변수와 반대)
▶C: 오차 패널티에 대한 계수로, 이 값이 작을수록 마진 최대화에 클수록 학습 오차 최소화에 신경을 쓰며, 보통 10ⁿ, 2ⁿ 형태로 튜닝한다.
->목적식에서 C가 작으면 작을수록 모델의 마진(llwll)을 신경쓰고 C가 크면 클수록 모델의 오차(크사이i 부분)에 신경을 쓴다.(오차 패널티가 작으면 오차에 대해서 관대하게 생각하니 모델의 마진에 신경을 쓴다고 생각하고 오차 패널티가 크면 오차에 대해 관대하게 생각 안하니 오차에 신경을 쓴다라고 생각, 하드마진/소프트마진을 설정할 때 씀)
▶γ(감마): rbf 커널의 파라미터로, 크면 클수록 데이터의 모양을 잘 잡아내지만 오차가 커질 위험이 있으며, C가 증가하면 γ도 증가하게 튜닝하는 것이 일반적이다.
- 파라미터 튜닝이 까다로운 모델이지만, 튜닝만 잘하면 좋은 성능을 보장하는 모델이다.
신경망
- 모델 구조

입력 노드는 입력층에 있는 노드들로 입력 값을 받는 역할을 수행한다.
은닉 노드는 은닉층에 있는 노드, 출력 노드는 출력층에 있는 노드이다.
H1을 보면 I0와 I0에 부여된 가중치가 곱해서 값이 들어온다. (마찬가지로 I1, ..., Id+1)
이렇게 전달 받은 값들이 합해진다. 그 후 활성 함수를 통해서 출력을 낸다.
- 초기 가중치에 크게 영향을 받는 모델로, random_state와 max_iter 값을 잘 조정해야한다.
- 은닉 노드가 하나 추가되면 그에 따라 하나 이상의 가중치가 추가되어, 복잡도가 크게 증가할 수 있다.
- 모든 특징 타입이 연속형인 경우에 성능이 잘 나오는 것으로 알려져 있으며, 은닉층 구조에 따른 복잡도 조절이 파라미터 튜닝에서 고려해야 할 가장 중요한 요소이다.
- 최근 딥러닝의 발전으로 크게 주목받는 모델이지만, 특정 주제(예:시계열 예측, 이미지 분류, 객체 탐지 등)를 제외하고는 깊은 층의 신경망은 과적합으로 인한 성능 이슈가 자주 발생한다. 즉, 특정 도메인(시계열 예측, 이미지 분류, 객체 탐지 등)의 문제를 제외하면은 깊은 층의 신경망은 좋은 모델이라고 보기 어렵다.
트리 기반의 앙상블 모델
최근 의사결정나무를 기본 모형으로 하는 앙상블 모형이 캐글 등에서 자주 사용되며, 좋은 성능을 보인다.
- 랜덤 포레스트: 배깅(bagging) 방식으로 여러 트리를 학습하여 결합한 모델
- XGboost & LightGBM: 부스팅 방식으로 여러 트리를 순차적으로 학습하여 결합한 모델
- 랜덤 포레스트를 사용할 때는 트리의 개수와 나무의 최대 깊이를 조정해야 하며, XGboost와 LightGBM을 사용할 때는 트리의 개수, 나무의 최대 깊이, 학습률을 조정해야 한다.
▶트리의 개수: 통상적으로 트리의 개수가 많으면 많을수록 좋은 성능을 내지만, 어느 수준 이상에서는 거의 큰 차이를 보이지 않는다.(계산 시간 측면에서 조정해야하는 파라미터)
▶나무의 최대 깊이: 4이하로 설정해주는 것이 과적합을 피할 수 있어 바람직하다.
▶학습률: 이 값은 작으면 작을수록 과소적합 위험이 있으며, 크면 클수록 과적합 위험이 있다. 통상적으로 0.1, 0.05로 주로 설정을 한다.
오늘은 각 모델들을 간단하게 알아보았다. 각 모델들을 학술적으로 공부하게되면 수학적으로 난이도가 있기 때문에 너무 어렵게 느껴진다. 각 모델들을 교재와 함께 리마인드를 해야겠다.
'데이터 전처리 > 지도학습 주요 모델 및 개념' 카테고리의 다른 글
| 지도학습 모델 및 파라미터 선택(데이터 크기)(맹신하면 안되고 참고만 하기) (0) | 2022.12.09 |
|---|---|
| 지도학습 모델 및 파라미터 선택(그리드 서치) (0) | 2022.12.08 |
| 주요 모델의 구조 및 특성(1) (0) | 2022.12.06 |
| 모델 개발 프로세스 (0) | 2022.12.05 |
| 지도학습 개요 (0) | 2022.12.05 |





















