목록전체 글 보기 (259)
귀퉁이 서재
앙상블 방법론에는 부스팅과 배깅이 있습니다. (머신러닝 - 11. 앙상블 학습 (Ensemble Learning): 배깅(Bagging)과 부스팅(Boosting)) 배깅의 대표적인 모델은 랜덤 포레스트가 있고, 부스팅의 대표적인 모델은 AdaBoost, Gradient Boost등이 있습니다. Gradient Boost의 변형 모델로는 XGBoost, LightGBM, CatBoost가 있습니다. XGBoost, LightGBM, CatBoost은 캐글에서 Top Ranker들이 많이 사용하고 있는 모델입니다. XGBoost, LightGBM, CatBoost에 대해서는 추후 알아보도록 하고, 이번 글에서는 Gradient Boost에 대해 알아보겠습니다. 본 글은 StatQuest의 Gradient ..
샌프란시스코의 범죄에 대한 컴피티션입니다. (https://www.kaggle.com/c/sf-crime) 2003.1.6.부터 2015.5.13. 까지의 샌프란시스코에서 발생한 범죄에 대한 정보를 기반으로 분석을 해야 합니다. 훈련 데이터와 테스트 데이터는 매주 로테이션됩니다. 즉 1, 3, 5, 7,... 주는 훈련 데이터, 2, 4, 6, 8,..... 주는 테스트 데이터로 쓰입니다. 총 훈련 데이터는 약 870,000개입니다. 테스트 데이터까지 하면 170만 건입니다. 12년 동안 샌프란시스코에서만 170만 건의 범죄가 일어났다니.. '새삼 범죄가 많은 도시구나' 알게 되었습니다. Feature는 아래와 같습니다. Dates - 범죄가 일어난 일시 Category - 범죄 유형 (이 값이 Targ..
과거 판매량 데이터를 기반으로 향후 판매량을 예측하는 컴피티션입니다. (Data 링크) Coursera의 Data Science 강의 최종 과제이기도 한 문제랍니다. 훈련데이터는 2013년 1월부터 2015년 10월까지의 물품 정보 및 판매량이며, 테스트 데이터는 2015년 11월 물품 정보입니다. 이를 기반으로 11월 물품의 판매량을 예측하는 것입니다. Top 랭크가 되어 있는 notebook중 하나인 Feature engineering, xgboost를 참고했습니다. 사실 다른 기법보다도 Feature Engineering에 집중했습니다. 기본적인 중복 처리, Null 체크, Outlier 처리 등을 한 뒤, 카테고리 데이터를 인코딩 했습니다. 그리고 나서 바로 Feature Engineering을 ..
많은 사람들이 데이터를 신뢰하고 있다. '감'이 아니라 '숫자'로 현상을 표현하는 것이 객관성의 발로라 생각하기 때문이다. 데이터를 기반으로 경영하는 기업들이 많아지고 있다. 더 이상 고위직의 '직감'으로 기업을 경영하는 시대는 끝이 났다. 데이터가 모든 걸 말해주고, 의사결정까지 도와준다. 이렇듯 우리는 데이터를 믿는다. 하지만, 이 책은 데이터의 객관성에 대해 생각해보게 한다. 과연 데이터가 정말로 객관적일까? 데이터에 주관성이 묻어나진 않을까? 모든 걸 데이터에 맡길 만큼 데이터는 거짓말을 하지 않을까? 조작하지 않는 한, 데이터는 거짓말을 하지 않는다. 그러나 우리는 우리가 보고 싶어 하는 데이터를 통해 현상을 보려 하기에 그 선택과정에서 커다란 왜곡이 발생한다. 인간은 수억 년의 진화 과정에서 ..
본 챕터에서는 부스팅 기법 중 가장 기본이 되는 AdaBoost에 대해 알아보겠습니다. 부스팅에 대해서 잘 모르신다면 '머신러닝 - 11. 앙상블 학습 (Ensemble Learning): 배깅(Bagging)과 부스팅(Boosting)'을 참고해주시기 바랍니다. 아래 AdaBoost는 StatQuest의 AdaBoost, Clearly Explained를 요약 정리한 글입니다. AdaBoost 개요 아래와 같이 노드 하나에 두개의 리프(leaf)를 지닌 트리를 stump라고 합니다. AdaBoost는 아래와 같이 여러 개의 stump로 구성이 되어있습니다. 이를 Forest of stumps라고 합니다. 트리와 다르게 stump는 정확한 분류를 하지 못합니다. 여러 질문을 통해 데이터를 분류하는 트리와..
자전거 대여 수량을 예측하는 컴피티션을 해봤습니다. (Kaggle 링크: https://www.kaggle.com/c/bike-sharing-demand) 2011년부터 2012년에 수집한 데이터를 기반으로 합니다. 날짜 및 시간, 계절, 공휴일 여부, 날씨, 온도, 체감 온도, 습도, 풍속, 회원 여부에 따라 자전거 대여 수량을 예측하는 것입니다. 주어진 데이터가 깔끔한 편이라 EDA 하기에는 편했습니다. 또한 EDA만으로도 자전거 대여 수량에 영향을 미치는 Feature를 뚜렷이 구분할 수 있었습니다. 본 프로젝트를 하기 위해 corazzon님의 유튜브(https://www.youtube.com/watch?v=Q_MbN-vu_2w) 를 참고했습니다. 아래는 본 자전거 대여 수량 컴피티션을 진행한 제 ..
파라미터와 하이퍼 파라미터는 명확히 다른 개념입니다. 하지만 많은 사람들이 두 단어를 혼용해서 쓰고 있습니다. 특히, 하이퍼 파라미터를 파라미터라 칭하는 오류가 많습니다. 파라미터와 하이퍼 파라미터의 차이에 대해 알아보겠습니다. 본 챕터는 Machine Learning Mastery의 What is the Difference Between a Parameter and a Hyperarameter?를 번역 및 요약한 글입니다. 파라미터(Parameter) 아래는 Machine Learning Mastery에서 기술한 파라미터에 대한 정의 및 특성입니다. A model parameter is a configuration variable that is internal to the model and whose ..
4년 반 전 군대에서 '인정 욕구'라는 주제로 긴 글을 쓴 적이 있다. 이 책에서 말하는 '인기를 바라는 마음'과 맥락이 유사한 글이었다. 4년 반 전 그 글을 쓰며 생각했다. '사람들은 남들에게 보여지는 면에 대해 왜 이리도 신경을 쓰는가?', '인정 욕구의 득은 무엇이고 실은 무엇인가?', '우리가 좋은 옷, 좋은 차, 좋은 집을 사는 이유는 본인이 정말 그것을 좋아해서 일까?' 그때 쓴 글이 인정받고 싶은 욕구에 대한 의문을 품은 글이라면, 이 책은 나에게 행복을 가져다 주는 인기란 무엇인가 살펴보고, 그 인기(사실 호감이라 표현해야 더 적합하다)를 얻기 위해서는 어떻게 해야하는지 말해주고 있다. 저자는 인기가 있다고 반드시 더 행복하지는 않는다고 말한다. 여기서 말하는 인기는 지위와 관련된 인기다..
8월 17일부터 18일까지 양일간 2019 PYCON에 참가했습니다. 작년에도 참가했었는데 그때 많은 인사이트를 얻어 올해도 참가하기로 했었습니다. 그런데 기대가 너무 커서 그랬는지 생각보다 별로인 강연이 많았습니다... 아무튼, 그중 가장 기억에 많이 남는 강연은 코딩하는 공익 반병현씨의 키노트였습니다. 반병현씨는 카이스트 석사를 마치고 노동청에서 공익 근무를 했습니다. 노동청에 배치를 받고 단 며칠만에 반년 동안 해야할 일을 끝내버렸습니다. 파이썬을 이용해서 말이죠. 그것이 회자되고 회자되어 뉴스에도 나오는 등 엄청난 반향을 일으켰습니다. 반병현씨는 어떤 목적을 위해 코딩한다기보다 그냥 코딩 자체가 재미있어서 하는 사람 같았습니다. 그 강연에서 인사이트를 얻어 제 주변에서도 코딩으로 해결할 수 있는 ..
편향-분산 트레이드오프 (Bias-Variance Trade-off)는 지도 학습(Supervised learning)에서 error를 처리할 때 중요하게 생각해야 하는 요소입니다. 우선, 아래 그림을 통해 편향(Bias)과 분산(Variance)의 관계를 살펴보시기 바랍니다. 편향은 예측값이 정답과 얼마나 멀리 떨어져 있는지로 측정할 수 있습니다. 분산은 예측값들끼리의 차이로 측정할 수 있습니다. 편향(Bias) 편향은 지나치게 단순한 모델로 인한 error입니다. 편향이 크면 과소 적합(under-fitting)을 야기합니다. 모델에 편향이 크다는 것은 그 모델이 뭔가 중요한 요소를 놓치고 있다는 뜻입니다. 분산(Variance) 분산은 지나치게 복잡한 모델로 인한 error입니다. 훈련 데이터에 지..
앙상블(Ensemble) 앙상블은 조화 또는 통일을 의미합니다. 어떤 데이터의 값을 예측한다고 할 때, 하나의 모델을 활용합니다. 하지만 여러 개의 모델을 조화롭게 학습시켜 그 모델들의 예측 결과들을 이용한다면 더 정확한 예측값을 구할 수 있을 겁니다. 앙상블 학습은 여러 개의 결정 트리(Decision Tree)를 결합하여 하나의 결정 트리보다 더 좋은 성능을 내는 머신러닝 기법입니다. 앙상블 학습의 핵심은 여러 개의 약 분류기 (Weak Classifier)를 결합하여 강 분류기(Strong Classifier)를 만드는 것입니다. 그리하여 모델의 정확성이 향상됩니다. 앙상블 학습법에는 두 가지가 있습니다. 배깅(Bagging)과 부스팅(Boosting)입니다. 이를 이해하기 위해서는 부트스트랩(Bo..
짧은 분량이라 2번 읽었다. [데미안]과 마찬가지로 [싯다르타] 역시 성장소설이다. 소설의 줄거리는 다음과 같다. 주인공 싯다르타는 바라문의 아들로 태어난다. 그는 바라문, 즉 귀족의 길을 버리고 자아의 근원을 찾기 위해 가족을 떠나 사문의 길을 택한다. 싯다르타의 절친인 고빈다도 싯다르타를 따라 사문의 길을 동행한다. 사문의 길을 걷던 중 싯다르타는 큰 고뇌에 빠진다. 오랫동안 명상, 금식, 침잠, 자기 수행을 하더라도 열반에 이르지 못할 것이라 생각을 한다. 사문 스승을 보더라도 여러 가지 위안을 얻기 위한 교묘한 재주를 부릴 뿐 평생 진정한 열반에 이르지 못할 것이고 생각한다. 싯다르타는 더 이상 스승으로부터 배울 것이 없다고 느낀다. 침팬지에게 배우더라고 이 정도로는 만족해 있을 것이라 생각한다...
교차검증 (Cross Validation) 교차검증은 모델을 평가하는 방법 중 하나입니다. 기본적으로 훈련 데이터를 기반으로 모델링을 하고 테스트 데이터로 해당 모델의 성능을 측정합니다. 하지만 테스트 데이터의 수가 적다면 성능 평가의 신뢰성이 떨어집니다. 테스트 데이터를 어떻게 잡느냐에 따라 성능이 상이하게 나온다면 신뢰성이 떨어지겠죠. 그렇다고 훈련 데이터를 줄이고 테스트 데이터를 늘리면 정상적인 학습이 되지 않습니다. 이런 문제점을 해결하기 위한 방법이 교차검증입니다. 훈련 데이터의 종속 변수값을 얼마나 잘 예측하였는지를 나타내는 것을 표본내 성능 검증 (in-sample testing)이라고 하고, 테스트 데이터의 종속 변수값을 얼마나 잘 예측하였는지를 나타내는 것을 표본외 성능 검증 (out-o..
차원 축소와 PCA 차원 축소는 많은 feature로 구성된 다차원 데이터 세트의 차원을 축소해 새로운 차원의 데이터 세트를 생성하는 것입니다. 일반적으로 차원이 증가할수록, 즉 feature가 많아질수록 예측 신뢰도가 떨어지고, 과적합(overfitting)이 발생하고, 개별 feature간의 상관관계가 높을 가능성이 있습니다. PCA(주성분 분석, Principal Component Analysis)는 고차원의 데이터를 저차원의 데이터로 축소시키는 차원 축소 방법 중 하나입니다. (Reference1) 머신러닝을 할 때 훈련 데이터의 feature가 많은 경우가 있습니다. 하지만 모든 feature가 결과에 주요한 영향을 끼치는 것은 아닙니다. 가장 중요한 feature가 있을 것이고, 그다음 중요한..
심리학자인 조던 피터슨은 사뭇 철학적이다. 심리학자라기보다 철학자에 가깝다. 피터슨은 이 책에 다양한 심리학 이론을 열거하지 않았다. 온전히 그의 생각을 표현했다는 것이 인상깊었다. 피터슨이 말하는 12가지 인생 법칙을 아래와 같다. 1. 어깨를 펴고 똑바로 서라 2. 당신 자신을 도와줘야 할 사람처럼 대하라 3. 당신에게 최고의 모습을 기대하는 사람만 만나라 4. 당신을 다른 사람과 비교하지 말고, 오직 어제의 당신하고만 비교하라 5. 아이를 제대로 키우고 싶다면 처벌을 망설이거나 피하지 말라 6. 세상을 탓하기 전에 방부터 정리하라 7. 쉬운 길이 아니라 의미 있는 길을 선택하라 8. 언제나 진실만을 말하라, 적어도 거짓말을 하지 말라 9. 다른 사람이 말할 때는 당신이 꼭 알아야 할 것을 들려줄 사..
Feature Scaling Feature Scaling이란 Feature들의 크기, 범위를 정규화시켜주는 것을 말합니다. 예를 하나 들어보겠습니다. A, B, C라는 사람이 있습니다. A는 6.1ft에 140 lbs, B는 5.9ft에 175 lbs, C는 5.2ft에 115 lbs입니다. 단위가 생소하겠지만 피트(ft), 파운드(lbs)로 했습니다. B의 상의 사이즈는 L이고, C의 상의 사이즈는 S라고 할 때, A의 상의 사이즈는 L일까요 S일까요? 직관적으로 봤을 때 L일 것입니다. B보다 몸무게는 작지만 키가 더 크기 때문입니다. 이제 사람이 아니라 컴퓨터에게 A의 상의 사이즈를 예측하는 걸 시켜본다고 합시다. 키와 몸무게에 대한 데이터를 토대로 상의 사이즈를 예측하려면 어떻게 해야 할까요? 가..
K-means clustering은 비지도 학습의 클러스터링 모델 중 하나입니다. 클러스터란 비슷한 특성을 가진 데이터끼리의 묶음입니다. (A cluster refers to a collection of data points aggregated together because of certain similarities) (Reference1) 여기서 말하는 비슷한 특성이란 가까운 위치를 의미합니다. 아래 그림에서는 총 3개의 클러스터가 있습니다. 같은 클러스터끼리 같은 색으로 표시를 해놨습니다. 거리가 서로 가까운 데이터끼리 군집(Cluster)을 이루고 있습니다. 클러스터링이란 어떤 데이터들이 주어졌을 때, 그 데이터들을 클러스터로 그루핑 시켜주는 것을 의미합니다. 위 데이터들은 처음엔 모두 까만 점이었..
K-최근접 이웃(K-Nearest Neighbor, KNN)은 지도 학습 알고리즘 중 하나입니다. 굉장히 직관적이고 간단합니다. 어떤 데이터가 주어지면 그 주변(이웃)의 데이터를 살펴본 뒤 더 많은 데이터가 포함되어 있는 범주로 분류하는 방식입니다. 처음 본 사람에 대해서 잘 모를 때 그 사람의 주변 친구들을 보면 대강 그 사람이 어떤 사람인지 알 수 있다고 하죠. 친구들 중 나쁜(?) 사람들이 많으면 그 사람도 나쁜 사람일 확률이 높고, 좋은 사람들이 많으면 그 사람도 좋은 사람일 확률이 높을 겁니다. 너무 극단적이고 일반화의 오류가 있는 예시긴 하지만 KNN을 이해하는데 도움이 될 것입니다. 아래 그림을 보겠습니다. 새로운 데이터가 주어졌을 때 (빨간 점) 이를 Class A로 분류할지, Class ..
이전 포스트에서 결정 트리(Decision Tree)에 대해 알아봤습니다. 랜덤 포레스트를 배우기 위해서는 우선 결정 트리부터 알아야 합니다. 결정 트리에 대해 잘 모른다면 이전 포스트를 먼저 보고 오시기 바랍니다. (머신러닝 - 4. 결정 트리) 랜덤 포레스트의 개념은 쉽습니다. 랜덤 포레스트의 포레스트는 숲(Forest)입니다. 결정 트리는 트리는 나무(Tree)입니다. 나무가 모여 숲을 이룹니다. 즉, 결정 트리(Decision Tree)가 모여 랜덤 포레스트(Random Forest)를 구성합니다. 결정 트리 하나만으로도 머신러닝을 할 수 있습니다. 하지만 결정 트리의 단점은 훈련 데이터에 오버피팅이 되는 경향이 있다는 것입니다. 여러 개의 결정 트리를 통해 랜덤 포레스트를 만들면 오버피팅 되는 ..
개발자 필독서 중 하나인 클린 코드는 어떻게 하면 코드를 깨끗하고 품질 좋게 짤 수 있는지에 대한 방법론을 설명한 책이다. 밥 아저씨라 불리는 로버트 C. 마틴이 쓴 책이다. 이제는 나이가 지긋이 들어 백발의 노인이 다 된 전설적인 분이다. 이 책은 지금까지 내가 얼마나 코드를 엉망으로 짰는지 일깨워줬다. 그동안 네이밍, 추상화, 코딩 컨벤션 정도만 주의한 수준에서 돌아가는 코드를 짰었다. 그마저 급할 땐 무시하기도 했었다. 혼자 개발을 하든 여럿이서 개발을 하든 깨끗한 코드를 짜는 건 정말 중요한 일인 것 같다. 혼자 개발을 하더라도 코드를 엉망으로 짜면 나중에 다시 그 코드를 볼 때 무슨 코드인지 못 알아볼 수도 있다. 누구나 알아볼 수 있는 깨끗한 코드를 짜기 위해서는, 이 책에 소개된 귀중한 방법..