본문 바로가기
KT-AIVLE

[KT-AIVLE 10주차 AI Track] 미니프로젝트 4차 (NLP)

by 배준오 2023. 4. 24.
반응형

블로그 카테고리 용도

🔎 매주 KT 에이블 스쿨에서 배운 내용을 복기하기 위해

 

✨ 10주차 소감

  • 모델자체의 성능향상에는 한계가 있다. 다시 eda와 전처리로 돌아가자
  • 우수팀들의 발표를 들으며 pre-trained된 모델이 확실히 성능이 좋구나.. 라는 걸 느꼈습니다.

 

 Kaggle

📌 문의 내용 유형 분류하기(다중 분류 모델링)

받은 데이터 : 에이블 스쿨 문의 내용 분류 데이터

작업 환경 : Colab

🔎 전처리

1. 범주형 라벨 숫자로 처리

2. konlpy Mecab을 활용하여 형태소 단위로 토큰화(속도,정확도 측면에서 제일 좋았음)

(토큰화를 하는 이유 -> 많은 모델에서 학습할 때 토큰화된 데이터를 필요로 하기때문에)

3. 특수문자 제거(정규 표현식 이용)

https://docs.python.org/3/howto/regex.html

 

Regular Expression HOWTO

Author, A.M. Kuchling < amk@amk.ca>,. Abstract: This document is an introductory tutorial to using regular expressions in Python with the re module. It provides a gentler introduction than the corr...

docs.python.org

4. CounterVectorizer를 통해 텍스트 데이터 수치 형태로 벡터

(단어들의 출현 빈도를 계산해서 문서 단어 행렬을 만들어=> 단어의 빈도가 의미있는 정보라고 생각했기 때문)

TfidVectorizer도 사용해봤지만 성능이 떨어짐

(단어 빈도와 문서 빈도의 역수를 곱한 값 => 같은 문서에 똑같은 횟수 만큼 출현한 단어 간에도 중요도 차이가 있기 때문에 중요도가 낮은 단어는 빈도를 세주더라도 가중치를 조금만 주는 방법입니다.)

 

🔧 모델링

1. 사용 모델 : RidgeClassifier (성능 제일 우수)

from sklearn.linear_model import RidgeClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.linear_model import LogisticRegression # Ridge 다음으로 성능 우수
from sklearn.naive_bayes import MultinomialNB
from catboost import CatBoostClassifier

딥러닝으로 Bert를 사용해보았는데 Ridge보다 성능이 조금 떨어지고 시간은 매우 오래걸렸다.(6시간)

참고로 Kaggle에서 1,2,3등한 팀들은 모두 Kobert를 사용했었다.

2. GridSearch 하이퍼 파라미터 튜닝

model = RidgeClassifier(alpha=1.0,class_weight=None,copy_X=True,fit_intercept=True,
                        max_iter=None,positive=False,random_state=5828,solver='auto',
                        tol=0.0001)

 

⚠️ 추가 전처리

f1-score가 86.xx에서 올라가지 않아 추가 전처리를 진행하였습니다.

classification_report를 확인해보니 '이론' 라벨을 모델이 잘 예측하지 못하는 것으로 확인되었고,

실제로 데이터를 들여다보니 왜 모델이 잘 예측을 못하는지 알 수 있었습니다.(뚜렷한 특징이 없음)

대신에 '원격'라벨 같은 경우 '원격'이라는 단어가 99퍼센트 확률로 들어가있는 것으로 확인되었고,

해당라벨을 모델이 잘 예측할 수 있도록 전처리르 진행해주었더니 88%까지 성능이 올랐습니다.

 

🔔 최종 결과

4등

 

 

 

 

 

 

 

 

반응형