Indeed Machine Learning CodeSprint Tagging Raw Job Descriptions

復習がまだ済んでないけどブログを書いてとりあえず供養する

問題概要

求人広告の文章が与えられるので,広告に part-time-jobhourly-wage などの12種類のタグを付与しろ
ただし, part-time-jobfull-time-job のように同時に付与されない排他的なタグも存在する
採点方法は12種類のタグのprecisionとrecallの総和からF値を計算する www.hackerrank.com

方針

やったことを時系列順に

深層学習

深層学習試せばいけるやろwという気分になる.この時は12種類のタグに対して独立に採点されることを認識しておらず,12種類のタグを sigmoid_cross_entropy 同時に予測しようとする.スコア 284.62

問題文を確認する

問題文を確認して12種類のタグをそれぞれ予測してもいいこと知る.排他的なグループ内で素性BoWでSVMを使って多値分類してみる.スコア 460.04

トップはスコア700超えていてすごいなあ

ググった結果 scikit-learnOneVsRestClassifier を試してみる(内部的には12回2値分類をしたことになる).スコア 476.53

つらい

素性にbinaryのBoWやtf-idfなどを試すと,binaryのBoWがいい精度を出した.スコア 544.15

おわりに

分類器に XGBoost や ランダムフォレストを試してみるがだめ
最終的に語彙数を増やしたり,ストップワードを除去してスコア 557.97
最終順位は242人中97位だった.悲しい

感想

機械学習の手法を色々試したりしてただけで,1週間が過ぎてしまってエラー分析とかが全くできなかった…
名前は聞いたことあったけど,触ったことのない機械学習ツールの使い方を覚えた
NLPの趣味なので,lemman化などの前処理を知らなかったのが悔しい
こういう企業の機械学習コンペ増えてほしい

github.com