機械学習 - Train/Test(トレーニング/テスト)
モデルを評価する
機械学習では、特定のイベントの結果を予測するモデルを作成します。例えば前の章で、重量とエンジンのサイズが分かっているときに車のCO2排出量を予測しました。
モデルが十分に優れているかどうかを測定するには、Train/Testというメソッドを使用できます。
Train/Testとは
Train/Testは、モデルの精度を測定する方法です。
データセットをトレーニングセットとテストセットの2つのセットに分割するため、Train/Testと呼ばれます。
トレーニングに80%、テストに20%。
トレーニングセットを使用してモデルを*トレーニング*します。
テストセットを使用してモデルを*テスト*します。
モデルを*トレーニング*するということは、モデルを*作成する*ことを意味します。
モデルを*テスト*するということは、モデルの精度をテストすることを意味します。
データセットから始める
テストするデータセットから始めます。
今回使用するデータセットは、店舗にいる100人の顧客とその買い物習慣を示しています。
例
結果:
x軸は、購入するまでの分数を表します。
y軸は、購入に費やされた金額を表します。
Train/Testに分割
*トレーニング*セットは、元のデータの80%をランダムに選択する必要があります。
*テスト*セットは残りの20%である必要があります。
train_x = x[:80]
train_y = y[:80]
test_x = x[80:]
test_y = y[80:]
トレーニングセットを表示する
トレーニングセットを使用して同じ散布図を表示します。
テストセットの表示
テストセットが完全に異なるものではないことを確認するために、テストセットも見ていきます。
データセットを適合させる
データセットはどのようなものですか?今回最も適合するのは多項式回帰なので、多項式回帰の線を引いてみましょう。
データポイントを通る線を描くには、matplotlibモジュールのplot()
メソッドを使用します。
例
データポイントを通る多項式回帰直線を描画します。
結果:
データセットの外側の値を予測しようとすると、奇妙な結果が得られる可能性がありますが、この結果は、データセットが多項式回帰に適合するという提案を裏付けるものです。例:この線は、顧客が店内で6分間過ごすと200ドル相当の購入を行うことを示しています。これはおそらく過剰適合の兆候です。
しかし、R-squaredスコアはどうでしょうか? R-squaredスコアは、データセットがモデルにどの程度適合しているかを示す良い指標です。
R2
R-squaredとも呼ばれるR2を覚えていますか?
x軸とy軸の関係を測定し、値の範囲は0から1です。0は関係がないことを意味し、1は完全に関係があることを意味します。
sklearnモジュールには、この関係を見つけるのに役立つr2_score()
というメソッドがあります。
この場合、顧客が店に滞在する時間と消費金額との関係を測定したいと考えています。
例
トレーニングデータは多項式回帰にどの程度適合しますか?
注意:結果0.799は、OK関係があることを示しています。
テストセットの持ち込み
これで、少なくともトレーニングデータに関しては問題のないモデルを作成できました。
次に、テストデータを使用してモデルをテストし、同じ結果が得られるかどうかを確認します。
例
テストデータを使用して R2スコアを見つけてみましょう。
注意: 結果0.809は、モデルがテストセットにも適合していることを示しており、このモデルを使用して将来の値を予測できると確信しています。
値を予測する
モデルが正常であることを確認したので、新しい値の予測を開始できます。
この例では、次の図に対応しているように、顧客が22.88ドルを使うと予測しました。
***
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。