본문 바로가기

기타

[Sklearn] 분류 알고리즘 정리

파머완 참고

결정트리(Decision Tree)

  • 데이터에 있는  규칙을 학습을 통해 찾아내 트리 기반의 분류 규칙을 만든다. 최종적으로 만들어진 리프 노드가 클래스 값을 가지며, 예측할 데이터는 도달한 마지막 노드의 값으로 분류된다.
  • 정보 균일도가 높은 데이터 세트를 선택(== 이득이 높음 == 엔트로피가 낮음 == 지니 계수가 낮음)
  • 데이터 전처리 작업이 필요없다.
  • 과적합으로 정확도가 떨어져 성능 튜닝이 필요하다(max_depth 혹은 min_samples_leaf 조절)
  • 주요 파라미터 : criteron(gini/entropy, 균일도 계산 방법), max_depth(최대 트리 높이), min_samples_leaf 등
  • 내장된 feature_importance() 함수로 feature의 중요도를 확인할 수 있다.
dt_clf = DecisionTreeClassifier(min_samples_leaf=6, random_state=156).fit(X_features, y_labels)

https://continuous-development.tistory.com/entry/MLDL-DecisionTree%EC%9D%98-hyper-parameter%EC%9D%98-%EC%9A%94%EC%86%8C-%EC%84%A4%EB%AA%85

 

[ML/DL] DecisionTree 구현 및 hyper parameter 설정

의사결정 트리(DecisionTree) 규칙을 학습을 통해 분류 규칙을 만드는 알고리즘 / 데이터의 어떤 기준을 바탕으로 규칙을 만드느냐가 성능을 결정하는 중요한 요소이다. hyper parameter란? 기계 학습에

continuous-development.tistory.com

  • 트리 기반 알고리즘들은 대부분 결정 트리의 주요 파라미터 사용이 가능하다.
    • RandomForest, GBM, XGBoost, LightGBM 등..

 

 

나이브 베이즈(Naive Bayes)

  • feature 끼리 서로 독립이며, 동등한 중요도라는 강한 조건이 필요하다.
  • 데이터가 각 클래스에 속할 확률을 계산하는 조건부 확률 기반 분류이다. 
  • 변수에 따라 범주형(CategicalNB)/빈도수(MultinomialNB)/연속형(GaussianNB) 등으로 나뉜다.
  • 주요 파라미터 : alpha(Laplace Smoothing, 모델의 복잡도 조절)

https://zephyrus1111.tistory.com/230

 

[Scikit-Learn] 8. 나이브 베이즈(Naive Bayes) 분류기 학습하기(feat. GaussianNB, CategoricalNB, MultinomialNB)

이번 포스팅에서는 Scikit-Learn에서 나이브 베이즈 분류기(Naive Bayes Classifier)를 학습하는 방법에 대해서 알아본다. 나이브 베이즈 분류기(Naive Bayes Classifier)는 설명 변수가 범주형, 빈도수 그리고

zephyrus1111.tistory.com

 

 

로지스틱 회귀(Logistic Regression)

  • 회귀로 연속적인 결과를 sigmoid 함수로 표준화 한 후, 특정 값을 기준으로 분리한다.
  • 일반적이고 효과적인 분류 알고리즘, 범주형 자료 분류에 사용
  • 주요 파라미터 : solver(최적화 문제를 풀기위한 알고리즘 선택. 즉, 비용 또는 손실을 최소화하는 최상의 가중치 찾기)
    • solver는 크게 뉴튼 랩슨과 경사하강법으로 나뉜다. 지원 패널티와 데이터 셋에 따라 적절하게 선택하기

https://blog.naver.com/PostView.nhn?blogId=bnormal16&logNo=222070548262 

 

[sklearn] 파이썬 로지스틱 회귀 모형 / logistic regression 파라미터, 속성, 메서드 _ 사이킷런

분류문제, 확률모델링 등등 이런 저런 목적으로 다양하게 사용되는 로지스틱 회귀 모형. 파이썬에서 로지스...

blog.naver.com

 

 

