LoginSignup
5
3

More than 5 years have passed since last update.

[Survey] Kaggle - Quora 1位解法まとめ

Last updated at Posted at 2017-09-05

Kaggle - Quora Question Pairs1の1位解法2の調査記事です.

Author: Maximilien@DAMI
Title: Quora Question Pairs
Discussion URL: https://www.kaggle.com/c/quora-question-pairs/discussion/34355


特徴量

分散表現

  • 単語単位: Word2Vec
  • 文単位: Doc2Vec, Sent2Vec
    • 文の分散表現は単語単位に比べて上手くいかなかったとのこと.
  • SNLI3で学習済みのESIM4

古典手法

  • LDAやLSIでの類似度
  • bag of character N-gram(TFIDFとそのままの両方)での類似度(N=1〜8)
  • Abhishek氏5とowl6氏が提案した特徴量
  • レーベンシュタイン距離
  • 共通トークンの割合
  • 質問長,質問の長さの差
  • 大文字の数,クエスチョンマーク
  • 質問1と2が"Are", "Can", "How"などで始まっているかどうか
  • 様々な距離

データ生成時の構造

前提知識

サンプルデータの作り方に偏りがあって,質問IDをノード,質問1と2を辺としたグラフから得られる特徴量が性能改善につながっていた.


モデル

  • 学習済みGloVeでのSiamese LSTM7 8
  • 学習済みfastTextでのDecomposable Attention9
  • 学習済みfastTextでのESIM(単一モデルで最良の性能)

備考

  • 学習済みのfastTextやGloVeの重みを調整しても改善は見られなかった

サンプルごとの重みの調整

前提知識

  • 訓練データと検証データの正例と負例の比率が異なっている
  • そのため,訓練時には検証時に性能がもっとも発揮されるよう正例と負例の重みの割合を変えてあげる必要がある.

分割方法

  • さらに最適化するためのグラフ構造によって下記3パターンに細分化し調整

下記の3パターンに分けた

  • qid1_count = qid2_count = 1
  • min_qid_count = 1 かつ max_qid_count > 1
  • min_qid_count > 1

Model Stacking

  • Layer 1: 300のモデル, PaulとLamのニューラルネット,XGBoost, LightGBM, Scikit Learnの関数(ET, RF, KNNなど)
  • Layer 2: 150のモデル, すべての入力,Layer1の予測値,ESIM
  • Layer 3: L1とL2のLassoでリッジ回帰
  • Layer 4: 2つの提出物を55:45の比率でブレンドして作成

References

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3