[Competition] Data Creator Camp Qualification Review

Doyun’s Journey
Doyun’s Lab
Published in
5 min readOct 22, 2020

Subject : Classification of Positives and Negatives by Review of Restaurants

Language : R, Python

Data : Document-Term Matrix(DTM) Data for Review

Team : 주구장창 (권도윤, 김병훈, 박명석, 박성아)

문제

Q > 다음은 맛집 평점 리뷰를 크롤링한 데이터이다. 당신은 포털회사 A사의 데이터 분석팀으로 긍정리뷰가 많은 맛집을 상단에 실시간으로 노출시키고자 한다. 기존의 데이터를 활용하여 미래 리뷰 글을 얼마나 긍정/부정을 잘 분류하는지 평가하고자 한다. 긍정/부정을 분류하는 모델을 만드시오.

  • Feature는 DTM 구조로 총 300개의 Word가 존재하면 1, 아니면 0으로 입력되어있다. 따라서 Feature는 300개의 Word로 존재한다.
  • Label 긍정(1), 부정(0)을 예측해야 한다.
  • Train Data의 개수는 9452개, Test Data의 개수는 9000개이다.

1. Problem Definition

> 긍정 리뷰가 많은 맛집을 상단에 노출 시키기
> 생성한 모델을 바탕으로 새로운 데이터에 대해 긍정/부정 분류하기

  • 이 문제는 Classification이며, 모델링 전에 긍정에 많이 등장한 단어와 부정에 많이 등장한 단어를 비교해 보았다. 그리고, 결측치 확인 및 Label의 분포를 확인하는 과정을 거쳤다.

2. EDA

> 결측치 확인

결측치가 존재하지 않는다

> Label 분포 확인

  • 긍정이 5402개, 부정이 4050개인 것을 알 수 있다.

> 긍정 & 부정 단어 순위

  • 공통적으로 진짜, 정말, 너무 등이 존재함을 알 수 있다.

3. Modeling

> Random Forest = 분류, 회귀 분석 등에 사용되는 앙상블 학습 방법의 일종으로, 훈련 과정에서 구성한 다수의 결정 트리로부터 분류 또는 회귀 분석을 출력함으로써 동작한다

  • Input Data : 모든 Train Data, 독립성 검정을 통해 독립이지 않은 변수들만 추출한 Data, GLM에서 나온 중요 Feature만 추출한 Data
    > 여러가지 Input Data 중 모든 Train Data를 넣었을 때 성능이 가장 좋음

> XGBoost = Gradient Boosted Decision Trees(속칭 GBM)을 속도와 성능면에서 향상시킨 트리 기반의 앙상블 기법

  • Input Data : 모든 Train Data, 독립성 검정을 통해 독립이지 않은 변수들만 추출한 Data, Importance 상위 50개(200개) Data
    > 여러가지 Input Data 중 모든 Train Data를 넣었을 때 성능이 가장 좋음
  • 5-fold Cross Validation, 점점 Error가 줄어드는 것을 확인
  • 파라미터 튜닝
    > 최적의 파라미터 값은 eta = 0.3, gamma = 1이 선정
  • 중요 Feature로는 맛있어요, 그냥 등이 가장 중요한 것으로 나타났다.

> DNN (Deep Neural Network)

  • DNN의 구조와 Accuracy는 줄어들지만 Loss가 증가하는 문제 발생

4. Conclusion

  • 최종 모델은 XGBoost로 선정하였다.
  • 긍정에서는 맛있어요, 너무 / 부정에서는 그냥, 정말이 중요했다.

> 아쉬운점

데이터가 TF 형태로 주어지고 raw 데이터로 주어지지 않아서, 다른 모델 (LSTM 및 순차적 모델)을 쓰지 못한 점이 아쉽다. 또한, EDA를 어떤 것을 해야 할지 감이 잡히지 않고 그 결과를 토대로 긍/부정 단어 중요도에 따른 Feature 추출로 모델을 구축했더라면 더욱 좋은 성능이 나왔을 것이라 기대된다. 마지막으로, 이 모델을 구축함으로써발전 방향과 인사이트 도출을 하지 않아 부족했던 점으로 남았던 것 같다

> 발전 방향

  • 문제 정의를 확실하게 하자
  • EDA를 공부하여 깊은 분석을 하자
  • 성능뿐만 아니라 인사이트와 모델 선정 이유에 대해 구체적으로 작성 하자

--

--