回答:
0.632エスティメータに到達しますが、やや長い開発になります。
我々が予測したいとしとX機能の使用F、fはデータを用いて推定されているいくつかのパラメータに依存してもよい(Y、Xを)、例えば、F (X)= X β
予測誤差のナイーブ推定値であるここで、Lは何らかの損失関数、たとえば二乗誤差損失です。これはよくトレーニングエラーと呼ばれます。エフロン等。見かけのエラー率または再置換率と呼びます。データ(xi、yi)を使用してfを近似するため、あまり良くありません。これがもたらす¯のERのRが下方に付勢されています。モデルfが新しい値を予測する上でどれだけうまく機能しているかを知りたい。
多くの場合、予想されるサンプル外予測誤差を推定する簡単な方法として相互検証を使用します(トレーニングセットにないデータに対してモデルはどの程度うまく機能しますか?)。
これを行う一般的な方法は、分割交差検定を行うことです。データをK個のグループ(10個など)に分割します。各グループkについて、モデルを残りのK − 1グループに適合させ、k番目のグループでテストします。クロス検証された追加サンプル予測誤差は、平均E r r C V = 1です。κはその観察にパーティションを示し、いくつかの指標関数であり、Iが割り当てられ、fは-κ(I)(Xiは)でありますκ(i)番目のセットにないデータを使用したxiの予測値。
交差検証の代わりに、ブートストラップを使用して、サンプル外の予測誤差を推定できます。ブートストラップのリサンプリングを使用して、統計のサンプリング分布を推定できます。トレーニングデータがである場合、このセットZ 1、… 、Z BからBブートストラップサンプル(置換)を取得することを考えることができます。各Z iはNサンプルのセットです。これで、ブートストラップサンプルを使用して、サンプル外の予測誤差を推定できます。E r r bここで、fb(xi)は、モデルからb番目のブートストラップデータセットに適合するxiでの予測値です。残念なことに、fb(xi)の生成に使用されるブートストラップサンプルにはxiが含まれている可能性があるため、これは特に良い推定量ではありません。
次に:
そして
副<文>この[前述の事実の]結果として、それ故に、従って、だから◆【同】consequently; therefore <文>このような方法で、このようにして、こんなふうに、上に述べたように◆【同】in this manner <文>そのような程度まで<文> AひいてはB◆【用法】A and thus B <文>例えば◆【同】for example; as an example
n <- 100
fx01 <- function(ll,n){
a1 <- sample(1:n, n, replace=TRUE)
length(unique(a1))/n
}
b1 <- c(lapply(1:1000,fx01,n=100), recursive=TRUE)
mean(b1)
1. Bradley EfronおよびRobert Tibshirani(1997)。相互検証の改善:.632+ブートストラップメソッド。Journal of the American Statistical Association、Vol。92、No. 438、pp。548--560。
これらの答えは非常に便利です。私は数学でそれを実証する方法を見つけることができなかったので、非常にうまく機能するPythonコードをいくつか書きました:
from numpy import mean
from numpy.random import choice
N = 3000
variables = range(N)
num_loop = 1000
# Proportion of remaining variables
p_var = []
for i in range(num_loop):
set_var = set(choice(variables, N))
p=len(set_var)/float(N)
if i%50==0:
print "value for ", i, " iteration ", "p = ",p
p_var.append(p)
print "Estimator of the proportion of remaining variables, ", mean(p_var)