1. HOME
  2. ブログ
  3. IT技術
  4. 【機械学習】欠損値に対する正しい対処法

【機械学習】欠損値に対する正しい対処法

欠損値を正しく処理する方法

データには、「欠損値」が含まれている場合が多くあります。

機械学習を行う場合は、欠損値をどのように処理するのかによって精度は大きく変わってきます。

本記事では、欠損値を正しく処理する方法について説明していきます。

こちらの記事もオススメ!

欠損値を見つける方法

まずは、欠損値を処理するために、欠損値がどこにいくつあるのかを確認していきましょう。

今回扱うデータフレームを以下に定義します。

欠損値を調べるには、「isnull関数」を利用します。

欠損値であれば「True」、欠損値でなければ「False」が返ってきます。

このように、欠損値がどこにあるかが分かります。

しかし、このままだとデータの数が多い時に確認することが大変ですね。

欠損値がある場所をみやすくする

そこで、「sum関数」を利用して見やすくします。

これで「どこに」「いくつ」欠損値があるのかが分かります。

また、引数に axis=1 をいれると、行に対しての結果を見ることができます。

データを扱う時は、まずこのようにして欠損値の有無を確かめます。

欠損値を削除する

欠損値の数が少ない場合には、欠損値ごとデータを消してしまうという方法があります。

削除するには、「dropna関数」を使用します。

axis=1 を指定することで、欠損値が含まれる列を削除します。

欠損値を削除するのは簡単ですが、削除するということは情報を減らしてしまうということになります。

欠損値の削除は、数が少ない時のみにしましょう。

欠損値を代表値で埋める

欠損値を埋める最もシンプルな方法として、代表値で埋めるという方法があります。

平均値で埋める

最も一般的な方法は、平均値で埋める方法です。

欠損値を埋めるには、「fillna関数」を使います。

中央値や最頻値で埋める

平均値で埋める以外にも、中央値や最頻値で埋める方法もあります。

中央値を求める時は「median関数」、最頻値を求める場合は「mode関数」を使います。

この他に、引数に method=’ffill 、もしくは method=’bfill を指定することによって、欠損値を前後の値で埋めることができます。

時系列データの際に有効です。

欠損値を利用して特徴量を作成する

欠損値を埋めるのではなく、新しく特徴量として利用する方法もあります。

簡単に特徴量に変える方法として、欠損しているかどうかの2値変数にする方法があります。

欠損値を利用して特徴量を作ることによって、情報量を減らすことなく利用できるというメリットがあります。

欠損値のまま利用する

これまでは、欠損値に対して何かしらの処理をしてきましたが、欠損値をそのままにして利用するという方法もあります。

例えば、GBDTライブラリでは欠損値があってもそのまま扱うことができるため、そのまま扱うことも多くあります。

しかし、ニューラルネットワークやランダムフォレストなど、GBDT以外の多くの機械学習手法では、欠損値をそのまま扱うことはできないので、何かしらの処理をする必要があります。

さいごに

本記事では欠損値を正しく処理する方法を紹介しました。

以下のポイントを忘れないようにしましょう。

  1. 欠損値の有無の確認
  2. 欠損値が少なければ削除
  3. データに合わせて欠損値を補完
  4. 欠損値を利用して新たに特徴量を作る
  5. GBDTを使うなら欠損値のままでもOK

欠損値を処理する方法はたくさんありますが、重要なのはデータに合わせて正しく処理することです。

(株)ライトコードは、WEB・アプリ・ゲーム開発に強い、ITが大好きな会社です。
機械学習でのシステム開発依頼・お見積もりはこちらまでお願いします。
また、機械学習系エンジニアを積極採用中です!詳しくはこちらをご覧ください。

※現在、多数のお問合せを頂いており、返信に、多少お時間を頂く場合がございます。

こちらの記事もオススメ!

ライトコードよりお知らせ

にゃんこ師匠にゃんこ師匠
システム開発のご相談やご依頼はこちら
ミツオカミツオカ
ライトコードの採用募集はこちら
にゃんこ師匠にゃんこ師匠
社長と一杯飲みながらお話してみたい方はこちら
ミツオカミツオカ
フリーランスエンジニア様の募集はこちら
にゃんこ師匠にゃんこ師匠
その他、お問い合わせはこちら
ミツオカミツオカ
   
お気軽にお問い合わせください!せっかくなので、別の記事もぜひ読んでいって下さいね!

一緒に働いてくれる仲間を募集しております!

ライトコードでは、仲間を募集しております!

当社のモットーは「好きなことを仕事にするエンジニア集団」「エンジニアによるエンジニアのための会社」。エンジニアであるあなたの「やってみたいこと」を全力で応援する会社です。

また、ライトコードは現在、急成長中!だからこそ、あなたにお任せしたいやりがいのあるお仕事は沢山あります。「コアメンバー」として活躍してくれる、あなたからのご応募をお待ちしております!

なお、ご応募の前に、「話しだけ聞いてみたい」「社内の雰囲気を知りたい」という方はこちらをご覧ください。

ライトコードでは一緒に働いていただける方を募集しております!

採用情報はこちら

関連記事