일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 품사태깅
- 석사
- NLP
- 우울증
- 자연어처리
- sentiment analysis
- naver movie review
- 전처리
- 인공지능
- 대학원
- Classification Task
- pytorch
- Word2Vec
- CUDA
- word embedding
- 수기
- Today
- Total
슬기로운 연구생활
3-3. BoW + SVM 본문
[0] 서론
- 처음에 SVM 분류 모델을 만들 때, 약 30만개의 학습데이터( 단어수 60만개 )를 사용해 만들려했다.
하지만 모델을 만드는 시간이 너무 오래 걸려 끝을 볼 수 없었다.
그래서 단어수를 500개로 줄여 진행했었다.
하지만 단어수를 줄여도 시간이 너무 오래 걸려서 학습데이터 수를 2만개로 줄여 진행했다.
SVM을 사용할 때는 학습 데이터가 너무 많거나 단어의 수가 너무 많으면 아예 생성이 안 될만큼 시간이 오래 걸릴 수 있다.
- 전체 코드와 데이터는 아래 github에 있다.
/data/data_small.py로 작은 데이터 셋을 만들어 SVM 모델을 만들었다.
https://github.com/vhrehfdl/Blog/blob/master/movie_review_classification/model/BoW%2BSVM.py
[1] 실험1
- 실험1에서는 sklearn의 svm.SVC를 사용하였다.
C-Support-Vector-Classification 이다.
[1-1] DataSet
- Train Data ( train_small.csv )
긍정 리뷰 : 10,000 / 부정 리뷰 : 10,000
- Test Data ( validation.csv )
긍정 리뷰 : 10,338 / 부정 리뷰 : 30,586
- 평점이 1점 ~ 3점인 영화리뷰를 부정 리뷰로 분류했고 10점인 리뷰를 긍정 리뷰로 분류했다.
[1-2] Text To Vector
- Bag of Word를 방법을 사용해 Text를 Vector로 변환한다.
실험1 의 Vector의 차원수는 68,839 이다.
[1-3] Support Vector Machine
- SVM은 ML 중에서도 기대했던 알고리즘은데 성능이 좋지 않아 의외였다.
하지만 실험2에서 rbf 커널을 추가하니 성능이 많이 올라갔다...
실험1 accuracy : 0.57
[2] 실험2
- 실험2에서는 SVM에 rbf 커널을 추가학고 gamma=0.1 / C=10으로 설정했다.
rbf 커널을 추가하면 비선형 분할평면을 만들 수 있다.
parameter의 역할은 아래 이미지에서 확인할 수 있다.
즉. Parameter의 C의 값이 크면 경계 margin이 작아지고 C의 값이 작으면 margin이 커진다.
가장 우측에 이미지를 보면 몇 몇 데이터를 포기하면서까지 margin을 키웠다.
어떻게 보면 일반화를 시켰다고 생각할 수도 있을 것 같다.
[2-1] DataSet ( train_small.csv / validation.csv )
데이터 셋 설정을 실험1과 동일하다.
[2-2] Text To Vector
실험1과 동일하다.
[2-3] Support Vector Machine
우선 rbf 커널을 이용하면 학습데이터에 좀 더 특화된 hyperplane이 만들어진다는 것을 알 수 있다.
실험1 accuracy : 0.57
실험2 accuracy : 0.76
[3] 정리
C-Support-Vector-Classification를 그냥 사용하는 것보다 rbf 커널을 추가하는 방법이 성능이 더 좋게 나온다.
그렇지만 대용량 데이터에서 SVM은 엄청난 학습시간 때문에 사용하기 적절하지 않은 것 같다.
BoW | |
NB | 0.86 |
SVM ver.1 | 0.57 |
SVM ver.2 | 0.76 |
SVM ver.1 : 기본 SVM
SVM ver.2 : version1에 rbf 커널 추가 ( C=10, gamma = 0.1 )
'프로젝트 : 영화리뷰 분류' 카테고리의 다른 글
3-5. BoW + XGBoosting (0) | 2019.07.25 |
---|---|
3-4. BoW + Random Forest Classifier (0) | 2019.07.25 |
3-2. BoW + NB + Komoran (0) | 2019.07.25 |
3-1. BoW + NB (0) | 2019.07.24 |
2. 데이터 가공 (0) | 2019.07.24 |