MachineLearningDataSciencescikit-learn線形回帰を用いて過学習(オーバーフィッティング)と未学習(アンダーフィッティング)について学ぶ。プログラムは以下に置いておく。線形回帰とは入力XXXに対して、フィットするようなθθθを決定する事である。用いて、予測モデルを作成してみる。線形回帰を使って、それぞれ1次、4次、16次多項式関数のModelを求めた。Samplesのデータは以下の関数で生成される。サンプルデータは以下の関数で出力される。(標準偏差)1番目のモデルはシンプルだが、サンプルデータに対してフィットしていない。単回帰つまり1次関数では直線しか引けないのでこのデータの分布にはフィットしない。high-bias)と呼ぶ。2番目のモデルはこの中では最もサンプルデータにフィットしているように見える。3番目のモデルはサンプルデータに対してフィットしているように見えるが、未知のデータに対しての予測には適応できそうもない。variance)と呼ぶ。汎化性能(未知のデータへの予測)が高いモデルを作成するには、未学習と過学習が起きていないかを確認する必要がある。使用する関数は先程と同じ。250個データを用意する。次数(Degree)が大きくなるにつれて、訓練データのスコアは増加しているが、交差検証のスコアは伸びるどころかむしろ悪化している。交差検証は汎化性能を検証するための手法で、ここでは詳しく説明はしないが、訓練データに過剰にフィットして、汎化性能が悪化していると理解できれば良い。どのように変化するかを見る。次数1の時は訓練データのスコアと交差検証のスコアともに低い(Underfitting)。次数5の時は訓練データのスコアと交差検証のスコアの誤差が小さく、スコアも次数1の時に比べて高い。次数15の時は訓練データのスコアと交差検証のスコアの誤差が大きく、次数5の時に比べて交差検証のスコアが低い(Overfitting)。この中では次数5が最もデータにフィットしていると見なして良い。訓練データのスコアと交差検証のスコアを比較して、未学習や過学習が起きていないかを確認する事が重要だ。plt.tight_layout()plt.show()まとめ過学習と未学習についてscikit-learnと線形回帰を使って解説した。線形回帰の場合で過学習を抑制するには、ラッソ回帰(Lasso)、リッジ回帰(Ridge)など正則化を行うモデルを使用するのが良い。🇹🇭エンジニアバンコクで働くエンジニア。ex-日本経済新聞社。マーケティングテクノロジーの分野で仕事してます(CRM、データエンジニアリング)。