ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 논문 리뷰 : 나이브 베이즈 분류기가 텍스트 분류에 좋은 분류기일까?
    Paper 2021. 1. 11. 00:00

    Ting, S. L., Ip, W. H., & Tsang, A. H. (2011). Is Naive Bayes a good classifier for document classification. International Journal of Software Engineering and Its Applications5(3), 37-46.


     

    1. Introdution

    2. Research Methodology

    3. Performance Evaluation

    4. Conclusions

     


     

    1. Introdution

     

    텍스트 자료에 대한 분석은 스팸메일 필터링, 이메일 분류, 웹사이트 분류 등에 사용된다. 텍스트 자료에 대한 분류를 진행하기 위해서 사용되는 방식은 KNN(k nearest neighbor), Naive Bayes, SVM(support vector machines), DT(decision tree), NN(neural network), maximum entropy 등이 있다.

    그 중에서도, 나이브 베이즈는 폭넓게 쓰여왔는데, 그것의 훈련 및 분류가 간단명료하기 때문이다. 다른 방식에 비해 정확도가 높다고 하기엔 성능 좋은 알고리즘이 많이 개발된 상태이지만, 여러 영역에서 텍스트를 분류할 만큼 충분히 효과적이기도 하다는 점에서, 본 연구는 전처리를 통한 나이브 베이즈 분류기의 성능 향상 방법을 제시하고, 다른 알고리즘과 나이브 베이즈의 성능을 비교하고자 하였다.

     


     

    2. Research Methodology

     

    해당 연구는 preprocessing → feature selection → adoption of document classifier → model evaluation의 과정으로 진행되었다.

    preprocessing은 각 문서들이 더 나은 대표성을 갖도록 전처리하는 과정이다. 또한, 차원을 축소시켜서 processing time을 줄이는 역할을 한다.

    < preprocessing의 과정 >

    1) 불용어 삭제

    2) 결측치 탐지 알고리즘 적용
    아쉽게도, 어떤 방식을 사용했는지는 정확히 서술되어있지 않다.

    3) 비슷한 뜻을 가진 단어를 하나의 것으로 결합
    예를 들어, 같은 의미를 갖는 단어인 bank와 banks는 따로 count 할 필요가 없다.

     

    feature selection은 분석에 별 도움이 되지 않는다고 판단되는 noise를 제거하는 과정이다. 차원을 축소시키고 최적의 예측을 할 수 있도록 돕는 과정이다.

    < feature selection에서 사용하는 방법 >

    1) Cfs Subset Evaluator
    Cfs는 변수를 선택하는 방법 중 하나로 공분산을 이용하는 방법이다.

    $${\displaystyle \mathrm {CFS} =\max _{S_{k}}\left[{\frac {r_{cf_{1}}+r_{cf_{2}}+\cdots +r_{cf_{k}}}{\sqrt {k+2(r_{f_{1}f_{2}}+\cdots +r_{f_{i}f_{j}}+\cdots +r_{f_{k}f_{k-1}})}}}\right]}$$

     

    $r_{cf}$은 분류-변수 간 공분산, $r_{ff}$은 변수-변수간 공분산을 의미하며, 대괄호 안의 식을 최대로 만들어주는 변수 들의 부분집합 $S_{k}$를 찾아내는 방식이다. 즉, 분류와 변수 간 공분산은 클수록 좋고, 변수와 변수 사이의 공분산은 작을수록 좋은 최적의 집합을 찾자는 이야기이다.

     

    2) Gain ratio feature selection

    $$GainRatio(T,a)={Gain(T,a) \over Entropy(T)}$$ $$Gain(T,a)={Entropy(T)-\sum_{i=1}^{|a|} {|a_i|\over|T|}Entropy(a_i)}$$ $$Entropy(X)=-\sum_{i=1}^n{P(x_i)\log_{2}P(x_i)}$$

     

    Gain ratio 값이 높을수록 좋은 분류이므로 최대의 Gain ratio 값을 도출하는 변수들을 택하는 방법이다.

    Entropy란, 보통 얼마나 무질서한지를 이야기할 때 과학 전반에서 Entropy라는 표현을 한다. 여기서는, 어떤 사건이 일어났을 때 얻을 것으로 기대되는 정보량을 의미한다. 다른 말로, 정보량이라는 것은 희소한 사건일수록 증가하기 때문에 얼마나 불확실한지를 나타내는 지표가 Entropy라고 볼 수 있을 것이다. 즉 예측하기 힘들수록 Entropy는 높아질 것이다.

    Gain은 정보 a를 추가했을 때, 엔트로피의 변화량을 의미한다. 즉, a를 추가함으로써 얼마나 예측하기가 쉬워졌는지를 의미한다. 즉 Gain ratio는, 정보 a를 추가했을 때의 엔트로피의 변화량의 상대적인 값을 나타낸다.

    왜 굳이 Gain이 아닌, Gain ratio를 쓰는가에 대해서는, Gain ratio는 쓸데없이 분류를 많이 진행한 경우에 대해서 페널티를 준다. Gain을 통해 변수를 선택하면 최대한 정확하게 맞추기 위해서 과적합이 될 우려가 있다. Gain ratio에서는 페널티를 주는 방식을 통해, 적당한 선에서 최적의 결과를 이끌어내는 변수의 집합을 택할 수 있겠다.

    요약하자면, 변수를 추가함으로써 얼마나 많은 정보를 효율적으로 얻을 수 있는지를 나타내는 Gain ratio를 통해 변수를 선택한다고 보면 될 것이다.

     

    3) Chi square feature selection

    $${\chi}^2=\sum{{(O-E)^2}\over{E}}$$

     

    실제와 예측 간의 차이를 나타낸 통계량이다. 

     

    이러한 세 가지 방법을 이용하여, feature selection을 진행했다.

     

    adoption of document classifier 과정에서는 간단하면서도 확률론적인 분류기인 Naive Bayes를 이용하였다. 

    Naive Bayes는 이전 포스팅에서 충분히 알아보았다.

     

    model evaluation 과정에서는  recall과 precision, F-measure를 평가 척도로 사용한다.

    $$recall={TP \over {TP+FN}}$$ $$precision={TP \over {TP+FP}}$$ $$F-measure={2 \over {{1 \over recall}+{1 \over precision}}}$$

     


     

    3. Performance Evaluation

     

    기본적으로, 30% train set, 70% test set으로 모델을 학습시킨다고 한다. 최근에 텍스트 분석 관련하여 공모전을 나간 적 있는데, 그때도 train이 test보다 적어서 왜 그럴까, 생각했는데 텍스트 분석 분야에서는 test를 보통 많게 하나? 싶은 생각이 든다.

    아무튼, 텍스트의 전처리는 Tf-idf를 이용한다고 한다.

    Tf와 Idf란 각각 Term frequency와 Inverse document frequency를 의미하는데, 말 그대로 Tf는 해당 단어의 빈도수를, Idf는 한 단어가 문서 집합 사이에서 얼마나 공통적으로 나타나는지를 나타낸다. Tf-idf의 통계량은 이 둘의 곱으로 표현되며, 특정 문서에서 단어의 비율이 높을수록, 전체 문서 중 해당 단어를 포함하는 비율이 작을수록 이 값은 높아진다고 한다.

    특정한 문서에만 존재하는 특별한 단어의 빈도를 통해 문서를 분류하도록 도와주는 방법이라고 볼 수 있겠다. 더 복잡한 내용이 있겠지만, 대강 이 정도만 알아도 해당 연구를 이해하는 데에는 지장이 없다고 생각한다.

     

    「Is Naive Bayes a good classifier for document classification」 중 해당 내용 발췌.

     

    아무튼 이러한 전처리 과정을 통해 얻어낸 결과는, 위 표와 같다.

    사실 전처리 전이랑 후의 정확도 자체에는 큰 향상이 없다. 전처리 없이 분석했을 때가 96.9%, Chi square 방식일 때가 97.0%로 유의미한 차이가 있다고 보이진 않는다.

    그러나 중요한 건, 전처리를 통해 차원 축소를 했기 때문에 모델 생성 속도가 9.66초에서 0.19초로 대폭 빨라졌다는 점과, 최소한의 변수로 설명한 모델이기 때문에 일반화 성능에 있어 전처리를 한쪽이 긍정적이라고 볼 수 있다는 점이다.

     

    「Is Naive Bayes a good classifier for document classification」 중 해당 내용 발췌.

     

    다른 모델과 비교한 결과는 위와 같다.

    적절한 전처리를 거친 Naive Bayes가, SVM, NN, DT 등 다른 모델에 비해서 성능 면에서나, 속도 면에서나, 뒤처지지 않고 아주 우수한 결과를 가져온다는 데에 의미가 있다.

     


     

    4. Conclusions

     

    해당 연구에서는 텍스트 분석에 있어 나이브 베이즈 분류기가 좋은 성능을 가질 수 있는 전처리 방법과, 그때의 다른 모델과의 비교를 알아보았다.결론적으로, 나이브 베이즈 분류기의 텍스트 분류 성능은 높은 수준을 가지며, 높은 수준의 분류 결과에 대해서는 어떤 것이 중요한 변수인지 알아내는 feature selection 과정이 중요하게 작용한다는 점을 알 수 있었다. 이는, 데이터의 질이 곧 모델의 결과 도출 성능에 직접적인 영향을 준다는 의미를 갖는다.

     


     

    Reference

    Ting, S. L., Ip, W. H., & Tsang, A. H. (2011). Is Naive Bayes a good classifier for document classification. International Journal of Software Engineering and Its Applications5(3), 37-46

    "Feature selection", wikipedia, en.wikipedia.org/wiki/Feature_selection

    "Tf–idf", wikipedia, en.wikipedia.org/wiki/Tf–idf

     


     

    이번 논문은 feature selection 부분에서 Cfs, Gain ratio 등 처음 보는 개념이면서도 유용한 부분이 있었다. 맨날 공모전이나, 과제 프로젝트할 때 변수 선택을 회귀 변수의 유의성이나, plot을 보고 대충 했었는데 이런 방법이 있었다는 걸 알았으니 또 하나의 기준으로써 변수를 선택해볼 수 있겠다. 물론 xgboost처럼 feature selection까지 알아서 다 해주는 똑똑한 알고리즘을 이용했을 때도 있지만...

    이 논문의 결론은 "데이터 분석 전에 전처리를 열심히 하자"라는 다소 뻔한 이야기라고 느껴지기도 하지만, 그만큼 전처리가 중요하다는 의미이고... 전처리에 관한 다양한 방법을 새로 배웠으니, 과정에 의미가 큰 논문이라고 생각이 된다.

     


    댓글

since 2021