データ分析における過学習Overfittingの対策
前回の記事は回帰分析を説明しました。この記事では、回帰分析のお話になります。モデルを調整すると、精度よくなりますが、学習過ぎると過学習(Overfitting)になます。今回は過学習 / 未学習(Underfitting)を説明します。 過学習と 過学習とはoverfittingと呼ばれ、統計学や機械学習において、訓練データに対して学習されているが、未知データ(テストデータ)に対しては適合できていない、汎化できていない状態を指します。データが少ない時または、モデルが問題に対して複雑な時が原因だと考えられる事もあります。 未学習とは 未学習とはunderfittingと呼ばれ、訓練データから有用な特徴量を引き出して記憶することができず、やはり未知のデータへの予測性能は低くなってしまいます。 左の図は未学習です。線形モデルはトレーニングサンプルに適合するのに十分ではありません。 真ん中の図は、次数4の多項式は真の関数をほぼ完全に近似します。右の図は過学習で、モデルはトレーニングデータのノイズを学習してしまいました。 クロスバリデーションを使用して、オーバーフィッティング/アンダーフィッティングを確認することが出来ます。テストデータの平均二乗誤差(MSE)が低ければ、モデルの汎化性能(評価データへの適用能力)を正しく評価します。 Pythonのスクリプトの説明 # ライブラリーのインポート print(__doc__) import numpy as np import matplotlib.pyplot as plt from sklearn.pipeline import Pipeline from sklearn.preprocessing import PolynomialFeatures from sklearn.linear_model import LinearRegression from sklearn.model_selection import cross_val_score # サンプルデータ作成 def true_fun(X): return np.cos(1.5 * np.pi * X) np.random.seed(0) n_samples = 30 degrees = …