나는 네이브 베이 즈 과정 전체를 처음부터 다시 시작할 것입니다.
새로운 예제가 )라는 각 클래스에 속할 확률을 찾고 싶습니다 . 그런 다음 각 클래스의 확률을 계산하고 가장 가능성이 높은 클래스를 선택합니다. 문제는 일반적으로 그러한 확률이 없다는 것입니다. 그러나 베이 즈 정리 (Bayes 'Theorem)를 통해이 방정식을 더 다루기 쉬운 형태로 다시 작성할 수 있습니다.P(class|feature1,feature2,...,featuren
Bayes 'Thereom은 단순히 또는 우리 문제의 관점에서 :
P(A|B)=P(B|A)⋅P(A)P(B)
P(class|features)=P(features|class)⋅P(class)P(features)
제거하여이를 단순화 할 수 있습니다 . 우리가 순위에 가고 있기 때문에 우리는이 작업을 수행 할 수 있습니다 의 각 값에 대한 ; 는 매번 동일합니다 . 의존하지 않습니다 . 이것은 우리를 남겨둔다
P(features)P(class|features)classP(features)classP(class|features)∝P(features|class)⋅P(class)
이전 확률 는 질문에 설명 된대로 계산할 수 있습니다.P(class)
그것은 떠난다 . 우리는 거대하고 매우 희소 한 공동 확률 를 제거하고 싶습니다 . 각 기능이 독립적 인 경우 실제로 독립적이지 않더라도 실제로는 서로 독립적 인 것으로 가정 할 수 있습니다 ( ' 순진한 "베이브의 일부). 나는 개인적으로 이산 (예 : 범주 형) 변수에 대해 이것을 생각하는 것이 더 쉽다고 생각하므로 약간 다른 버전의 예제를 사용합시다. 여기에서는 각 특성 차원을 두 가지 범주 형 변수로 나누었습니다.P(features|class)P(feature1,feature2,...,featuren|class)P(feature1,feature2,...,featuren|class)=∏iP(featurei|class)
.
예 : 분류 자 교육
분류자를 훈련시키기 위해 다양한 부분 집합을 세고이를 사용하여 사전 및 조건부 확률을 계산합니다.
전제 조건은 사소합니다. 총점이 60 점, 40 점이 초록, 20이 빨강입니다. 따라서P(class=green)=4060=2/3 and P(class=red)=2060=1/3
다음으로 클래스에 주어진 각 피처 값의 조건부 확률을 계산해야합니다. 여기에는 및 두 가지 기능이 있습니다. 각 기능 은 두 값 중 하나 (하나는 A 또는 B, 다른 하나는 X 또는 Y)를 갖습니다. 따라서 다음을 알아야합니다.feature1feature2
- P(feature1=A|class=red)
- P(feature1=B|class=red)
- P(feature1=A|class=green)
- P(feature1=B|class=green)
- P(feature2=X|class=red)
- P(feature2=Y|class=red)
- P(feature2=X|class=green)
- P(feature2=Y|class=green)
- (명확하지 않은 경우 가능한 모든 기능-값과 클래스 쌍입니다)
이것도 계산하고 나누면 계산하기 쉽습니다. 예를 들어, , 빨간색 점만보고 의 'A'영역에있는 지점 수를 계산합니다 . 20 개의 빨간색 점이 있으며 모두 'A'영역에 있으므로 입니다. B 영역에 빨간색 점이 없으므로 입니다. 다음으로 동일한 작업을 수행하지만 녹색 점만 고려하십시오. 이를 통해 및 됩니다. 확률 테이블을 반올림하기 위해 에 대해 해당 프로세스를 반복 합니다. 내가 올바르게 계산했다고 가정하면P(feature1=A|class=red)feature1P(feature1=A|class=red)=20/20=1P(feature1|class=red)=0/20=0P(feature1=A|class=green)=5/40=1/8P(feature1=B|class=green)=35/40=7/8feature2
- P(feature1=A|class=red)=1
- P(feature1=B|class=red)=0
- P(feature1=A|class=green)=1/8
- P(feature1=B|class=green)=7/8
- P(feature2=X|class=red)=3/10
- P(feature2=Y|class=red)=7/10
- P(feature2=X|class=green)=8/10
- P(feature2=Y|class=green)=2/10
이 10 가지 확률 (2 가지 선행 조건과 8 가지 조건)이 모델입니다.
새로운 예 분류
예에서 흰색 점을 분류 해 봅시다. 그것은의 "A"지역의 과의 "Y"지역 . 각 클래스에있을 확률을 찾고 싶습니다. 빨간색부터 시작하겠습니다. 위의 공식을 사용하면 다음을 알 수 있습니다.
서빙 테이블의 확률에서 우리는feature1feature2P(class=red|example)∝P(class=red)⋅P(feature1=A|class=red)⋅P(feature2=Y|class=red)
P(class=red|example)∝13⋅1⋅710=730
우리는 녹색에 대해서도 똑같이합니다 :
P(class=green|example)∝P(class=green)⋅P(feature1=A|class=green)⋅P(feature2=Y|class=green)
이 값을 입력하면 0 ( )이됩니다. 마지막으로, 어떤 클래스가 우리에게 가장 높은 확률을 주 었는지 살펴 봅니다. 이 경우 분명히 빨간색 클래스이므로 포인트를 지정하는 곳입니다.2/3⋅0⋅2/10
노트
원래 예제에서 기능은 연속적입니다. 이 경우 각 클래스에 P (feature = value | class)를 할당하는 방법을 찾아야합니다. 알려진 확률 분포 (예 : 가우시안)에 적합하도록 고려할 수 있습니다. 교육 중에 각 피쳐 차원에 따라 각 클래스의 평균 및 분산을 찾을 수 있습니다. 포인트를 분류하려면 각 클래스에 적절한 평균과 분산을 연결하여 를 찾으십시오 . 데이터의 특성에 따라 다른 분포가 더 적절할 수 있지만 가우스는 적절한 시작점이 될 것입니다.P(feature=value|class)
DARPA 데이터 세트에 익숙하지 않지만 본질적으로 동일한 작업을 수행합니다. 아마도 P (attack = TRUE | service = finger), P (attack = false | service = finger), P (attack = TRUE | service = ftp) 등과 같은 것을 계산 한 다음 예제와 같은 방식으로. 참고로, 여기서 트릭의 일부는 좋은 기능을 만드는 것입니다. 예를 들어, 소스 IP는 아마도 절망적이지 않을 것입니다. 주어진 IP에 대해 하나 또는 두 개의 예만있을 것입니다. IP를 지리적 위치에두고 대신 "Source_in_same_building_as_dest (true / false)"또는 기능을 대신 사용하면 훨씬 더 나을 수 있습니다.
더 도움이 되길 바랍니다. 설명이 필요한 경우 다시 시도해 드리겠습니다.