서포트 벡터 머신(Support Vector Machine)

  • 정확도가 높지만 결정 트리와 같이 직관적인 해석(데이터 분류 기준)이 어렵다.
  • 클래스를 분류할 수 있는 다양한 경계선이 존재하며, 그중 최적의 라인을 찾는다. 고차원 공간에서 효과적
  • 다차원에서의 경계선인 초평면(Hyperplane)과 초평면과 가장 인접한 데이터(서포트 벡터) 사이의 거리인 마진(Margin)값을 최대로 만들었을 때가 최적의 분류 조건이다.
  • 주요 파라미터 : kernel(dataset에 따라 사용), C(오차 허용 범위), Gamma(비선형 커널에서 표준 편차 조정), degree(다항식 커널의 차수 결정)
    • kernel 종류 : linear(선형), rbf(비선형, 가우시안), poly(비선형, 다항), sigmoid(비선형)

https://for-my-wealthy-life.tistory.com/37

 

서포트벡터머신(SVM) 개념과 주요 파라미터 정의

서포트벡터머신(SVM)은 모델 성능도 좋고 선형, 비선형 분류, 회귀, 이상치 탐색 등에 다목적으로 사용할 수 있는 강력한 ML모델이다. SVM 개념 SVM은 결정경계(Decision Boundary)를 정의하는 모델이다.

for-my-wealthy-life.tistory.com

 

 

K-최소 근접 알고리즘(K-Nearest Neighbor)

  • 예측할 데이터와 이웃 데이터들 간의 특징을 파악하고 가장 유사한 데이터 그룹으로 분류한다.
  • 간단하며, 추천 시스템이나 의사 결정 시스템에서 주로 사용한다.
  • 주요 파라미터 : n_neighbors(K, 검색할 이웃의 수), metric(거리 측정 방식)
    • metric 종류 : euclidean(실수 데이터), Manhattan(이진 데이터) 등

https://minding-deep-learning.tistory.com/95

 

[ML / DL] KNN (K-Nearest-Neighbor, K-최근접 이웃)

오늘은 KNN에 대해 공부해보았다. KNN (K-Nearest-Neighbor, K-최근접 이웃) 새로운 데이터가 주어졌을 때 기존 데이터에서 가장 가까운 k개 이웃의 정보를 통해 새로운 데이터를 예측 분류문제라면 주변

minding-deep-learning.tistory.com

 

 

신경망(Neural Network)

  • 인간의 신경망에서 착안, 입력값에 대해 가중치를 곱해 총합을 구한 다음 함수를 통해 총합이 기준을 충족하면 처리.
  • 이러한 심층 연결 기반의 신경망을 학습하는 과정을 딥러닝(Deep Learning)이라 한다.
  • 하나의 뉴런 == 하나의 퍼셉트론이며, 이를 연결한 "다층 퍼셉트론" 으로 구성된다.
    • 퍼셉트론 : inputs, weights, transfer function(inputs과 weights 연결하는 함수), activation function(transfer function을 거친 값을 이용해 출력값을 구하는 함수)
    • activation function : sigmoid, step, ReLU, ELU 등 다양하게 존재한다.
  • 신경망에서는 Gradient Descent(경사 하강법)을 이용하여 weights를 업데이트 한다. loss가 낮은 방향으로 학습.
  • 주요 파라미터 : solver(activation function 종류), alpha(학습 제약 정도, L2 규)

https://heytech.tistory.com/360

 

[Deep Learning] Activation Function 개념 및 종류: sign, tanh, sigmoid, softmax, ReLU, Leaky ReLU

📚 목차 1. 활성화 함수의 개념 2. 활성화 함수의 종류 2.1. Sign 함수 2.2. Sigmoid 함수 2.3. Tanh 함수 2.4. Softmax 함수 2.5. ReLU 함수 2.6. Leaky ReLU 함수 1. 활성화 함수의 개념 활성화 함수(Activation Function)란

heytech.tistory.com

https://todayisbetterthanyesterday.tistory.com/41

 

[Python] sklearn을 활용한 인공신경망(Artificial Neural Network) 모형 실습

이 게시글은 오로지 파이썬을 통한 실습만을 진행한다. 인공신경망 모형의 개념 및 원리를 알고자하면 아래 링크를 통해학습을 진행하면 된다. https://todayisbetterthanyesterday.tistory.com/42 [Data Analysis

todayisbetterthanyesterday.tistory.com

중요해서 activation function에 대한 참고 링크도 추가로 넣었다...

 

