重回帰分析を理解しよう&使ってみよう

Machine learning

皆さん、こんにちは。知也です。

今回はエクセルでも機械学習で馴染みが深い、重回帰分析について学んでいければと思います。

  • 重回帰分析とは
  • 何を求めるの?何が分かるようになるの?
  • 実習

重回帰分析とは

接線の傾きが0になるよう重み(w)で微分したときの、評価関数Lを求めること

ここでいう評価関数Lとは、予測値と実数値の二乗誤差したときの最小値を表します。

重回帰分析は、複数の変数(x)に、接線の傾き0になるような重み(w)を掛け合わせて、yに対する各変数(x)の影響度(w)を測ろうとしているわけです。

※ここでの0、y、x、wは全てベクトル

これだけ読んでも全く意味がわかりませんね、、、。
重回帰分析を学んで、何とか分かりやすくお伝えしようと思っていたのですが、まだ無理なようです。

重回帰分析を正しく理解するには、数学でいう2次関数、線形代数(スカラー/ベクトル/行列)、微分を学ぶ必要があります。これらを学んでからでないと単語の意味が分かりません。

でも安心してください。ベネッセが提供しているUdemyというオンライン学習サイトの

【キカガク流】 人工知能・機械学習 脱ブラックボックス講座 初級編/中級編

これを見れば全て分かります。

何を求めるの?何が分かるようになるの?

重回帰分析で求めることが2つです。

  • ① yに対するxの影響度(w)
  • ② 決定係数(モデルの精度)

①に関してはyに対するそれぞれの変数xの影響度を計算します。これによって、この変数は重要だな、この変数は重要でないなの判断ができるようになります。

では、②に関してはどうでしょうか。

決定係数とは、データを重回帰分析しモデル化した際の、予測精度を表します。

決定係数は0〜1で表されますが、そもそも重回帰分析をしたときに、この決定係数が0.7以上なければ効果的なモデルができなかったということです。

つまり、重回帰分析で何が分かるようになるかというと、決定係数を見た上で問題なければ、yに影響を与えている変数(x)が何か分かるようになります。

実習

データは事前にインポートしておいて下さい。またxとyで切り分けも行なっている前提で進めていきます。

# 重回帰分析のパッケージをインポート
from sklearn.linear_model import LinearRegression

#モデルを宣言(インスタンス化)
model = LinearRegression()

#モデルの学習(重み(パラメーター)の調整)
model.fit(xデータ, yデータ)

#決定係数の表示
model.score(xデータ, yデータ)

#重みの確認
model.coef_

いかがでしたでしょうか。本来Pythonを使わないとかなり複雑な計算をする必要がありますが、たった数行で重回帰分析を実行することができました。

今回私も重回帰分析を学んで分かったことは、「重回帰分析を一発で理解することはできない」ということです。

重回帰分析に限らず、機械学習は全体像を捉えた上で、数学の知識や統計の用語などの予備知識を一つ一つ理解していく必要があるのだと思います。

これは機械学習、ディープラーニングを学ぶ全ての人に当てはまるのではないでしょうか。
なので、すぐに理解できなくても全く落ち込む必要はないと思います。

私も分からないながらにアウトプットしてさらに分からなくなるということを繰り返しています。

いつか誰に聞かれて答えられるほど完全に理解したとき、改めてこのブログを読み返えしてみたいと思います。

それではまた。