1. HOME
  2. ブログ
  3. IT技術
  4. 機械学習で特徴量を正しく選択する方法

機械学習で特徴量を正しく選択する方法

特徴量を選択する3つの方法

本記事で、機械学習での特徴量を選択する方法について解説していきます。

特徴量を選択することで、『モデルの精度を上げたり』『計算時間を短縮することができる』などのメリットがあります。

今回は、「Kaggle」の中でも、特に有名なTitanic: Machine Learning from Disasterを扱い、特徴量を正しく選択する方法について解説していきます。

Kaggle(カグル)とは

Kaggle(カグル)は、企業や研究者がデータを投稿し、世界中の統計家やデータ分析家がその最適モデルを競い合う、予測モデリング及び分析手法関連プラットフォームです。

【Titanic: Machine Learning from Disaster】
機械学習を使用して、どの乗客がタイタニック号の難破船を生き延びたかを予測するモデルを作成します。
https://www.kaggle.com/c/titanic

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

Filter Method

Filter法は、目的変数と特徴量から、相関係数やカイ2乗などの統計量を計算し、特徴量を選択する方法です。

「特徴量」と「目的変数」を一対一でみるので、特徴量同士の関係は考慮しない比較的簡単な選択方法になります。

相関係数を利用する方法では、相関係数の絶対値が大きい順に特徴量を選択します。

それでは、実際にタイタニックのデータを利用して実装していきたいと思います!

データの確認

まずは、データの確認してみましょう。

欠損値の有無を確認

次に、欠損値の有無を確認します。

「Age」「Cabin」「Embarked」に欠損値があることが分かりました。

「Age」はシンプルに平均値で置換し、「Embarked」は最頻値で置換します。

「Cabin」は欠損値が多いので、今回は特徴量に入れません。

get_dummies関数を使って数値にする

相関係数を求めるには、「数値」に直す必要があります。

そのため、get_dummies関数を使って数値にします。

なお、今回は、数値に直すことが難しい「Name」「Ticket」は除きます。

相関係数を求める

これで、相関係数を求めることができるようになりました。

出力結果を見てみると、Sex(性別)が最も相関係数が大きいことが分かりました。

重要度を可視化

次に、重要度を可視化してみましょう。

グラフ

分析

全体的にみてみると、Sex(性別)が特に重要度が高いことがよくわかりますね。

それに対して、PassengerId や Q は重要度が低い結果になりました。

Wrapper Method

Wrapper法は、特徴量の組み合わせを変えてモデルを学習させて、性能を評価することを繰り返して特徴量を選択する方法です。

繰り返し学習するので、計算コストが高いことを覚えておきましょう。

Wapper法 3つの方法

Warapper法は、以下の3つの方法に分けることができます。

  1. 特徴量をひとつずつ減らしていく方法
  2. ひとつずつ増やしていく方法
  3. すべての組み合わせを試す方法

mlxtendを利用して実装

今回は、1つひとつずつ追加していく方法を、「mlxtend」を利用して実装していきます。

これで、ひとつずつ特徴量を追加して精度をみることで、特徴量を選択することができます。

Embedded Method

Embedded法は、モデルの重要度を利用して特徴量を選択する方法です。

Lasso回帰や、木モデルなどがよく利用されます。

ランダムフォレストを使用して解説

今回は、「ランダムフォレスト」を使用して解説していきます。

ランダムフォレストを利用しても、Sex(性別)が一番重要度が高いという結果がでました。

可視化したデータ

では、可視化したデータもみてみましょう!

分析

グラフを見てみると、「Sex」「Fare」「PassengerId」「Age」が重要度が高いことがわかります。

それに対して、「Embarked」は重要度が低くなっています。

まとめ

機械学習で特徴量を選択する方法として

  1. Filter法
  2. Wrapper法
  3. Embedded法

を紹介しました。

今回は、例として特徴量が少ない課題を扱いましたが、特徴量の数が大量にある場合には正しく特徴量選択することがより重要になります。

特徴量を正しく選択できるようになれば、データサイエンティストとしてさらに大きく成長できることでしょう!

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

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

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

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

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

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

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

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

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

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

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

採用情報はこちら

関連記事