FANN 라이브러리의 도움으로 간단한 스팸 분류기를 작성하려고했습니다. 그렇게하기 위해 나는 많은 스팸 메일과 햄 편지를 모으고, 가장 많이 사용 된 영어 단어 사전을 수집했다.스팸 분류 작업에서의 이상한 FANN 동작
이num_input = get_input_size(dictionary_size)
num_output = 1
ann.create_standard_array((num_input, num_neurons_hidden, num_output))
ann.set_activation_function_hidden(libfann.SIGMOID_SYMMETRIC)
ann.set_activation_function_output(libfann.SIGMOID_SYMMETRIC)
ann.set_training_algorithm(libfann.TRAIN_INCREMENTAL)
출력이 편지가 햄 인 경우 1이고 -1 스팸 때 : 나는 다음 코드를 사용하여 하나 개의 숨겨진 층으로 신경 네트워크를 만들었습니다. 각 입력 뉴런은 특정 단어가 전자 메일에 있었는지 아닌지를 나타냅니다 (1 단어는 메일에 있었고 0은 아니 었습니다).
신경망을 학습하려면 다음 코드를 사용합니다. 각 전자 메일 ( : 테스트 세트에서 전자 메일을 나는 다음과 같은 코드를 사용하여 스팸인지 아닌지 는 (훈련 세트의 각 전자 메일 편지를 들어)
# Create input from train e-mail letter
input = get_input(train_res, train_file, dictionary)
ann.train(input, (train_res,))
확인하려면 내 네트워크가 가정 교육을받은 후 시험 세트)에 상관없이 내가 사용하는 사전의 어떤 크기
input = get_input(SPAM, test_spam, dictionary)
res = ann.run(input)[0]
하지만 (I 1000 개 40000 개 단어 단어) 또는 숨겨진 레이어 (640-20)에서 신경 세포의 수에서 시도 거의 모든 전자 메일이 스팸이거나 햄입니다.
거의 모든 스팸 메일은 다음과 같이 올바르게 분류되어 있지만 모든 햄이 잘못 분류되는, 또는 결과Dictionary size: 10000
Hidden layer size: 80
Correctly classified hams: 596
Incorrectly classified hams: 3845
Correctly classified spams: 436
Incorrectly classified spams: 62
: oposite 있습니다
Dictionary size: 20000
Hidden layer size: 20
Correctly classified hams: 4124
Incorrectly classified hams: 397
Correctly classified spams: 116
Incorrectly classified spams: 385
예를 들어이 같은 두 결과를받을 수 있습니다. 더 많은 교육 데이터를 사용하려고했습니다. 필자는 약 1000 개의 전자 메일을 학습 세트에서 시작했는데 (스팸의 비율은 거의 50:50 임) 이제 약 4000 개의 전자 메일 (스팸 : 약 50:50)으로 테스트하고 있습니다. 결과는 같은.
가능한 문제점은 무엇입니까? 미리 감사드립니다.
답변 해 주셔서 감사합니다. 당신은 "보통 단어의 내용에 단순히 걸러 내고 스팸/햄에 통계적으로 공통된 단어가 아니므로 베이지안 중독에 매우 민감합니다." 보다 적절하다고 생각하는 접근 방식에 대해 더 자세한 내용을 작성하거나 (기사, 서적 등을 제공 할 수 있습니까?) –
ANN에 대해 배우려고하거나 좋은 스팸 필터가 필요하기 때문에이 작업을 수행하고 있습니까? 스팸 필터가 필요한 경우 ANN 방식을 포기해야한다고 생각합니다. 수 있습니다 시작하는 좋은 장소 [위키 피 디아 (http://en.wikipedia.org/wiki/Bayesian_spam_filtering) 단순히 내가 그것을에서 패턴 인식을 시도하는 더 좋을 거라 생각 신경망을 배우려고 노력하는 경우 이미지 또는 그와 유사한 것이 실제로는 잘 작동합니다. ANN으로 스팸 필터링을 설정 한 경우 메일, 일반적인 단어, 문자 수 등의 일부 기능을 추출하려고합니다. – Niclas
당신이 옳다고 생각합니다. 내가 네트워크를 훈련시킬 수없는 이유는 베이 즈 중독 때문이었습니다. 다른 훈련 전략을 시도했지만 도움이되지 않았습니다. –