일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 오픽
- stack 스택
- 바텀업
- opic
- 영어회화
- XML
- 안드로이드
- English
- 오픽점수잘받는방법
- 오픽공부법
- 주석
- dp
- 오픽가격
- 탑다운
- 오픽노잼공부방법
- 안드로이드주석
- 이진탐색
- topdown
- dynamicProgramming
- 디피
- 이진탐색 #나무 자르기
- ㅂ
- 영어말하기
- fibo
- 메모이제이션
- XML주석
- 피보나치수열
- 오픽노잼
- 다이나믹프로그래밍
RUBY
[R]4.확률적 학습: 나이브 베이즈 분류 본문
확률의 기본 원리
R을 텍스트 데이터를 분석하는 데 필요한 특화된 방법과 데이터 구조
나이브 베이즈를 이용한 SMS 스팸 메시지 필터 구축 방법
나이브 베이즈 이해
▶토마즈 베이즈 : 사건의 확률과 추가 정보를 고려 했을 때 확률이 어떻게 바뀌어야 만하는지 기본 원칙 개발, 베이지안 기법들의 기반 형성
▶ 확률 : 0에서 1사이의 숫자로 가용한 증거를 고려해 사건이 발생할 가능성을 표현한 것
▶베이지안 기법 기반의 분류기는 훈련 데이터를 활용해 특징 값이 제공하는 증거를 기반으로 결과가 관측될 확률을 계산
▶베이지만 분류기 사용분야
-스팸 이메일 필터링과 같은 텍스트 분류
-컴퓨터 네트워크에서 침입이나 비정상행위 탐지
-일련의 관찰된 증상에 대한 의학적 질병 진단
베이즈안 기법의 기본 개념
▶’사건(event)에 대한 우도(likelihood)는 복수 시행(사건이 발생할 기회)에서 즉시 이용할 수 있는 증거를 기반으로 해서 추정해야만 한다’는 아이디어 기반
사건 |
시행 |
앞면의 결과 |
동전 던지기 |
비가 오는 날씨 |
하루 |
메시지가 스팸이다 |
받은 이메일 메시지 |
후보가 대통령이 된다 |
대통령 선거 |
복권에 당첨되다 |
복권 |
확률의 이해
▶사건의 확률 = 사건이 발생한 시행 횟수 / 전체 시행 횟수
▶상호 배타적이고 포괄적이다(mutually exclusive and exhaustive)
: 두 사건이 동시에 발생 할 수 없고 유일하게 가능한 결과이다.
사건이 발생하면서 동시에 발생하지 않을 수 없기 때문에 사건은 자신의 여집합과 항상 배타적이고 완전하다.
ex) 스팸과 햄
▶결합확률: 두 사건이 결합되는 확률
▶독립사건(independent events): 두 사건이 완전히 관련이 없을 때
-사건 독립성은 단순히 한 사건의 결과를 아는 것만으로 다른 사건의 결과에 어떤 정보도 제공하지 못한다.
-ex) 동전 던지기에서 앞면이 나오는 것과 어떤 날의 날씨가 비가 오는지 또는 화창한지 여부는 독립적이다.
-모든 사건이 독립이라면 다른 사건을 관측해 어떤 사건을 예측하는 것은 불가능하다 => 종속사건이 예측 모델링의 기반이 된다
베이즈 정리를 이용한 조건부 확률 계산
▶P(A|B) : 사건 B가 발생한 경우 사건 A의 확률, 조건부 확률
▶ 조건부 확률(conditional probability) : A의 확률이 사건 B에서 발생한 것에 종속적 일 때
▶P(A|B)의 최고 추정치는 B가 방생했던 모든 시행에서 A와 B가 함께 발생한 시행의 비율
-B가 발생했다는 것을 알면 사건 A의 확률이 높아 질수록 B가 관측될 때마다 A와 B가 발생하는 빈도가 더 높아진다.
-B가 극단적으로 희소하다면 P(B)와 P(A and B)는 항상 작을 것이다.
-A와 B가 거의 항상 함께 발생하면 P(A|B)는 B의 확률에 관계 없이 높을 것이다.
베이즈 정리를 이용한 조건부 확률 계산
▶사전확률 : 특정 사상이 일어나기 전의 확률 ex) 주사위 1~6이므로 1/6 이다
▶사후확률 : 실제로 해보고 나온 확률 ex)실제로 주사위에서 1이 나올 확률은 6분의 1이 아닐 확률이 높다. ,
▶우도(likelihood) : 어떤 시행의 결과 (Evidence) E 가 주어졌다 할 때, 만일 주어진 가설 H 가 참이라면, 그러한 결과 E 가 나올 정도는 얼마나 되겠느냐 하는 것이다. 즉 결과 E 가 나온 경우, 그러한 결과가 나올 수 있는 여러 가능한 가설들을 평가할 수 있는 측도가 곧 우도
▶주변우도(marginal likelihood)
EX) ‘비아 그라’ 나타났던 빈도 관측을 위해 이전에 받았던 메시지들을 확인하면 추가 증거를 얻을 수 있다고 하자.
P(스팸) = 0.2
이전 스팸메시지에서 단어 비아그라가 사용된 확률 P(비아그라 | 스팸) -> 우도
비아그라가 어떤 메시지에도 나타날 확률 P(비아그라) -> 주변 우도
베이즈 이론을 적용하여 메시지가 스팸이 될 확률을 측정한 사후확률을 계산할 수 있음
사후 확률이 50퍼센트보다 크면 메시지는 햄보다 스팸
Probability vs likelihood
▶ 확률(probability) vs 가능성/우도(likelihood) : 셀 수 있는 사건 에서는 likelihood는 확률과 동일한 말, 연속 사건에서는 특정사건에 대한 likelihood는 확률 밀도 함수(PDF)에 대한 대응 값 / probability는 result에 관한 것, likelihood는 hypothesis에 관한 것
ex) 동전을 던지는 것과 같이 성공/실패로 이분법적 결과가 나오는 binomial 시행
가능한 ‘성공’ 횟수를 변수로 하여 probability 를 구해보면, 시행할 횟수(동전을 몇 번 던
질 것인가)와 성공확률(앞면이 나올 확률이 얼 마인가)가 미리 주어진다. 이 parameter값
들에 무관하게 각 경우에 대한 probability의 합은 1이 되어야 한다. 반면, likelihood를 구
할 때 미리 주어지는 것은 '성공'한 횟수 (앞면이 나온 횟수)와 시행한 횟수 (동전을 몇 번
던졌는가)이다. 다시 말해 이번에는 result가 parameter로 여겨지는 것이다. 이번에는 예
상 되는 성공 횟수가 변수가 되는 대신 성공할 확률이 변수가 된다. 어떻게 생각하면
probability를 구하는 것의 역방향 연산이라고 볼 수도 있다.
나이브 베이즈 알고리즘
▶나이브 베이즈 알고리즘: 분류문제에 베이즈 이론을 적용한 단순한 방법, 베이지안 기법을 활용하는 유일한 머신 러닝 방법은 아니지만 가장 일반적인 방법 ex) 텍스트 분류
-기존 데이터들을 가지고 예측 변수에 대한 교차표를 작성하여 사전확률을 구한 뒤 새로운 데이터가 주어졌을 때 각 특징 값들에 대한 우도와 사전확률을 가지고 사후확률을 계산하여 분류하는 알고리즘
-데이터에 대해 ’naïve’한 가정을 하고 있음
-데이터셋의 모든 특징이 동등하게 중요하고 독립적이라고 가정
-R에서는 e1071 패키지에서 나이브 베이즈 함수를 지원한다.
install.packages("e1071")
Library(e1071)
naiveBayes(train, class, laplace = 0)
train : 모델 생성을 위한 훈련 데이터
class : 훈련 데이터 각각에 대한 분류 레이블
L aplace : 라플라스 추정값을 조절하는 기능으로 디폴트는 0이다.
우도표 작성했을 때, 우도값들 중 0이 있을 경우 사후확률이 0으로 나오는 상황이 발생한다.
이를 방지하고자 임의의 숫자를 강제로 집어 넣으며 보통 1을 기입한다.
장점 |
단점 |
〮간단하고 빠르고 매우 효율적 |
〮모든 특징이 동등하게 중요하고 독립적이라는 가정이 잘못된 경우가 자주 있음 |
〮잡음과 누락 데이터를 잘 처리함 |
〮수치 특징이 많은 데이터셋에는 이상적이지 않다. |
〮훈련에는 상대적으로 적은 예시가 필요하지만, 대용량의 예시에도 매우 잘 작동된다 |
〮추정된 확률이 예측된 클래스보다 덜 신뢰할 만하다. |
〮예측을 위한 추정 확률을 얻을 수 있음 |
|
▶ F1에서 Fn까지 특징이 제공하는 증거가 있을 때 클래스 C에서 레벨L의 확률은 클래스 레벨을 조건으로 하는 각 증거에 대한 확률과 클래스 레벨의 사전 확률, 값을 확률로 변환하는 배율요소 1/Z의 곱과 동일하다.
▶ 빈도표를 구축하는 것에서 시작해서 우도표를 구축하는데 사용 -> 나이브 베이즈 규칙에 따라 조건부 확률 곱합
-> 최종적으로 각 클래스 우도를 확률로 빈번하게 하기 위해 전체 우도로 나눔
라플라스 추정량
▶라플라스 추정량
: 앞서 naiveBayes 함수에서 laplace라는 파라미터가 있었다. 이는 라플라스 추정량을 의미하는데,
이론 설명 시 우도를 구하는 공식을 참고해야 한다.
P(비아그라|스팸) × P(¬돈|스팸) × P(¬식료품|스팸) × P(주소삭제|스팸) × P(스팸)
—————————————————————————————————————– 라는 식에서
P(비아그라 ∩ ¬돈 ∩ ¬식료품 ∩ 주소삭제)
만약 P(비아그라|스팸)이 0이라면, 우도는 0이 된다. (모두 곱하기이므로)
이러한 경우 나중에 Data Set이 추가되더라도 스팸메일일때 비아그라 단어가 들어간 사건은 고려되지 않는다.
즉, 다른 증거를 거부하기 때문에 이를 해결하기 위해 프랑스 수학자 피에르 시몬 라플라스가
빈도표의 각 합계에 작은 숫자를 더해서 확률이 0이 되지 않게 하였고, 이를 라플라스 추정량이라 한다.
▶라플라스 추정량
-기본적으로 빈도표의 각 합계에 작은 숫자를 더하는데, 특징이 각 클래스에 대해 발생할 확률이 0이 되지 않게 보장, 보통 라플라스 추정량은 1로 설정해서 데이터에 각 클래스 특징 조합이 최소 한 번은 나타나게 보장된다.
-라플라스 추정량은 어떤 값으로든 설정될 수 있으며, 각 특징에 대해 동일할 필요도 없다.
-라플라스 추정량을 사용해 특징과 클래스와의 관계에 대해 추정된 사전 확률을 반영할 수 있다.
-훈련 데이터셋이 아주 크다면 이 단계는 필요 없고, 값은 거의 항상 1이 사용된다.
나이브 베이즈에서 수치 특성 이용
▶나이브 베이즈
-데이터를 학습하기 위해 빈도표를 사용하기 때문에 행렬을 구성하는 각 클래스와 특징 값의 조합을 생성하려면 각 특징이 범주형 이여야한다.
-수치 특성은 값의 범주가 없으므로 수치 데이터에 직접 작동되지 않는 경우가 있는데 수치 특징을 이산화 하여 해결할 수 있다.
- 수치 특징을 이산화 하는 것은 간단히 bin이라고하는 범주에 숫자를 넣는 것을 의미한다. 이산화를 binning이라고 부르기도 한다.
-훈련데이터가 대용량인 경우에 이상적이다.
-수치 특징을 이산화 하는 방법: 데이터 분포에서 자연스러운 범주 또는 절단점을 찾기 위해서 데이터를 탐색하는 것
-명확한 절단점이 없다면 분위를 이용해서 특징을 이산화하는 방법도 있다.
-특징의 원래 입자가 더 적은 개수의 범주로 줄기 때문에 수치 특징을 이산화하면 항상 정보가 손실되므로 균형을 맞추어야 한다.
-빈의 개수가 너무 적으면 중요한 추세가 모호해진다.
-빈의 개수가 너무 많으면 나이브 베이즈 빈도표의 총계가 작아져서 알고리즘의 잡음 데이터 민감도가 올라간다.
참고: 브레트 란츠, 윤성진 옮김, 『R을 활용한 머신러닝』, 에이콘출판주식회사(2017)
'STUDY > R을 활용한 머신러닝' 카테고리의 다른 글
[R]3. 게으른 학습: 최근접 이웃 분류/k-NN알고리즘 (0) | 2020.08.22 |
---|---|
[R] 1. 머신 러닝 소개_머신 러닝 기원/머신 러닝 사례/머신 러닝 윤리/기계학습 방법/R을 활용한 머신 러닝 (0) | 2020.08.19 |
[R]5. 분할정복: 의사결정 트리와 규칙 기반의 분류 (0) | 2020.08.17 |
[R] 2. 데이터의 관리와 이해 | 벡터/팩터/배열/행렬/데이터프레임/R을 활용한 머신러닝 (0) | 2020.08.13 |