Machine Learning Models (56) 썸네일형 리스트형 Pytorch - hook Deep neural networks 는 마지막 단의 목적함수에 대한 파라미터 별 기울기를 통한 gradient descient 방식으로 업데이트 됩니다. 이때 편미분의 chain-rule 을 이용한 back-propagation (neural networks 의 뒷 단에서 앞 단 순으로 기울기가 계산됩니다) 을 이용해 deep neural networks 를 구성하는 모든 파라미터의 목적함수에 대한 기울기를 구할 수 있습니다. Pytorch 에는 hook 이라는 기능이 있어 매 layer 마다 print 문을 통해 확인하지 않아도 각 층의 activation/gradient 값을 확인할 수 있습니다. 먼저 Figure 1과 같은 2-layer 의 MLP 를 구성해보도록 하겠습니다. import torc.. Learning Deep Features for Discriminative Localization (CAM) 이번 포스트에서 다룰 내용은 explainable AI (XAI) 의 원조격인 CAM (Class Activation Mapping) 입니다. 2015년 CVPR 에서 발표되었고 이미지 classification 에 GAP (Global Average Pooling) 을 사용하여 이미지의 어느 부분이 모델의 판단 근거가 되었는지를 파악합니다. Figure 1에서 보듯이 GAP 층과 CAM 을 이용하여 이미지를 분류함과 동시에 이미지의 판단 근거가 되는 중요한 부분을 localization 하는 것이죠. Class activation mapping CAM 이란 각 카테고리 별로 모델이 카테고리를 파악하기 위한 중요하고 차별적인 이미지 부분을 말합니다. 이를 마지막 convolution layer 전체를 높.. 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.. Feature Selection - Random Forest (2) Feature Selection - Random Forest (1) 지난 포스트에서 Random Forest 에서의 Gini impurity를 기반으로 한 feature importance 계산을 알아봤습니다. 그렇다면 계산된 feature importance 를 얼마만큼 신뢰할 수 있을까요? Example 다음 데이터에 대해 Random Forest 분류/회귀를 수행해보도록 하겠습니다. 먼저 price 열을 RandomForestRegressor 함수로 예측한 뒤 feature importance를 보도록 하겠습니다. 이때 random 이란 열을 만들어 무작위로 값을 넣습니다. Fitting이 되더라도 random 열의 feature importance는 낮아야 합니다. from sklearn.ense.. 이전 1 2 3 4 5 6 7 다음