반응형
Bag of Words Meets Bag of Popcorn
실습 code
https://github.com/sejin-k/Kaggle/blob/master/Bag_of_Words_Meets_Bags_of_Popcorn/Bag_of_Words_Meets_Bags_of_Popcorn.ipynb
위 링크에서 실습한 코드를 참고해주세요
Follow와 star 해주시면 감사합니다
1. Bag of Words Meets Bag of Popcorn
Bag of Words Meets Bag of Popcorn Link
Bag of Words
: 단어들의 순서는 전혀 고려하지 않고, 단어들의 출현 빈도(frequency)에만 집중하는 텍스트 데이터의 수치화 표현 방법입니다
Performance Metric(성능 지표)
- Accuracy(𝐴𝐶𝐶) = $\frac{TP + TN}{FP + FN + TP + TN}$
- True Positive Rate(TPR) = $\frac{TP}{P} = \frac{TP}{FN + TP}$
- False Positive Rate(FPR) = $\frac{FP}{N} = \frac{FP}{FP + TN}$
- Precision(PRE) = $\frac{TP}{TP+FP}$
- Recall(REC) = $TPR = \frac{TP}{P} = \frac{TP}{FN+TP}$
- F1-score = $2\frac{PRE X REC}{PRE + REC}$ (조화평균)
ROC curve란?
TPR이 1에 가까울 수록, FPR이 0에 가까울 수록 좋은 성능을 가진다는 것을 기반으로 한 머신러닝 모델의 성능 평가 방법이다. 따라서 그래프의 아래 면적 즉 AUC의 넓이가 넓을 수록 모델의 성능이 좋다는 것을 의미한다.
데이터 분석 및 전처리
- 데이터 분석 과정
- 데이터 크기
- 데이터의 개수
- 각 리뷰의 문자 길이 분포
- 많이 사용된 단어
- 긍정, 부정 데이터의 분포
- 각 리뷰의 단어 개수 분포
- 특수문자 및 대문자, 소문자 비율
- 전처리 과정
- 단어 최대 길이 설정 → Padding을 추가하여 길이 맞추기
- 벡더 표상화 → embedding 과정
- Tokenizer
- Counter Vertorize
- TF-IDF
- W2V
-
TF-IDF
(Term Frequency - Inverse Document Frequency)
문장의 중요도 및 검색을 하기 위해 단어들의 가중치를 정하는 방법이다.
TF-IDF는 모든 문서에서 자주 등장하는 단어는 중요도가 낮다고 판단하며, 특정 문서에서만 자주 등장하는 단어는 중요도가 높다고 판단한다. TF-IDF 값이 낮으면 중요도가 낮은 것이며, TF-IDF 값이 크면 중요도가 큰 것입니다.
- tf(d,t) : 특정 문서 d에서의 특정 단어 t의 등장 횟수.
- df(t) : 특정 단어 t가 등장한 문서의 수.
- idf(d, t) : df(t)에 반비례하는 수.(df(t)에 반비례)총 문서의 수 n이 커질 수록, IDF의 값은 기하급수적으로 커지기 때문에 log를 사용한다. 또한 log를 씌워주지 않으면, 희귀 단어들에 엄청난 가중치가 부여될 수 있습니다.
- $idf(d,t) = log(\frac{n}{1+df(t)})$
- scikit-learn에서 TF-IDF 사용할 수 있다.
참고 - 계산과정
Scikit-learn
오픈소스 머신러닝 라이브러리
- 간단한 실행 순서
- Dataset (train, test) 분할 → 적절한 모델 선택 → train data로 fit(학습) → test data로 predict(추론)
- 이번 실습에서 2가지 모델 사용
- Logistic regression
- RandomForest
실습 과정
- 라이브러리 설치
- numpy, pandas, scikit-learn, matplotlib, seaborn, bs4, nltk, wordcloud, bs4, html5lib
- 데이터 분석 & 데이터 전처리 과정 진행
- 학습하기 위한 단어 벡터 표현 방법 별 데이터 처리
- Tokenizer
- (25000, 1416) → 가장 긴 데이터가 1416개의 단어
- CounterVertorize
- (25000, 5000),
analyzer='word'
- TF-IDF
- (25000, 20000),
analyzer='word'
ngram_range=(1, 3)
min_df=0
→ 총 단어는 약 4백만게 이지만 20000개의 feaure를 사용할 때 가장 좋은성능이 나옴 - Word2Vec
- (25000, 300),
vector_size=300
- scikit-learn을 활용하여 모델을 사용하여 학습과 추론
- Logistic Regression
- RandomForest
- 각각의 데이터에 2가지 모델을 적용하여 성능 평가
- 결론 시각화
반응형
'AI > Kaggle' 카테고리의 다른 글
Walmart Recruiting - Store Sales Forecasting (0) | 2021.07.08 |
---|