- Ver.2 -
- Ver.1 -
▶︎ 内容
特徴量の抽出は以下の方針で行った。
・Cabin以外の全ての変数に対して、カテゴリ毎の生存率を求めて、その値をそのまま特徴量として利用した。
・Age,Fareの数値データは、ビン分けして、ビンごとの生存率を求めて、その値を特徴量として利用した。
・Nameは、敬称(Mr. Mrs.など)を取り出し、敬称毎の生存率を求めて特徴量として利用した。
・上記の特徴量から、交互作用特徴量を作成してみた。
・交互作用特徴量が増えたことで変数間のスケールが2桁以上広がったのと、モデリング中にiteration over?エラーがでるので、スケールを揃えるため交互作用特徴量作成後の全変数に対して標準化を行った。
▶︎ モデリング:
・Logistic regression、SVM(rbf kernel)、Gradient Boostingの3つでモデルを作成して比較した。
・パラメータはGridSearchで、一番良かったものを当てはめた。
▶︎ 結果:
・Logistic regressionのスコア:0.787
・SVMのスコア:0.784
・Gradient boostingのスコア:0.769
3つにほとんど違いが無かったので、とりあえずLogistic regressionでテストデータを予想したら、scoreは、0.77033と寂しい出来だった。
▶︎ 反省:
・全ての変数を一律で生存率で表現し、かつ最後に標準化したので、各変数の重みが等しくなってしまったのではないか?
・各モデルごとに、それにあった特徴量の表現方法があるだろうが、その辺りをあまり考慮していなかった。(生存率で線形分離できないかとは考えていた。)
▶︎ 次回方針(Ver_2):
・数値データ(Fare, Age)はそのまま適用してみる。
・カテゴリカルデータにone-hotエンコーディングを適用してみる。
・データのスケール揃えるのはminmaxをつかってみる。(これは、ただ使ってみたいため。)
▶︎ コード: https://www.kaggle.com/yoshitakaito/titanic-prediction-ver-1
参考サイト
前処理全般
・Pre-Modeling: Data Preprocessing and Feature Exploration in Python
変数の関係
・scipy.stats - scipyの統計関数群のAPI
カテゴリカル変数の変換
・Smarter Ways to Encode Categorical Data for Machine Learning
・Categorical Data - Strategies for working with discrete, categorical data
・
▶︎ モデリング
・logistic regression
・SVM(RBFkernel)
・Gradient Boosting
の3つでモデルを作り、結果を比較する。
参考サイト
SVM
0コメント