728x90
반응형

pythonML 27

[pythonML] 부스팅(Boosting)-LGBM(Light Gradient Boost Machine)

# LGBM 의 개요 LGBM은 일반 GBM 계열의 트리 분할 방법과 다르게 리프 중심 트리 분할 방식을 사용함. 이는 트리의 균형을 맞추지 않고 최대 손실 값을 가지는 리프 노드를 지속적으로 분할하면서 드리의 깊이가 깊어지고 비대칭적인 규칙 트리가 생성됨. 이렇게 지속적으로 분할해 생성된 규칙 트리는 학습을 반복할수록 예측 오류 손실을 최소화 할수 있음 # LGBM 의 장점 더 빠른 학습과 예측 수행 시간 더 작은 메모리 사용량 카테고리형 피처의 자동 변환과 최적의 분할 단점 : 적은 데이터 세트에 적용하면 과적합이 발생하기 쉬움 # LightGBM의 파이썬 패키지인 lightgbm에서 LGBMClassifier 임포트 from lightgbm import LGBMClassifier import pan..

pythonML 2022.07.15

[pythonML] ROC곡선과 AUC , F1스코어 - 평가

# 평가 지표 -회귀 평균 오차 -분류 정확도 오차행렬 정밀도 재현율 F1스코어 ROC AUC 4. F1 스코어 정밀도와 재현율을 결합한 지표. F1 스코어는 정밀도와 재현율이 어느 한쪽으로 치우치지 않는 수치를 나타낼 때 상대적으로 높은 값을 가짐. ex) A : 정밀도0.9 재현율0.1 B: 정밀도 0.5 재현율 0.5 이 경우 F1 스코어는 A:0.18 / B: 0.5 로 B가 더 높다. from sklearn.metrics import f1_score f1 = f1_score(y_test , pred) print('F1 스코어: {0:.4f}'.format(f1)) F1 스코어: 0.7805 def get_clf_eval(y_test , pred): confusion = confusion_matr..

pythonML 2022.07.11

[pythonML] 정밀도와 재현율 - 평가

# 평가 지표 -회귀 평균 오차 -분류 정확도 오차행렬 정밀도 재현율 F1스코어 ROC AUC 3. 정밀도와 재현율 (Precision과 Recall) 불균형한 데이터 세트에서 정확도보다 더 선호되는 평가 지표 positive 데이터 세트의 예측 성능에 초점을 맞춘 평가 지표 재현율과 정밀도 모두 TP를 높이는 데 동일한 초점임 BUT 재현율은 FN을 낮추고, 정밀도는 FP를 낮추는데 초점 가장 좋은 성능 평가는 재현율, 정밀도 모두 높은 수치를 얻는 것. 반면 둘 중 하나만 높고 하나만 낮은 결과일 경우 바람직하지 않음) 정밀도 = TP / (FP +TP ) 정밀도가 더 중요한 경우 : 실제 Negative 음성인 데이터 예측을 Positive 양성으로 잘못 판단하게 될 경우 ( ex. 스팸메일이 아닌..

pythonML 2022.07.11

[pythonML] 정확도와 오차행렬 - 평가

# 평가 지표 -회귀 평균 오차 -분류 정확도 오차행렬 정밀도 재현율 F1스코어 ROC AUC 1. 정확도(Accuracy) 정확도(Accuracy) = 예측 결과가 동일한 데이터 건수 / 전체 예측 데이터 건수 불균형한 레이블 값 분포에서는 "정확도만으로" 성능 수치를 사용해서는 안되고 여러가지 분류지표와 함께 적용해야한다. # 타이타닉 정확도 타이타닉 데이터 전처리 import pandas as pd from sklearn.preprocessing import LabelEncoder # Null 처리 함수 def fillna(df): df['Age'].fillna(df['Age'].mean(),inplace=True) df['Cabin'].fillna('N',inplace=True) df['Embar..

pythonML 2022.07.10

[pythonML] 회귀- LinearRegression

# LinearRegression 클래스 LinearRegression 클래스는 예측값과 실제값의 RSS 를 최소화해 OLS 추정 방식으로 구현한 클래스이다. class sklearn.linear_model.LinearRegression(fit_intercept=True, normalize=False, copy_X=True,n_jobs=1) -입력파라미터 fit_intercept : intercept(절편) 값을 계산할 것인지 말지를 지정함. (False이면 y축좌표가 0) normalize: True이면 회귀를 수행하기 전에 데이터 세트를 정규화 함. -속성 coef_ : fit() 메서드를 수행했을 때 회귀 계수가 배열 형태로 저장되는 속성. shape =( Target값 개수, 피처 개수) inte..

pythonML 2022.05.09

[pythonML] 회귀- 경사하강법

