ebook

第 4 章

過学習をチェックするための MATLAB 関数


このチャプターでは正則化、汎化、交差検定で使われる以下の関数を紹介します:

trainbr
feedforwardnet
trainlm
trainscg
cvpartition
crossval

正則化

正則化技術は、予測モデルにおける統計的な過適合を防ぐために使用されます。モデルに追加情報を導入することにより、正則化アルゴリズムは、モデルをより簡素かつ正確にすることで、多重共線性と冗長な予測子を処理できます。

構文

B = lasso(X,y)

これらのアルゴリズムは通常、モデル係数を最小化する対象に加えたり、粗さに対するペナルティを含めたりなど、複雑さに対するペナルティを適用することで機能します。

ロジスティック回帰の正則化は、Statistics and Machine Learning Toolbox™でlassoglm関数を使うことで簡単に実行できます。lassoglmは座標降下最適化に従って重みとバイアスの値を更新するモデルフィッティング関数です。自乗誤差とパラメータの組み合わせを最小化し、正しい組み合わせを決定して、うまく汎化するモデルを生成します。

Statistics and Machine Learning Toolboxに含まれる追加の分類モデルは、学習過程でモデルを正則化するために使用できる正則化引数をオプションで提供しています。

  • fitclinear(バイナリ線形分類器)
    • “Lambda”: 正則化項の強さ
    • “正則化”: lasso (L1), ridge (L2)
  • fitckernel (バイナリ ガウス カーネル分類器)
    • “正則化”: ridge (L2)

MATLAB の交差検定 関数

Statistics and Machine Learning Toolbox™ には交差検定を行う際に特に役立つ次の 2 つの関数が 含まれています:cvpartition と crossval です.

関数 cvpartition はデータの交差検定分割を作成するのに使用します。例えば、k 分割交差検定を使う場合、構文は以下のようになります:

c = cvpartition(n,'KFold',k)cvpartitionクラスのオブジェクト c を作成し、n 個の観測値に対する k 分割交差検定のためのランダム分割を定義します。

c = cvpartition(group,'KFold',k) は階層化された k 分割交差検定のためのランダム分割を作成します。

交差検定を使用して損失推定を行うには、crossval を使用します。この構文の例は以下のようになります:

vals = crossval(fun,X)
X のデータに適用される関数 fun に対して 10 分割交差検定を実行します。

fun は 2 つの入力をもつ関数の関数ハンドルです。それぞれの入力は、X の学習サブセット XTRAINと X の検定サブセット XTEST で、以下のようになります:

testval = fun(XTRAIN,XTEST)

知識試しに挑戦!