티스토리 뷰
KB에서 주최한 금융문자 분석 경진대회에 제출한 소스를 이제야 리뷰합니다.
대회에 대해서 간략히 소개 하자면, 고객에게 발송된 SMS 내용을 텍스트 형태로 주고, 라벨링은 스팸SMS인지 아닌지 0/1로 구성된 데이터를 이용하여, 스팸을 예측할 수 있는 모델을 만드는 대회입니다.
데이터의 형태는 아래과 같이 되어있네요.
text | spam_yn |
안녕하세요. 금융상품 블라블라... | 1 |
고객님, 감기조심하세요. 블라블라... | 0 |
대회의 특징은 모델의 결과물을 0/1 과 같이 binary classification 이 아닌 스팸 확률값 자체를 결과물로 제출해야한다는 점입니다.
저는 많은 기법들 가운데서 "나이브 베이즈" 알고리즘을 사용했습니다.
나이브 베이즈 알고리즘을 이해하기 위해서는 "조건부 확률"을 알아야 합니다. 사건 B가 발생하였을 때 사건 A가 발생할확률로, 간단히 이야기 하면 특정 단어가 있다면, 이것이 스팸일 확률을 구하는 것입니다.
전체적인 모델 구현 단계는 아래와 같습니다.
1. 텍스트 데이터 전처리 (특수기호 제거, 영문제거, 숫자제거)
2. 명사 추출 ( SMS의 경우 글자수 제한으로 인해 띄어쓰기가 되어있지 않아, 형태소 분석기로 RmecabKo를 사용하였습니다)
3. 데이터 사전을 구축하였습니다 (low frequency가 5 이상인 것)
4. 데이터 사전을 기반으로 document term matrix를 만들고, 나이브 베이즈 알고리즘으로 모델을 생성하였습니다.
5. train data와 test data를 사전에 7:3 비율로 나누어, test data 에 적용 시켜 모델의 적정성을 평가하였습니다.
결과, 어떤 이유이유에서 인지, 실제 데이터로 정확성을 확인한 결과 82% 정확도입니다.
모델 자체가 과적합 되었다고 볼 수 있을거 같습니다.
과적합을 줄이는 요소에 대해서 공부를 더 해야할 거 같네요...
1,2,3등은 정확도 99% 수준으로 매우 높은 것을 알 수 있습니다.
1. 텍스트 전처리에 대해서 조금더 공부를 해야할 거 같습니다. 전처리 방법에 따라 왜곡이 많이 일어나는거 같습니다.
2. 과적합을 줄이는 방법에 대해 공부할 예정입니다.
3. 나이브 베이즈 알로리즘 외 다른 알고리즘은 없는지 공부할 예정이며, 우승자의 소스를 분석할 예정입니다.
깃허브 : https://github.com/jasonlee8318/R-programming/blob/master/naive-bayes_KB_sms_spam.R
'NLP' 카테고리의 다른 글
나이브베이즈 분류를 이용한 스팸 필터링 알아보기 (0) | 2020.11.23 |
---|---|
형태소 분석기 알아보기 (0) | 2020.10.08 |
TF-IDF 기법 이해하기 (0) | 2020.08.21 |
LDA (Latent Dirichlet Allocation) 알아보기 (0) | 2020.05.13 |
[데이터 시각화] word cloud (0) | 2020.02.28 |
- Total
- Today
- Yesterday
- r
- iso12207
- s3
- gpt3.5
- hackerrank
- 추천도서
- pytorch
- 자기계발
- 기술사학원
- 12207
- ISO 12207
- IIS
- 머신러닝
- 밀키트요리
- 정보관리기술사
- wfastcgi
- 챗봇
- 밀키트
- lambda
- 기술사
- 정보관리
- 로블록스
- AWS
- 정보관리기술사합격
- 정보관리기술사독학
- 추천시스템
- 131회정보관리기술사
- 콘도챗봇
- 인조기프
- FLASK
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |