とりあえずやったこと
ふわっとしたタイトルはよくない。
・とりあえずTitanicをやった
・Signateに使いまわした
・Signateの離職予測でintermediateになった
ツリー系のアルゴリズムは宗教上の理由で使いたくないので、色々あってFactorization Machines(FMs)にすることにした。polylearnを使った。
順序のないカテゴリ変数のOne-Hot Encodingとか、数値データだが分布の形がキモく目的変数の条件付き経験分布をみると大小よりもどの辺に属しているかが効いてそうとか、交互作用がありそう(TitanicでいえばPclassと女性)とか、マルチコがありそう(これはencodingで余計に作ってる)とか。
上の前から2つの理由で説明変数がまあまあスパースであり、交互作用自体をモデル化できること、まあマルチコはL2正則化でマイルドになると信じると、まあ無難な選択ではなかろうか。
欲を言うと交互作用項の重さをスパースにしたいが……
Titanicは0.78468。最初は80%超えとかを目標にしていたが案外難しい。敬称を使うTIPSとかを見たりもしたが名前情報を使うのは現代的には倫理的にどうかと思うしまあこのくらいでよかろうと思うことにした。
SignateのTitanicはカラム情報が減ってるだけでなく、簡単になってる気がする。
近頃はライブラリを使うよりベタ書きだけどフルスクラッチみたいなことが多かったので、sklearnとかpandasとかの使い方を結構忘れていた。その辺を思い出したり新しく知ったりできたのでよかった。
あと雑感。インターネッツ、CV周りに関してひどい記事が多い。
※20210730追記
CVでモデル選択をすると決めた限りは計算量の兼ね合いはありますがCVをそれなりに頑張るのは本質的です。具体的にいうとチューニングパラメータによって使う説明変数が変わる(つまり同時にモデル選択を行なっている場合)手法を使っている場合は、チューニングパラメータによって(決定木ベースと回線形帰ベースの違いみたいなレイヤーとはまた違うレイヤーで)モデルが完全に異なるものになっているからです。
※追記ここまで
いじょ