Naive Bayes Models
확률적 모델에서 분류에 가장 많이 쓰이는 Naive Bayes Models에 대해 알아보겠다.
먼저, 비교 대상으로 logistic function에 대해 얘기해보겠다.
logistic function의 결과값은 확률이라고 알고 있는 사람이 많다.
사실 sigmoid의 값일 뿐 그 결과값을 확률로 생각하는 것이다.
그리고 binary class에만 적용 가능하다는 점이 특징이다.
하지만 나이브베이즈 모델은 binary 뿐만 아니라 multiple class에도 적용가능한 모델이며, 실제로 각 class에 속할 확률을 계산하여 내놓는다.
c(타겟변수)와 연관된 attribute가 X1, X2, ..., Xn이라면 위와 같은 그림으로 표현할 수 있고 각 attribute는 서로 독립이라고 가정한다.
또한 앞서 포스팅하였던 ML러닝으로 위 그림의 세타들을 구할 수 있다.
X1, X2, ..., Xn의 value들인 x1, x2, ..., xn으로 각 클래스의 확률을 구할 수 있는데
위와 같이 베이지안 네트워크에 따라 나타낼 수 있다.
이렇게 됨으로써 CPT를 활용해 확률을 구할 수 있게 되었다.
이 나이브베이즈 모델의 장점은 예측해야하는 파라미터가 적다는 것이다.
만약
위 그림에서 X1, X2, ..., Xn이 모두 binary라면 총 파라미터 개수는 2n+1개가 된다.
또한 ML 러닝을 통해 쉽게 파라미터들을 구할 수 있다.
마지막으로, 확률적으로 모델을 구축하기 떄문에 노이즈 데이터나 결측값에 대해 Robust하다.
만약, 데이터 중 0이 있으면 어떻게 계산해야 할까?
바로 Laplace correction을 이용한다.
Laplace correction
확률에서 0이나 1은 매우 극단적인 값으로 비현실적인 값이다.
따라서 만약 데이터에 0이나 1이 존재한다면 조정을 해줘야하는데 그때 Laplace correction이 유용하게 사용된다.
예를 들어 아래와 같은 데이터가 있다고 하자
첫번째 표로부터 두번째 표를 얻었다. outlook가 overcast일때 play가 no인 경우가 하나도 없는 데이터인 것이다.
이런 경우 확률이 0이게 된다.
laplace correction을 사용하여 각 데이터에 +1해주고 그 결과 다음과 같이 고칠 수 있다.
확률은 절대적인 수치가 아닌 상대적인 수치이기 때문에 같은 변수안에서 +1을 더해주고 확률값을 구해도 무방하다.
만약 새로운 데이터 중 missing value가 있으면 어떻게 처리해야할까?
위 체인룰에 따라 결측값이 있는 변수만 제외하고 나머지 변수들을 이용하여 확률을 구할 수 있다.
나이브베이즈모델에서 만약 변수들이 numeric 속성이면 어떡할까?
위에서는 변수들이 이산형변수일때를 보았는데
만약 변수가 수치형변수 즉 연속형 변수일때는 어떻게 해야할지 알아보겠다.
그런 경우, 수치들이 정규분포를 따른다고 가정하고 문제를 해결한다.
위 표와 같이 수치형 속성들이 있다면 mean값과 sd값을 구한다.
이 확률은 위 식에서 x에 66을 넣고 mean과 시그마에는 아까 표에서 구한 mean값과 sd값을 넣어준다.
이렇게 조금 복잡하지만 모든 경우의 확률을 구할 수 있었다.
Discussion
나이브베이즈모델은 실제 굉장히 복잡한 model보다 우수한 성능을 보이는 경우가 많다.
속성들이 독립적이다라는 것을 가정하고 모델을 만드는데, 이것은 계산을 편리하게 하기 위해이다.
따라서 속성들이 독립적이지 않으면 성능이 좋지가 않다.
따라서 독립적이지 않은 변수를 선택하여 제거하는 것이 매우 중요한 단계이다.
수치형속성이 정규분포를 따르지않는다면 실제 따른다고 생각되는 분포를 사용하는 방법도 있음(상당히 골치가 아플 수도 있음)
아니면 차라리 discretize해버리고 모형을 만드는 방법도 있음
결과적으로 확률들로 순위를 세우면 ranking들은 정확하지만 그 확률 수치는 정확하지 않음
단순히 0.5가 넘으면 1, 안넘으면 0으로 하는건 위험할 수도 있다.
따라서 어디서 자르는 것이 좋은지를 결정할 때는 ROC curve를 이용하여 best operating point를 찾는 것을 추천한다.
'대학원 공부 > 기계학습의원리' 카테고리의 다른 글
[머신러닝 원리] 12-1. 강화 학습(Reinforcement Learning) (0) | 2022.12.08 |
---|---|
[머신러닝 원리] 10-1. Features (0) | 2022.11.23 |
[머신러닝 원리] 9-4. 확률적 모델(Probabilistic Models) (0) | 2022.11.17 |
[머신러닝 원리] 9-2. 확률적 모델(Probabilistic Models) (0) | 2022.11.16 |
[머신러닝 원리] 9-1. 확률적 모델(Probabilistic Models) (2) | 2022.11.15 |