AI/Kaggle

Bag of Words Meets Bag of Popcorn 실습

반응형

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

위 링크에서 실습한 코드를 참고해주세요
Followstar 해주시면 감사합니다

1. Bag of Words Meets Bag of Popcorn

Bag of Words Meets Bag of Popcorn Link
Bag of Words
: 단어들의 순서는 전혀 고려하지 않고, 단어들의 출현 빈도(frequency)에만 집중하는 텍스트 데이터의 수치화 표현 방법입니다

Performance Metric(성능 지표)

Untitled

  • 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란?

Untitled 1Untitled 2

TPR이 1에 가까울 수록, FPR이 0에 가까울 수록 좋은 성능을 가진다는 것을 기반으로 한 머신러닝 모델의 성능 평가 방법이다. 따라서 그래프의 아래 면적 즉 AUC의 넓이가 넓을 수록 모델의 성능이 좋다는 것을 의미한다.

데이터 분석 및 전처리

  1. 데이터 분석 과정
    1. 데이터 크기
    2. 데이터의 개수
    3. 각 리뷰의 문자 길이 분포
    4. 많이 사용된 단어
    5. 긍정, 부정 데이터의 분포
    6. 각 리뷰의 단어 개수 분포
    7. 특수문자 및 대문자, 소문자 비율
  2. 전처리 과정
    • 단어 최대 길이 설정 → Padding을 추가하여 길이 맞추기
    • 벡더 표상화 → embedding 과정
      • Tokenizer
      • Counter Vertorize
      • TF-IDF
      • W2V
  3. Untitled 3

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 사용할 수 있다.
    참고 - 계산과정 Untitled 4Untitled 5Untitled 6

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가지 모델을 적용하여 성능 평가
  • 결론 시각화
    Untitled
반응형

'AI > Kaggle' 카테고리의 다른 글

Walmart Recruiting - Store Sales Forecasting  (0) 2021.07.08