1. 로지스틱 회귀 (Logistic Regression)
"사건이 일어날 확률을 계산해 선을 긋는 모델"
from sklearn.linear_model import LogisticRegression
pipe = Pipeline([('scaler', StandardScaler()), ('clf', LogisticRegression(random_state=0))])
params = {'clf__C': [0.0001, 0.001, 0.01, 0.1, 1.0, 10, 100]}
- 쉽게 이해하기 (비유): '합격/불합격' 판독기. 데이터가 어느 쪽인지 확률을 계산해서 50프로가 넘으면 A, 안 넘으면 B로 분류합니다.
- 파라미터 (
C) 특징: - 의미: 모델의 규제(제동) 강도를 조절합니다.
- 특징: 숫자가 작을수록 모델을 단순하게 만들고(벌금을 세게 매김), 클수록 복잡한 패턴을 다 공부하게 둡니다.
2. 의사결정나무 (Decision Tree)
"스무고개 방식으로 데이터를 분류하는 지도"
from sklearn.tree import DecisionTreeClassifier
pipe = Pipeline([('scaler', StandardScaler()), ('clf', DecisionTreeClassifier(random_state=0))])
params = {'clf__max_depth': list(range(3, 6))}
- 쉽게 이해하기 (비유): 순서도(Flowchart). "나이가 많은가? -> 예 -> 사고 경험이 있는가?" 순서대로 질문을 던져 결론에 도달합니다.
- 파라미터 (
max_depth) 특징: - 의미: 질문을 최대 몇 번까지 할 것인가(나무의 높이)를 정합니다.
- 특징: 숫자가 커질수록 아주 정밀하게 맞추지만, 너무 크면 학습 데이터만 달달 외우는 과적합이 발생합니다.
3. 랜덤 포레스트 (Random Forest)
"여러 명의 전문가(나무)가 투표하는 집단지성 모델"
from sklearn.ensemble import RandomForestClassifier
pipe = Pipeline([('scaler', StandardScaler()), ('clf', RandomForestClassifier(random_state=0))])
params = {'clf__max_depth': list(range(3, 6)), 'clf__n_estimators': list(range(10, 110, 10))}
- 쉽게 이해하기 (비유): 배심원단. 나무 한 그루의 편견을 없애기 위해 수십 개의 나무를 만들어 다수결로 결정합니다.
- 파라미터 특징:
max_depth: 각 나무가 얼마나 깊게 공부할지 정합니다.n_estimators: 숲에 심을 나무의 개수입니다. 많을수록 안정적이지만 속도가 느려집니다.
4. K-최근접 이웃 (KNN)
"끼리끼리 유유상종, 가까운 이웃을 보고 결정"
from sklearn.neighbors import KNeighborsClassifier
pipe = Pipeline([('scaler', StandardScaler()), ('clf', KNeighborsClassifier())])
params = {'clf__n_neighbors': list(range(1, 11))}
- 쉽게 이해하기 (비유): 거주지 투표. 모르는 사람이 나타나면 "가장 가까운 곳에 사는 사람 5명이 누구냐"를 보고 그 사람의 정체를 결정합니다.
- 파라미터 (
n_neighbors) 특징: - 의미: 이웃을 몇 명까지 확인할 것인가(K)를 정합니다.
- 특징: 숫자가 작으면 한두 명 말만 듣고 예민하게 반응하고, 크면 너무 둥글둥글하게 판단합니다.
5. 인공신경망 (MLP)
"인간의 뇌 구조를 본떠 복잡한 관계를 찾는 모델"
from sklearn.neural_network import MLPClassifier
pipe = Pipeline([('scaler', StandardScaler()), ('clf', MLPClassifier(random_state=0, max_iter=5000))])
params = {'clf__hidden_layer_sizes': [(50,), (100,), (50, 50), (100, 100)], 'clf__activation': ['tanh', 'relu'], 'clf__alpha': [0.001, 0.01, 0.1]}
- 쉽게 이해하기 (비유): 주방의 조리 과정. 여러 층(은닉층)을 거치며 재료(데이터)를 볶고 찌는 복잡한 가공을 통해 최종 요리를 만듭니다.
- 파라미터 특징:
hidden_layer_sizes: 주방의 칸수와 요리사 수를 정합니다. (예: (50, 50)은 2층 주방)activation: 요리 방식(재료를 꺾는 방식)을 정합니다. (relu가 가장 인기!)alpha: 모델이 너무 복잡해지지 않게 매기는 벌금(규제)입니다.
6. 서포트 벡터 머신 (SVM)
"두 그룹 사이에 가장 넓은 도로(경계)를 닦는 모델"
from sklearn.svm import SVC
pipe = Pipeline([('scaler', StandardScaler()), ('clf', SVC(random_state=0))])
params = {'clf__C': [0.001, 0.01, 0.1, 1, 10, 100, 1000], 'clf__gamma': [0.0001, 0.001, 0.01, 0.1]}
- 쉽게 이해하기 (비유): 국경선 긋기. 단순히 선을 긋는 게 아니라, 양쪽 데이터로부터 가장 멀리 떨어진 '안전지대'를 최대로 확보하며 선을 긋습니다.
- 파라미터 특징:
C: 오답을 얼마나 허용할지 정합니다. 클수록 "오답은 절대 안 돼!"라며 엄격하게 굽니다.gamma: 한 점이 미치는 영향력의 거리를 정합니다. 클수록 경계선이 구불구불해집니다.
댓글 (0)