How to Win a Data Science Competition: Learn from Top Kagglers サマリー Week 2《重要なところだけ》: EDA
コースリンク: https://www.coursera.org/learn/competitive-data-science/
提供: National Research University, Higher School of Economics
はじめに
Kaggle初心者(natsuozawa)です。Kaggle Expertを目指して勉強しています。この講座をKaggle初心者ガイドで見つけ、面白そうだったので受けてみました。
読み返す価値のありそうな内容を集約しました。
過去の記事
EDA (Exploratory Data Analysis)
データを理解するためにデータを分析する。
ポイント: データを理解せずにモデルを組んでも、トップのスコアはたたき出せない。
基本的な過程
- データの領域知識(domain knowledge)をつける: ググる、Wikipediaを読むなどして、データが何を表すのか簡単に理解する
-
データが常識的に間違っているところを見つける: 1の領域知識を使う。間違っている場合は、直す・
is_correct
の列を足すなどして改善できる - データがどのように生成されたか理解する: バリデーションに必要。訓練データとテストデータが異なった方法で生成されていたら要注意
データの可視化
ヒストグラム
plt.hist(x)
ポイント: 異なる便個数・幅を使用したものを複数作って、データのパターンを入念に確認する
散布図
plt.plot(x, '.')
ポイント: 水平にパターンが見られるのはOKだが、縦方向にパターンがある場合データがシャッフルされていない。
なお、二つの特微量の関係を可視化することも良い。
plt.scatter(x1, x2, c=y)
ポイント:色を使いわける
平均・中央値・分散など
df.describe()
特微量同士の相関
df.corr()
plt.matshow(...)
特微量のグループ
相関する特微量をまとめてグループを見つける。特微量のグループはデータ生成に使える!
その他
x.value_counts()
x.isnull()
x.nunique()
検証
データの分け方
- random split: 普通
- 時間ベース: ある時間の前(test)と後(validation)に分ける
- IDベース: 店番、製品IDなどに基づき分ける
ポイント:train/validationの分け方はtrain/testの分け方に似せる
検証の手法
- Holdout: 普通のバリデーション
sklearn.model_selection.ShuffleSplit
- KFold: データのサイズが小さい場合
sklearn.model_selection.KFold
- Leave one out (LOO): データのサイズが極めて小さい場合。名前通り。
- Stratification: ラベルの分布を保持したい場合
ポイント:訓練で使ったデータを絶対に検証で再利用しない
検証時の問題
- データが小さすぎる
- データに一貫性がない
KFoldを何回も行い平均する、モデルチューニングと評価に別々の分割を使う
提出結果と検証スコアが一致しない問題
- テストデータのサイズが小さい: しょうがない
- テストデータの分布が訓練データと異なる: leaderboard probing、データの分け方を変える
Author And Source
この問題について(How to Win a Data Science Competition: Learn from Top Kagglers サマリー Week 2《重要なところだけ》: EDA), 我々は、より多くの情報をここで見つけました https://qiita.com/natsuozawa/items/44f95226eb9fe64c6732著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .