(সর্বনিম্ন আদর্শ) ওএলএস কীভাবে অতিরিক্ত সাফল্য পেতে ব্যর্থ হতে পারে?
সংক্ষেপে:
সত্য মডেলটিতে (অজানা) প্যারামিটারগুলির সাথে সম্পর্কিত এমন পরীক্ষামূলক পরামিতিগুলি সর্বনিম্ন আদর্শ ওএলএস ফিটিং পদ্ধতিতে উচ্চ মানগুলির সাথে অনুমান করা সম্ভব। কারণ তারা 'মডেল + গোলমাল' ফিট করবে তবে অন্যান্য পরামিতিগুলি কেবল 'গোলমাল' মাপসই করবে (এইভাবে তারা গুণাগুলির নিম্ন মানের সাথে মডেলের একটি বৃহত অংশকে ফিট করবে এবং উচ্চ মানের হওয়ার সম্ভাবনা বেশি থাকবে) সর্বনিম্ন আদর্শ ওএলএসে)।
এই প্রভাবটি সর্বনিম্ন আদর্শ ওএলএস ফিটিং পদ্ধতিতে ওভারফিটের পরিমাণ হ্রাস করবে। এর পরে আরও পরামিতিগুলি উপলব্ধ থাকলে এর প্রভাব আরও স্পষ্টভাবে প্রকাশিত হয় তবে সম্ভবত এটি সম্ভব হয় যে সত্যিকারের মডেলটির একটি বড় অংশ অনুমানের সাথে যুক্ত করা হচ্ছে।
দীর্ঘ অংশ:
(বিষয়টি আমার কাছে পুরোপুরি পরিষ্কার না হওয়ায় এখানে কী রাখবেন তা আমি নিশ্চিত নই, বা প্রশ্নের উত্তর দেওয়ার জন্য উত্তরটির কী সঠিকতা প্রয়োজন তা আমি জানি না)
নীচে একটি উদাহরণ দেওয়া যায় যা সহজেই তৈরি করা যায় এবং সমস্যাটি দেখায়। প্রভাবটি এত অদ্ভুত নয় এবং উদাহরণগুলি তৈরি করা সহজ।
- আমি ভেরিয়েবল হিসাবে সিন-ফাংশন (কারণ তারা লম্ব হয়) arep=200
- পরিমাপ সহ একটি এলোমেলো মডেল তৈরি করেছে ।
n=50
- মডেলটি কেবল ভেরিয়েবলের দিয়ে নির্মিত হয়েছে তাই 200 ভেরিয়েবলের মধ্যে 190 টি ওভার-ফিটিং তৈরির সম্ভাবনা তৈরি করছে।tm=10
- মডেল সহগগুলি এলোমেলোভাবে নির্ধারিত হয়
এই উদাহরণের ক্ষেত্রে আমরা পর্যবেক্ষণ করেছি যে কিছু ওভার-ফিটিং রয়েছে তবে প্রকৃত মডেলের সাথে সম্পর্কিত পরামিতিগুলির সহগগুলির উচ্চতর মান থাকে। সুতরাং আর ^ 2 এর কিছু ইতিবাচক মান থাকতে পারে।
নীচের চিত্রটি (এবং এটি উত্পন্ন করার কোড) দেখায় যে ওভার-ফিটিং সীমাবদ্ধ। 200 পরামিতিগুলির অনুমান মডেলের সাথে সম্পর্কিত বিন্দুগুলি। লাল বিন্দুগুলি সেই 'পরামিতিগুলির সাথে সম্পর্কিত যেগুলি' সত্যিকারের মডেলটিতেও উপস্থিত রয়েছে এবং আমরা দেখতে পাচ্ছি যে তাদের মান বেশি। সুতরাং, আসল মডেলটির কাছে পৌঁছানোর এবং 0 এর উপরে আর ^ 2 পাওয়ার কিছুটা ডিগ্রি রয়েছে।
- নোট করুন যে আমি অরર્થোগোনাল ভেরিয়েবল (সাইন-ফাংশন) সহ একটি মডেল ব্যবহার করেছি। যদি প্যারামিটারগুলি পারস্পরিক সম্পর্কযুক্ত হয় তবে তারা তুলনামূলকভাবে খুব উচ্চ সহগের সাথে মডেলটিতে দেখা দিতে পারে এবং সর্বনিম্ন আদর্শ ওএলএসে আরও দণ্ডিত হয়।
- নোট করুন যে যখন আমরা ডেটা বিবেচনা করি তখন 'অরথোগোনাল ভেরিয়েবলগুলি অরথোগোনাল হয় না। অভ্যন্তরীণ পণ্যের শুধুমাত্র শূন্য হয় যখন আমরা সমগ্র স্থান সংহত এবং আমরা মাত্র কয়েক নমুনা আছে । ফলাফলটি হ'ল শূন্য শোরগোলের পরেও ওভার-ফিটিংটি ঘটবে (এবং আর ^ 2 মানটি শব্দের বাদে অনেকগুলি বিষয়ের উপর নির্ভর করে বলে মনে হচ্ছে অবশ্যই এবং সম্পর্ক রয়েছে তবে এটিও গুরুত্বপূর্ণ যে কতগুলি ভেরিয়েবলগুলি রয়েছে প্রকৃত মডেলটিতে এবং তাদের মধ্যে কতগুলি ফিটিং মডেলটিতে রয়েছে)।sin(ax)⋅sin(bx)xxnp
library(MASS)
par(mar=c(5.1, 4.1, 9.1, 4.1), xpd=TRUE)
p <- 200
l <- 24000
n <- 50
tm <- 10
# generate i sinus vectors as possible parameters
t <- c(1:l)
xm <- sapply(c(0:(p-1)), FUN = function(x) sin(x*t/l*2*pi))
# generate random model by selecting only tm parameters
sel <- sample(1:p, tm)
coef <- rnorm(tm, 2, 0.5)
# generate random data xv and yv with n samples
xv <- sample(t, n)
yv <- xm[xv, sel] %*% coef + rnorm(n, 0, 0.1)
# generate model
M <- ginv(t(xm[xv,]) %*% xm[xv,])
Bsol <- M %*% t(xm[xv,]) %*% yv
ysol <- xm[xv,] %*% Bsol
# plotting comparision of model with true model
plot(1:p, Bsol, ylim=c(min(Bsol,coef),max(Bsol,coef)))
points(sel, Bsol[sel], col=1, bg=2, pch=21)
points(sel,coef,pch=3,col=2)
title("comparing overfitted model (circles) with true model (crosses)",line=5)
legend(0,max(coef,Bsol)+0.55,c("all 100 estimated coefficients","the 10 estimated coefficients corresponding to true model","true coefficient values"),pch=c(21,21,3),pt.bg=c(0,2,0),col=c(1,1,2))
রিজ রিগ্রেশন সম্পর্কিত সংক্ষিপ্ত বিটা কৌশল
আমি অ্যামিবা থেকে অজগর কোডটি আর তে রূপান্তরিত করেছি এবং দুটি গ্রাফকে একত্রিত করেছি। যুক্ত নয়েজ ভেরিয়েবলের সাথে প্রতিটি ন্যূনতম আদর্শ অনুমানের জন্য আমি ( ভেক্টরের জন্য একই (প্রায়) -Norm এর সাথে একটি রিজ রিগ্রেশন অনুমানের সাথে মেলে ।l2β
- দেখে মনে হচ্ছে কাটা কাটা শব্দের মডেলটি অনেক একই কাজ করে (কেবল কিছুটা ধীর গতিতে গণনা করা হয়, এবং সম্ভবত খানিকটা কম ভাল)।
- তবে কাটা ছাড়াই প্রভাবটি খুব কম শক্ত হয়।
পরামিতি এবং রিজ পেনাল্টি যোগ করার মধ্যে এই চিঠিপত্রগুলি অতিরোধক-ফিটনের অনুপস্থিতির পেছনে সবচেয়ে শক্তিশালী প্রক্রিয়া নয়। এটি বিশেষত 1000p বক্ররেখায় (প্রশ্নের চিত্রের চিত্রে) প্রায় 0.3 এ যেতে দেখা যায় যখন অন্যান্য রেখাচিত্রগুলি বিভিন্ন পি সহ এই স্তরে পৌঁছায় না, রিজ রিগ্রেশন প্যারামিটারটি যাই হোক না কেন। ব্যবহারিক ক্ষেত্রে অতিরিক্ত পরামিতিগুলি রিজ প্যারামিটারের শিফটের মতো নয় (এবং আমি অনুমান করি যে এটি অতিরিক্ত পরামিতি একটি আরও ভাল, আরও সম্পূর্ণ, মডেল তৈরি করবে)।
শোর প্যারামিটারগুলি একদিকে আদর্শকে হ্রাস করে (ঠিক রিজ রিগ্রেশনের মতো) তবে অতিরিক্ত শব্দও প্রবর্তন করে। বেনোইট সানচেজ দেখায় যে সীমাতে, ছোট বিচ্যুতির সাথে অনেকগুলি শোর প্যারামিটার যুক্ত করা, এটি শেষ পর্যন্ত রিজ রিগ্রেশন হিসাবে একই হয়ে উঠবে (শোর প্যারামিটারগুলির ক্রমবর্ধমান সংখ্যা একে অপরকে বাতিল করে দেয়)। তবে একই সময়ে, এর জন্য আরও অনেকগুলি গণনা প্রয়োজন (যদি আমরা শব্দটির বিচ্যুতি বাড়িয়ে তুলি, কম পরামিতি ব্যবহার করতে পারি এবং গণনার গতি বাড়িয়ে তুলি তবে পার্থক্য আরও বড় হয়)।
রোহ = 0.2
রোহ = 0.4
আরএও = 0.2 শব্দের প্যারামিটারগুলির বৈকল্পিকতা 2 তে বাড়িয়ে তুলছে
কোড উদাহরণ
# prepare the data
set.seed(42)
n = 80
p = 40
rho = .2
y = rnorm(n,0,1)
X = matrix(rep(y,p), ncol = p)*rho + rnorm(n*p,0,1)*(1-rho^2)
# range of variables to add
ps = c(0, 5, 10, 15, 20, 40, 45, 50, 55, 60, 70, 80, 100, 125, 150, 175, 200, 300, 400, 500, 1000)
#ps = c(0, 5, 10, 15, 20, 40, 60, 80, 100, 150, 200, 300) #,500,1000)
# variables to store output (the sse)
error = matrix(0,nrow=n, ncol=length(ps))
error_t = matrix(0,nrow=n, ncol=length(ps))
error_s = matrix(0,nrow=n, ncol=length(ps))
# adding a progression bar
pb <- txtProgressBar(min = 0, max = n, style = 3)
# training set by leaving out measurement 1, repeat n times
for (fold in 1:n) {
indtrain = c(1:n)[-fold]
# ridge regression
beta_s <- glmnet(X[indtrain,],y[indtrain],alpha=0,lambda = 10^c(seq(-4,2,by=0.01)))$beta
# calculate l2-norm to compare with adding variables
l2_bs <- colSums(beta_s^2)
for (pi in 1:length(ps)) {
XX = cbind(X, matrix(rnorm(n*ps[pi],0,1), nrow=80))
XXt = XX[indtrain,]
if (p+ps[pi] < n) {
beta = solve(t(XXt) %*% (XXt)) %*% t(XXt) %*% y[indtrain]
}
else {
beta = ginv(t(XXt) %*% (XXt)) %*% t(XXt) %*% y[indtrain]
}
# pickout comparable ridge regression with the same l2 norm
l2_b <- sum(beta[1:p]^2)
beta_shrink <- beta_s[,which.min((l2_b-l2_bs)^2)]
# compute errors
error[fold, pi] = y[fold] - XX[fold,1:p] %*% beta[1:p]
error_t[fold, pi] = y[fold] - XX[fold,] %*% beta[]
error_s[fold, pi] = y[fold] - XX[fold,1:p] %*% beta_shrink[]
}
setTxtProgressBar(pb, fold) # update progression bar
}
# plotting
plot(ps,colSums(error^2)/sum(y^2) ,
ylim = c(0,2),
xlab ="Number of extra predictors",
ylab ="relative sum of squared error")
lines(ps,colSums(error^2)/sum(y^2))
points(ps,colSums(error_t^2)/sum(y^2),col=2)
lines(ps,colSums(error_t^2)/sum(y^2),col=2)
points(ps,colSums(error_s^2)/sum(y^2),col=4)
lines(ps,colSums(error_s^2)/sum(y^2),col=4)
title('Extra pure noise predictors')
legend(200,2,c("complete model with p + extra predictors",
"truncated model with p + extra predictors",
"ridge regression with similar l2-norm",
"idealized model uniform beta with 1/p/rho"),
pch=c(1,1,1,NA), col=c(2,1,4,1),lt=c(1,1,1,2))
# idealized model (if we put all beta to 1/rho/p we should theoretically have a reasonable good model)
error_op <- rep(0,n)
for (fold in 1:n) {
beta = rep(1/rho/p,p)
error_op[fold] = y[fold] - X[fold,] %*% beta
}
id <- sum(error_op^2)/sum(y^2)
lines(range(ps),rep(id,2),lty=2)