ল্যাসো মডেল এবং পদক্ষেপের প্রতিরোধের জন্য সম্ভাবনাগুলির ঘনত্ববাদী অভিব্যক্তিগুলির পি-ভ্যালুস এসেটেরার সম্ভাব্যতার ব্যাখ্যাটি এবং সঠিক নয় ।
এই অভিব্যক্তিগুলি সম্ভাব্যতার চেয়ে বেশি মূল্যায়ন করে। উদাহরণস্বরূপ, কিছু প্যারামিটারের জন্য একটি 95% আত্মবিশ্বাসের ব্যবধানটি বলে মনে করা হয় যে আপনার 95% সম্ভাবনা রয়েছে যে পদ্ধতিটি সেই ব্যবস্থার মধ্যবর্তী ব্যবধানের সাথে সত্যিকারের মডেল ভেরিয়েবলের সাথে একটি বিরতি তৈরি করবে।
যাইহোক, লাগানো মডেলগুলি একটি সাধারণ একক অনুমানের ফলে আসে না এবং এর পরিবর্তে আমরা চেরি পিকিং করি (অনেকগুলি সম্ভাব্য বিকল্প মডেলের বাইরে নির্বাচন করুন) যখন আমরা স্টেপওয়াইজ রিগ্রেশন বা ল্যাসো রিগ্রেশন করি।
মডেল প্যারামিটারগুলির যথার্থতা মূল্যায়নের জন্য এটি সামান্য জ্ঞান অর্জন করে (বিশেষত যখন এটি সম্ভবত মডেলটি সঠিক নয়)।
নীচের উদাহরণে, পরে ব্যাখ্যা করা হয়েছে, মডেলটি অনেকগুলি রেজিস্ট্রারদের সাথে লাগানো হয়েছে এবং এটি বহুবিধরনে 'ভুগছে'। এটি সম্ভবত এটি তৈরি করে যে প্রতিবেশী একটি রেজিস্ট্রার (যা দৃ strongly়ভাবে সংশোধন করছে) মডেলটির পরিবর্তে মডেলটিতে নির্বাচিত হয়েছে। শক্তিশালী পারস্পরিক সম্পর্কটি সহগের একটি বড় ত্রুটি / বৈকল্পিকতা তৈরি করে (ম্যাট্রিক্সের সাথে সম্পর্কিত )।( এক্সটিএক্স)- 1
যাইহোক, মাল্টিক্লিয়োনারিটির কারণে এই উচ্চ বৈকল্পিকটি পি-ভ্যালু বা সহগের মানক ত্রুটির মতো ডায়াগনস্টিকগুলিতে 'দেখা যায় না' কারণ এটি কম রেজিস্ট্রার সহ একটি ছোট ডিজাইনের ম্যাট্রিক্স এক্স এর উপর ভিত্তি করে । (এবং লাসোর জন্য এই ধরণের পরিসংখ্যান গণনা করার জন্য কোনও সরল পদ্ধতি নেই )
উদাহরণ: নীচের গ্রাফটি যা খেলনা-মডেলের ফলাফলগুলিকে কিছু সংকেতের জন্য প্রদর্শন করে যা 10 গাউসিয়ান বক্ররেখের লিনিয়ার যোগফল হয় (এটি উদাহরণস্বরূপ রসায়নের বিশ্লেষণের অনুরূপ হতে পারে যেখানে বর্ণালীটির জন্য একটি সংকেতকে একটি লিনিয়ার যোগফল হিসাবে বিবেচনা করা হয় বিভিন্ন উপাদান)। 10 টি বক্ররেখার সিগন্যালটি ল্যাসো ব্যবহার করে 100 টি উপাদান (বিভিন্ন গড়ের সাথে গাউসিয়ান বক্ররেখা) একটি মডেলের সাথে সজ্জিত। সিগন্যালটি ভালভাবে অনুমান করা হয়েছে (লাল এবং কালো বক্ররেখাগুলি যা যুক্তিসঙ্গত নিকটে রয়েছে তুলনা করুন) তবে, প্রকৃত অন্তর্নিহিত সহগগুলি ভালভাবে অনুমান করা যায় না এবং এটি সম্পূর্ণ ভুল হতে পারে (লাল এবং কালো বারগুলি বিন্দুর সাথে তুলনা করুন যা একই নয়)) শেষ 10 সহগগুলিও দেখুন:
91 91 92 93 94 95 96 97 98 99 100
true model 0 0 0 0 0 0 0 142.8 0 0 0
fitted 0 0 0 0 0 0 129.7 6.9 0 0 0
লাসো মডেলটি সহগগুলি নির্বাচন করে যা খুব আনুমানিক, তবে সহগগুলির নিজস্ব দৃষ্টিকোণ থেকে এর অর্থ একটি বৃহত ত্রুটি হয় যখন কোনও সহগ যে শূন্য নয় এমন হওয়া উচিত এবং শূন্য হওয়া উচিত এমন একটি প্রতিবেশী সহগ হিসাবে অনুমান করা হয় নন-জিরো। সহগের জন্য কোনও আত্মবিশ্বাসের বিরতি খুব সামান্যই বোঝায়।
লাসো ফিটিং
ধাপে ধাপে ফিট
তুলনা হিসাবে, একই বক্ররেখার সাথে ধাপে ধাপে অ্যালগরিদম লাগানো যেতে পারে যা নীচের চিত্রটির দিকে নিয়ে যায়। (একই ধরণের সমস্যার সাথে যে সহগগুলি খুব কাছাকাছি থাকলেও মিলছে না)
এমনকি যখন আপনি বক্ররেখার যথার্থতা বিবেচনা করেন (পরামিতিগুলির চেয়ে বরং পূর্ববর্তী বিন্দুতে এটি স্পষ্ট করে দেওয়া হয় যে এটির কোনও মানে হয় না) তবে আপনাকে ওভারফিটিংয়ের সাথে মোকাবিলা করতে হবে। আপনি যখন লাসো-র সাথে কোনও মানানসই প্রক্রিয়া করেন তখন আপনি প্রশিক্ষণ ডেটা (বিভিন্ন পরামিতিগুলির সাথে মডেলগুলি ফিট করার জন্য) এবং পরীক্ষা / বৈধতা ডেটা (সেরা প্যারামিটারটি টিউন / সন্ধান করতে) ব্যবহার করেন তবে আপনার তৃতীয় পৃথক সেটও ব্যবহার করা উচিত পরীক্ষার / বৈধতা ডেটা ডেটা এর কার্যকারিতা জানতে।
একটি পি-মান বা কিছু সিমুলার কাজ করছে না কারণ আপনি একটি সুরযুক্ত মডেলটিতে কাজ করছেন যা নিয়মিত রৈখিক ফিটিং পদ্ধতি থেকে চেরি বাছাই করা এবং স্বাধীনতার অনেক বড় ডিগ্রি)।
ধাপে ধাপে রিগ্রেশন একই সমস্যা থেকে ভুগছে?
আর2
আমি ভেবেছিলাম যে স্টেপওয়াস রিগ্রেশনের জায়গায় লাসো ব্যবহারের মূল কারণ হ'ল লাসো কম লোভী পরামিতি নির্বাচনের অনুমতি দেয়, এটি মাল্টিকোলিনারিটির দ্বারা কম প্রভাবিত হয়। (লাসো এবং ধাপের দিকের মধ্যে আরও পার্থক্য: মডেলের ক্রস বৈধকরণের পূর্বাভাস ত্রুটির ক্ষেত্রে ফরওয়ার্ড সিলেকশন / পশ্চাৎপদ নির্মূলকরণের তুলনায় লাসো'র শ্রেষ্ঠত্ব )
উদাহরণ চিত্রের জন্য কোড
# settings
library(glmnet)
n <- 10^2 # number of regressors/vectors
m <- 2 # multiplier for number of datapoints
nel <- 10 # number of elements in the model
set.seed(1)
sig <- 4
t <- seq(0,n,length.out=m*n)
# vectors
X <- sapply(1:n, FUN <- function(x) dnorm(t,x,sig))
# some random function with nel elements, with Poisson noise added
par <- sample(1:n,nel)
coef <- rep(0,n)
coef[par] <- rnorm(nel,10,5)^2
Y <- rpois(n*m,X %*% coef)
# LASSO cross validation
fit <- cv.glmnet(X,Y, lower.limits=0, intercept=FALSE,
alpha=1, nfolds=5, lambda=exp(seq(-4,4,0.1)))
plot(fit$lambda, fit$cvm,log="xy")
plot(fit)
Yfit <- (X %*% coef(fit)[-1])
# non negative least squares
# (uses a stepwise algorithm or should be equivalent to stepwise)
fit2<-nnls(X,Y)
# plotting
par(mgp=c(0.3,0.0,0), mar=c(2,4.1,0.2,2.1))
layout(matrix(1:2,2),heights=c(1,0.55))
plot(t,Y,pch=21,col=rgb(0,0,0,0.3),bg=rgb(0,0,0,0.3),cex=0.7,
xaxt = "n", yaxt = "n",
ylab="", xlab = "",bty="n")
#lines(t,Yfit,col=2,lwd=2) # fitted mean
lines(t,X %*% coef,lwd=2) # true mean
lines(t,X %*% coef(fit2), col=3,lwd=2) # 2nd fit
# add coefficients in the plot
for (i in 1:n) {
if (coef[i] > 0) {
lines(c(i,i),c(0,coef[i])*dnorm(0,0,sig))
points(i,coef[i]*dnorm(0,0,sig), pch=21, col=1,bg="white",cex=1)
}
if (coef(fit)[i+1] > 0) {
# lines(c(i,i),c(0,coef(fit)[i+1])*dnorm(0,0,sig),col=2)
# points(i,coef(fit)[i+1]*dnorm(0,0,sig), pch=21, col=2,bg="white",cex=1)
}
if (coef(fit2)[i+1] > 0) {
lines(c(i,i),c(0,coef(fit2)[i+1])*dnorm(0,0,sig),col=3)
points(i,coef(fit2)[i+1]*dnorm(0,0,sig), pch=21, col=3,bg="white",cex=1)
}
}
#Arrows(85,23,85-6,23+10,-0.2,col=1,cex=0.5,arr.length=0.1)
#Arrows(86.5,33,86.5-6,33+10,-0.2,col=2,cex=0.5,arr.length=0.1)
#text(85-6,23+10,"true coefficient", pos=2, cex=0.7,col=1)
#text(86.5-6,33+10, "fitted coefficient", pos=2, cex=0.7,col=2)
text(0,50, "signal versus position\n true mean (black), fitted with nnls (green)", cex=1,col=1,pos=4, font=2)
plot(-100,-100,pch=21,col=1,bg="white",cex=0.7,type="l",lwd=2,
xaxt = "n", yaxt = "n",
ylab="", xlab = "",
ylim=c(0,max(coef(fit)))*dnorm(0,0,sig),xlim=c(0,n),bty="n")
#lines(t,X %*% coef,lwd=2,col=2)
for (i in 1:n) {
if (coef[i] > 0) {
lines(t,X[,i]*coef[i],lty=1)
}
if (coef(fit)[i+1] > 0) {
# lines(t,X[,i]*coef(fit)[i+1],col=2,lty=1)
}
if (coef(fit2)[i+1] > 0) {
lines(t,X[,i]*coef(fit2)[i+1],col=3,lty=1)
}
}
text(0,33, "illustration of seperate components/curves", cex=1,col=1,pos=4, font=2)