ML Basic - 머신러닝과 확률

Prior & Posterior

  • 사전 확률(prior probability):

    • 관측자가 관측을 하기 전에 시스템 또는 모델에 대해 가지고 있는 선험적 확률. 예를 들어, 남여의 구성비를 나타내는 p(남자), p(여자) 등이 사전확률에 해당한다.
    • 특정 사상이 일어나기 전의 확률을 뜻한다.
    • 선험적 확률은 베이즈 추론에서 관측자가 관측을 하기 전에 가지고 있는 확률 분포를 의미한다.
    • ex) 동전을 던져서 앞면이 나올 확률은 1/2, 특이한 동전은 1/3이다.
    • 사전 확률은 일반적으로 실험하는 대상에 대해 잘 알고 있는 전문가가 선택하거나(informative prior), 혹은 전문적인 정보가 없는 무정보적 분포(uninformative prior)로 주어진다.
  • 사후 확률(Posterior):

    • 사건이 발생한 후(관측이 진행된 후) 그 사건이 특정 모델에서 발생했을 확률
    • 사건 발생 후에 어떤 원인으로부터 일어난 것이라고 생각되어지는 확률
    • 조건부 확률을 통해 사후 확률을 표현할 수 있음
    • 사전 확률과 가능도(likelihood)가 주어졌을 때, 관측자는 관측값을 얻은 다음 베이즈 정리에 의해 사후 확률을 얻을 수 있음
    • ex) 물건이 불량품이 생산되었을때 A공장에서 생산되었을 확률
    • $posterior = {likelihood \times prior \over evidence}$

MLE & MAP 예시

  • MLE(Maximum Likelihood Estimation) 방법

    • MLE 방법은 남자에게서 그러한 머리카락이 나올 확률 p(z|남)과 여자에게서 그러한 머리카락이 나올 확률 p(z|여)을 비교해서 가장 확률이 큰, 즉 likelihood가 가장 큰 클래스(성별)를 선택하는 방법
  • MAP(Maximum A Posteriori) 방법

    • MAP 방법은 z라는 머리카락이 발견되었는데 그것이 남자것일 확률 p(남|z), 그것이 여자것일 확률 p(여|z)를 비교해서 둘 중 큰 값을 갖는 클래스(성별)를 선택하는 방법
    • 즉, 사후확률(posterior prabability)를 최대화시키는 방법으로서 MAP에서 사후확률을 계산할 때 베이즈 정리가 이용됨
  • 즉 MLE는 남자인지 여자인지를 미리 정해놓고 시작해서 비교하는거고 MAP는 남자인지 여자인지를 모르는 상태에서 그것이 정해지는 확률까지도 고려해서 비교하는 것임

  • MAP가 그래서 특정 경우가 정해지는 것에 대한 사전확률을 고려한다고 하는 것임

Maximum Likelihood Estimation (MLE)

Maximum a Posteriori Estimation (MAP)

자세히 보기

XGBoost 정리

본 문서는 XGBoost에 대한 기본적인 설명과 설치 가이드에 대해서 다룬 문서입니다.

A. 소개

  • 오픈소스 명: XGBoost
  • Github URL: https://github.com/dmlc/xgboost
  • Ref: Tianqi Chen and Carlos Guestrin. XGBoost: A Scalable Tree Boosting System. In 22nd SIGKDD Conference on Knowledge Discovery and Data Mining, 2016

B. 설치

XGBoost는 CPU전용 설치와 GPU전용 설치 두개로 나뉜다.
CPU 전용으로 설치한다면,

install xgboost``` 를 해버리면 끝이나
1
2
3
4
5
6
7
실제로 사용하려고 하면, Decision Tree보다 느린 속도를 체감하게 되므로 자연스럽게 GPU를 쓰게 된다.   
GPU 전용으로 설치하려면, 소스로부터 직접 컴파일 해야한다.
XGBoost에서는 install guide를 제공해주고 있는데, 현재까지 나온 install guide에는 약간의 문제가 있는데 바로 multi-gpu 관련 문제다. multi-gpu를 사용하기 위해선 GPU간의 communication을 담당해주는 **NCLL**(pronounced "Nickel") 이라는걸 셋팅해줘야하는데 기본 가이드에선 본 셋팅이 빠져있기 때문이다.
설치 가이드: http://xgboost.readthedocs.io/en/latest/build.html#building-with-gpu-support
교정된 내용 출처: https://github.com/dmlc/xgboost/issues/2915

Ubuntu기준 전체적인 설치 프로세스는 다음과 같다.

git clone –recursive https://github.com/dmlc/xgboost
git submodule init
git submodule update

자세히 보기