【機械学習】予測精度向上に直結するデータの選び方

今回はせっかく作った機械学習のモデル精度が上がらないときどうすればいいの!?という疑問にこれまでの経験を踏まえて答えていきたいと思います。

機械学習モデルの精度を上げるための手法は大きく2つの方向性があります。

  • データサイエンス的に精度向上を目指す
  • ビジネス視点から精度向上を目指す

データサイエンス的に精度向上を目指すことは他記事でも多く紹介されているので、本記事ではビジネス視点から精度向上を目指すという観点で説明を行います。

ビジネス視点からデータセットを選ぶことはデータセットを作成する際に必要になります。

たくさんデータがある場合は、効率よくデータを選択していきたいですよね。

ビジネスの知見から、目的変数との関係性が高い説明変数を選ぶには、データを様々な軸でまとめていくことが必要です。

 

”ビジネス視点”からの精度改善から取り組もう

機械学習モデルの精度改善は恐らくすべてのデータサイエンティストが取り組んでおり、腕の見せ所ではないかと思います。

精度改善手法はいくつもありますが、データ状況やその人のスキルによって取るべき打ち手は変わってきます。

具体的な精度改善手法を次の表にまとめます。

視点 手法 コスト 効果
ビジネス視点 データ整理
データ取得 低~高
異常値・外れ値除去
グルーピング 中~高
データサイエンス視点 特徴量エンジニアリング 中~高 中~高
モデルパラメータ調整
アンサンブル学習

 

上の表のように、データサイエンス視点の精度改善は他サイトでも多くの説明がされていますが、ビジネス視点からの精度改善への取り組みについては比較的少ないように思います。

 

”garbage in, garbage out.”

 

という格言にもある通り、そもそもゴミデータを使って予測モデルを作っていては精度は出ません。

ゴミデータとは何か?価値あるデータとは何か?をしっかり分けて考えていきましょう。

 

データを”関連性ごと”にまとめて整理する

私は普段、Kaggle等のコンペのデータサイエンスをやるとき最初に行う作業がデータ(カラム)の整理です。

整理の仕方は、目的変数と関連性の強い順番に並べるだけなのですが、少し工夫をします。

ステップとしては、次の3ステップです。

  1. 整理する軸を決める
  2. 手元にある、今後収集が必要の2つに色分けする
  3. 思いつく限りたくさんの内容を書き込む

一番難しいのは1つ目の「整理する軸を決める」です。

タイタニックの生存予測のデータを例に説明します。

 

グループ カラム名 説明 ターゲットとの
関連の強さ
目的変数 Survived   生存したかどうか
チケット情報 Ticket   チケット番号
Fare   運賃
Cabin   客室番号
個人情報 PassengerId   乗客のID
Pclass   乗客の階級
Name   乗客の名前
Sex   性別
Age   年齢
家族構成 SibSp   同乗している兄弟・配偶者の数 低~中
Parch   同乗している親・子供の数
地理情報 Embarked 乗船した港

 

上記のように、データ(カラム)に対して、「グループ」と「ターゲットとの関連の強さ」を加味して整理します。

このとき、どのようにグルーピングしていくかは人によって異なりますし、ターゲットの関連の強さも正解かどうかはおいておきます。

自分なりの仮説を立てて、整理していくのです。

 

続いて、表にターゲットである”Survived”に影響のありそうなデータ(持っていなくてもOK)を追記して、最終的には次のようにまとめます。

 

目的変数 チケット情報 個人情報 家族構成 地理情報
Survived  Fare  Pclass  SibSp  Embarked
Cabin  Age  Parch 
Ticket  Sex  家族人数
購入時期 年収
宿泊場所 Name 
PassengerId 

黒:すでに持っているデータ、オレンジ:持っていないデータ

 

このように整理することで以下のメリットが得られます。

  • データ理解が進む
  • カラム数が多いときに、取捨選択ができる
  • データ追加の優先順位をつけることができる

ぜひトライしてみてください!

コメント

タイトルとURLをコピーしました