데이터마이닝 05-문서필터링 

  • (p4) 스팸 필터링 : 규칙 기반 필터링 
    • 규칙 기반 필터링 방법
      • 메시지 헤더나 본문의 내용/생김새 관찰 , 미리 정의한 규칙에 따라 스팸 여부 결정 
      • 예 – Outlook의 정크메일 필터 – Procmail
      • 문제점
        • 변화하는 스팸을 잡기 위해 끊임없이 새 규칙 추가 부담 , 스패머들이 규칙 파악 후 스팸 형태를 바꾸기 쉬움
        • 스팸만을 거르기 위한 알맞은 규칙을 만들기 어려움, 너무 강한 규칙으로 햄까지 걸러낼 위험 


    • (p6)  스팸 필터링 : 메시지 요약기반 필터링 
      • 메시지 요약기반 필터링 기법 개요
        • MD5, SHA1 등 hash 함수로 메시지 본문 요약
        • 사람들이 각자 받은 스팸의 digest 값 신고,  접수된 신고량에 따라 digest 값에 점수 매김
        • 새로운 메시지의 digest 값으로 점수 확인하여 스팸 여부 결정
        • 사용자의 신뢰도에 따라 점수에 가중치 부여 
      • 예 
        • Razor
      • 문제점 
        • 본문이 조금씩 달라지는 스팸에 속수무책
        • 다수 사용자의 횡포로 소수의 언론 통제 우려


    • (P9) 스팸 필터링 : 확률 통계 기반 필터링
      •  Bayes’ Theorem 예제(2) 
      •  불량 노트북 공장 예
        • 두개의 노트북 조립라인을 가진 공장에서 생산된 1000대씩의 노트북들을 같은 화물 창고에 쌓아 놓았다. 각각의 조립라인을 정밀하게 조사하여, 1번 조립라인에서 생산된 노트북의 10%가 불량이고, 2번 조립라인에서 생산된 노트북의 15%가 불량임을 알았다. 화물 창고의 노트북을 하나꺼내 조사한 결과 불량이었을 때, 이 노트북이 1번 조립라인에서 생산되었을 확률은?
    • (p10) 스팸 필터링:  확률 통계 기반 필터링
      • 스팸 필터링의 기본 개념
        • 스팸/햄으로 분류한 메시지의 단어 출현 빈도 미리 계산 
        • Spam으로 분류된 문서들 중 “Python”이라는 단어가 20%에서 출연
          • P(Python | Spam) =0.2 
        • Spam으로 분류된 문서들 중 “Casino”이라는 단어가 40%에서 출연 
          •  P( Casino | Spam) =0.4 
        • Spam으로 분류된 문서들 중 “Python”과 “Casino”가 동시에 출연할 확률
          • P( Python & Casino | Spam ) = 0.2 * 0.4 = 0.08


    • (p12) 문서와 단어: 텍스트에서 단어를 추출
      • 소문자로 변환하여 반환 – 스팸에서 사용되는 SHOUTING style 메일을 놓칠수 있음 
      • 특성 단어를 어떻게 정의할 것인가
    • (p13) 분류기 훈련시키기 

    • (p17) 확률 계산 - 분류별 특성의 확률 
      • 조건부 확률 
      • P(python|spam) = 분류별 메시지 출현횟수/전체 분류내의 문서 수 
      • 실행 def fprob(self,f,cat): if self.catcount(cat)==0: return 0 #
      • 해당 분류에서 특성이 나타난 횟수를 그 분류에 있는 전체 항목 개수로 나눔
    • (p18) 확률 계산 : 적당히 추정하기
      • 가장 확률(assumed probability) 
        • 특정 단어의 빈도수가 낮아, 그 단어만으로 특정 분류에 속할 확률을 특정할 수 없음
        • 예 : money라는 단어가 전체 문서들중에 ‘bad’ 문서에 딱 한번 출현
        • 이 구현에서는 0.5로 시작 – 가중치 1은 한 단어와 동일한 가중치로 취급


Posted by Name_null