[ML] 2. 머신러닝의 주요 4가지 알고리즘 (tistory.com)
예전에 간단하게나마 정리한바가 있지만, 공부를 하면서 헷갈리는 부분이 많아서 하나씩 세부적으로 정리해보고자 한다.
예전 게시글에서도 확인할 수 있지만 사이킷런으로 구현하는 머신러닝에서는 크게 6가지 기능이 있고
가장 핵심은 분류와 회귀모델이라고 할 수 있다.
먼저 분류 모델과 분류모델에서 사용하는 주요 알고리즘에 대해 알아보자.
1. 분류모델
지도학습의 대표적인 유형으로 feature와 label 값을 학습해 모델을 생성하고
생성된 모델에 새로운 데이터를 넣어 적절한 레이블 값을 예측하는 모델
2. 분류 알고리즘
1️⃣ 앙상블
2️⃣ 랜덤포레스트
3️⃣ 로지스틱회귀
4️⃣ 서포터 벡터 머신
5️⃣ 나이브 베이즈
6️⃣ 신경망
7️⃣ k-최근접 이웃 알고리즘
정형데이터의 분류에서 앙상블이 뛰어난 성능을 보이고 있어서 인기가 많기 때문에 앙상블 알고리즘을 중점적으로 다루고 나머지는 가볍게 살펴보도록 하겠다.
(참고로 정형데이터는 머신러닝을, 비정형데이터는 딥러닝을 주로 사용한다.)
3. 앙상블 알고리즘
앙상블 알고리즘은 약한 분류기들이 모여 voting을 통해 강력한 분류기를 구성하는 알고리즘이다.
위의 알고리즘을 여러개 섞어서 사용하는 것이며 여러 모델이 모여 있기 때문에 한 모델에서 예측이 빗나가더라도 다른 모델에서 보정이 가능하다는 장점이 있다.
앙상블의 학습 유형
- 보팅(하드보팅, 소프트보팅)
- 배깅 ex) RF
- 부스팅(Adaboost, gradient Boosting) ex) 래디언트 부스트, XGBoost, LightGBM
- 스태킹
(1) Voting
여러 종류의 알고리즘을 사용한 각각의 결과에 대해 투표를 통해 최종 결과를 예측하는 방식으로
투표 방식에는 하드보팅과 소프트 보팅이 있다.
1️⃣ 하드보팅: 다수결로 결정
모델1: 0.8
모델2: 0.7
모델3: 0.8
모델4: 0.5
=> 0.8이 2표로 0.8을 최종 예측 값으로 결정
2️⃣ 소프트 보팅: 모든 예측값의 평균을 이용
=> 평균 값인 0.7을 최종 예측 값으로 결정
(2) 배깅
같은 알고리즘에 대해 데이터 샘플을 다르게 두고 학습을 수행해 보팅을 진행하는 방식
(이때, 데이터는 비복원추출로 중복이 허용된다.)
예시) Random Forest
또한, bagging은 Bootstrap Aggregating의 줄임말로 배깅 = 부트스트랩 + 집계를 의미한다.
부트스트랩과 집계
부트스트랩은 각각의 분류기가 주어진 데이터 셋에서 랜덤하게 샘플링하여 새로운 데이터 셋을 만들어 내는 것이다.
랜덤 샘플로 생성된 여러 데이터 셋을 훈련 시킨 뒤(약학 분류기) 훈련 결과 voting을 진행하는데, 이때 voting이 바로 집계를 의미한다.
사진 출처: https://eunsour.tistory.com/58
위 그림에서도 확인할 수 있겠지만,
보팅과 배깅 둘 다 여러 개의 분류기를 사용하여 투표를 통해 최종 예측 결과를 결정하는 방식이고
보팅은 서로 다른 분류기를, 배깅은 서로 같은 분류기를 사용한다.
(상기 bagging 사진에서 DT 여러개가 모여있는데 이것이 바로 RF, 즉 RF는 DT의 앙상블 버전이라고 볼 수 있다.)
(3) 부스팅
여러 개의 알고리즘이 순차적으로 학습을 하되,
앞에 학습한 알고리즘 예측이 틀린 데이터에 대해 올바르게 예측할 수 있도록
다음번 알고리즘에 가중치를 부여하여 학습과 예측을 진행하는 방식
결과적으로 반복할 때마다 각 샘플의 중요도에 따라 다른 분류기가 생성되고
마지막 실행에는 지금까지 진행되었던 모든 iteration에서 생성된 모델의 결과를 voting하게 된다.
그리고 부스팅은 Adaptive Boosting과 Gradient Boosting(XGboost, LightGBM, catboost) 계열로 구분할 수 있는데
Adaptive Boosting과 Gradient Boosting을 제대로 공부하려면 좀 더 많은 시간이 필요할 것 같아서
본 포스팅에서는 부스팅 알고리즘에 두 계열이 있다는 정도만 알고 넘어가고 다른 포스팅에서 세부적으로 다뤄보도록 하겠다.
1️⃣ Adaptive Boosting
- 부스팅 앙상블의 초기 모델
2️⃣ Gradient Boosting
- Adaptive Boosting보다 조금 더 진보된 부스팅 앙상블 모델
(4) 스태킹
여러 가지 다른 모델의 예측 결과값을 다시 학습 데이터로 만든 다음
다른 모델(메타 모델)로 재학습시켜 결과를 예측하는 방식
출처: [ML] 스태킹(Stacking) 완벽 정리 (tistory.com)
배깅은 서로 같은 알고리즘을 사용하는 것, 스태킹은 서로 다른 알고리즘을 사용하는 것으로 정리할 수 있다.
4. 랜덤포레스트 알고리즘
[ML] 5. RandomForest (tistory.com)
랜덤포레스트는 이전에 포스팅한 적이 있어서 잠깐 간단하게 복습해보고 넘어가는 것으로 하겠다.
랜덤포레스트는 결정트리 알고리즘을 기반으로 하는 알고리즘으로 결정 트리의 쉽고 직관적인 장점을 그대로 가지고 있다.
(+ 부스팅 기반의 다양한 앙상블 알고리즘 역시 대부분 결정 트리 알고리즘을 기반 알고리즘으로 채택하고 있다. 다만, 트리기반의 앙상블 알고리즘의 단점을 꼽자면 하이퍼 파라미터가 매우 많고, 이로 인해 튜닝으로 인한 자원이 많이 소모된다는 것이다.)
랜덤포레스트는 배깅을 사용하는 앙상블 모형으로(DT의 앙상블 버전) 변수를 랜덤으로 선택하는 과정을 통해 개별 나무들의 상관성을 줄여 예측력을 향상시킨다.
5. 로지스틱 회귀 알고리즘
로지스틱 회귀는 일반적인 회귀랑은 다르다.
일반적으로 회귀는 어떤 값을 예측하는 것이지만, 로지스틱 회귀는 데이터가 어떤 범주에 속할 확률을 0에서 1 사이의 값으로 예측하고 그 확률에 따라 가능성이 더 높은 범주에 속하는 것으로 분류 해주는 지도 학습 알고리즘이다.
이름에 회귀가 들어간다고 해서 헷갈리지 말자!
또한 로지스틱 회귀는 선형회귀와도 차이점이 존재한다.
선형회귀는 두 변수 간의 관계를 선형(직선)으로 나타내서 변수를 예측한다. 하지만 로지스틱 회귀는 데이터가 어떤 범주에 속할 확률을 0과 1 사의 값으로 예측하는 이진분류이고, OvR과 같은 방식을 사용하면 멀티 클래스 분류도 가능하다.
시그모이드 함수?
데이터가 어떤 범주에 속할 확률(0~1)을 S자의 곡선형태로 그려준 것.
좀 더 세부적으로 공부하고 싶다면 소프트 맥스 등 활성화 함수에 대해서 공부해보면 좋을 것 같다.
6. 서포터 벡터 머신(SVM)
SVM 알고리즘은 두 개의 그룹을 분리하는 알고리즘으로
데이터들과의 거리가 가장 먼 초평면을 선택하여 분리하는 방식이다.
SVM 을 이해하기 위해서는 초평면과 마진에 대해 알아야 한다.
초평면이란?
SVM은 분류를 위한 기준선을 정의하는 모델이라고 할 수 있고
분류되지 않은 새로운 점이 나타나면 어느 쪽에 속하는지 확을하기 위해 결정 경계를 정한다.
데이터에 2개의 피쳐만 있다면, 결정경계는 선의 형태가 되고
데이터에 3개의 피쳐가 있다면, 결정경계는 평면의 형태가 된다.
피쳐가 늘어나면 속성의 개수가 늘어나게 될 것이고 이에 따라 결정결계도 단순한 평면이 아닌 고차원이 되는데 이를 초평면이라고 한다.
마진이란?
margin은 초평면과 가장 가까이 있는 데이터와의 거리를 의미한다.
정리하면, 마진을 최대로 만드는 직선을 계산하여 데이터를 분류하는 방법을 SVM이라고 할 수 있다.
7. 나이브 베이즈 알고리즘
베이즈 정리에 기반한 통계적 분류 기법이다.
장점
빠르고 정확하다.
대용량 데이터에 대해서도 높은 정확도와 빠른 속도를 보인다.
단점
feature끼리 서로 독립이어야 한다.
single feature의 나이브 베이즈 분류기 작동 순서
1) 지정된 클래스에 대한 사전 확률 계산
2) 각 클래스의 각 속성으로 우도 확률 찾기
3) 이 값을 bayes 공식에 넣고 사후 확률 계산
4) 입력이 더 높은 확률 클래스에 속한다고 가정할 때 어떤 클래스가 더 높은 확률을 갖는지 확인
출처: Naive Bayes Classifier Tutorial: with Python Scikit-learn | DataCamp
[참고]
앙상블 (Ensemble)의 기본 개념 - tyami’s study blog
[Chapter 4. 분류] 앙상블 학습 :: 데이터분석, 머신러닝 정리 노트 (tistory.com)
분류 - 앙상블 (Ensemble) (1) — 데이터를 요리조리 (tistory.com)
24. 랜덤 포레스트(Random Forest)에 대해서 알아보자 (tistory.com)
[머신러닝]앙상블(Ensemble) - Bagging, RandomForest, Boosting, Stacking 이론 (tistory.com)
부스팅 앙상블 (Boosting Ensemble) 1: AdaBoost - tyami’s study blog
로지스틱 회귀(Logistic Regression) 기초 정리 (tistory.com)
[OpenCV 머신러닝] 서포트 벡터 머신 알고리즘이란? (tistory.com)
Naive Bayes Classifier Tutorial: with Python Scikit-learn | DataCamp
'머신러닝과 딥러닝 > ML 개념정리' 카테고리의 다른 글
[ML] 26. (AutoML) pycaret 개요, pycaret 주요 function (1) | 2022.11.17 |
---|---|
[ML] 25. AutoML 개요 (0) | 2022.11.14 |
[ML] 21. 데이터 전처리 (10) - 파생변수 만들기 (0) | 2022.11.14 |
[ML] 20. 데이터 전처리 (9) - 인코딩(Ordinary-Encoding, label-Encoding, One-hot-Encoding) (0) | 2022.11.14 |
[ML] 19. 데이터 전처리(8) - 이산화(Discretisation / Equal with binining, Equal frequency bining) (0) | 2022.11.14 |
댓글