EurekaMoments

ロボットや自動車の自律移動に関する知識や技術、プログラミング、ソフトウェア開発について勉強したことをメモするブログ

ワインの等級を予測するためのデータ分析

入門 Python 3

入門 Python 3

Amazon

目次

はじめに

最近勉強しているPythonの扱いに少しずつですが慣れてきたので、世の中で公開されている機械学習サンプルデータを用いてデータ分析 + 予測モデル構築 + 精度評価の練習をしてみました。今回の記事では、その内のデータ分析作業にフォーカスしてみようと思います。

参考

今回利用したのは、カリフォルニア大学アーバイン校(UCI)が公開しているものの一つである、「ワインの等級を予測するための学習データサンプル」です。

UCI Machine Learning Repository: Wine Data Set
UCI Machine Learning Repository: Wine Quality Data Set

公開されている学習データの中でもこれはかなり人気の高いものであり、上記の書籍のようなPythonの入門本などでは、「Pythonなら機械学習が手軽に試せる」ということを示すための例題として取り上げられることが多いです。

自分もこの書籍を読みながらPythonを勉強し、確かにScikit learnで機械学習が試せるというところまでは理解したのですが、肝心なデータの中身についてはあまり触れないままSVMやランダムフォレストによる予測モデル構築と予測という流れで進むので、そもそもどういう傾向を持つデータなのか、そして最終的に構築モデルによる予測精度がどれだけリーズナブルなものなのかが気になっていました。
そこで今回は、世の中のデータサイエンティスト達のプロセスを真似しながら、自力で予測モデルを構築するためのデータ分析に取り組んでみました。分析プロセスについては以下の記事を参照ください。

www.eureka-moments-blog.com

www.mirandora.com

データの内容の確認

まずはデータの中身がどうなっているのかを確認してみます。サンプルデータの各属性、ワインの等級、サンプル数などは以下の通りになっていました。
f:id:sy4310:20180826161858p:plain

データに欠損はないかも確認してみましたが、特にはありませんでした。
f:id:sy4310:20180826163209p:plain

データ同士の相関

このデータを利用して予測したいのはワインの等級(Class)であり、それは1, 2, 3という3つの数値のどれかを示します。世の中のプロセスに従い、まずは予測したい等級と、特徴量の候補である各属性にどれだけの相関があるのかを調べました。調べた結果は以下の通りです。
f:id:sy4310:20180826163709p:plain
これを見ると、Flavanoidsやdiluted wineは相関が高く、Ash, Alcohol, Color intensityは比較的相関が低いということが分かりました。

等級と相関の高い上位5つの属性

相関の数値だけではよく分からないので、等級との相関が高い上位5つの属性の相関図を可視化して比較してみました。

f:id:sy4310:20180826165908p:plain

f:id:sy4310:20180826170126p:plain

f:id:sy4310:20180826170056p:plain

これらを見ると確かに数値通り相関がありそうですが、一つ気になる事が見つかりました。等級1と3には明確な違いが見られますが、それらの間にある等級2のデータは1とも3とも解釈できそうな分布をしているので、等級2を判別できそうな特徴量を見つける必要があります。

等級1と3の統合

等級2を判別する手段を見つけるために、一旦等級1と等級3を統合してしまい、等級2とそれ以外という状態で再度それぞれの属性との相関を調べてみることにしました。その結果、色彩強度と等級の相関においては、等級2とそれ以外を若干ながら判別できそうな傾向が見られました。この結果より、次は等級との相関が高い属性Top5と色彩強度の相関を可視化して、等級1~3をどの程度判別できそうか調べてみます。
f:id:sy4310:20180826172913p:plain

上位5つの属性と色彩強度の相関

f:id:sy4310:20180826180118p:plain

f:id:sy4310:20180826180148p:plain

f:id:sy4310:20180826180225p:plain

等級と相関が最も高い上位5つの属性であるフラボノイド、蒸留ワインのOD280/350、総フェノール、色調、プロリンと色彩強度の相関をプロットし、各点を等級1~3で色分けして比較してみました。これらを見た結果、プロリンと色彩強度を特徴量として組み合わせれば等級を判別しやすくなりそうだという事が分かりました。

次のステップ

プロリンと色彩強度を組み合わせれば等級を判別することができそうだという感触が得られました。ここまでの結果を見て面白いと感じたのは、プロリンは等級との相関がそこまで高くもないと判断されていたもの、そしてプロリンは等級との相関がかなり低いと思われていたものだったということです。単体ではあまり役に立たなそうなものでも、力を合わせれば力を発揮するということでしょうかね。データを可視化してみるということの重要さを体感できました。
次回はいよいよ、ここまでの見解を踏まえた上で等級を予測するためのモデル構築とそれによる予測精度評価に取り組んでいきます。