2016-08-16 4 views
0

Naive Bayes Classifier를 설정하여 5 개 문자열 속성의 두 레코드 사이의 동일성을 확인하려고합니다. 각 속성 쌍 (예 : 자바 .equals() 메소드) 만 정확하게 비교합니다. TRUE와 FALSE 두 가지 교육 데이터가 있지만 TRUE 사례에만 초점을 맞추어 보겠습니다.Naive Bayes 분류 자에게 '사기성'교육 사례를 제공해야합니다.

5 가지 속성이 모두 다른 진정한 교육 사례가 있다고 가정 해 봅니다. 그것은 모든 비교 자의 실패를 의미하지만, 기록은 실제로 인간 평가 후 '동일'하다고 결정됩니다.

이 교육용 케이스를 Naive Bayes Classifier에 공급해야합니까? 한편으로는 NBC가 각 변수를 개별적으로 취급한다는 사실을 고려할 때 이러한 사례는 완전히 파기하지 않아야합니다. 그러나 이러한 사례를 충분히 섭취하는 것이 분류 자의 실적에 도움이되지는 않을 것입니다. 나는이 사건들을 많이 볼 수 있다는 것이 더 나은 비교기가 필요하다는 것을 이해하지만 당분간 무엇을 해야할지 궁금합니다. 또 다른 고려 사항은 플립 사이드가 불가능하다는 것입니다. 즉, 다섯 가지 속성이 두 레코드간에 동일 할 수 있고 여전히 다른 레코드가되도록 할 수있는 방법은 없습니다.

이것은 우선적 인 이슈입니까, 아니면 이것을 처리하는 데있어 확실한 수락이 있습니까?

+0

학습 알고리즘은 올바른 구별을 할 수있는 경우에만 적용해야합니다. 만약 당신이 말했듯이 그 알고리즘을 탐지 할 수없는 참 (True) 경우가있다. 문제가 사람의 입력으로 인해 발생하는 경우 모든 특수 문자를 제거하고 모든 문자를 대문자 또는 소문자로 변경하여 표준화 할 수 있습니다.더 뉘앙스가있는 비교를 사용하여 일반적인 오타 또는 맞춤법 오류를 찾아 낼 수도 있습니다. –

답변

0

일반적으로 관측을 분류하기를 원하는 도메인의 가능한 한 대표적으로 가능한 훈련 데이터 세트를 갖고 싶어합니다 (종종 어렵습니다). 대표성이없는 세트는 특히 다양한 데이터가 수신되는 생산 환경에서 기능이 제대로 작동하지 않는 분류기로 이어질 수 있습니다. 즉, 전처리는 특정 데이터 하위 집합에 대해 훈련 된 분류 자의 노출을 제한하는 데 사용될 수 있으므로 분류 자의 목적에 크게 좌우됩니다.

일부 요소를 제외하려는 이유가 확실하지 않습니다. 매개 변수 추정/학습은 두 개의 서로 다른 입력이 동일한 출력에 매핑 될 수 있다는 사실을 설명해야합니다. 따라서 해시 맵을 사용하는 대신 기계 학습을 사용해야합니다. 일반적으로 모델을 작성하는 데 '모든 데이터'가 없다는 것을 고려하면 이러한 유형의 추론에 의존해야합니다.

NLTK을 살펴 보셨습니까? 그것은 파이썬에 있지만 그것은 OpenNLP 자바에서 적절한 대체 될 수 있습니다 것? 더 나은 특징 추출 기술을 사용하면 입력 문자열의 사소한 변화를 설명하는 모델로 이어질 수 있습니다 (here 참조).

마지막으로, 당신은 클래스 '같은'와 '하지 동일한'이 --- 당신이 거리 측정을 추론 할 것으로 보인다는 (단지 확인에 입력 문자열에서 매핑을 배우고 싶은 것을 나에게 보인다). 더 나은 조치를 직접 찾기 위해 노력을 기울이는 것이 더 합리적입니다 (예 : edit distances을 사용할 수있는 문자 이동 문제). 관찰 (들) (또는 그 특징)이 주어진 클래스를 결정하려고 시도 할 때 NB가 당신의 문제에 잘 맞는지 확신 할 수 없습니다. 이 클래스는 여러 다른 문자열을 통해 식별 할 수 있어야합니다 (string1을 연결하여 string32 & string2로 가정하고이를 분류 자에게 제공한다고 가정합니다). 그러한 광범위하게 적용 가능한 재산을 얻기에 충분한 구조가 존재합니까? 이 분류 기준은 기본적으로 한 쌍 대 각 쌍의 NB를 작성하지 않는 한 모든 쌍별 '비교'를 처리 할 수 ​​있어야합니다. 이것은 간단한 접근처럼 보이지 않습니다.