回帰直線とは何か
回帰直線とは、点の並びにいちばん合うように引いた、1本の直線のことです。この線があれば、まだ見ていない気温の日に、自転車が何回借りられるかを予想できます。
予想はいつも当たるわけではありません。どのくらい外れるかを測り、新しいデータで確かめる方法も、今日学びます。
このレッスンのゴール
メモ
回帰直線で予測を作り、検証用のデータで誤差を測ることができる。
キーワード
| ことば | いみ | れい |
|---|---|---|
| 予測 | まだ知らない値を、データから見積もること | |
| 回帰直線 | 点の並びにいちばん合うように引いた直線 | |
| 傾き | x が1増えたとき、y がどれだけ増えるか | 1度上がると約11回増える |
| 切片 | x が0のときの y の値 | |
| 誤差 | 予測と本当の値の差 | |
| 検証用データ | 学習に使わずに取っておいた、確かめるためのデータ |
学生が入力するセルは、このプレビューでは空白です。
始める前に
メモ
上のバーの Start the lab を押してください。起動に1分ほどかかります。Run ボタンを押すと、そのコマンドがターミナルに入力されます。ラボのデータは毎回同じです。
直線で関係を表すと何がわかるか
気温が上がると、貸し出し数も増えます。点の並びに直線を引くと、この関係を2つの数で言えます。
傾きは、1度上がるとどれだけ増えるかです。切片は、0度の日の貸し出し数の見当です。下の Run で、ラボのデータから直線を引きます。
気温と貸し出し数に直線を引く
docker exec jupyter python3 steps/line.pyここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
出力の数字の読み方
slope は傾きで、11.1 です。気温が1度上がると、貸し出しが11回ほど増えるという意味です。intercept は切片で、149.4 です。
R squared は、直線が、貸し出し数のばらつきをどのくらい説明できるかです。0から1で、0.595 ならおよそ6割です。
直線から予測を作る手順
予測は、傾きに x をかけて、切片を足すだけです。10度の日なら、11.1 × 10 + 149.4 = 260.4 回です。
プログラムが出す 261 と少し違うのは、プログラムがもっと細かい小数まで持っているからです。20度の日は、約372回と予測します。
例: 4つの点にいちばん合う直線
| x(週) | y(売れた数) | x − 平均 | y − 平均 | 2つをかける | (x − 平均) を2回かける |
|---|---|---|---|---|---|
| 1 | 3 | −1.5 | −3 | 4.5 | 2.25 |
| 2 | 5 | −0.5 | −1 | 0.5 | 0.25 |
| 3 | 6 | 0.5 | 0 | 0 | 0.25 |
| 4 | 10 | 1.5 | 4 | 6 | 2.25 |
| 合計 | 11 | 5 |
学生が入力するセルは、このプレビューでは空白です。
最小二乗法で傾きを出す
上の表で、x の平均は 2.5、y の平均は 6 です。傾きは、「2つをかけた合計」を「2回かけた合計」で割ります。11 ÷ 5 = 2.2 です。
切片は、6 − 2.2 × 2.5 = 0.5 です。直線は、y = 2.2 × x + 0.5 になります。誤差を二乗した合計が最も小さくなる直線なので、最小二乗法と呼びます。
誤差はどう測るのか
誤差は、予測と本当の値の差です。直線が外れた分だけ、誤差が出ます。平均の誤差を見ると、直線がどのくらい頼れるかがわかります。
ただし、直線を作るのに使った日で測ると、甘い点数になります。新しい日で確かめるために、データを2つに分けます。
学習用と検証用に分ける
学習用は、直線を作るために使います。検証用は、使わずに取っておき、あとで答え合わせに使います。テストの問題を、先に見せないのと同じです。
下の Run は、365日を、学習用273日と検証用92日に分けます。検証用の誤差を見ます。
データを分けて、誤差を測る
docker exec jupyter python3 steps/split.pyここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
よくある間違い
注意
学習に使ったデータで測った点数が高ければ、予測も当たると考える人がよくいます。でも、見たことのあるデータの点数は、甘くなります。本当の力は、取っておいた検証用のデータで測ります。
さらに挑戦: 雨を足すと
雨の量も使うと、予測は変わります。steps/model.py は、気温と雨の2つを使って直線を引きます。
雨が1ミリ増えると、貸し出しはどうなりますか。決定係数は、気温だけのときと比べてどう変わるかを見てみましょう。