본문 바로가기

데이터 다루기/머신러닝 이론

(43)
[머신러닝] Bayesian Learning 기초 안녕하세요. 이번 포스팅에서는 베이지안 학습의 기초에 대해서 배워보도록 하겠습니다. 머신러닝을 깊숙히 이해하기 위해서는 베이즈 확률론이 필수라고 할 수 있습니다. ​ 기초적인 확률론을 배워보자면 P(A)는 이벤트 A가 일어날 확률을 의미합니다. 그리고 P(A|B)는 이벤트 B가 일어났을 때, 이벤트 A가 일어날 확률을 의미합니다. ​ 다음으로, 알아야 할 개념은 사전확률과 사후확률입니다. 사전확률이란 아무런 정보도 없을 때의 가설에 대한 확률입니다. 예를들어서, A라는 사람이 있는데, 친구 B가 "A가 감기에 걸렸을 확률은 50%일 것이야."라는 가설을 세울 수 있습니다. 이 때, 사전확률은 A가 감기에 걸렸을 확률은 = 1/2로 정의됩니다. 그런데 이 후, 새로운 정보가 들어왔습니다. B가 오늘 아침에..
[머신러닝] Minimum-redundancy-maximum-relevance (mRMR) 안녕하세요, 이번 포스팅에서는 Feature Selection의 한 방법인 Minimum-redundancy-maximum-relevance (mRMR) 에 대해서 배워보도록 하겠습니다. ​ mRMR은 filter method의 한 방법으로써, 두 가지 요소를 고려합니다. 바로, Y를 잘 예측하는 변수이면서, X들과도 중복성이 적은 변수들을 선택합니다. 이 때, Y와의 상관성과 X들과의 중복성은 일반적으로 피어슨 상관계수와 Mutual information으로 측정할 수 있습니다. ​ mRMR의 알고리즘을 그림으로 도식화시키면 다음과 같습니다. mRMR의 알고리즘을 자세하게 들여다보도록 하겠습니다. mRMR 방법은 굉장히 효율적인 방법이지만, 실제로 하나의 독립변수가 종속변수와의 큰 상관성이 없다고 나오..
[머신러닝] Feature Selection 안녕하세요, 이번 포스팅에서는 Feature Selection에 대해서 배워보도록 하겠습니다. Feature Selection은 기계학습에서 굉장히 중요한 작업입니다. ​ 데이터가 굉장히 많고, 다양하게 존재한다면, Feature selection을 솔직히 말해서 그다지 필요하지는 않습니다. 하지만, 현실 세계에서는 데이터가 이상적이지 않기 때문에, 필요성이 급증하였습니다. output을 예측하는데에 상관이 없는 변수들이 존재하면, 우선 computational cost가 늘어나고, overfitting을 초래할 수 있습니다. overfitting의 예를 들자면, 의료 진단 도메인에서, 질병의 유무에 대해서 예측을 할 때, 환자 ID가 결과에 큰 영향을 미친다는 결론이 나올 수 있습니다. 하지만 사실 상..
[머신러닝] 랜덤 포레스트 (Random Forest) 안녕하세요, 이번 포스팅에서는 가장 유명한 앙상블 기법인 랜덤 포레스트 (Random Forest)에 대해서 배워보도록 하겠습니다. ​ 랜덤 포레스트는 배깅에서 약간 변화된 방법의 일종이면서, Base Learner로써 의사결정 나무를 사용합니다. 랜덤 포레스트와 배깅의 차이점은, 배깅은 데이터를 랜덤 추출해서 사용하지만, 랜덤포레스트는 x, 즉 독립변수를 랜덤추출해서 사용합니다. 분류문제의 경우 p개의 독립변수에서 sqrt(p) 개를 랜덤하게 추출해서 사용하며, 회귀문제에서는 p/3개의 독립변수를 추출해서 사용하는 것을 권장하고 있습니다. 그림으로 보기 쉽게 도식화하면 다음과 같습니다. ​ 모든 X를 다 사용하지 않고, 몇개만 사용하는 알고리즘인데 과연 이게 좋을까? 싶지만 실제로 랜덤 포레스트를 사용..
[머신러닝] Ensemble Learning (4) Stacking 안녕하세요, 이번 포스팅에서 배워볼 앙상블 학습 방법은 Stacking입니다. Stacking은 1992년에 David Wolpert가 개발한 알고리즘입니다. ​ 알고리즘은 boosting과 비슷하지만, 차별적인 특징은 meta-level learner 를 사용한다는 것입니다. ​ meta-level learner가 무엇인지를 설명하기에 앞서, 전반적인 알고리즘을 배워봅시다. ​ (1) 우선 전체 training 데이터 셋을 겹치는 데이터가 없게, 2 그룹으로 나눕니다. (2) 그리고, 여러가지 다양한 N개의 Base Learner들을 첫 번째 데이터 그룹에 학습시킵니다. (3) 학습 시킨 Base learner를 통해, 2 번째 데이터 그룹을 Test set으로 받아들여, 예측값을 출력합니다. (4) ..
[머신러닝] Ensemble Learning (3) Boosting (AdaBoost) 이번 포스팅에서는 앙상블 기법에서, Bagging의 성능을 향상시킨 Adaboost에 대해서 배워보도록 하겠습니다. Bagging은 랜덤하게 추출한 데 반해, Adaboost는 이전 결과를 반영하여 각 데이터의 선택될 확률에 차이를 줍니다. 쉽게말해서, 100개중에서 30개를 선택해서 예측 모델을 만들었을 때, 20개를 맞추고 10개를 틀렸다고 생각해봅시다. 그러면, 맞은 20개에 대해서는 다음 선택시 확률을 줄이고, 틀린 10개에 대해서는 다음 선택시 확률을 높입니다. 얼핏 생각하였을 때, 틀린 데이터의 경우, 다음 모델을 만들 때, 다시 선택되게 하는것은 합리적으로 보입니다. ​ 실제로 이 방법이 매우 효과적이라서, Adaboost는 굉장히 많이 쓰이고 있습니다. 한가지 단점으로는 Bagging은 1..
[머신러닝] Ensemble Learning (2) Bagging 안녕하세요, 이번 포스팅부터는 앙상블 학습방법에서 하나하나 유명한 기법들을 배워보도록 하겠습니다. 첫번째는 Bagging입니다. ​ Bagging은 Bootstrap aggregating 의 약자로, Bootstrap에서 가장 굉장히 많이 쓰이는 방법입니다. Bagging은 모델의 예측값에 대한 분산을 낮추는 방법으로써, 전체 training set에서 특정 개수만큼 복원 추출하여 여러개의 subset training set을 만들어 사용합니다. 알고리즘을 시각적으로 도식화하면 다음과 같습니다. ​ 이 때, 새로운 입력값이 Bagging 모형에 들어가게 되면, N개의 Base Learner들에게서 N개의 예측값이 출력됩니다. 그리고, N개의 예측값에 대하여 분류문제의 경우 다수결의 원칙에 따라 가장 많은..
[머신러닝] Ensemble Learning (1) 안녕하세요, 이번 포스팅부터는 Ensemble Learning 에 대해서 배워보도록 하겠습니다. 우선, 이번 포스팅에서는 Ensemble Learning에 대한 정의 및 목적, 그리고 종류에 대해서 간략하게 오리엔테이션으로 다루어보고자 합니다. ​ 1. 정의 및 목적 앙상블 학습은 새로운 예측값에 대하여 미리 학습된 모델들을 통해 분류 문제에 대해서는 다수결로, 그리고 회귀 문제에 대해서는 평균값으로 예측 하는 학습 방법입니다. 앙상블을 쉽게 이해하기 위해서 그림을 하나 그려보았습니다. N개의 Base Learner가 내재되어 있는 앙상블 학습 모델에 새로운 입력값 Xk 가 들어오게 되면, N개의 Base Learner에서 N개의 예측값이 나오게 됩니다. 그리고 N개의 예측값에 대해서 다수결이나 평균값으..