앙상블 학습(Ensemble Learning)

  • 여러 분류기를 생성하고, 그 예측을 결합하여 보다 정확한 최종 예측을 도출한다
  • 트리 기반 알고리즘이므로 결정 트리의 주요 파라미터 사용이 가능하다.
  • 보팅(Voting), 배깅(Bagging), 부스팅(Boosting), 스태킹(Stacking) 등 다양한 방식이 존재한다.

1. 보팅(Voting)

  • 여러 개의 분류기가 투표를 통해 최종 예측 결과를 결정하는 방식
  • 하나의 데이터 셋에서 서로 다른 알고리즘을 여러 개 결합하여 사용한다.
  • 하드 보팅(다수의 분류기가 예측한 결과값을 최종 결과로 선정), 소프트 보팅(모든 분류기가 예측한 레이블 값의 결정 확률 평균을 구한 뒤 가장 확률이 높은 레이블 값을 최종 결과로 선정)으로 나뉜다.
  • 주요 파라미터 : estimatos(보팅에 사용될 알고리즘, 튜플 형태), voting(voting 종류)

2. 배깅(Bagging)

  • 주어진 데이터 셋에서 random split으로 여러 데이터 셋을 만든 뒤, 하나의 알고리즘으로 학습 후 voting 실시
  • 대표적인 알고리즘으로 랜덤 포레스트(Random Forest)가 있다.
  • 주요 파라미터 : n_estimators(결정 트리 개수), n_jobs(-1로 설정 시 모든 CPU 코어 사용)

3. 부스팅(Boosting)

  • 여러 알고리즘을 학습 하면서 앞서 예측을 진행한 분류가 예측이 틀린 데이터에 대해 가중치를 부여하여 다음 분류기의 학습을 진행시키는 방식
  • 보통 성능이 뛰어나지만, 속도가 느리고 과적합 발생 가능성이 있다.
  • 대표적인 알고리즘으로 Gradient Boost(GBM), XGBoost, LightGBM이 있다.
    • GBM : 경사하강법에 기반한 부스팅 방식으로, 순차적으로 학습하여 속도가 느리가.
    • XGBoost : GBM의 단점을 보완하여, 병렬적으로 처리가 가능하다. 또한 교차 검증과 조기 중단이 가능하다.
    • LightGBM : 일반적인 결정 트리와 달리 Leaf-Wise-tree를 사용한다. 대용량 데이터 처리에 적합하고, 병렬적인 처리와 조기 중단 또한 가능하다. 메모리를 적게 사용하며 빠른 속도를 가짐. 
  • XGBoost와 LightGBM은 learning_rate 파라미터를 이용해 조기 중단이 가능하다.

4. 스태킹(Stacking)

  • 개별 알고리즘으로 예측한 데이터를 기반으로 다시 예측을 수행한다.
  • 반환된 데이터를 concatenate()를 이용해 합친 후 최종 알고리즘 모델로 예측한다.
  • 과적합 방지를 위해 주로 K-fold 교차 검증을 이용한다.

https://techblog-history-younghunjo1.tistory.com/102

 

[ML] Scikit-learn을 이용해 Ensemble 모델들 구현하기

이번 포스팅에서는 Scikit-learn library를 이용해서 여러가지 Ensemble 모델들을 구현해보는 방법에 대해서 알아보려고 한다. 해당 포스팅에서는 Ensemble에 대한 이론적인 부분은 주요내용으로 다루지

techblog-history-younghunjo1.tistory.com

[Week3] 04. 분류(2) (tistory.com)

 

[Week3] 04. 분류(2)

중간에 모듈 설치하면서 오류가 났다. anaconda가 원래 오류가 많이 난다고 한다....그럴 때는 pip로 주피터 노트북에 직접 설치하기. 오류찾기 힘들어서 중간에 colab으로 해볼까...했는데 운영진의

jain5379.tistory.com

 


# 회고

 

파머완 분류 파트를 끝낸 기념으로 전체적인 분류 알고리즘들의 비교 및 정리를 했다!

주로 실습 위주로 정리하고, 참고 사이트도 실습이 많은 사이트를 이용했다.

기계학습 시간에 더 자세한 이론을 배우게 되면 추가로 정리해야겠다.