欠損データの扱い

Pythonで学ぶMachine Learning面接対策

Lisa Stuart

Data Scientist

前提知識

Pythonで学ぶMachine Learning面接対策

コース概要

  • 第1章: 前処理と可視化
    • 欠損値、外れ値、正規化
  • 第2章: 教師あり学習
    • 特徴選択、正則化、特徴量エンジニアリング
  • 第3章: 教師なし学習
    • クラスタ手法選択、特徴抽出、次元削減
  • 第4章: モデル選択と評価
    • 汎化と評価、モデル選択
Pythonで学ぶMachine Learning面接対策

機械学習(ML)パイプライン

パイプライン概要

Pythonで学ぶMachine Learning面接対策

本コースのMLパイプライン

パイプライン

Pythonで学ぶMachine Learning面接対策

欠損データ

  • 手法ごとの影響
  • 欠損の検出
  • 対処戦略
Pythonで学ぶMachine Learning面接対策

手法

  1. 省略
    • 行の削除 --> .dropna(axis=0)
    • 列の削除 --> .dropna(axis=1)
  2. 代入(インピュテーション)
    • 0で埋める --> SimpleImputer(strategy='constant', fill_value=0)
    • 平均で代入 -> SimpleImputer(strategy='mean')
    • 中央値で代入 --> SimpleImputer(strategy='median')
    • 最頻値で代入 --> SimpleImputer(strategy='most_frequent')
    • 反復代入 --> IterativeImputer()
Pythonで学ぶMachine Learning面接対策

なぜ重要か

  • バイアス導入の確率を下げる
  • 多くのMLアルゴリズムは完全データを要する
Pythonで学ぶMachine Learning面接対策

代入の影響

  • 影響は次に依存:
    • 欠損の有無
    • 元の分散
    • 外れ値の有無
    • 歪度の大きさと向き
  • 省略 --> データを削り過ぎる恐れ
  • 0埋め --> 下方にバイアス
  • 平均 --> 外れ値の影響を受けやすい
  • 中央値 --> 外れ値に強い
  • 最頻値・反復代入 --> 試して比較
Pythonで学ぶMachine Learning面接対策
関数 返り値
df.isna().sum() 欠損数
df['feature'].mean() 特徴量の平均
.shape 行・列の次元
df.columns 列名
.fillna(0) 欠損を0で埋める
select_dtypes(include = [np.number] ) 数値列
select_dtypes(include = ['object'] ) 文字列列
.fit_transform(numeric_cols) 学習して変換
Pythonで学ぶMachine Learning面接対策

欠損値の影響

MLにおける欠損値の影響は? 正しいものを選んでください:

  • 欠損値は問題ない。sklearnの多くは処理できる。
  • 欠損のある観測や特徴量は基本的に削除するとよい。
  • 欠損はバイアスを生み誤解を招くため無視できない。
  • 0で埋めると結果は上方にバイアスする。
Pythonで学ぶMachine Learning面接対策

欠損値の影響:解答

MLにおける欠損値の影響は? 正解は:

  • 欠損はバイアスを生み誤解を招くため無視できない。(各手法がデータ分散へ与える影響を検証し、影響が最小の方法で補完するのが最適です。)
Pythonで学ぶMachine Learning面接対策

誤答の解説:欠損値の影響

MLにおける欠損値の影響は?

  • 欠損値は問題ない…(sklearnの多くは欠損を扱えずエラーになります。)
  • 欠損のある観測・特徴量の削除…(データが大きく欠損率が小さい場合を除き、行や列の削除はデータが減り過ぎ、以後のMLに不向きです。)
  • 0で埋めると上方バイアス…(逆で、0埋めは下方にバイアスします。)
Pythonで学ぶMachine Learning面接対策

Vamos praticar!

Pythonで学ぶMachine Learning面接対策

Preparing Video For Download...