본문 바로가기

분류 전체보기

(297)
[Machine Learning] XGBoost (1) Algorithm Schema 본 포스팅은 STATQUEST 유튜브 채널을 Reference하여 만들었습니다. XGBoost는 Gradient Boosting 알고리즘을 기반으로 하고 있음. 일반적인 Gradient Boosting과의 차이점은 Training algorithm 개선되었고, Optimization Technique이 추가되었음. ​ A. Regression Task. Drug Dosage로 Drug Effectiveness를 예측하는 Task를 가지고, 4개의 관측치가 있다. XGBoost는 초기 예측을 Regression, Classification 모두 default로 0.5의 값으로 설정함. 이제 오차를 계산하고, 하나의 Leaf에 전부 집어넣는다. a) XGBoost Tree XGBoost는 Regression..
[Machine Learning] Gradient Boosting (Classification) 본 포스팅은 STATQUEST 유튜브 채널을 참고하였습니다. 위의 데이터에 대해서 3가지 input attribute로 Love troll 2를 예측하고자 한다. Classification Task 이므로 오차 함수를 Cross Entropy로 정의한다. Step 1) ▶ 모델에 대한 초기 예측 값을 정해야 하는데, 오차를 최소화하는 값으로 정하자. ▶ Classification Task에서는 Logistic Regression과 마찬가지로, log(odds)를 사용한다. ▶ 따라서, 위의 케이스에서 초기 예측 값은 다음과 같다. Step 2) A) ▶초기 오차를 구하면 y_i - p 와 같다. 위 경우에서 p = 0.67 이므로 Residual은 다음과 같다. B) ▶ Regression Tree를 적..
[Machine Learning] Gradient Boosting (Regression) 1) Framework ​ ▶ Gradient Boosting은 오차를 줄여 나가는 방식으로 Weak learner를 학습한다. ▶ 즉 다시 말해, 각 iteration 마다 오차를 예측하는 model을 만들고, 예측 값만큼 초기 예측에 계속 더해 주는 방식으로 진행한다. ​ 2) Algorithm ​ A. Regression Task. ​ ▶ 위의 데이터에 대해서 3가지 input attribute로 Weight를 예측하고자 한다. ▶ Regression Task 이므로 오차 함수 를 MSE로 정의하고자 한다. ​ ​ Step 1) ▶ 모델에 대한 초기 예측 값을 정해야 하는데, 오차를 최소화하는 값으로 정하자. ▶ 위 식을 미분해서 0이 되는 감마 값을 찾으면, y의 평균이 된다. ​ Step 2) ..
[Machine Learning] AdaBoost 이번 포스팅에서는 AdaBoost에 대해서 배워보도록 하겠습니다. 본 포스팅은 STATQUEST 유튜브 채널을 참고하여 만들었습니다. 우선 알고리즘을 전체적으로 한 번 살펴보도록 하겠습니다. AdaBoost 알고리즘을 수학적으로 풀어보았습니다. 우선 자세하게 들어가기전에 각 스텝별로 목적이 무엇인지를 미리 알아보도록 하겠습니다. Step 1을 보시면 D라는 값에 동일한 1/N 이 주어집니다. 우선 D에 대한 정의를 보시면, 관측치에 대한 Weight라고 되어있습니다. 즉, Step 1에서는 모든 관측치에 동일한 Weight를 주고 시작하겠다는 의도로 볼 수 있습니다. 그리고 이제 Step 2부터는 T번의 Iteration이 돌게됩니다. 이 때, T는 weak learner의 개수라고 유추할 수 있습니다...
[Machine Learning] Boosting (부스팅) 부스팅은 배깅이랑 비슷하면서도 약간 다릅니다. 배깅은 Raw data을 random sampling하여 bootstrap 표본을 만들고, 이 표본을 통해 모델을 각각 Train 하였습니다. 반면에 부스팅은, 우선 Input data는 고정을 하고, 모델을 Train 합니다. 그러면, 첫 모델에 대해서 맞춘 관측치와 틀린 관측치가 있을거잖아요? 다음 모델을 만들 때, 틀린 관측치를 더 잘맞추게 하기 위해서, 오차에 더 큰 가중치를 부여합니다. 이러한 과정을 N번 반복한 후, N개의 모델을 선형 조합하여 최종 예측 값을 출력합니다. 위의 그림을 보면 학습된 모델들이 Weak Classifier로 정의가 됩니다. 이는 Boosting을 할 때, 학습할 모델을 복잡한 모델을 사용하지 않고, 매우 단순한 모델을 ..
[Machine Learning] Bagging (배깅) 배깅(bagging)은 bootstrap aggregating의 줄임말입니다. ​ 배깅의 알고리즘에 대해서 먼저 배워보도록 하겠습니다. 배깅을 이해하기 쉽게 하기 위해서, 그림을 하나 그려보았습니다. 배깅을 크게 3개의 단계로 구성됩니다. ​ (1) Random Sampling 우선 Raw Data로 부터 동일한 크기의 표본 자료를 N번 Random sampling 합니다. 그러면 N개의 Train dataset을 만들 수 있습니다. 이를 붓스트랩 (bootstrap) 자료를 생성한다고 정의합니다. ​ (2) Training 위 절차에서 생성된 N개의 붓스트랩 자료들을 활용해서, N개의 모델을 학습합니다. ​ (3) Prediction N개의 모델을 모두 활용하여, Prediction 값을 얻습니다. R..
[R] 신경망 (Neural network) 이번 포스팅에서는 인공신경망 (Neural network)를 R 환경에서 실습해보겠습니다. 실습 데이터는 German credit 데이터로, 독일의 신용 평가 데이터입니다. german
[R] 협업 필터링 (Collaborative filtering) 이번 포스팅에서는 협업 필터링 (Collaborative filtering)을 R 환경에서 실습해보겠습니다. 데이터는 영화 평점 데이터입니다. install.packages("recommenderlab") library(recommenderlab) 저희가 사용할 패키지는 recommenderlab 입니다. movie