2017-09-03 1 views
-1

다음과 같은 문제점이 있습니다. bayes 분류자를 사용하여 "sex"와 "agegroup"의 두 변수를 사용하여 factor 변수 "cancer"(예 또는 아니오)를 지정하고 싶습니다.Naive Bayes R- 이상한 결과로 분류

install.packages("e1071") 
install.packages("gmodels") 
library(e1071) 
library(gmodels) 

data<-read.csv("http://www.reduts.net/cancer.csv", sep=";", stringsAsFactors = T) 

## Sex and Agegroup ## 
###################### 

# classification 
testset<-data[,c("sex", "agegroup")] 
cancer<-data[,"cancer"] 
model<-naiveBayes(testset, cancer) 
model 

# apply model on testset 
testset$predicted<-predict(model, testset) 
testset$cancer<-cancer 

CrossTable(testset$predicted, testset$cancer, prop.chisq=F, prop.r=F, prop.c=F, prop.t = F) 

결과는 내 데이터의 남성과 젊은 사람에 따라 암이 자주 발생 내게 보여줍니다 이 내 (가상의) 샘플 데이터입니다. 실제 암 분류와 비교할 때 제 모델은 200 건 중 147 건 (= 88 + 59 건)을 올바르게 분류했습니다 (73.5 %).

    | testset$original 
testset$predicted |  no |  yes | Row Total | 
------------------|-----------|-----------|-----------| 
       no |  88 |  12 |  100 | 
------------------|-----------|-----------|-----------| 
       yes |  54 |  46 |  100 | 
------------------|-----------|-----------|-----------| 
    Column Total |  142 |  58 |  200 | 
------------------|-----------|-----------|-----------| 

그러나, 나는 단 하나의 분류 변수 (섹스)를 사용하여 같은 일을하고 있었다 :

## Sex only   ## 
###################### 

# classification 
testset2<-data[,c("sex")] 
cancer<-data[,"cancer"] 
model2<-naiveBayes(testset2, cancer) 
model2 

모델은 다음과 같다 :

Naive Bayes Classifier for Discrete Predictors 

Call: 
naiveBayes.default(x = testset2, y = cancer) 

A-priori probabilities: 
cancer 
    no yes 
0.645 0.355 

Conditional probabilities: 
     x 
cancer   f   m 
    no 0.4573643 0.5426357 
    yes 0.5774648 0.4225352 

을 분명히을, 남성은 암에 걸릴 가능성이 더 높습니다 (54 % 대 46 %).

Total Observations in Table: 200 

        | testset2$cancer 
testset2$predicted |  no |  yes | Row Total | 
-------------------|-----------|-----------|-----------| 
       no |  129 |  71 |  200 | 
-------------------|-----------|-----------|-----------| 
     Column Total |  129 |  71 |  200 | 
-------------------|-----------|-----------|-----------| 

사람이 설명해 주시겠습니까, 여성과 남성 모두에 할당하는 이유 : 나는 원래의 데이터에 내 모델을 적용 할 때

이제
# apply model on testset 
testset2$predicted<-predict(model2, testset2) 
testset2$cancer<-cancer 

CrossTable(testset2$predicted, testset2$cancer, prop.chisq=F, prop.r=F, prop.c=F, prop.t = F) 

는, 모든 경우는 같은 클래스로 분류된다 같은 클래스?

답변

1

당신은 그 결과를 잘못 해석하고 있습니다. 당신은 모델 2를 인쇄하고

결론을 잘못
Conditional probabilities: 
     x 
cancer   f   m 
    no 0.4573643 0.5426357 
    yes 0.5774648 0.4225352 

볼 때 "분명히, 남성은 여성 (54 % %, 46 대)에 비해 암을 가지고 을 가능성이 높습니다."

무엇이 테이블은 우리에게 말하고있는 것은 네 개의 숫자

P(female | no cancer)  P(male | no cancer) 
P(female | cancer)  P(male | cancer) 

table(cancer, testset2) 
     testset2 
cancer f m 
    no 59 70 
    yes 41 30 

첫 번째에게의 출력을 보면이를 쉽게 알 수있다 모델로부터의 조건부 확률 라인은 다음과 같이 계산 될 수있다 : 129 명의 사람들은 암에 걸리지 않습니다. 59/129 = 0.4573643은 여성입니다. 70/129 = 0.5426357은 남성입니다. 따라서 첫 번째 줄을 읽는 방법은 입니다. "암 환자가 아니므로 은 남성이 될 가능성이 더 높습니다 (54 % 대 46 %).

질문에 답변 : 누구나 나를 설명 할 수 있습니까? 여성과 남성이 같은 등급에 배정 된 이유는 무엇입니까?

가 할당 될 클래스 남성을 결정하려면 P(No Cancer | male)
P(Cancer | Male)을 비교해야합니다.어느 쪽이 더 큰지, 우리는 수업을 나타 내기 위해 선언 할 것입니다. 나이브 베이 즈를 사용하는 경우,이 은 우리가, 우리는 더 큰 인에 대한 신경 그래서 만약

P(Cancer | Male) = P(Male | Cancer) * P(Cancer)/P(Male) 
with 
P(No Cancer | Male) = P(Male | No Cancer) * P(No Cancer)/P(Male) 

분모는 두 경우 모두에서 동일 비교로이를 재구성하는 베이 즈 규칙을 적용하여 추정된다 P(Male | No Cancer) * P(No Cancer)

P(Male | Cancer) * P(Cancer)의 크기를 비교할 수 있습니다 이들은 정확히톤 있습니다 그는 모델을 인쇄 할 때보고되는 수치입니다. 남성

P(Male | Cancer) * P(Cancer)  = 0.4225352 * 0.355 = 0.15 
P(Male | No Cancer) * P(No Cancer) = 0.5426357 * 0.645 = 0.35 

에 대한 그래서

, (참고 : 우리가 분모 P(Male)을 무시하기 때문에 이러한 실제 확률 아니다는) 아니 암이 더 높은 숫자를 가지고 있기 때문에, 우리는 남성 없음 암을 예측할 수 없습니다.

마찬가지로, 여성을 위해 우리는

P(Female | Cancer) * P(Cancer)  = 0.5774648 * 0.355 = 0.205 
P(Female | No Cancer) * P(No Cancer) = 0.4573643 * 0.645 = 0.295 

을 계산하고 여성을 너무 우리는 어떤 암을 예측할 수 없습니다. 여성을위한 계산을 강조하는 것이 유용 할 수 있습니다. P(Female | Cancer) > P(Female | No Cancer)이더라도 은 전체 확률 P(Cancer)P(No Cancer)에 의해 가중치가 적용됩니다.
전반적으로 Cancer 대신 No Cancer이있을 가능성이 높기 때문에 스위치가 더 커집니다. 나이브 베이 즈 (Neve Bayes)는 성별에 상관없이 암은 없다고 예측합니다.