テクノロジー

Red Wine Qualityを機械学習で予測【回帰分析モデル・完全版】

red-wine-quality

Red Wine Quality(赤ワインの品質)について、機械学習を用いた予測分析を行うモデルを解説します。

世の中的には分類(classification)タスクとして予測することが多いようですが、より予測モデルとしての精度を求めるために、ここでは回帰分析(regression analysis)を行います。

結果として、平均二乗誤差MSE、mean squared errorの略)ベースで0.69台を達成しています。

EDA -先ずはHeatmap-

各ワインに関する定量的データとしては、酸味、アルコール度数、pHなどがありますが、データセットに対してheatmapを用いて分析すると、特にalcohol、volatile acidity、citric acidの3項目がqualityとの相関関係が高いことが分かります。

Qualityの分布

今回予測を行う対象であるqualityの分布を確認すると、4台後半辺りから6台辺りのサンプルが圧倒的に多い結果となりました。イメージ的には、ものすごく微妙なワインや、ずば抜けて美味しいワインは早々無い、ということなのだと理解しています。

対象データの分布バランスが悪い場合は通常、一工夫してあげる必要があります(不均衡データ、Imbalanced Data)。有名な論点ですが捕捉すると、不均衡データについてそのままモデルの学習を行うと、サンプルが少ないデータ群に関して学習をせず無視するような挙動を起こすからです。

不均衡データ学習の対応としては、サンプルが多い側を減らす手法であるUndersampling、逆に少ない側を増やすOversampling、そして数が少ないサンプルの学習について損失関数によるペナルティを増やすコスト考慮型学習 (cost-sensitive learning)などの選択肢が一般的です。

アンダーサンプリングとオーバーサンプリングについては、実装手法に決まった答えがあるわけではなく、状況により判断し調整を行う必要があるので、難易度が高いと言えます。

コスト考慮型学習については、簡単な例では、inputデータ全体の中に占める対象サンプルのターゲット値の割合を用いてシンプルに損失を割返してあげれば、これを達成することができます。下記にコードも載せておきます。

赤ワインのボトル

実装結果

結論から書くと、アンサンブルやスタッキング、コスト考慮型学習などの工夫は行わず、シンプルにLightGBM単一のモデルで実装したものが最も高い精度をマークしました(MSEで0.69台)。なおLightGBMが手元の実行環境に入っていない場合は、pip install lightgbmを含めてあげれば通常大丈夫です。

コスト考慮型学習については、手軽なところでは lightgbm.LGBMRegressor() を使い、

lgbm.set_params(**{'objective': custom_asymmetric_train})

のようにカスタマイズした損失関数を呼びます。損失関数自体は、MSEベースでは以下のように定義すれば良いでしょう。勾配とヘシアンの導出には微分の知識が必要です。

def custom_asymmetric_train(y_true, y_pred):
  residual = (y_true - y_pred).astype("float")
  grad = -2*residual*ratio[y_true]
  hess = 2*ratio[y_true]
  return grad, hess

データ内の欠損値補間については、ワインの特性を考慮した推定を行い、例えばpHはacid関連のデータを用いての機械学習による補間、densityについては平均値による補間のほうが最終的に良い結果となりました。パラメータチューニングについても、今回はOptuna等の高度なツールは使わず、GridSearchで手で調整しています。

本ケースにおいて、コスト考慮型学習よりも、特段追加の工夫は行わずにシンプルに学習を回したほうが高い精度を得ることができた理由としては、おそらくですが、ワインの品質の評価は人間が決めたものでゆらぎが存在していることと、そもそもインプットデータのサンプル数が少ないこと、などが考えられます。

イメージ的には、MSEと聞くと、大きく外してしまうとペナルティが指数関数的に増加してしまうためなるべく避けたいですが、今回はそれでも外れ値のほうが遥かに少ないため、無視してマジョリティを狙いにいくほうが結果的にスコアが高いというような結果となりました。AI導入の相談なら【DeepApex|戦略コンサンルティング】