今回はせっかく作った機械学習のモデル精度が上がらないときどうすればいいの!?という疑問にこれまでの経験を踏まえて答えていきたいと思います。
機械学習モデルの精度を上げるための手法は大きく2つの方向性があります。
- データサイエンス的に精度向上を目指す
- ビジネス視点から精度向上を目指す
データサイエンス的に精度向上を目指すことは他記事でも多く紹介されているので、本記事ではビジネス視点から精度向上を目指すという観点で説明を行います。
ビジネス視点からデータセットを選ぶことはデータセットを作成する際に必要になります。
たくさんデータがある場合は、効率よくデータを選択していきたいですよね。
ビジネスの知見から、目的変数との関係性が高い説明変数を選ぶには、データを様々な軸でまとめていくことが必要です。
”ビジネス視点”からの精度改善から取り組もう
機械学習モデルの精度改善は恐らくすべてのデータサイエンティストが取り組んでおり、腕の見せ所ではないかと思います。
精度改善手法はいくつもありますが、データ状況やその人のスキルによって取るべき打ち手は変わってきます。
具体的な精度改善手法を次の表にまとめます。
視点 | 手法 | コスト | 効果 |
ビジネス視点 | データ整理 | 低 | 高 |
データ取得 | 低~高 | 高 | |
異常値・外れ値除去 | 低 | 中 | |
グルーピング | 低 | 中~高 | |
データサイエンス視点 | 特徴量エンジニアリング | 中~高 | 中~高 |
モデルパラメータ調整 | 高 | 中 | |
アンサンブル学習 | 高 | 中 |
上の表のように、データサイエンス視点の精度改善は他サイトでも多くの説明がされていますが、ビジネス視点からの精度改善への取り組みについては比較的少ないように思います。
”garbage in, garbage out.”
という格言にもある通り、そもそもゴミデータを使って予測モデルを作っていては精度は出ません。
ゴミデータとは何か?価値あるデータとは何か?をしっかり分けて考えていきましょう。
データを”関連性ごと”にまとめて整理する
私は普段、Kaggle等のコンペのデータサイエンスをやるとき最初に行う作業がデータ(カラム)の整理です。
整理の仕方は、目的変数と関連性の強い順番に並べるだけなのですが、少し工夫をします。
ステップとしては、次の3ステップです。
- 整理する軸を決める
- 手元にある、今後収集が必要の2つに色分けする
- 思いつく限りたくさんの内容を書き込む
一番難しいのは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 | – | – |
黒:すでに持っているデータ、オレンジ:持っていないデータ
このように整理することで以下のメリットが得られます。
- データ理解が進む
- カラム数が多いときに、取捨選択ができる
- データ追加の優先順位をつけることができる
ぜひトライしてみてください!
コメント