본문 바로가기

반응형

Machine Learning Models/Classic

(14)
LightGBM feature importance Feature Selection - XGBoost Feature Selection - Random Forest (1) Feature Selection - Random Forest (2) 최근 XGBoost, LightGBM, Random Forest, Factorization Machine 등 여러 알고리즘을 이용해 회귀 모델을 구성한 적이 있습니다. MAE, R2 등의 정확도는 비슷했지만 feature importance를 측정하니 LightGBM 모델에 대해서만 feature importance가 다른 양상을 나타냈습니다. Figure 1을 보면 LightGBM 모델의 경우 feature importance 합이 1이 되지도 않고 A부터 H까지의 feature가 균등한 importance를 가지고 있..
Dimension Reduction - t-SNE (2) Dimension Reduction - t-SNE (1) t-SNE 는 고차원 데이터를 효율적으로 저차원으로 매핑하는 차원축소 방법으로 머신러닝의 다양한 분야에서 2/3 차원으로 데이터를 시각화할 떄 많이 사용하는 방법입니다. Scikit-learn 에도 구현되어 있어 쉽게 사용할 수 있습니다만, t-SNE 를 훈련시킬 때의 파라미터와 데이터 구조에 따라 그 결과가 데이터 분석 상의 잘못된 오해를 불러일으킬 수 있습니다. 특히, t-SNE 에는 데이터의 지역적 (local) / 전역적 (global) 구조를 고려하는 "perplexity" 라는 파라미터가 있습니다. Perplexity 는 $2^{entropy}$로 정의되는 파라미터로 분포가 uniform 분포에 가까워 불확실해 entropy가 높다면 p..
XGBOOST 동작 원리 XGBOOST는 "Extreme Gradient Boosting" 으로 기존 Gradient Boosting 알고리즘에 CART 모델을 사용하고 병렬 처리를 가능하게 함으로써 다양한 데이터 경진대회, kaggle 대회에서 거의 항상 사용되는 모델입니다. 저 또한 XGBOOST 를 많이 사용했지만 그 내부가 어떻게 돌아가는지 정확하가 파악하지는 못했었는데요., 이번 포스트에서는 XGBOOST 공식 홈페이지에 나와있는 알고리즘 소개를 간단히 살펴보려 합니다. Decision tree ensembles Ensemble 이란 여러 개의 약한 모델들을 결합하여 최종적인 좋은 모델을 만드는 머신러닝 모델 학습 알고리즘 중 하나입니다. 여러 개의 모델을 병렬적으로 결합한 bagging 방식과 순차적으로 이전 모델이 ..
Dimension Reduction - t-SNE (1) t-SNE (t-distributed Stochastic Neighbor Embedding) 는 2008년에 Laurens van der Maaten이 발표한 차원 축소 기법으로 고차원 시각화에 많이 쓰이는 방법입니다. 전체 데이터에 대해서 선형 변환을 적용해 분산이 큰 principle component를 뽑아내는 PCA는 고차원 데이터의 복잡한 관계를 저차원으로 매핑하는 능력이 부족합니다. t-SNE는 고차원 manifold 상에 놓여진 데이터 간의 유사도를 저차원에서도 유지할 수 있도록 저차원 embedding 벡터를 학습함으로써 고차원 상의 복잡한 비선형 관계를 저차원 상에서도 잘 표현할 수 있도록 고안되었습니다. Stochastic neighbor embedding t-SNE는 SNE (Stoc..
Dimension Reduction - PCA 지난 여러 포스트에서 다루었던 특성 선택 (feature selection)은 원본 데이터의 feature를 유지하면서 덜 중요한 feature를 제거하는 방법이었습니다. 하지만 학습 알고리즘의 효율성을 높이기 위한 특성 줄이기의 방법으로는 새로운 특성 공간으로 데이터를 투영하여 원본 데이터의 정보를 최대한 유지하면서 특성 차원을 압축하는 차원 축소 (dimension reduction) 방법도 있습니다. 이번 포스트에서는 차원 축소에서 가장 대표적인 알고리즘, PCA (Principle Component Algorithm)을 다루어보도록 하겠습니다. 차원 축소는 변수 선택에 비해 어떤 장점을 지닐까요? 변수 선택은 손쉽게 덜 중요한 feature를 제거하지만 데이터 특성의 일부분을 완전히 제거하는 것이..
Classification - Metrics (2) Classification - Metrics (1) 지난 포스트에서 다룬 다양한 분류 성능 지표는 파이썬의 sklearn.metrics 모듈에 대부분 구현되어 있습니다. 이번 포스트에서는 성능 지표를 위한 구체적인 이용 방법을 소개해 드리도록 하겠습니다. sklearn.metics.f1_score(y_true, y_pred, labels=None, average='binary') sklearn.metrics 모듈의 f1_score 함수로 f1-score를 얻을 수 있으며 이진 분류/다중 분류 모두에 적용됩니다. "y_true/y_pred" 는 실제클래스/예측클래스 를 나타내는 numpy 행렬이며 "average" 파라미터는 multi-class 상에서 각 클래스의 f1-score를 어떻게 평균낼지를 결정..
Classification - Metrics (1) 분류 모델의 성능은 어떻게 평가할까요? 먼저 간단한 이진 분류부터 생각해보겠습니다. 당장 생각나는 성능 지표는 정확도 (accuracy) 일겁니다. 전체 데이터에서 얼마만큼 맞추었는지에 대한 비율이죠. 평범한 상황에서는 적당한 지표가 되겠지만 90명의 정상환자와 10명의 암환자를 구분하는 케이스와 같이 각 범주에 대한 데이터가 균형적이지 않을 때에 대해서 생각해보면 모델이 단순히 모두 정상이라고 판단해도 정확도는 90%가 됩니다. 얼핏 보면 매우 잘 학습된 분류 모델이라고 생각할 수 있겠지만 데이터의 불균형으로부터 이뤄진 비정상적인 결과입니다. 이번 포스트에서는 정확도 이외에 데이터 불균형 상황에서 분류 모델의 성능을 평가하는 다양한 성능 지표를 알아보도록 하겠습니다. Metrics Definitions..
Feature Selection - XGBoost XGBOOST 동작 원리 Feature Selection - Random Forest (1) Feature Selection - Random Forest (2) LightGBM feature importance 지난 포스트에서도 살펴봤듯이 의사결정나무 기반의 앙상블 모델은 feature importance 함수를 지원합니다. scikit-learn 패키지의 의사결정나무/Random Forest 의 feature importance 는 Gini impurity (MDI) 기반의 feature importance 만을 지원하는 반면 XGBoost/LightGBM과 같은 부스팅 기반의 모델들은 다양한 방법의 importance 측정을 지원합니다. 이번 포스트에서는 XGBoost의 feature importan..

반응형