初めに
こんにちは、signate名はmimishitaでやっています。先日行われたインターンコンペに参加したので、その参加記を残そうと思います。
順位については30位で銀メダルと、あまり高いものではなかったのですが、最終サブをちゃんと選んでいればもうちょっと順位は上がっていたかもしれないです。(負け惜しみ)
また、ディスカッションに載っていたmasato8823さんのベースラインを大いに参考にさせていただきました。この場をお借りして御礼申し上げます。
作成した特徴量について
特徴量については以下のものを作成しました。
- テキスト特徴量
- html_contentをそのままtf-idfし、TrunctedSVDで64次元に圧縮
- html_contentからタグ情報を除いたものにtf-idfを行い、TrunctedSVDで64次元に圧縮
- html_contentからタグ情報を除いたものにbertを行い、PCAで50次元に圧縮
- html_contentからタグ情報を除いたものから、文字数を取得
- htmlのタグや特徴的な表現をカウント
- div
- p
- h1
- span
- img
- figure
- video
- animate
- figcaption
- polygon
- li
- bold
- Indicator Bar
- dummy.com
- goal
- '1-1000'のようなデータ構造になっているので左の値と右の値をそれぞれ分割させる。また、二つの値の平均値を取得する
- [-1, 24999, 49999, 79999, 99999, np.inf]でbinningする
- duration
- [-1, 30, 45, 60, 100]でbinningする
- カテゴリ変数
- 'category1'と'category2'を結合した'category3'を生成する
- 各カテゴリと'country'を結合した特徴量を作成
- binningしたgoalとdurationを結合
- LabelEncoding
- FrequencyEncoding
- 数値変数
- htmlの文字数、タグのカウント、goalの平均値、durationの各変数の積と商を計算する
- 集約特徴量
- 各カテゴリ変数(country, category1, category2, category3, binningの値)の集約特徴量を計算する。集約方法は["min", "max", "mean", "std", "count"]を使用
モデルの作成
作成したモデルについて
- LightGBM x3(max depth=3, 5, 10)
- NN
- 上記のモデルで得られた予測値を特徴量としてLightGBMを用いて予測、閾値についてはディスカッションに載っていた最適化手法を使用。
感想
- 初めてしっかり参加したコンペでメダルを取れたのは非常によかった
- ベースラインをかなり参考にしてしまったので、自分でモデル作成の部分ができるようになりたい
- Trust CVの精神を持つ
- 最終的にgithubにコードを載せられる程度にはコードを整理しておく