線形回帰によるワインの分析

>出典

scikit-learn で線形回帰 (単回帰分析・重回帰分析) - Python でデータサイエンス

 

>データについて

今回は、UC バークレー大学の UCI Machine Leaning Repository にて公開されている、「Wine Quality Data Set (ワインの品質)」の赤ワインのデータセットを利用します。

記事にあるデータをあけてみると、

f:id:zizamo2193:20210422213033p:plain



f:id:zizamo2193:20210422213054p:plain

 

ここが共通のようです。我々がデータのヘッダと呼んでいる部分は英語ではAttributeというみたいです。

 

>データの読み込み方

読み込みたいcsvの場所を変えずにプログラムの方にデータを見に行かせるには、

 

【Python】pandasで指定したフォルダのcsvファイルを開く - Qiita

 

これを組み合わせると、

f:id:zizamo2193:20210422213141p:plain



 

>単回帰分析

f:id:zizamo2193:20210422213303p:plain

 

図が描けないのは、それ用のパッケージのインストールをしていないからのようです。

 

Mac上のmatplotlibでグラフ描画できないときの対処法 - Qiita

 

リンク元の画像を見るに、目的変数「アルコール」(y)と説明変数「濃度」(x)の関係性をy = ax + bという学生の頃よく見た直線の式で表しているようです。散布図の上にその直線が引かれていて、プロットされたそれぞれの点がワインの各個体を表していて、それらの点の最大公約数的なところを通る直線のようです。だから単回帰分析というのはそのように、二次元の散布図にばらまかれた各個体のデータの、最大公約数的なところを通る直線を引いてその直線の延長線上の値を予測する、という方法論のようです。重回帰分析というのはそれの発展形で、説明変数が100個あれば101次元の散布図にばらまかれたデータの最大公約数を通る、100次元の何かを算出する方法論だということでしょう。しかしそういうことになると、直線は負の傾きを持っているから、濃度が上がればアルコールがさがる?あまりぴんと来ない結果です。普通ワインの濃度といえばアルコールの濃度だと思うからでしょう。然るにここで言う濃度は何か別のものの濃度なのでしょう。ワインのデータを使うとなんかカッコイイのですが、実行結果が直感的にならないというのは難点だとおもいます。

 

ちなみにaが回帰係数、bが切片、決定係数というのはこの式が予想する値がどのくらい信頼できるかの値で、0(→信頼できない)~1(→信頼できる)の値となるそうです。

 

>重回帰分析

 

f:id:zizamo2193:20210422213407p:plain

全部の要素で品質を説明するわけですから単回帰分析より精度が高い予想ができそうです。

 

>正規化+重回帰分析

 

f:id:zizamo2193:20210422213429p:plain

 

正規化する前と正規化した後で説明変数の順番が入れ替わるのはなぜでしょう。正規化とは何か。各説明変数がどの程度目的変数に影響しているかを確認するためにそうするという記述があります。目的変数が品質スコアというよくわからない変数なので、この変数と高いシンクロ率で推移している値が、たとえ振れ幅は小さくても高い影響力を持っているということは言えます。そういうことを明確にする手法なのだと推測できます。

f:id:zizamo2193:20210422213543p:plain