앞에서 RSS를 최소로 하는 w0,w1 (회귀 계수)를 학습을 통해서 찾는 것이 회귀의 핵심 이라고 설명하였는데 * 그렇다면 어떻게 비용함수가 최소가 되는 W 파라미터를 어떻게 구할 수 있을까? => 경사하강법을 이용한다. # 경사하강법 : '점진적으로' 반복적인 계산을 통해 W 파라미터 값을 업데이트하면서 오류 값이 최소가 되는 W 파라미터를 구하는 방식 * RSS(w0,w1) 를 미분해서 미분 함수의 최솟값을 구해야 하는데, RSS(w0,w1) 는 두 개의 W 파라미터인 w0,w1을 각각 가지고 있기 때문에 w0,w1 각 변수에 편미분을 적용해야 함 # 새로운 w를 업데이트 하는 식 새로운 w0 = (이전w0) - (w0의 편미분 결괏값) 새로운 w1 = (이전w1) - (w1의 편미분 결괏값) # ..

pythonML 2022.04.17

[pythonML] 회귀 - 단순 선형 회귀

# 단순 선형 회귀 : 독립변수 1개(X: 주택 크기), 종속변수 1개(Y: 주택 가격)인 선형 회귀 최적의 회귀 모델을 만든다 = 잔차(실제 값- 예측 값)의 합이 최소가 되는 모델을 만든다 = 최적의 회귀 계수(w0,w1)를 찾는다. # 오류의 합 (잔차의 합)을 구할때는 1. 절댓값을 취해서 더한다. 2. 오류 값의 제곱을 구해서 더한다(RSS) RSS를 최소로 하는 w0,w1 (회귀 계수)를 학습을 통해서 찾는 것이 회귀의 핵심 w로 구성된 RSS = 비용(Cost)함수 = 손실함수

pythonML 2022.04.17

[pythonML] 부스팅(Boosting)- XGBoost(eXtra Gradient Boost)

# XGBoost 의 개요 GBM에 기반하고 있지만, GBM의 단점인 느린 수행시간, 과적합 규제 등을 해결한 알고리즘 #XGBoost의 장점 1. 뛰어난 예측 성능 -> 분류/회귀에서 뛰어난 예측 성능을 발휘함 2. GBM 대비 빠른 수행 시간 -> GBM에 비해서 빠른 수행성능을 보장함 3. 과적합 규제 -> GBM의 경우 과적합 규제기능이 없음 4. 나무 가지치기 5. 자체 내장된 교차 검증 6. 결손값 자체 처리 # 사이킷런 래퍼 XGBoost의 개요 및 적용 사이킷런의 기본 Estimator를 이용해 만들어 fit()과 predict()만으로 학습과 예측이 가능 GridSearchCV,Pipeline 등 사이킷런의 유틸리티를 그대로 사용 가능 분류 : XGBClassifier / 회귀 : XGB..

pythonML 2022.04.04

[pythonML] 부스팅(Boosting) - GBM /AdaBoost

# 부스팅(Boosting) : 여러 개의 약한 학습기를 순차적으로 학습,예측 하면서 잘못 예측한 데이터에 가중치 부여를 통해 오류를 개선해 나가면서 학습하는 방식. 즉, 약한 알고리즘 => 강한 알고리즘 # 부스팅의 대표적인 구현 2가지 1. 에이다 부스트 AdaBoost (Adaptive Boosting) : 오류 데이터에 가중치를 부여하면서 부스팅을 수행하는 알고리즘. 잘못 분류된 오류데이터에 가중치를 계속하여 부여함 => 부여한 가중치들을 결합하여 예측을 수행 2. 그래디언트 부스트 (GBM-Gradiant Boost Machine) : 가중치 업데이트를 경사 하강법(Gradiant)을 이용함 - 경사하강법 : 반복 수행을 통해 오류를 최소화할 수 있도록 가중치의 업데이트 값을 도출하는 기법 분류..

pythonML 2022.04.01

[pythonML] 보팅(Voting)-soft voting/hard voting

# 보팅 : 서로 다른 알고리즘을 가진 분류기를 결합하는 것 - 하드 보팅(Hard Voting) : 예측한 결괏값들중 다수의 분류기가 결정한 예측값을 최종 보팅 결괏값으로 선정 (다수결) - 소프트 보팅(Soft Voting) =>일반적으로 소프트 보팅이 예측 성능이 좋아서 더 많이 사용 :분류기들의 레이블 값 결정 확률을 모두 더하고 이를 평균해서 이들 중 가장 높은 레이블 값을 최종 결괏값으로 선정 # 보팅 분류기(Voting Classifier) -로지스틱 회귀, KNN을 이용하여 소프트 보팅 분류기 생성 import pandas as pd from sklearn.ensemble import VotingClassifier # 보팅 앙상블 클래스 from sklearn.linear_model imp..

pythonML 2022.03.29
728x90
반응형