LoginSignup
0
0

More than 5 years have passed since last update.

単純な実用問題への線形回帰の応用

Posted at

前回の記事では線形回帰の知識とそれらの数学論拠を説明しました。今回は単純な実用問題への線形回帰の応用について説明させていただきます。

1.問題

この節では、Pythonで線形回帰問題を解く簡単な例を選びます。 式Screenshot from 2019-04-08 19-06-49.pngに従って解くときの問題の解答も比較し、Pythonのscikit-learnライブラリを使って解きます。 (これは機械学習ライブラリで、Pythonで広く使われています)。 この例では、入力データは、平面での説明を容易にするために1つの値(一方向)のみを持ちます。

次のような15人の身長と体重に関するデータシートがあります。
Screenshot from 2019-04-08 19-10-44.png
問題は、身長に基づいて人の体重を予測できるかどうかということです。 (実際のところ、もちろん重量は、容積のような他の多くの要因に左右されるため)。 このブログは単純な機械学習アルゴリズムに関するものなので、かりに私たちはそれを予測できる。

体重は身長に比例する(重いほど高い)ことがわかりますので、この予測には線形回帰モデルを使用できます。 見つかったモデルの精度を確認するために、155 cmと160 cmの列をテスト用に保持し、残りの列を使用してモデルを訓練します。

2.グラフにデータを表示する

まず、2つライブラリの線形代数用のnumpyと図形描画用のmatplotlibが必要です。
Screenshot from 2019-04-08 19-48-33.png
次に、データを宣言してグラフに表します。
Screenshot from 2019-04-08 19-48-53.png
Screenshot from 2019-04-08 19-50-02.png
このグラフから、データが直線上に配置されていることがわかります。そのため、線形回帰のモデルでは良い結果が得られます。
(重さ)= w_1 *(身長)+ w_0

3.式に従って実験する。

次に、式(5)に基づいて係数w_1とw_0を計算します。注:Pythonの行列Aの逆ダミーはnumpy.linalg.pinv(A)で計算されます。pinvは「pseudo inverse」の略語です。
Screenshot from 2019-04-08 19-54-42.png
Screenshot from 2019-04-08 19-55-36.png
上のグラフから、赤のデータポイントは予測された青い直線に非常に近いことがわかります。 そのため、線形回帰モデルはトレーニングデータセットとうまく連携します。 今度は、このモデルを使用して、トレーニングするときに使用しなかった身長155cmと160cmの2人の体重を予測します。
Screenshot from 2019-04-08 19-55-47.png
Screenshot from 2019-04-08 19-55-58.png
予測結果は実際の数値に非常に近いことがわかります。

4. scikit-learnライブラリに従ってテストする

次に、私達はPythonのscikit-learnライブラリを使用して解決策を見つけます。
Screenshot from 2019-04-08 20-00-14.png
Screenshot from 2019-04-08 20-00-22.png
2つの結果は同じであることがわかります。(つまり、上記のテストでミスをしなかったことを意味します)

5.最後

以上で線形回帰の応用する基本的な問題を説明しました。実際はもっと難しい問題を解説しなければならないと思います。そのとき解説するために線形回帰の他にはいろいろな問題と組み合わせなければならないと思います。
私の記事を読んでくれてありがとうございます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0