/Dacon_14th_Competition_code

Dacon 14th Competition 1st Place- "Financial smishing character analysis"

Primary LanguageJupyter Notebook

Dacon 14회 금융문자 분석 경진대회

고전 NLP 방법에서 제일 대표적인 방법인 Bag of Words 쪽으로 전처리부터 학습, 예측까지 분류문제를 풀었습니다.
우선적으로 스폰서의 요청에 따라 똑같이 올릴 수 없기 때문에 저희가 제출한 코드와 완벽하게 똑같지는 않습니다.
하지만 시도하던 컨셉은 유사하므로 참고하시면 될 것 같습니다. 또한 도움될만한 공부자료들도 링크를 달아놨습니다.

모델

  • 자연어처리에서 임베딩을 하는 것은 매우 중요한 작업이며, 이에 대한 접근법은 크게 3가지가 있습니다. (출처 : 한국어 임베딩, 이기창 저)
    • a. Language Model : 단어가 어떤 순서로 쓰였는가? (ELMo, GPT, etc)
    • b. Distributional hypothesis : 어떤 단어가 동시에 출현하여 같이 쓰였는가? (word2vec, glove etc)
    • c. Bag-of-Words hypothesis : 어떤 단어가 많이 쓰였는가? (TF-IDF etc)
  • 저희는 주어진 Task에 잘 맞는 매우 심플한 모델을 구성하였습니다.
  • 모델은 1. TF-IDF / 2. LightGBM 순서로 이루어져 있습니다.

1. TF-IDF

  • 행에는 스미싱 문자들의 정보, 열에는 용어 정보가 나열되고 개별 문자에서 발생한 용어의 발생 빈도를 원소로 하는 행렬을 DTM(Document-Term frequency Matrix)이라고 부릅니다.
  • 하지만 DTM의 용어들의 빈도만을 가지고 문자들의 차별성과 용어들의 중요도를 반영하기 어려워 대중적으로 많이 사용하는 용어 가중치인 TF-IDF를 적용합니다.
  • 용어의 빈도수의 영향이 크다고 판단하여 TF 항을 log(1+TF)으로 변환하여 사용하였습니다.(Weight Functions Impact on LSA Performance, Proceeding of the Recent Advances in Natural language processing, 2001)
  • 가중치를 반영한 DTM(270K * 10K)를 바탕으로 LightGBM을 실시합니다.

2. LightGBM

  • TF-IDF DTM을 바탕으로 자체적으로 머신러닝 기법 10가지 정도 간단히 테스트 했을 때 LightGBM이 가장 성능이 좋아 Baseline Model로 선택하였습니다.
  • Parameter는 Grid Search를 실시하여 n_estimators, learning_rate, min_child_samples, max_depth 들의 큰 틀을 잡았습니다.
  • 세부적인 튜닝의 우선 순위는 다음과 같습니다.
    • 우선순위 1. n_estimators
    • 우선순위 2. learning_rate
    • 우선순위 3. min_child_samples
    • 우선순위 4. max_depth

Requirements

1. 개발 환경

  • Window 10, Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz, RAM 16.GB, 64bit
  • conda 4.8.1, Python 3.7.3, IPython 7.6.1, Jupyter Notebook 6.0.0

2. 필요 라이브러리

  • numpy
  • pandas
  • konlpy
  • lightgbm
  • sklearn

파일 설명 및 구조

  • train.csv : 훈련 데이터입니다. 데이터는 공유가 불가능합니다.
  • public_test.csv : 가채점 테스트 데이터입니다. 데이터는 공유가 불가능합니다.
  • Dacon_14th_Competition_code.ipynb : 전처리부터 모델 학습, 예측 등의 코드와 설명이 담겨있습니다.
  • 데이터 설명 : https://newfront.dacon.io/competitions/official/235401/data?join=1
  • 다운로드 : 스폰서의 요청으로 대회 종료 후에는 데이터를 다운 받을 수 없습니다
├──  README.md
├──  Dacon_14th_Competition_code.ipynb
├──  train.csv
├──  public_test.csv
└── /dacon14_images
    ├── 1_TF.JPG
    ├── 2_Weighting_table.JPG
    ├── 3_Smishing_Case.JPG
    ├── 4_NonSmishing_Case.JPG

Author

Result