kaggle_moa's Introduction
kaggle_moa's People
kaggle_moa's Issues
memo
良さげなカーネルとかまとめてる
https://www.kaggle.com/c/lish-moa/discussion/192211
https://www.kaggle.com/c/lish-moa/discussion/191621
https://www.kaggle.com/c/lish-moa/discussion/181040#1046687
-
Tabnetが強いみたい
https://www.kaggle.com/c/lish-moa/discussion/192855 -
異常検知のnote確認したい
https://www.kaggle.com/rahulsd91/moa-anomaly-detection
oof_metrics = f"OOF Metric(log_loss): {metric(train_targets, res)}"
with open(f"{outdir}/oof_metrics.txt", mode="w") as f:
f.write(str(oof_metrics))
print(oof_metrics)
■作業結果
-
MLPClassifier.fit を fork する
→https://www.kaggle.com/yxohrxn/mlpclassifier-fit を
C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\MLPClassifier.fit
に持ってきた -
validation strategy を決定する
C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\data
MultilabelGroupStratifiedKFold.txt
の薬idでグルーピングしたMultilabelGroupStratifiedKFold -
一部の実験を vanilla の状態から再実施する
C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\MLPClassifier.fit\20201111
-
activation, bn, dropout の順序
→cv変更前と同様bn-act-dropの順序がcv一番良い -
gaussian noise, cutout, mixup, cutmix
→cv変更前と同様mixup, cutmixがcv良い -
weight normalization の有無
→cv変更前と同様有る方がcv良い -
cp_type と cp_dose の有無
→cv変更前と同様無い方がcv良い -
ClippedFeatures, QuantileTransformer 等の前処理
→cv変更前と同様
Clipped 有る方が良い
QuantileTransformer 無い方が良い -
PCA features, RowStatistics 等の特徴エンジニアリング
→cv変更前と同様
PCA 無い方が良い
RowStatistics 有る方が良い
→5シードアベレージで一番cv下がったのは、特徴量の遺伝子発現列の絶対値が2以上かのフラグ列を追加した特長量エンジニアリングを組み合わせたもの(cv: 0.01549)
https://www.kaggle.com/anonamename/mlpclassifier-edit-fe-fit -
ctl_vehicle 行の削除
→vanilla の状態に ctl_vehicle 行の削除 のみ実行すると効くが、mixupやcutmixと組み合わせると無い方がcv良くなる
作業ログ
202009
- Permutation Importance使った特徴選択したMLPのコード試した
- https://www.kaggle.com/anonamename/moa-keras-multilabel-neural-network-v-2-0?scriptVersionId=42226804
- 自宅PCで学習してsubmissionした
- C:\Users\81908\jupyter_notebook\poetry_work\tf23\01_MoA_compe\notebook\moa-keras-multilabel-neural-network-v-2-0\20200910
- https://www.kaggle.com/anonamename/my-pc-moa-keras-multilabel-neural-network-v-2-0?scriptVersionId=42329365
- 超不均衡なマルチラベル(ほぼラベルが0のスパースなラベル)なので、MultilabelStratifiedKFold でMLPのcv作った
- public score は MLP > lightGBM
20201021
チームでやることになった
lightGBMのコード
- モデルファイルuploadしてsubmissionできるように修正中
- cpu PCで学習実行試してる
- C:\Users\yokoi.shingo\my_notebook\py37\MoA_Prediction\notebook\moa-lgbm-benchmark
特徴選択 + 予測値をクリップ + label-smoothingしたMLPのコード
- 自宅PCで学習実行中
- C:\Users\81908\jupyter_notebook\poetry_work\tf23\01_MoA_compe\notebook\keras-multilabel-neural-network-v1-2
20201022
lightGBMのコード
- モデルファイルuploadしてsubmissionはできそう。まだ試せてない
- Dataset uploadは1000ファイルが上限なので、cv=4でやるつもり(cv=5だと5*206=1030個モデルできるからダメだった。cv=5で学習一晩かかった)
- optunaでパラメチューニングできるように修正中
特徴選択 + 予測値をクリップ + label-smoothingしたMLPのコード
- submitした
- ※submit手順
- Datasetにモデルファイルupload
- kaggleでnotebook作成して実行
- public score: 0.01873
- cv score: コードミスで出せなかった(epochs=150で学習一晩かかった)
構造変えた複数のMLPアンサンブル + 統計量の特徴量追加 + pcaで圧縮した特徴量追加 + 特徴選択 + 予測値をクリップ + label-smoothingしたコード
- 自宅PCでコード確認中
- C:\Users\81908\jupyter_notebook\poetry_work\tf23\01_MoA_compe\notebook\MoA DNN Feature Engineering
20201023
lightGBMのコード
- cpu PCでfold=4でパラメータチューニング実行中(数日かかりそう)
自宅PCにcudaいれてtf環境作り直した(poetryでgpu使えてなかったので)
特徴選択 + 予測値をクリップ + label-smoothingしたMLPのコード
- tfgpu環境で再実行
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\keras-multilabel-neural-network-v1-2\run_label_smoothing_20201021.py
- cv score: 0.01622 (public score: 0.01873 のはず. 昨日submissionしたのと同一条件なので)
特徴選択 + label-smoothingしたMLPのコード
- tfgpu環境で実行
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\keras-multilabel-neural-network-v1-2\run_label_smoothing_no_clip_20201023.py
- val_lossがnanになるときがあった。クリップ無いから予測ラベルすべて0.0と出したからだろな
- cv score: 0.016606
- クリップありの方がcv良い。clip入れたらoof下がるのは予測ラベル補正してるから当たり前!!!
構造変えた複数のMLPアンサンブル + 統計量の特徴量追加 + pcaで圧縮した特徴量追加 + 特徴選択 + 予測値をクリップ + label-smoothingしたコード
- tfgpu環境で実行
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\MoA DNN Feature Engineering
\moa-dnn-feature-engineering_20201023.py - cv score: 0.015825(8時間以上かかった)
- public score: 0.01852
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\MoA DNN Feature Engineering
20201024
lightGBMのコード
- fold=5で実行したモデルファイルzipにしたらuploadできた
pandas-profiling 自宅PCで実行できない。。。
- cpu PCで出したpandas-profilingの結果githubに上げて持ってきた
github作り直した。間違ったbranchにpushしたので
データの意味とか調べてた。まだ途中
どの要素が効果あるか確認するnotebook作成中
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\base_line\20201023\20201025.ipynb
20201025
どの要素が効果あるか確認するnotebook
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\base_line\20201023\20201025.ipynb
- 元のnotebookの条件が一番良かった
- cv score: 0.0161329 (model_type: 3lについて)
- 特徴量の統計(fe_stats, g_squared)は有効,
- 統計量やpcaしてから規格化(scaling(RobustScaler))は有効
- 元のnotebookの条件が一番良かった
adabelief_tf なぜかエラーになる
20201026
lightGBMのコード
- パラメチューニング終わってた。
- 統計量の特徴量追加したらどうなるか試してる
- C:\Users\yokoi.shingo\my_notebook\py37\MoA_Prediction\notebook\moa-lgbm-benchmark\20201026_lgb_train.py
モデルブレンディングの重みをネルダーミードで最適化
- 途中
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\Nelder-Mead
TGANでデータ増やす
- 途中
- TGANはtensorflow1.15.4系が必要なのでそれ用の仮想環境作成した
- poetryでinstall するとcpuでしか実行できないので終わらない。。。1 epoch 3000時間かかるといわれる
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu1\01_MoA_compe\TGAN\20201026
モデル1個でマルチラベルのlightGBM作成
- 途中
- sklearnのMultiOutputClassifier使えばいけた。ただし、early_stoppingは使えない
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\tackling-any-kaggle-competition-the-noob-s-way\lgb_v2
20201027
lightGBMのコード
- 統計量の特徴量追加した方がoof良くなった
- C:\Users\yokoi.shingo\my_notebook\py37\MoA_Prediction\notebook\moa-lgbm-benchmark\20201026_lgb_train.py
- StratifiedKFold, feature_importance 計算したら、KFoldよりoof悪くなった
- C:\Users\yokoi.shingo\my_notebook\py37\MoA_Prediction\notebook\moa-lgbm-benchmark\20201027_lgb_train.py
- 統計量の特徴量追加してパラメチューニング実行中
- C:\Users\yokoi.shingo\my_notebook\py37\MoA_Prediction\notebook\moa-lgbm-benchmark\20201027_lgb_train.py
モデルブレンディングの重みをネルダーミードで最適化
- ネルダーミードした方がoof下がるが、LBは悪くなった
TGANでデータ増やす
- condaで環境作成し、TGANのパッケージの中身いじってgpuで動かそうとしたがPC落ちた。gpuで実行できず。。。
- tensorpackっていうpipかgithubでしか動かないパッケージが必要だった
- discussion でCTGAN うまくいかんと言ってるからあきらめる。。。
モデル1個でマルチラベルのlightGBM作成
- 途中
- sklearn.multioutput.ClassifierChain の方がよさそうなので試す予定
- ClassifierChain は直前の二値分類の予測結果を meta feature として利用して新たな二値分類を解く
- aクラスのモデル学習→aクラスの予測を特徴量に追加→bクラスのモデル学習 みたいなイメージ
- ClassifierChain は直前の二値分類の予測結果を meta feature として利用して新たな二値分類を解く
- 参考: https://towardsdatascience.com/journey-to-the-center-of-multi-label-classification-384c40229bff
気になったdiscussion 試してる
- https://www.kaggle.com/c/lish-moa/discussion/193463
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\MoA Pytorch Feature Engineering 0.01846
- oof が再現しない。。。
20201028
パワポにコンペ概要まとめた
タスクベースで作業した方が効率良さそうなので、作業ログはTrelloに書いてみる
- https://trello.com/b/lHvX528J/kagglemoa
- ちゃんと書こうとして時間取られるから自分には向いてなさそう。効いた手法をまとめるだけに使うことにする
cv スコアの算出方法直して再実行
- MultiLabelStratifiedKFold(n_splits=5, shuffle=False)
- データ全体を使用
- oof で計算
-
構造変えた複数のMLPアンサンブル + 統計量の特徴量追加 + pcaで圧縮した特徴量追加 + 特徴選択 + 予測値をクリップ + label-smoothingしたコード
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\MoA DNN Feature Engineering\moa-dnn-feature-engineering_20201028.py
- https://www.kaggle.com/anonamename/moa-dnn-20201028?scriptVersionId=45694957
- cv score: 0.015137
- public score: 0.01858
-
どの要素が効果あるか確認するnotebook
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\base_line\20201028
-
lightGBMのコード
- C:\Users\yokoi.shingo\my_notebook\py37\MoA_Prediction\notebook\moa-lgbm-benchmark\20201027_lgb_train.py
- cv score: 0.015488985
- public score: 0.01987
- C:\Users\yokoi.shingo\my_notebook\py37\MoA_Prediction\notebook\moa-lgbm-benchmark\20201027_lgb_train.py
-
20201029
どの要素が効果あるか確認するnotebook
- 特徴量追加して試した
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\base_line\20201029
- cp_type=ctl_vehicle のコントロールのレコードの平均との差、比率の特徴量追加は効かず
- cの特徴量を絶対値とった特徴量はoof下がった
- 以下の組み合わせでcv score: 0.01521
- train, test, features = funcs.fe_stats(train, test, flag_add=False)
- train, test, features = funcs.c_squared(train, test)
- train, test, features = funcs.c_abs(train, test)
- train, test, features = funcs.fe_pca(train, test, n_components_g=70, n_components_c=10, SEED=123)
- train, test, features = funcs.scaling(train, test)
モデル1個でマルチラベルのlightGBM作成
-
ClassifierChain と MultiOutputClassifier の両方実行している
-
自宅PCでパラメチューニング
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\tackling-any-kaggle-competition-the-noob-s-way\lgb_v2\run_20201029_lgb_multi.py
-
cpu PCで実行
- C:\Users\yokoi.shingo\my_notebook\py37\MoA_Prediction\notebook\tackling-any-kaggle-competition-the-noob-s-way\lgb_v2\run_20201029_lgb_multi.py
- 遅すぎてあかん(11/2に処理終わった)
- cvも0.034台で全然ダメ。。。おそらく学習率低くてn_estinameが足りないため
20201030
TabNetのサンプルコードためした
- feature engしたらcv悪化する。。。
- https://www.kaggle.com/anonamename/moa-stacked-tabnet-baseline-tensorflow-2-0?scriptVersionId=45799275
- cv score: 0.016365
- public score: 0.01938
nonscored target もターゲットに追加して LightGBM + ClassifierChain 試してる
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\tackling-any-kaggle-competition-the-noob-s-way\lgb_v2\20201030_lgb_multi.ipynb
ホストの発言メモした
-
g-列は>2,<-2なら薬がその列の遺伝子に効いてる。0に近いなら効果なし
-
特徴量は正規化した値。実験のプレート単位で正規化してる。プレート間で差はないらしい
- 正規化の方法(QNORM)はこれ?: https://biolab.sakura.ne.jp/robust-z-score.html -
細胞生存率(c-列)は死んた細胞の量。高いほどその細胞死んでる
-
各薬に1:1でコントロールデータがあるわけではない
1プレートに1つコントロール条件がある -
ラベル列がすべて0のクラスは実験ミスの可能性
1つの薬で行う6回の実験(6行分)のうち必ずどこか1回は陽性になる想定 -
クラス不均衡は階層的なモデルにすれば解けるかも
例. 阻害剤かそれ以外か分類モデル作成→阻害剤から5-alpha reductase inhibitorなどのクラス分類
- 階層的なラベル付けしてSVMでうまくやったらしい論文: https://academic.oup.com/bioinformatics/article/22/7/830/202161
20201031
nonscored target もターゲットに追加して LightGBM + ClassifierChain
- コードなおした
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\tackling-any-kaggle-competition-the-noob-s-way\lgb_v2\run_20201030_lgb_multi.py
- 学習実行中
同じ薬ならターゲット変数同じと仮定して薬のID見つける
- https://www.kaggle.com/c/lish-moa/discussion/194190
- 297通り薬のIDあり。2万行あるtrain setのうちの297 * 6 = 1782行は薬識別できそう
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\drug_check
nonscored target もターゲットに追加して MLP
- 構造変えた複数のMLPアンサンブル + 統計量の特徴量追加 + pcaで圧縮した特徴量追加 + 特徴選択 + 予測値をクリップ + label-smoothingしたコード がベース
- cvやたら下がるが、LBは0.00001 悪化
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\use_nontarget
- https://www.kaggle.com/anonamename/nontarget-class-add-fe-20201031?scriptVersionId=45885447
- cv score: 0.01031(ブレンドした値。3lだけだと0.011358)
- public score: 0.01859
20201101
nonscored target もターゲットに追加して LightGBM + ClassifierChain
- oofの計算間違えてたから直した
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\tackling-any-kaggle-competition-the-noob-s-way\lgb_v2\run_20201030_lgb_multi.py
nonscored target もターゲットに追加して MLP
- oofの計算間違えてたから直した
- cv, LB 悪くなった
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\use_nontarget\nontarget_class_add_fe_20201031.ipynb
- https://www.kaggle.com/anonamename/nontarget-class-add-fe-20201031?scriptVersionId=45918536
- cv score: 0.015195(ブレンドした値。3lだけだと0.01544)
- public score: 0.01859
nonscored target もターゲットに追加して MLP + class_weight
- cv, LB 悪くなった
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\use_nontarget\nontarget_class_add_class_weight.ipynb
- https://www.kaggle.com/anonamename/nontarget-class-add-fe-weight-20201031?scriptVersionId=45920773
- cv score: 0.015556(ブレンドした値。3lだけだと0.01599)
- public score: 0.01878
どの要素が効果あるか確認するnotebook
- funcs.py直したので再実行した
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\base_line\20201031
- fe_stats flag_add=False → c_squared → c_abs → g_valid → fe_pca → scaling で cv: 0.015195
20201102
nonscored target もターゲットに追加して LightGBM + ClassifierChain
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\tackling-any-kaggle-competition-the-noob-s-way\lgb_v2\run_20201030_lgb_multi.py
- cv: 0.01628 / LB:
LightGBM + MultiOutputClassifier /ClassifierChain のコード。パラメータを別のpyファイルからロードするように変更した
-
C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\tackling-any-kaggle-competition-the-noob-s-way\lgb_v2\run_20201102_lgb_multi.py
- multi_lr=0.1
- cv: 0.016085 / LB:
- chain_lr=0.1
- cv: 0.01609(3seedでブレンドしたら0.015916) / LB:
- multi_lr=0.1
-
run_20201029_lgb_multi.py の結果再現しないので以下で再実行
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\tackling-any-kaggle-competition-the-noob-s-way\lgb_v2\run_20201029_lgb_multi_re.py
- multi_lr=0.1
- cv: 0.016081 / LB:
- chain_lr=0.01
- cv: 0.01855 / LB:
- n_estimater指定しなければ再現する
20201103
予測値clipしてもcvは変わらなかった。submissionは不明
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\base_line\20201031
PCAはtrain+testでfitした方がcv上がった。submissionは不明
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\base_line\20201031
adabelief-tf=0.1.0 試した
- lr=1e-3, epsilon=[1e-13, 1e-14, 1e-15, 1e-16] の4通り試した
- Adam に比べてcv 0.0001 ぐらい悪くなった
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\base_line\20201031
TabNet パラメータチューニング
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\TabNet_tf
- あんまりcv下がらない。。。
コードリファクタした。Feature-Engineering と MLP のコードを分けた
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\code
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\base_line\20201103 で動作確認中
20201104
cvの切り方変更した。薬のidファイル付与されたので
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\code
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\tackling-any-kaggle-competition-the-noob-s-way\lgb_v2\run_20201104_lgb_multi.py
LightGBM + MultiOutputClassifier /ClassifierChain のコード。cv切りなおした
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\tackling-any-kaggle-competition-the-noob-s-way\lgb_v2\run_20201104_lgb_multi.py
- chain_lr=0.1
- cv: 0.01759(3seedでブレンドしたら0.0174524) /LB: 0.02072
- https://www.kaggle.com/anonamename/submission-run-20201104-lgb-multi?scriptVersionId=46168240
- chain_nonscored_lr=0.1
- cv: 0.01756(3seedでブレンドしたら0.017439 ) /LB:
20201105
どの要素が効果あるか確認するnotebook。cv切りなおした
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\base_line\20201105
cv切りなおしてsubmissionした
-
cv/LBとの差は狭まるが、LBやや悪化する
-
cvとLBの相関取れてないっぽい。cv上げたらLB下がった場合あり
- tabnetも入れたnotebook
- https://www.kaggle.com/anonamename/moa-dnn-moa-code-20201104
- https://www.kaggle.com/anonamename/submission-moa-dnn-moa-code-20201104-v2?scriptVersionId=46198226
- cv: 0.01606(シングルモデルだと4lの0.0163)。学習時と推論時でcv一致しなのでおそらくoofの切り方ミスってる。なのでこのcvはあてにならん / LB: 0.01889
-
LB: 0.01852 のnotebookをcvだけ変えた版
※cvはctl行削除してます。train全データ使ったoofではないです
※cv変更後はkaggleのgpuでモデル学習、cv変更前はローカルPCでモデル学習した環境差はあります- https://www.kaggle.com/anonamename/moa-dnn-feature-engineering-20201023-re-cv
- https://www.kaggle.com/anonamename/sub-moa-dnn-feature-engineering-20201023-re-cv?scriptVersionId=46235052
- cv: 0.01718(シングルモデルだと0.01742台) / LB: 0.01861
-
LB: 0.01852 のnotebookをcvだけ変えた版 + Nelder-Mead
- https://www.kaggle.com/anonamename/sub-moa-dnn-feature-engineering-20201023-re-cv?scriptVersionId=46244230
- cv: 0.01716(シングルモデルだと0.01742台) / LB: 0.01863
20201106
どの要素が効果あるか確認するnotebook。再実行
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\base_line\20201106
- 結果からbatch_sizeやlrの最適値をcodeにハードコードした
チームのパラメータサーチコード修正
- cvが変わるので再試できるようにするため
20201107
20201108
20201109
20201110
20201111
チームのパラメータサーチコード修正
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\MLPClassifier.fit\20201111
20201112
チームのパラメータサーチコード修正
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\MLPClassifier.fit\20201111
作業結果まとめ
-
MLPClassifier.fit を fork する
→https://www.kaggle.com/yxohrxn/mlpclassifier-fit を
C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\MLPClassifier.fit
に持ってきた -
validation strategy を決定する
C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\data
MultilabelGroupStratifiedKFold.txt
の薬idでグルーピングしたMultilabelGroupStratifiedKFold -
一部の実験を vanilla の状態から再実施する
C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\MLPClassifier.fit\20201111
-
activation, bn, dropout の順序
→cv変更前と同様bn-act-dropの順序がcv一番良い -
gaussian noise, cutout, mixup, cutmix
→cv変更前と同様mixup, cutmixがcv良い -
weight normalization の有無
→cv変更前と同様有る方がcv良い -
cp_type と cp_dose の有無
→cv変更前と同様無い方がcv良い -
ClippedFeatures, QuantileTransformer 等の前処理
→cv変更前と同様
Clipped 有る方が良い
QuantileTransformer 無い方が良い。https://www.kaggle.com/c/lish-moa/discussion/195788 で書いてるようにパラメータ n_quantiles=100, 1000 試したがどちらも効果なし -
PCA features, RowStatistics 等の特徴エンジニアリング
→cv変更前と同様
PCA 無い方が良い
RowStatistics 有る方が良い
→5シードアベレージで一番cv下がったのは、特徴量の遺伝子発現列の絶対値が2以上かのフラグ列を追加した特長量エンジニアリングを組み合わせたもの(cv: 0.01549)
https://www.kaggle.com/anonamename/mlpclassifier-edit-fe-fit -
ctl_vehicle 行の削除
→vanilla の状態に ctl_vehicle 行の削除 のみ実行すると効くが、mixupやcutmixと組み合わせると無い方がcv良くなる -
non score target で転移学習
→深いMLPやresnetだと効くみたい( https://www.kaggle.com/c/lish-moa/discussion/195932 )だが効果なし
チームのパラメータサーチコード修正_TabNet-tf
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\TabNetClassifier.fit
- stackedtabnetの方がclasstabnetよりcv良かった
20201113
20201114
20201115
20201116
アンサンブル用にlgbmのコード修正
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\lgbm_for_ensemble
- LGBMClassifier + ClassifierChain と クラスごとにlgbm作る方法の2種類試してる
- kaggle カーネルで実行中
- LGBMClassifier + ClassifierChain は cv: 0.016802 (MultilabelGroupStratifiedKFold)
- クラスごとにlgbm作成 は cv: 0.015219 (StratifiedKFold)
- 自宅PCではパラメータチューニング投げてる
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\lgbm_for_ensemble\lgbm-objective
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\lgbm_for_ensemble\lgbmclassifier-classifierchain-objective
- cpu PCでもパラメータチューニング実行中
20201117
アンサンブル用に過去作成したMLPのコード修正
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\MLP_for_ensemble\20201117
アンサンブル用に過去作成したTabNetのコード修正
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\TabNetClassifier.fit\20201118\StackedTabNet
over fittingを避けるためのヒント のディスカッションメモした
アンサンブルコード実行。クラスごとにlgbmのみ追加
- cvは上がるがLB0.02台で全然ダメ
20201118
rapidsのSVMは1seed分しか保存できない。kaggleは出力ファイルを20GBまでしか保存できないため。。。
rapidsのロジスティク回帰で重要な特徴量を見つける
- log_loss小さい特徴は重要とする発想は応用できそう
アンサンブルコード再実行。MLPと LGBMClassifier + ClassifierChain のモデル追加
- cvは上がるがLB0.02台で全然ダメ。自分のモデルが足引っ張ってる。。。
20201119
GrowNet試してる
- C:\Users\81908\jupyter_notebook\pytorch_work\grownet_pytorch
- cv:0.0159台(lr=1e-2のが良さそうだった)
- 高スコアのfeature engも試したが効かず
- C:\Users\81908\jupyter_notebook\pytorch_work\grownet_pytorch\20201123
20201120
206クラスのマルチラベルで学習できるようにカスタムロス付けたLightGBMはcvうまく下がらない
20201121
20201122
20201123
GrowNet のコードkaggleで実行
lightGBM のinputの特徴減らす
- 減らさない方がcv良い。ハイパーパラメータの関係もあると思うが
- https://www.kaggle.com/anonamename/moa-lightgbm-fs-any-list?scriptVersionId=47525205**
SVMのパラメータ変更して実行
- C=10でcv:0.0150台
- 統計量や特徴量減らすのは良くなかった
20201124
cv直してSVM再実行
- 出力ファイルがでかすぎて一括実行できないためseed変えて複数notebook作成する
cv直してLightGBM再実行
cv直してGrowNet再実行
5l,4lのMLPのパラメーターチューニング
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\MLP_for_ensemble\20201124
アンサンブル用のモデルdataset再upload
- nonscoredなし版のを上げなおした
20201125
3l,2l,rsのMLPとStackedTabNetのパラメーターチューニング
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\MLP_for_ensemble\20201124
20201126
LGBMClassifier + ClassifierChain の orderを共起ラベル数多い/少ない順にして再実行
- https://www.kaggle.com/anonamename/moa-lgbm-classifierchain-co-occurences-asc?scriptVersionId=47819726
- https://www.kaggle.com/anonamename/moa-lgbm-classifierchain-co-occurences-desc?scriptVersionId=47819626
- 効果わからず。スコア良くならないから微妙そう
LGBMClassifier + ClassifierChain のorder変えても結果変わらない原因調査
- lgbmの「min_data_in_leaf」を指定するとorder効かなくなる
- min_data_in_leaf 指定せずに再実行
- min_data_in_leaf 指定せずにパラメーターチューニングしたが、min_data_in_leaf 指定ありの結果の方がcvよかった
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\lgbm_for_ensemble\lgbmclassifier-classifierchain-objective\20201126
マイナークラスはモデルファイル作成しないようにして moa-lightgbm 再実行
- アンサンブルでおかしくなる原因かもしれないので
- https://www.kaggle.com/anonamename/moa-lightgbm-minor-omit
- moa-lightgbm のスコアとほぼ変わらず
- チームのアンサンブルの重みもmoa-lightgbm とほぼ同じなので意味なし
20201127
Self-Stacking XGBoost
-
https://www.kaggle.com/anonamename/moa-self-stacking-xgboost
-
C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\xgboost\20201127\train
- cv: 0.016037
- 13時間ぐらいかかった。。。
-
kaggleにuploadした
-
前処理をチームと合わせるため再実行
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\xgboost\20201127\train
20201128
Self-Stacking XGBoost calibrate
- kaggleの時間制限で失敗するからcalibrate で処理分けた。分けても時間制限で失敗した
- https://www.kaggle.com/anonamename/moa-self-stacking-xgboost-calibrate?scriptVersionId=47996873
moa-lightgbm-calibrate
- kaggleの時間制限で失敗するからcalibrate で処理分けた。calibrate するとcv大幅に悪化
- https://www.kaggle.com/anonamename/moa-lightgbm-calibrate?scriptVersionId=47995340
チューニングしたパラメータでアンサンブル用モデル作成
- 時間かかりすぎるのでローカルで実行
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\MLP_for_ensemble\run_fix
- 5l : cv: 0.01611, auc: 0.64835
- 4l : cv: 0.01591, auc: 0.66564
- 3l_v2: cv: 0.01576, auc: 0.68225
- 2l : cv: 0.01572, auc: 0.67610
- rs : cv: 0.01588, auc: 0.67808
- StackedTabNet: cv: 0.015609, auc: 0.68547
特徴量をスケーリングする重みを遺伝的アルゴリズムで計算し、cumlのKNNでマルチラベル分類
- https://www.kaggle.com/anonamename/moa-genetic-algorithm-cuml-knn?scriptVersionId=47985365
- 遺伝的アルゴリズムで計算した重みでcv改善したより、予測値を0.0005, 0.999 でクリップする後処理だけでcvが0.0005 ぐらい改善したことの方が印象的だった
20201129
チューニングしたパラメータでアンサンブル用モデルuploadした
githubのコード整理した
20201130
再チューニングしたパラメータでアンサンブル用StackedTabnet作成
- 9時間かかるのでローカルで実行
- C:\Users\81908\jupyter_notebook\poetry_work\tfgpu\01_MoA_compe\notebook\MLP_for_ensemble\run_fix
- StackedTabNet: cv: 0.01559, auc: 0.68344
モデルuploadした
議事メモ
20201030 定例会
cvの過学習あるので、LBに効くcvの値を把握していけばいいんでない。上位はcv=0.015-0.016台でいけてるので (OT)
RANK ガウスはMLPと相性いいらしい (OT)
nonscored で学習→予測値を特徴に追加→scored を学習でやりたい (OH)
nonscoredも予測ラベルに入れてMLP作ればマルチタスクでうまくいくかも (OT)
nonscored targetのclass_weightを減らして学習させる方がいいと思う (A)
画像化がうまくできるならCNNはいいと思う。今のところそんなのないが (OT)
DeepInsightより、Auto encoderで2次元化した画像でやる方がいいと思う (OT)
ラベルは阻害剤とほかのなんかの種類が多い (N)
ラベルの種類でMLPの出力層2股にわけるとか、阻害剤とそれ以外とか (OT)
ラベルの間の相関得るため、RNNやClassifierChain がいいでは (OH)
RNN よりLSTMのがいいだろう。LSTMよりTransfomerのがいいだろ。じゃあTabNetじゃん (OT)
最終の2サブ以下でいく
- 推論のみでアンサンブルしまくる
- train+推論
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.