스팸메일 필터링 : 복수의 정보를 가지고 스팸메일을 걸러보자


1. 스팸메일 필터는 베이즈 추정을 사용한다

  • 통계정 추정이나 베이즈 추정 등의 확률적 추론에는 복수의 정보를 사용하는 것이 일반적이다
  • 정보가 많으면 많을 수록 추론 결과의 신빙성이 높아질 것으로 기대한다
  • 2개의 정보로부터 스팸메일일 사후 확률을 계산해보자


2. 필터에 '사전 확률'을 설정한다

  • 지금까지 해왔던 것처럼 사전 확률을 설정하고 하나의 정보를 얻은 뒤 사후 확률을 구해보자
  • 스팸메일 필터는 '우리가 메일을 스팸메일인지 아닌지를 판정하는 것'이 아니라 '받은 메일을 컴퓨터가 기능적으로 판단한다'는 것을 전제로 한다
  • 먼저 컴퓨터는 받은 메일을 검색하기 전에 '그 메일이 스팸메일인가 정상메일인가'에 대하여 사전 확률을 할당한다
  • 여기서는 '이유 불충분의 원리'를 적용하여 각각에 대하여 $0.5$의 확률을 할당한다
    • 즉, 받은 메일에 대하여 필터는 '스팸메일일  확률이 $0.5$, 정상메일일 확률도 $0.5$'라고 평가를 하는 것을 의미한다
    • 이보다 더 신뢰할 수 있는 확률이 있다면 그것을 사전 확률로 설정해도 관계없다


3. 검색할 문자나 문구에 대한 '조건부 확률'을 설정한다

  • 이제 스팸메일에 자주 나오는 문자나 문구 또는 특징을 설정해야 한다
  • 여기서는 '다른 홈페이지의 URL 링크가 삽입되어 있다'는 특징으로 설정하면 다음과 같은 관계가 있다
    • 스팸메일 $\rightarrow$ URL 링크가 있다
    • 정상메일 $\rightarrow$ URL 링크가 없다

  • 위의 관계를 바탕으로 우리는 다음과 같이 거꾸로 판단하면 된다
    • URL 링크가 있다 $\rightarrow$ 스팸메일
    • URL 링크가 없다 $\rightarrow$ 정상메일
  • 그러나 URL 링크가 없는 스팸메일도 많을 뿐만 아니라 정상메일임에도 URL 링크가 있는 메일도 많기 때문에 스팸메일 필터가 정상적으로 동작하지 않는다
  • 이런 경우에는 확률적 추론에서의 '대체'적인 판정을 사용해야 한다, 즉 다음과 같다
    • URL 링크가 있다 $\rightarrow$ 대체로 스팸메일
    • URL 링크가 없다 $\rightarrow$ 대체로 정상메일

  • 여기서 '대체로'를 수치로 나타내는 것이 베이즈 추정의 역할이다
  • 따라서 스팸메일과 정상메일에 각각 어느 정도의 비율로 URL이 삽입되어 있는가를 설정할 필요가 있다
    • 계산을 간략하게 하기 위해서 다음과 같이 확률을 설정한다

    • 위의 사전 확률에 따라  다음 그림과 같이 나타낼 수 있다


4. 검색 결과로 '스팸메일의 베이즈 역확률'이 구해진다

  • 메일의 문장을 검색한 결과 'URL 링크가 있었다'고 가정해보자
  • 이 경우 다음 그림과 같이 나타낼 수 있다


  • 다음과 같이 정규화시키면 '사후 확률'을 구할 수 있다
\begin{eqnarray}\textrm{스팸메일일 사후 확률} : \textrm{정상메일일 사후 확률} &=& 0.5 \times 0.6 : 0.5 \times 0.2\\ &=& 0.3 : 0.1 \\ &=& 3:1 \\ &=& \frac{3}{4} : \frac{1}{4} \tag{10.1}\end{eqnarray}
  • 식 (10.1)에 따라 스팸메일 필터는 다음과 같이 판정하게 된다
\begin{eqnarray}\textrm{URL 링크가 있다는 조건하에서 스팸메일일 사후 확률} = \frac{3}{4} =0.75\end{eqnarray}
  • 메일의 내용을 검색하기 전에는 스팸메일일 확률을 $0.5$로 설정했기 때문에 검색하여 URL 링크를 발견했을 때 스팸메일일 확률이 $0.75$까지 상승하였다
  • 이 경우 '정상메일일 사후 확률'은 $0.25$이지 $0$은 아니기 때문에 '스팸메일일 것이라는 의심이 높아졌다'는 뜻이지 '절대적으로 스팸메일이다'라고 판정된 것은 아니다
  • 예를 들어 이 필터에 '스팸메일일 사후 확률이 $0.95$보다 크면 자동으로 스팸메일함으로 보낸다'라고 설정되어 있다면 이 메일은 스팸메일함으로 이동되지 않고 받은메일함으로 들어가게 된다


+ Recent posts