머신러닝 17

부분의존도 그래프(PDP)와 Shap value plots를 통한 모델 해석

모델해석 모델을 통해 결과를 해석하는 것은 분석 과정에서 매우 중요합니다. 이를 위해, 방법론적인 측면과 배경지식(도메인)이 중요합니다. 하지만 전문분야는 각기 다르기때문에 방법론적인 측면에서 해석하는 Python 라이브러리를 알아보고자 합니다. PDP(부분의존도그래프) PDP(Partial Dependence Plot)란 예측모델을 만들었을 때, 어떤 특성(feature)이 예측모델의 타겟변수(Target variable)에 얼마나 영향을 주는지 알 수 있는 그래프입니다. PDP는 회귀와 분류 모두 사용가능합니다. PDP with Python from category_encoders import OrdinalEncoder from sklearn.linear_model import LinearRegres..

머신러닝 2021.08.19

앙상블 기법과 속성 중요도 ( Feature Importances )

앙상블 앙상블은 말그대로, 여러 가지를 하나로 조화하는 것을 뜻합니다. 그래서 이러한 개념을 머신러닝 모델 구축에 활용하여, 여러 모델을 만든 후 모델을 합쳐 성능을 보완하는 방법론을 말합니다. 앙상블 방법론 - 배깅(Bagging) Bagging은 말그대로 Bootstrap Aggregation의 약자로 부트스트랩 셋을 여러개 단위로 뽑아, 학습하여 모델을 구축합니다. 그래서 각 각 나온 결과 값을 집계, 혹은 결합하여 최종 결과 값을 구합니다. 이때 범주형 데이터의 경우 최빈 값(Voting)방식으로 결과를 구하며, 연속형 데이터의 경우 평균으로 집계합니다. 이러한 배깅 방법을 사용하는 모델이 랜덤포레스트(Randomforest)기법입니다. 앙상블 방법론 - 부스팅 부스팅은 가중치(Weight)를 활..

머신러닝 2021.08.17

회귀, 분류 모델을 위한 데이터 변환

클래스 설정 및 누수(leakage) 확인 우리가 맞추고자하는 타겟(종속변수)을 어떤 것으로 분석 할지 즉 이진분류, 다클래스 분류, 회귀분석를 타겟과 목적에 맞춰 잘 선정해야합니다. 정보의 누수란, 타겟변수외 예측 시점에 사용할 수 없는 데이터가 포함되어 학습이 이루어지는 경우 혹은 훈련과 검증데이터를 완전히 분리하지 못하는 경우 즉, 정답에 정보가 어떤 형태로 유출되는 경우를 말합니다. 그래서 정보의 누수가 있을 경우(클래스와 직접적인 관련이 있는 정보) 해당 속성을 제거하는 등 정보 누수에 대한 관리를 해야합니다. 문제에 적합한 평가지표 선택 분류문제의 경우 Accuracy, ROC, AUC, F1-score분류 문제할 때 클래스가 불균형 할 때, 모델 내 class_weight = 'balance..

머신러닝 2021.08.15

모델 선택( Model Selection )

교차 검증 ( Cross-validation ) K-Fold 교차검증 교차검증은 데이터셋을 임의의 K개로 나누어, K개 중 1개는 테스트 셋으로 하고, 나머지 K-1개는 트레이닝셋으로 하여 학습하는 것을 말합니다. 이 때 테스트 셋을 K번 바꾸어 트레이닝과 테스트 셋을 교차하여 학습하는 방식입니다. 그래서 5개의 모델의 성능의 평균을 최종 성능으로 나타냅니다. Stratified K-FOLD 교차검증 그러면, 폴드 자체를 50대50으로 맞추는건지, 전체 데이터의 클래스 비율을 맞추는건지 예를 들어 5-Fold의 경우 위의 그림과 같이 학습이 진행되는 것입니다. 교차검증 with Python k = 5 # k-Fold ( K = 5 ) scores = cross_val_score(model, X_train..

머신러닝 2021.08.12

분류모델 평가 기법 ( Evaluation Metrics for Classification )

Confusion matrix Training을 통한 Prediction 성능을 측정하기 위해 예측 값과 실제 값을 비교하기 위한 표 정확도 (Accuracy) = TP + TN / Total 모두 맞은 레이블(1을 1로, 0을 0으로)를 전체로 나눈 값입니다. 종속변수(Target)의 비율이 불균형한 경우는 주의해야한다. 정밀도(Precision) = TP / TP + FP Positive로 예측한 것 중에, 실제 Positive를 맞춘 비율 재현율(Recall, Sensitivity) = TP / TP + FN 실제 Positive인 것중에 Positive로 예측한 비율 F1-Score 정밀도와 재현율의 조화평균 값, 정밀도와 재현율이 어느 한쪽으로 치우치지 않는 수치를 나타낼 때 상대적으로 높은 값..

머신러닝 2021.08.11

랜덤포레스트( Random Forest )

랜덤 포레스트 앙상블 방법 중 하나로, 한 종류의 데이터로 학습 모델을 여러개 생성하여 예측 결과를 최빈 혹은 평균으로 예측하는 방법을 말합니다. 랜덤 포레스트는 학습 모델 중 결정트리를 기본으로 하는 방법입니다. 학습 모델은 독립적으로 구성됩니다. 부트스트랩(Boostrap) 샘플링 앙상블을 방법론 적으로 살펴보면, 모델을 여러개 만들어 합치는 것입니다. 이 때 모델을 여러개 만들기 위해 원본 데이터에서 여러개의 데이터 셋트를 복원 추출하여 학습을 진행하는데 이 때 복원 추출하여 만들어지는 데이터 세트를 부트스트랩세트라고 하며 이 과정을 부트스트랩 샘플링이라 합니다. 이 과정에서, 속성도 랜덤으로 선택되어 결정트리가 만들어지며 결정트리 하나당 원천 데이터의 속성 N개에서 중복 허용 없이 루트N개가 선택..

머신러닝 2021.08.10

의사결정트리( Decision Tree )

사이킷런의 파이프라인 결측치 처리, 스케일링, 모델학습 등을 파이프라인을 통해 한번에 처리할 수 있습니다. 이를 통해 가독성을 높이면서, 중복코드를 최소화할 수 있습니다. from category_encoders import OneHotEncoder from sklearn.impute import SimpleImputer from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LinearRegression from sklearn.pipeline import make_pipeline pipe = make_pipeline( OneHotEncoder(), SimpleImputer(), StandardScaler(), L..

머신러닝 2021.08.09

로지스틱 회귀 ( Logistic Regression )

분류( Classification ) 데이터를 통해, 타겟(0, 1) 혹은 더 많은 범주로 예측하는 것을 말합니다. 기준모델( Base line ) 분류에서의 기준모델은 타겟변수의 최빈값입니다. 예를 들어 0과 1로 타겟변수가 있을 때 0이 80%를 차지하고 있다면, 앞뒤 안보고 0으로만 찍는다면 정확도가 80%가 나올 수 있습니다. 이 때 우리가 만든 모델이 80%이상의 정확도가 있더라도, 좋은 상황이 아님을 알 수 있습니다. 분류 모델 중 하나인 로지스틱회귀 (Logistic Regression) 범주형이면서 0과 1 등과 같은 두개의 값만 가지는 종속변수를 갖을 때 사용하는 회귀분석입니다. 그래서 실제로, 발생할 확률이 결과 값으로 나오며, 기준점을 정해 50% 이상이면 1 아니면 0으로 분류합니다..

머신러닝 2021.08.05