* 서포트 벡터 머신(SVM; Support Vector Machine)
- '초평면을 활용한 분류모형'
- 데이터를 선형으로 분리하는 최적의 선형 결정 경계를 찾는 알고리즘. 알고리즘의 목표는 클래스가 다른 데이터들을 '가장 큰 마진(margin)'으로 분리해내는 선 또는 면(=초평면)을 찾아내는 것
- 마진(margin): 두 데이터 군과 결정 경계가 떨어져있는 정도
- 대부분의 데이터는 이상적으로 분리되어 있지 않음. 많은경우 이상치(outlier)들이 관측됨.
- 이런 경우 데이터를 선형적으로 완벽하게 분리하는 것은 불가능함. 이를 해결하기 위해 약간의 오류를 허용하는 파라미터 = 'C' (cost)
- 낮은 C값: 데이터샘플이 다른 클래스에 놓이는 것을 많이 허용 (일반적인 결정경계 찾아냄)
➡️ 과소적합(underfitting) 가능성
- 높은 C값: 데이터 샘플이 다른 클래스에 놓이는 것을 적게 허용 (더 세심하게 결정경계 찾아냄)
➡️ 과대적합(overfitting) 가능성
- 적합한 C값을 찾아내는 것이 중요하다!
- gamma는 하나의 데이터 샘플이 영향력을 행사하는 거리를 결정함.
- gamma가 클수록 한 데이터 포인터들이 영향력을 행사하는 거리가 짧아지고, gamma가 낮을수록 커짐
- gamma 매개변수는 '결정경계의 곡률을 조정한다'고 볼 수 있음
- C와 마찬가지로 너무 낮으면 과소적합, 너무 높으면 과대적합의 위험이 있음
* SVM 코딩하기
1. SupportVectorClassifier(SVC)
- Y = '이탈여부' ➡️ 분류형
- 데이터 분할 - (데이터 표준화) - 데이터 밸런싱 - 모델 생성 - 모델 적용 - 결과값 도출
- SVC모델 생성: SVC_model = SVC(C = 1, random_state = 0)
- 결과값 확인: accuracy, classification_report
2. SupportVectorRegression(SVR)
- Y = '1회 평균매출액' ➡️ 연속형
- Y에 로그 씌우기 -> 데이터 적합 방지, 성능이 좋게 구해지게 만들기 위해
- 데이터 분할 - 데이터 표준화 - 모델 생성 - 모델 적용 - 결과값 도출
- SVR 모델생성: SVR_Model = SVR(C = 1, Kernel = "linear", epsilon = 0.1)
- 결과값 확인: accuracy, RMSE
* 나이브 베이즈(Naive Bayes)
- '나이브(Naive)': feature들이 서로 '확률적으로 독립(independent)'을 가정하고 있기 때문에 붙인 네이밍
- 특징(feature)이 너무 많은 경우, 이 특징들간의 연간 관계를 모두 고려하게되면 너무 복잡해지기 때문에, '단순화'시켜 쉽고 빠르게 판단을 내릴 때 주로 사용됨
- 나이브 베이즈를 통해 구하고자 하는 것?
: 분류분석의 경우, '특정 개체 x를 보고 특정 그룹 y에 속할 확률을 추정하는것' : p(class|data)
<나이브 베이즈의 예시>
출처: http://www.cs.ucr.edu/~eamonn/CE/Bayesian%20Classification%20withInsect_examples.pdf
Q) 경찰관 Drew씨는 남자일까 여자일까?
- Bayes 법칙에 따라, 분모에 위치하는 p(Drew)는 두 경우 모두 동일하므로, 분자만 계산하여 비교해봤을 때,
p(male|Drew) = 0.125
p(female|Drew) = 0.25
- 따라서, Drew라는 이름을 쓰는 경찰관은 '여성일 확률이 높다'라고 할 수 있다.
* Naive Bayes 코딩하기
1. GaussianNB
- Y = '할인민감여부' ➡️ 분류형
- 데이터 분할 - (데이터 표준화) - 데이터 밸런싱 - 모델 생성 - 모델 적용 - 결과값 도출
- NB모델 생성: NB_Model = GaussianNB(var_smoothing = 0)
- 결과값 확인: accuracy, classification_report
2. BayesianRidge
- Y = '평균 구매주기' ➡️ 연속형
- Y에 로그 씌우기 -> 데이터 적합 방지, 성능이 좋게 구해지게 만들기 위해
- 데이터 분할 - (데이터 표준화) - 모델 생성 - 모델 적용 - 결과값 도출
- BayesianRidge 모델생성: NB_midel_reg = BayesianRidge(alpha_1 = 0.001, lambda_1 = 0.001)
- 결과값 확인: accuracy, RMSE
(여담)
내 블로그에서 가장 많은 시간을 할애한 이번 포스팅..
'Python > Machine Learning' 카테고리의 다른 글
[Python ML]텍스트 마이닝 시각화(Text Mining_konlpy, word cloud) (0) | 2023.01.30 |
---|---|
[Python ML]모형 성능비교하기(로지스틱 회귀, K-NN, DT) (0) | 2023.01.20 |
[Python ML]K-최근접이웃(K-NN), 의사결정나무(Decision Tree) (0) | 2023.01.18 |
[Python ML]분류모델평가_오분류표, ROC커브 & 로지스틱 회귀분석(Logistic, Multinomial Logistic Regression Analysis) (2) | 2023.01.17 |
[Python ML]규제기법(Regularization)_릿지(Ridge), 라쏘(Lasso), 엘라스틱 넷(Elastic-Net) (1) | 2023.01.16 |