gocha124の日記

ごちゃごちゃ書きます

機械学習の勉強(Kaggle)#1

いろいろと調べたことや気になったことを残していきます。

今回は機械学習を身につけていこう、です。今回はKaggleで調べたことをメモして行きます。Kaggleとは、投稿されたデータの最適モデルを競いあう分析手法関連のプラットフォーム及びその運営会社(from Wikipedia)です。最近Googleに買収されたことでも有名になりました。

 

はじめに次のnotebookを参考にしました。このnotebookでは、これらデータを見ようとした時に、そもそもどんなデータなのかを調べる流れと手順がまとめてあります。Pythonを使って理解する流れを、手順な具体的で、コマンドベースで説明してくれていて大変わかりやすいです。

Comprehensive data exploration with Python | Kaggle

 

どんなデータなのかを調べる流れは以下の通りです。 

  1. 問題を理解する
  2. 単変量解析(univariable)データを理解する(この項目は何か)
  3. 多変量解析(multivariable)各変数は依存しているか独立しているか相関を把握
  4. 基本的なクリーニング
  5. テスト

 

具体的な手順を次に説明する。コマンドはリンク先を参照してほしい。

1、変数を把握する前に次のような列を持つ表を用意しておく(Excelとかで)

  • 変数名
  • 数字は数値かカテゴリ値か
  • 各項目のセグメント
  • 高・中・低のカテゴリを出すなど期待する出力
  • コメント

 

2、目的変数を把握する。

  • 平均(mean)
  • 標準偏差(std)
  • Skewness(歪度)
  • Kurtosis(尖度)、通常は3の値をとる。

私は、歪度、尖度はよくわからなかったので以下HatenaBlogを見て把握しました。

t-fund.hatenablog.com

 

目的変数が数値データとの相関があるのかを確認。

x軸、y軸のプロットで確認する。

目的変数がカテゴリカルデータと相関があるかを確認する。

箱ひげ図で確認する。

 

3、分析

超外観を把握する。

線形関係なのか?強い線形関係なのか?

  • 相関図(heatmapで全部?)
  • 目的変数に特化した相関図
  • シュガー?からの移動が心配

 

4、欠損値のあつかいを考える

説明変数間の相関を確認する。

  • ヒートマップ(heatmap)
  • 箱ひげ図(boxplot) 

外れ値を確認

  • Unvariate(単変量)で分析して外れ値を除外する。
  • Bivariate(二変量相関)で分析して外れ値を除外する。

 

5、さらにモデル

想定される分布

  • Normality(正規性)
  • Homoscedasticity(等分散性)
  • Linearity(線形性)
  • Absence of correlated errors

 

正規性なのかを確認、等分散性なのかの確認 

最悪はダミー値にする

 

 

A study on Regression applied to the Ames dataset | Kaggle

 

  • 線形回帰
  • 目的変数と説明変数のグラフにして外れ値を確認
  • NAをダミー値で埋める
  • 数値からカテゴリ値に変換
  • corr(相関係数)で寄与度を確認
  • 数値の特徴量の個数、カテゴリの特徴量の個数を確認
  • 数値の特徴量に含まれるNAの個数を確認
  • skewedな数値の特徴量はlogを取る
  • カテゴリ値の特徴量に含まれるNAの個数を確認

 

2、モデリング

  • 正規化無しの線形回帰
  • Ridge回帰付きの線形回帰
  • Lasso回帰付きの線形回帰
  • ElasticNet回帰付きの線形回帰

 

Stacked Regressions : Top 4% on LeaderBoard | Kaggle

  • xgboost
  • Box Cox Transformation of (highly) skewed features
  • Stacking models
  • Ensembling