トップ 一覧 検索 ヘルプ RSS ログイン 印刷

クロスバリデーションの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!クロスバリデーション(交査法)

なんだか日本語にするとよくわからないので、そのままXVと呼んだほうがよさそうだ。

機械学習をする際に、すべての標本データを訓練データとして使ってしまうと、モデルの評価をするためのデータがなくなってしまうため、訓練データ(training data)と検査データ(test data)に分けて、訓練データをモデル生成に用いて、検査データを評価に用いるという方法がとられる。
機械学習をする際に、標本データのすべてを訓練データに用いてしまうと、モデルの評価をするためのデータがなくなってしまうことになる。このため、あらかじめ標本データを訓練データ(training data)と検査データ(test data)に分けて、訓練データをモデル生成に用いて、検査データを評価に用いるという方法がとられる。

しかし、この方法は標本を訓練データと検査データとに分ける際にかかるバイアスが生じてしまうことが避けられない(換言すれば、検査してOKならよいが、過剰適応が生じたときにやり直ししなければならない)。

よって、標本データをシャフルして均等にk個に分割し、1個のグループを検査データ、その他k−1個のグループを訓練データとして用いる方法を、クロスバリデーションという。

この際、1, ..., kのグループを順番に検査データとして用いて、それ以外のデータを順番にテストデータとして用いる方法もある。

!実行例

*package:: CARET
*データはdiamonds
*modelにモデルのオブジェクトが入る

 model <- train(
    price~., diamonds,
    method="lm",   # 線形回帰モデル
    trControl=trainControl(
        method="CV", # クロスバリデーション
        number=10, # グループの個数k
        repeats=5, # 繰り返しの回数
        verboseIter=T
    )
 )

 print(model)
   RMSE:  Root Mean Squared Error
   R-Squared