lightgbm

xgboost vs lightgbm 검색해보니 이렇게 훌륭한 글을 올려두신 분이 계시네요.

https://assaeunji.github.io/machine%20learning/2021-01-07-xgboost/

읽어보니 둘간에 사용하는 방법은 크게 다르지 않아서 xgboost 코드를 거의 그대로 쓸 수 있어 보입니다.

Similar Posts:

Deep learning model interpretation

SHAP 란 “SHAP (SHapley Additive exPlanations) is a game theoretic approach to explain the output of any machine learning model.” 이라고 합니다.

사용 사례는 https://walkwithfastai.com/SHAP 에서 볼 수 있습니다.

Similar Posts:

Deep learning model tuning

구글 리서치에서 나온 딥 러닝 튜닝 가이드

https://github.com/google-research/tuning_playbook

Similar Posts:

딥러닝 파라미터 튜닝

늘 뭔가 흑마술처럼 생각되는게 파라미터 튜닝인데 구글에서 좋은 글을 github에 올렸습니다. https://github.com/google-research/tuning_playbook

이전까지는 그냥 남들 쓰는 파라미터 배끼고 남들 쓰는 범위안에서 GridSearchCV 돌리는게 보통이었는데 참고해볼만 할 것 같습니다.

Similar Posts:

제안을 위한 분석

일하다보면 종종 데이터 탐색과 그 탐색의 결과로 제안을 하는 일을 구분하지 못하는 경우를 본다. 문서를 쓰면서 어떤 분석을 했는지 raw data를 하나하나 나열하고 그 과정의 어려움을 설명하고, 남아있는 기술적 문제를 설명하려 하던가.

이런 설명이 필요한 컨텍스트와 리더쉽 또는 product manager 에게 자신의 분석을 보이는 설명은 서로 달라야한다. 내 분석을 통해 설득하고 제안하는 것이 주가 되어야한다.

이에대한 좋은 글이 있으니 관심있으면 읽어보시길.

https://www.storytellingwithdata.com/blog/redefining-the-analytical-process

글쓰기에도 이와같은 내용이 반영되야한다. 하나의 문단은 하나의 생각을 담고 문단은 주장으로 시작해 데이터와 부연이 와야한다. 상세한 테이블은 뒤로 미루고 데이터 부분에는 요약이 와야하고.

이와 반대로 데이터의 디테일을 계속 반복하고 나서 맨 뒤에 주장을 적거나, 아예 주장이 없는 분석은 읽는이를 힘들게 한다. 읽는 이에게 “그래서 결론이 뭐야?” 라는 응답을 하게 만들고 이는 분석한 사람 스스로까지 힘들게 만든다.

Similar Posts:

Imbalanced data를 다루는 라이브러리

Imbalanced data 를 다루는데 유용한 Imbalanced learn이라는 라이브러리를 하나 찾았습니다.

Scikit learn 도 그렇듯이 이런 라이브러리의 장점은 메뉴얼만 보고 있어도 어떤 알고리즘들이 존재하는지를 쉽게 알 수 있단 점입니다. 특히 undersampling technique 방법이라고는 random sampling 만 생각하고 있다가 다양한 Prototype selection 알고리즘을 접하게 되었는데 이게 참 인상적이네요.

예를들어 Near Miss 1, 2, 3 알고리즘이 인상깊었습니다. 단순히 다른 클래스와 가까운 데이터를 선택하는 식으로 했다가 어떤 난관에 빠질 수 있는지를 Near Miss-1 이 잘 보여주고 있다는 생각입니다.

Similar Posts:

Decision tree가 가진 설명력의 한계

Decision tree는 흔히 설명력이 좋다고 한다. 트리를 보면 어떻게 분류가 되는지 볼 수 있기에 그렇다.

하지만 실제로 모델을 적용하는데는 한계가 발생하는 경우가 있다. 예를들어 X[i]=0 이라면 logistic regression의 경우 Coef[i] * X[i] = 0 이 되어 X[i]가 예측에 영향을 주지 않는다.

하지만 Decision tree는 X[i]=0 인 경우에 어떤 결론을 내릴 수 있다.

예를들어 영어 문장내 단어를 보고 영어 문장이 중학생 수준인지 고등학생 수준인지 결정하는 모델을 만든다고 하자. 만약 해당 문장에 boy가 없고, Decision tree가 운없게도 boy의 중요도를 높이 평가해 boy가 없을 경우 고등학생이란 예측 결과를 내놓는다면, 우리가 할 수 있는 설명이란 “이 문장에는 boy가 없어 고등학생 수준의 문장입니다”는 정도뿐이다. 하지만 사람은 그런식으로 영어 문장의 난이도를 판단하지 않는다.

이를 방지하기 위해 문장에 포함된 단어만 사용해 설명을 출력한다고 해도, Decision tree에서 boy의 중요도가 높다면 이 역시 불완전한 설명에 불과하다.

이 문제를 나는 eli5의 explain_prediction 의 출력 결과를 보고 고민하다 깨닫게 되었다. 이상하게도 주어진 X에 없는 피쳐의 contribution이 높게 평가되고 있었고, 정작 X에 있는 feature가 가진 contribution의 합은 class prob과 달랐던 것이다.



Similar Posts:

Interpreting Random forest

http://blog.datadive.net/interpreting-random-forests/

This is how eli5 explains a tree.



Similar Posts:

ZCA Whitening

Stack exchange 글인데 정말 훌륭한 설명입니다. 이렇게 핵심만 전달하는 능력이 있다니..

What is the difference between ZCA whitening and PCA whitening?

같은 사람의 PCA를 사용한 whitening 방법에 대한 글도 훌륭하네요.



Similar Posts:

Learning to execute

Learning to execute. 계산을 RNN으로 해보자. https://arxiv.org/abs/1410.4615

덧셈 문자열 구현을 RNN으로 만든 Keras 구현 예시. 이 구현에서는 입력을 뒤짚는 부분도 흥미로움. 예를들어 12+34는 43+21로 만드는데, 실제 덧셈은 일의 자리 다음 십의 자리를 계산한다는 것을 생각하면 충분히 이해가 됨. 실행해보면 성능도 매우 우수함.



Similar Posts: