목록데이터 분석 (4)
수학쟁이의 공부 이야기

xgboost, lightgbm과 같은 트리 기반 앙상블 모델은 크게 classification(분류), regression(회귀)의 문제로 나뉜다. 각각의 경우 어떻게 앙상블 모델의 feature importance를 구하는지 알아보겠다. 그리고 더 나아가 기존의 built in feature importance의 단점을 보완한 permutation importance에 대해서도 다뤄보겠다. classification(분류)를 위한 트리 기반 앙상블 모델 우리가 위의 그림처럼 이진분류를 한다고 가정해보자. 분류가 한쪽으로 몰릴수록 잘 분류된 것이므로 impurity(불순도)라는 개념을 도입한다. 1에서 비율의 제곱합들을 빼주는데 (0.5,0.5) 비율로 나눠질 때 가장 큰 값을 가지고 (1,0) 비율로..

Gradient Boosting Machine의 개념을 제안한 Jerome H. Friedman의 Greedy Function Approximation: A Gradient Boosting Machine 논문을 바탕으로 작성해봤습니다. Gradient Boosting Machine 이란? Gradient Boosting 모델은 additive model로서 weak learner들이 예측한 결과 값과 label 데이터의 편차(residual)를 학습해나가는 모델입니다. Loss를 줄이기 위해 Gradient Descent 알고리즘을 사용하고 주로 decision tree 모델에서 사용됩니다. Decision tree에서 leaves들의 loss를 본 후 loss가 큰 부분들의 가중치를 좀 더 크게 조정하..

kaggle의 Predict Future Sales 대회에 참여하던 중 colab을 사용하다 불편한 점을 하나 느끼게 되었습니다. 기존 train dataset에 수많은 column들을 새로 추가하다 보니 데이터 전처리 작업이 점점 느려지고 model을 fit 할 때도 종종 터지는 일이 발생하였습니다. 그래서 효율적인 메모리 사용에 대해 궁금하였고, 알게 된 점을 아래에 공유하려고 합니다. 데이터는 위에서 말한 대회의 train dataset을 기준으로 설명해보겠습니다. 간단하게 위 dataset을 설명하자면, 특정 매장에 특정 물건을 판 기록을 나타낸 데이터입니다. 날짜, 매장 고유 아이디, 아이템 고유 아이디, 가격, 수량이 표시되어 있고 date_block_num은 2013년 1월을 0으로 시작하여..

kaggle의 Predict Future Sales 데이터 셋을 분석하던 중 xgboost를 활용하여 머신러닝 모델을 학습시키게 되었습니다. train data의 row 수가 2935849개로 xgboost 모델 파라미터 튜닝하기엔 학습 속도가 너무 느렸습니다. 그리하여 colab gpu를 활용하여 속도를 향상할 수 있는 방법을 찾았고, 다음처럼 진행하면 됩니다. 1. colab에서 런타임을 눌러 '런타임 유형 변경'을 클릭하게 되면 아래와 같은 창이 뜹니다. 이때 하드웨어 가속기를 GPU로 변경해줍니다. 2. 필요한 모델을 colab에 import 합니다. import xgboost from xgboost import XGBRegressor 3. 기존 xgboost를 uninstall 하고 pre-bu..