원문 https://machinelearningmastery.com/boosting-and-adaboost-for-machine-learning/ 부스팅은 많은 약한 분류기를 가지고 강한 분류기를 만들 수 있도록 하는 앙상블 기술임. 이 포스트에서 당신은 머신 러닝에 관한 AdaBoost 앙상블 방법을 발견할 것임. 이 포스트를 읽은 후, 당신은 알게 될것임. 부스팅 앙상블 방법이 무엇인지 그리고 일반적으로 어떻게 동작하는지. AdaBoost 알고리즘을 사용하여 의사결정나무를 향상시키는 방법. 학습된 AdaBoost 모델을 사용하여 예측 하는 방법. AdaBoost 알고리즘을 사용하기 위해 당신의 데이터를 가장 좋게 준비하는 방법. 이 포스트는 개발자들에 의해 쓰여졌으며, 통계 또는 수학에 관한 배경지식..
원문 https://machinelearningmastery.com/gentle-introduction-gradient-boosting-algorithm-machine-learning/ 그라디언트 부스팅은 예측 모델을 만드는데 있어서 가장 강력한 기술 중 하나임. 이 포스트에서, 당신은 그라디언트 부스팅 머신 러닝을 발견하고 어디서 파생됐는지, 어떻게 작동하는지에 대해 친절하게 소개할 것임. 이 포스트를 읽고 난 뒤, 당신은 알게 될 것임. 학습 이론으로 부터 부스팅의 기원과 AdaBoost. Loss function (손실 함수), Weak Learners (약한 학습기), additive model (추가적인 모델) 을 포함하여 그라디언트 부스팅이 어떻게 작동하는지. 다양한 Regularization..
예시 데이터를 준비한다. (Parameter에 들어가는 데이터는 범주형이라고 생각하면 된다.) 1. fct_count(데이터, sort = F, prob = F) 각 levels의 갯수를 구해준다. sort = T라면 내림차순으로 정렬하여 반환하고, prob = T라면 전체 데이터 중 각 levels의 비율들을 구해준다. 2. fct_unique(데이터) unique() 함수와 똑같이 중복을 제외한 유일한 집합들을 보여준다. 차이점은 반환해줄 때, factor형으로 반환한다. 3. fct_c(데이터1, 데이터2) levels가 다른 두 개의 factor 데이터를 하나의 factor 데이터로 묶어준다. levels를 묶어주기 때문에 반드시 데이터는 factor형이어야 한다. 4. fct_unify(list..
예시 데이터는 dplyr 패키지에 있는 'starwars' 데이터를 이용한다. 데이터 구조를 보자. 구조를 한 눈에 보기 위해서 일부 열들을 제거한다. 1. pull(데이터, 추출할 column) 선택한 column의 값들을 vector로 반환해준다. 2. select(데이터, 추출할 column) pull과 기능은 비슷하다. 차이점은 반환하는 데이터 형태로 select는 data.frame으로 반환한다. 3. pull과 select와 함께 쓰면 좋은 함수들 3-1. starts_with(문자열), ends_with(문자열) starts_with는 paramter로 전달한 문자열로 시작하는 column들을 반환한다. ends_with는 start_with와 반대로 parameter 문자열로 끝나는 col..
0. 예시 데이터 생성 1. gather(데이터, key, value, 열1, 열2, ..., fill = NA) Column을 Row로 모은다고 생각하면 이해하기 쉽다. key = column 이름, value = column 값. 데이터에서 key와 value column들을 생성하며, key 위치에는 parameter 열의 이름 / value 위치에는 해당 열의 값들을 입력한다. fill은 NA 값이 존재 할 경우 어떠한 값으로 채울지 결정하는 parameter. 예제로 보면 'column 이름을 모으는 column'은 stock, 'column 값을 모으는 column'은 price, '모이는 column'은 X, Y, Z이다. -time 같은 경우는 모든 column들 중 time column만..
논문 https://papers.nips.cc/paper/6907-lightgbm-a-highly-efficient-gradient-boosting-decision-tree.pdf Abstract GBDT (Gradient Boosting Decision Tree) 는 유명한 머신 러닝 알고리즘이며, XGBoost와 pGBRT 같은 효과적인 구현들이 있음. 비록 많은 Engineering 최적화들이 이 구현들에 적용되었지만, 효율성과 Scalability는 Feature 차원이 높고 데이터 크기가 클 경우, 여전히 만족스럽지 못함. 핵심 이유는 각 Feature가, 가능한 모든 분할 지점의 Information Gain을 추정하기 위해 모든 데이터 인스턴스를 탐색해야된다는 것이며, 이 작업은 많은 시간을..
논문 http://dmlc.cs.washington.edu/data/pdf/XGBoostArxiv.pdf Abstract 부스팅 트리 (Boosting Tree) 는 매우 효과적이고 널리 사용되는 머신러닝 방법임. 이 논문에서 우리는 XGBoost 라는 확장 가능한 (Scalable) End-to-End 트리 부스팅 시스템을 설명함. 우리는 Sparse한 데이터에 대한 새로운 희소성 인식 알고리즘 (Sparsity-Aware Algorithm) 과 근사적인 트리 학습 (Approximate Tree Learning) 을 위한 Weighted Quantile Sketch 를 제시함. 더 중요한 것은, 우리가 Scalable한 트리 부스팅 시스템을 구축하기 위해 캐시 (Cache) 액세스 패턴, 데이터 Co..
Overfitting의 문제와 해결 방안 Sample 데이터가 제한되어 있을 경우, 복잡한 모델을 이용할수록 MLE의 추정 값이 상대적으로 Overfitting 되는 경향을 가진다. 이를 해결하기 위해서 적합(fitting)되는 해(β)에 일정한 패널티(penalty)를 부과하여 모델의 Overfitting을 방지할 수 있다. λ는 penalty의 영향력을 결정하는 hyper parameter이다. 일반적으로 λ를 크게 할수록 penalty가 커져 β는 0에 가까워지며 적합(fitting)되는 해(β)의 variance를 감소시킨다. Shrinkage Method 변수들 중 일부를 선택하여 적합시키는 것이 아닌 모든 변수들을 사용하여 모델에 적합하되 변수의 계수를 0 또는 0에 가깝게 만든다. 결국 추정..