[ 생각 정리 ] 텍스트 feature를 사용했는데 모델 성능이 하락했다.

2400·2021년 11월 21일
0

Task : 긍/부정 분류
Model : CatBoost ( Customed Loss Function )
Feature num : 50


Fraud user를 적발하는 모델을 개발 중이다.

대략적으로 최근 1년간의 데이터를 준비했을때,

8000개 가량의 개별 단어가 있다.

이 단어들은 텍스트 데이터에서 Komoran 형태소 분석기를 통해 명사 종류만 선택한 결과이다.

이중에 빈번히 노출되는 3000개를 선택하여 긍/부정 분류를 1차적으로 했다.

어떤 단어가 Feature Importance가 높은지 알기 위해서다.

그 결과 상위 100개 정도를 사용하려고 추려냈다.

그리고나서 상대적으로 부정적인 문장에서 많이 노출되는 단어들로 다시 추려냈다.

이렇게 선택한 단어에 대한 feature를 20개~100개 로 구분하여,

기존 모델에서 사용하고 있던 피쳐 50개에서 Feature Importance가 낮은 20개를 제외하고 추가했다.

결과적으로 모델에 사용된 피쳐의 개수는 50(30+20)개 에서 130(30+100)개가 되었다.

그런데 오히려 성능은 하락했다.

첫째로 Feature Importance를 확인해보니 새로 추가한 피쳐 가운데 30번째로 중요한 피쳐보다 중요한 피쳐가 1개 밖에 없었다. 새로 추가한 피쳐가 변별력이 없었다는 뜻이다.

여기서 여러가지 생각이 든다.

  1. 기존에 사용하고 있던 피쳐와 새로 추가한 피쳐가 제공하는 정보가 겹치는 부분이 있다. > 기존 피쳐가 표현하지 못하는 특징을 설명하는 피쳐를 골라내야할수도 있다.

  2. 새로 추가한 피쳐의 정보량이 너무 적다. BOW 형식으로 존재한다/안한다 정도만 표현한다. 차라리 Clustering을 하거나 사람이 수동으로 그룹핑하여 적은 피쳐로 표현하면서 하나의 피쳐가 제공하는 정보량이 많으면 어떨까?

  3. N-gram으로 표현하면 좀 다를까?

profile
공부용 혹은 정리용 혹은 개인저장용

0개의 댓글