파이썬에서 보완적인 Naive Bayes를 구현하고 있습니까?


9

문제

범죄 데이터의 레이블이 지정된 데이터 세트에서 Naive 베이를 사용하려고 시도했지만 실제로는 좋지 않은 결과를 얻었습니다 (7 % 정확도). Naive Bayes는 내가 사용했던 다른 알고리즘보다 훨씬 빠르게 실행되므로 점수가 왜 그렇게 낮은 지 알아 내고 싶었습니다.

연구

읽은 후 Naive bayes는 균형 잡힌 데이터 세트와 함께 사용해야한다는 것을 알았습니다. 주파수가 높은 클래스에 대한 편향이 있기 때문입니다. 내 데이터의 균형이 맞지 않기 때문에 데이터 왜곡을 처리하기 위해 특별히 만들어 졌기 때문에 보완 Naive Bayes를 사용 해보고 싶었습니다. 프로세스를 설명하는 논문에서 응용 프로그램은 텍스트 분류를위한 것이지만 다른 상황에서는이 기술이 작동하지 않는 이유를 알 수 없습니다. 내가 참조하는 논문을 여기에서 찾을 수 있습니다 . 요컨대 아이디어는 클래스가 표시되지 않는 발생을 기반으로 가중치를 사용하는 것입니다.

약간의 연구를 한 후에 Java로 구현을 찾을 수 있었지만 불행히도 Java를 알지 못하며 알고리즘을 잘 이해하지 못합니다.

질문

파이썬에서 구현을 찾을 수있는 곳은 어디입니까? 그것이 존재하지 않는다면 어떻게 구현해야합니까?

답변:


5

Naive Bayes는 불균형 데이터 세트를 처리 할 수 ​​있어야합니다. 베이 즈 공식은

P(yx)=P(xy)P(y)P(x)P(xy)P(y)

따라서 는 이전 를 고려합니다.P(xy)P(y)P(y)

귀하의 경우 어쩌면 초과 착용하고 약간의 평활화가 필요합니까? +1 스무딩으로 시작하여 개선이 있는지 확인할 수 있습니다. 파이썬에서는 numpy를 사용할 때 다음과 같이 스무딩을 구현합니다.

table = # counts for each feature 
PT = (table + 1) / (table + 1).sum(axis=1, keepdims=1)

이것은 범주 데이터에만 적용되는 다항식 나이브 베이를 제공합니다.

또한 다음 링크를 제안 할 수 있습니다 : http://www.itshared.org/2015/03/naive-bayes-on-apache-flink.html . Apache Flink에서 Naive Bayes를 구현하는 것에 관한 것입니다. Java이지만 알고리즘을 더 잘 이해해야하는 이론을 제공 할 수 있습니다.


순진한 Bayes가 텍스트 분류와의 불균형 문제 만있는 것처럼 보일 수도 있습니다. 스무딩이 무엇인지 설명 할 수 있습니까?
메뚜기

링크를 보셨습니까? 거기에 설명되어 있습니다. 요컨대, 추정 할 때 때때로 훈련 중에 가 보이지 않으며 평활화는 모든 기능에 약간의 수를 추가하여 (분위기 또는 +1 평활화) 분류기 성능을 손상시키지 않습니다. . P(xy)x
Alexey Grigorev 2016 년

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.