এখানে কি ঘটছে, যখন আমি লজিস্টিক রিগ্রেশন সেটিংয়ে স্কোয়ার লস ব্যবহার করি?


16

আমি খেলনা ডেটা সেটটিতে বাইনারি শ্রেণিবদ্ধকরণ করতে স্কোয়ার ক্ষতি ব্যবহার করার চেষ্টা করছি।

আমি mtcarsডেটা সেট ব্যবহার করছি , প্রতি গ্যালন মাইল এবং ওজন ট্রান্সমিশনের ধরণের পূর্বাভাস দিতে ব্যবহার করি। নীচের প্লটটি দুটি ধরণের সংক্রমণ টাইপের ডেটা বিভিন্ন রঙে দেখায় এবং বিভিন্ন ক্ষতির ক্রিয়াকলাপ দ্বারা উত্পন্ন সিদ্ধান্তের সীমানা দেখায়। স্কোয়ারড ক্ষতি Σআমি(Yআমি-পিআমি)2 যেখানে Yআমি মাটিতে সত্য লেবেল (0 বা 1) এবং পিআমি পূর্বাভাস সম্ভাব্যতা পিআমি=Logit-1(βটিএক্সআমি)। অন্য কথায়, আমি শ্রেণিবদ্ধকরণ সেটিংয়ে স্কোয়ার্স লসের সাথে লজিস্টিক ক্ষতি প্রতিস্থাপন করছি, অন্যান্য অংশগুলি একই।

mtcarsডেটা সহ খেলনা উদাহরণের জন্য , অনেক ক্ষেত্রে, আমি লজিস্টিক রিগ্রেশনের সাথে "অনুরূপ" একটি মডেল পেয়েছি (এলোমেলো বীজ 0 সহ নিম্নলিখিত চিত্রটি দেখুন)।

এখানে চিত্র বর্ণনা লিখুন

তবে কিছু কিছু ক্ষেত্রে (আমরা যদি করি set.seed(1)) তবে স্কোয়ার ক্ষতি খুব ভাল কাজ করছে না বলে মনে হচ্ছে। এখানে চিত্র বর্ণনা লিখুন এখানে কি হচ্ছে? অপ্টিমাইজেশন একত্রিত হয় না? বর্গক্ষেত্রের ক্ষতির তুলনায় লজিস্টিক ক্ষতির তুলনা অপ্টিমাইজ করা সহজ? কোন সাহায্য প্রশংসা করা হবে।


কোড

d=mtcars[,c("am","mpg","wt")]
plot(d$mpg,d$wt,col=factor(d$am))
lg_fit=glm(am~.,d, family = binomial())
abline(-lg_fit$coefficients[1]/lg_fit$coefficients[3],
       -lg_fit$coefficients[2]/lg_fit$coefficients[3])
grid()

# sq loss
lossSqOnBinary<-function(x,y,w){
  p=plogis(x %*% w)
  return(sum((y-p)^2))
}

# ----------------------------------------------------------------
# note, this random seed is important for squared loss work
# ----------------------------------------------------------------
set.seed(0)

x0=runif(3)
x=as.matrix(cbind(1,d[,2:3]))
y=d$am
opt=optim(x0, lossSqOnBinary, method="BFGS", x=x,y=y)

abline(-opt$par[1]/opt$par[3],
       -opt$par[2]/opt$par[3], lty=2)
legend(25,5,c("logisitc loss","squared loss"), lty=c(1,2))

1
সম্ভবত এলোমেলো শুরুর মানটি একটি দরিদ্র। কেন একটি ভাল নির্বাচন করবেন না?
whuber

1
@ শুভ লজিস্টিক ক্ষয় উত্তল, তাই শুরু করা কোনও ব্যাপার নয়। পি এবং ওয়াইয়ের স্কোয়ার ক্ষতি সম্পর্কে কী? এটা উত্তল?
হাইতাও ডু

5
আপনার বর্ণনা অনুসারে আমি পুনরুত্পাদন করতে অক্ষম। optimআপনাকে বলে যে এটি শেষ হয়নি, এটাই সব: এটি রূপান্তরিত হচ্ছে। আপনি আপনার যুক্তিটি অতিরিক্ত যুক্তি দিয়ে পুনরায় চালিত করে control=list(maxit=10000), এটির ফিটটি বানাতে এবং এর সহগের সাথে মূল কোডগুলির সাথে তুলনা করে অনেক বড় বিষয় শিখতে পারেন ।
whuber

2
@ আমেবা আপনার মন্তব্যের জন্য আপনাকে ধন্যবাদ, আমি প্রশ্নটি সংশোধন করেছি। আশা করি এটি আরও ভাল।
হাইতাও ডু

@ আমেবা আমি কিংবদন্তিটি সংশোধন করব, তবে এই বিবৃতিটি ঠিক হবে না (3)? "আমি এমটিকার্স ডেটা সেট ব্যবহার করছি, সংক্রমণ প্রকারের পূর্বাভাস দিতে প্রতি গ্যালন এবং ওজনে মাইল ব্যবহার করি below নীচের প্লটটি দুটি রঙের বিভিন্ন প্রকারের সংক্রমণ টাইপের ডেটা এবং বিভিন্ন ক্ষতির ক্রিয়াকলাপ দ্বারা উত্পন্ন সিদ্ধান্তের সীমানা দেখায়" "
হাইতাও ডু

উত্তর:


19

দেখে মনে হচ্ছে আপনি আপনার নির্দিষ্ট উদাহরণটিতে সমস্যাটি স্থির করেছেন তবে আমি মনে করি এটি এখনও কমপক্ষে স্কোয়ার এবং সর্বাধিক সম্ভাবনার লজিস্টিক রিগ্রেশন মধ্যে পার্থক্য সম্পর্কে আরও সতর্কতার সাথে অধ্যয়নযোগ্য।

আসুন কিছু স্বীকৃতি পাওয়া যাক। যাক এবং । যদি আমরা সর্বাধিক সম্ভাবনাটি করি (বা আমি যেমন এখানে করছি তেমন ন্যূনতম নেতিবাচক লগ হওয়ার সম্ভাবনা), আমাদের সঙ্গে আমাদের লিঙ্ক ফাংশন হচ্ছে ।LS(yi,y^i)=12(yiy^i)2LL(yi,y^i)=yilogy^i+(1yi)log(1y^i) β এল:=argmin আর পি- এন i=1ওয়াইi

β^L:=argminbRpi=1nyilogg1(xiTb)+(1yi)log(1g1(xiTb))

বিকল্পভাবে আমাদের least সর্বনিম্ন স্কোয়ার সমাধান হিসাবে। সুতরাং হ্রাস এবং একইভাবে জন্য ।

β^এস: =argminআরপি12Σআমি=1এন(Yআমি--1(এক্সআমিটি))2
β এসএলএসএলএলβ^SLSLL

যাক এবং কমানোর সংশ্লিষ্ট উদ্দেশ্য ফাংশন হতে এবং যথাক্রমে জন্য সম্পন্ন করা হয় এবং । শেষ অবধি, তাই । নোট করুন যে আমরা যদি ক্যানোনিকাল লিঙ্কটি ব্যবহার করি তবে আমরা পেয়েছি fSfLLSLLβ এস β এল= - 1 Y আমি = ( এক্স টি আমি) ( z- র ) = 1β^Sβ^Lh=g1y^i=h(xiTb)

h(z)=11+ezh(z)=h(z)(1h(z)).


নিয়মিত লজিস্টিক রিগ্রেশনের জন্য আমাদের কাছে ব্যবহার আমরা এই প্রক্রিয়া সহজ করতে সুতরাং

fLbj=i=1nh(xiTb)xij(yih(xiTb)1yi1h(xiTb))
h=h(1h)
fLbj=i=1nxij(yi(1y^i)(1yi)y^i)=i=1nxij(yiy^i)
fL(b)=XT(YY^)

এর পরে দ্বিতীয় ডেরাইভেটিভস করা যাক। হেসিয়ান

HL:=2fLbjbk=i=1nxijxiky^i(1y^i).
এর অর্থ যেখানে । বর্তমানের লাগানো মানগুলি উপর নির্ভর করে তবে বাদ পড়েছে, এবং পিএসডি। সুতরাং আমাদের অপ্টিমাইজেশান সমস্যা মধ্যে উত্তল হয় ।HL=XTAXA=diag(Y^(1Y^))Hএল ওয়াই ওয়াইএইচএলY^YHLb


এর কমপক্ষে স্কোয়ারের সাথে তুলনা করি।

fSbj=i=1n(yiy^i)h(xiTb)xij.

এর অর্থ আমাদের কাছে এটি একটি জরুরী বিষয়: গ্রেডিয়েন্টটি সমস্ত ব্যতীত প্রায় একই রকম তাই মূলত আমরা । এটি কনভার্জেন্সকে ধীর করবে।

fS(b)=XTA(YY^).
i y^i(1y^i)(0,1)fL

হেসিয়ানদের জন্য আমরা প্রথমে লিখতে পারি

fSbj=i=1nxij(yiy^i)y^i(1y^i)=i=1nxij(yiy^i(1+yi)y^i2+y^i3).

এটি আমাদের দিকে নিয়ে

HS:=2fSbjbk=i=1nxijxikh(xiTb)(yi2(1+yi)y^i+3y^i2).

যাক । আমাদের কাছে এখন B=diag(yi2(1+yi)y^i+3y^i2)

HS=XTABX.

দুর্ভাগ্যক্রমে আমাদের জন্য, এর অ-নেতিবাচক হওয়ার গ্যারান্টিযুক্ত নয়: যদি তবে যা ইতিবাচক iff । একইভাবে, যদি তবে যা ইতিবাচক যখন (এটি এর জন্যও ইতিবাচক তবে এটি সম্ভব নয়)। এর অর্থ অগত্যা পিএসডি নয়, তাই কেবল আমরা আমাদের গ্রেডিয়েন্টগুলি স্কোয়াশ করছি যা আরও শক্ত করে তুলবে, তবে আমরা আমাদের সমস্যার করেছি।Byi=0yi2(1+yi)y^i+3y^i2=y^i(3y^i2)y^i>23yi=1yi2(1+yi)y^i+3y^i2=14y^i+3y^i2y^i<13y^i>1HS


সর্বোপরি, এতে অবাক হওয়ার কিছু নেই যে সর্বনিম্ন স্কোয়ারগুলি লজিস্টিক রিগ্রেশন কখনও কখনও লড়াই করে এবং আপনার উদাহরণে বা কাছাকাছি পর্যাপ্ত ফিট মান রয়েছে যাতে বেশ ছোট হতে পারে এবং এভাবে গ্রেডিয়েন্ট বেশ সমতল।01y^i(1y^i)

এটাকে নিউরাল নেটওয়ার্কগুলির সাথে সংযুক্ত করা, যদিও এটি আমি মনে করি একটি বিনীত লজিস্টিক রিগ্রেশন আপনি বর্ধিত ক্ষতির সাথে মনে করেন যে আপনি গুডফেলো, বেনজিও এবং করভিলি যখন তাদের নিম্নলিখিত লেখার সময় তাদের ডিপ লার্নিং বইয়ে উল্লেখ করছেন তেমন কিছু অনুভব করছেন :

স্নায়বিক নেটওয়ার্ক ডিজাইন জুড়ে একটি পুনরাবৃত্তি থিমটি হল যে ব্যয়ের ফাংশনটির গ্রেডিয়েন্ট অবশ্যই লার্নিং অ্যালগরিদমের জন্য ভাল গাইড হিসাবে পরিবেশন করার জন্য যথেষ্ট বড় এবং অনুমানযোগ্য হতে হবে। যে বিষয়গুলি পরিপূর্ণ করে (খুব সমতল হয়ে যায়) এই উদ্দেশ্যকে হীন করে দেয় কারণ এগুলি গ্রেডিয়েন্টটি খুব ছোট হয়ে যায়। অ্যাক্টিভেশন ফাংশনগুলি লুকানো ইউনিটগুলির আউটপুট উত্পাদন করতে বা আউটপুট ইউনিটগুলিকে স্যাচুর করে দেয় কারণ অনেক ক্ষেত্রে এটি ঘটে। নেতিবাচক লগ-সম্ভাবনা অনেক মডেলের জন্য এই সমস্যা এড়াতে সহায়তা করে। অনেক আউটপুট ইউনিট একটি এক্সপ ফাংশন জড়িত যা যখন তার যুক্তিটি খুব নেতিবাচক হয় তবে এটি পরিপূর্ণ করতে পারে। নেতিবাচক লগ-সম্ভাবনা ব্যয় ফাংশনে লগ ফাংশন কিছু আউটপুট ইউনিটগুলির এক্সপ পূর্বাবস্থায় ফিরে আসে। আমরা ব্যয় ফাংশন এবং সেকেন্ডে আউটপুট ইউনিটের পছন্দের মধ্যে মিথস্ক্রিয়া নিয়ে আলোচনা করব। 6.2.2।

এবং, 6.2.2 এ,

দুর্ভাগ্যক্রমে, গ্রেডিয়েন্ট-ভিত্তিক অপ্টিমাইজেশানের সাথে ব্যবহৃত হওয়ার সাথে সাথে স্কোয়ার ত্রুটি বলতে বোঝায় এবং পরিপূর্ণ ত্রুটিটির অর্থ প্রায়শই দুর্বল ফলাফলের দিকে নিয়ে যায়। এই ব্যয়গুলির সাথে একত্রিত হয়ে কিছু আউটপুট ইউনিট খুব ছোট গ্রেডিয়েন্ট উত্পাদন করে। এটি একটি কারণ যা ক্রস-এনট্রপি ব্যয়ের ফাংশনটি গড় স্কোয়ার ত্রুটি বা অর্থ নিখুঁত ত্রুটির চেয়ে বেশি জনপ্রিয়, এমনকি যখন কোনও সম্পূর্ণ ডিস্ট্রিবিউশন অনুমান করার প্রয়োজন হয় না ।p(y|x)

(উভয় উদ্ধৃতি অধ্যায় 6 থেকে হয়)।


1
আমি সত্যিই পছন্দ করি আপনি আমাকে ডেরাইভেটিভ এবং হেসিয়ান অর্জন করতে সহায়তা করেছিলেন। আমি আগামীকাল আরও সতর্কতার সাথে এটি পরীক্ষা করব।
হাইটাও ডু

1
@ hxd1011 আপনি খুব স্বাগত, এবং আপনার যে পুরানো প্রশ্নের লিঙ্ক জন্য ধন্যবাদ! আমি সত্যিই এটিকে আরও সাবধানতার সাথে
বোঝার

1
আমি সাবধানে গণিতটি পড়েছি এবং কোড সহ যাচাই করেছি। আমি দেখেছি যে স্কেসিওর ক্ষতির জন্য হেসিয়ান সংখ্যাটির সংখ্যার সাথে মিলে না। আপনি কি এটা পরীক্ষা করে দেখবেন? আপনি চাইলে কোডটি দেখিয়ে আমি বেশি খুশি।
হাইতাও ডু

@ hxd1011 আমি আবারও উত্সের মধ্য দিয়ে গিয়েছি এবং আমি মনে করি একটি চিহ্নের ত্রুটি আছে: জন্য আমি সর্বত্রই মনে করি যে আমার এটি হওয়া উচিত । আপনি কি পুনরায় পরীক্ষা করতে পারেন এবং আমাকে ঠিক করতে পারেন যদি এটি ঠিক করে দেয়? সংশোধনের জন্য অনেক ধন্যবাদ। HSyi2(1yi)y^i+3y^i2yi2(1+yi)y^i+3y^i2
jld

@ hxd1011 খুশি যে এটি স্থির! এটি
সন্ধানের

5

আমি সাহায্যের জন্য @ হুইবার এবং @ চ্যাঙ্কনকে ধন্যবাদ জানাতে চাই। বিশেষত @ চকন, এই বিকাশটি আমি বছরের পর বছর ধরে যাচ্ছিলাম।

অপটিমাইজেশন অংশে সমস্যা। যদি আমরা এলোমেলো বীজ 1 তে সেট করি, তবে ডিফল্ট বিএফজিএস কাজ করবে না। তবে আমরা যদি অ্যালগরিদম পরিবর্তন করি এবং সর্বাধিক পুনরাবৃত্তি সংখ্যাটি পরিবর্তন করি তবে এটি আবার কাজ করবে।

@ চ্যাকন যেমন উল্লেখ করেছেন, সমস্যাটি শ্রেণিবিন্যাসের জন্য স্কোয়ার ক্ষতি হ'ল উত্তল এবং উত্তমরূপে শক্ত। @ চকনির গণিতে যোগ করার জন্য, আমি লজিস্টিক ক্ষতি এবং স্কোয়ার লস সম্পর্কে কিছু দৃশ্যায়ন উপস্থাপন করতে চাই।

আমরা mtcarsখেলোয়াড়ের উদাহরণটি থেকে পরিবর্তন করব , যেহেতু মূল খেলনা উদাহরণটিতে ইন্টারসেপ্ট সহ সহগ রয়েছে। আমরা এই ডেটা সেটে তৈরি হওয়া অন্য খেলনা ডেটা সেটটি ব্যবহার করব , আমরা সেট করব3mlbench2 পরামিতি যা ভিজ্যুয়ালাইজেশনের জন্য আরও ভাল।

এখানে ডেমো রয়েছে

  • বাম চিত্রটিতে ডেটা দেখানো হয়েছে: আমাদের দুটি রঙে দুটি ক্লাস রয়েছে। এক্স, ওয়াই ডেটার জন্য দুটি বৈশিষ্ট্য। তদ্ব্যতীত, আমরা লজিস্টিক ক্ষতি থেকে রৈখিক শ্রেণিবদ্ধের প্রতিনিধিত্ব করতে লাল রেখা ব্যবহার করি এবং নীল রেখাটি স্কোয়ার লস থেকে লিনিয়ার শ্রেণিবদ্ধকে উপস্থাপন করে।

  • মাঝের চিত্র এবং ডান চিত্রটি লজিস্টিক লস (লাল) এবং স্কোয়ার লস (নীল) জন্য কনট্যুর দেখায়। এক্স, ওয়াই এমন দুটি পরামিতি যা আমরা ফিট করছি। বিন্দুটি BFGS দ্বারা পাওয়া সর্বোত্তম পয়েন্ট।

এখানে চিত্র বর্ণনা লিখুন

কনট্যুর থেকে আমরা সহজেই দেখতে পারি যে বর্গক্ষেত্রের ক্ষতি কীভাবে অনুকূল করা শক্ত হয়: চকন যেমন উল্লেখ করেছেন, এটি উত্তল নয়।

এখানে পার্সপিন্ডড থেকে আরও একটি দর্শন দেওয়া হয়েছে।

এখানে চিত্র বর্ণনা লিখুন


কোড

set.seed(0)
d=mlbench::mlbench.2dnormals(50,2,r=1)
x=d$x
y=ifelse(d$classes==1,1,0)

lg_loss <- function(w){
  p=plogis(x %*% w)
  L=-y*log(p)-(1-y)*log(1-p)
  return(sum(L))
}
sq_loss <- function(w){
  p=plogis(x %*% w)
  L=sum((y-p)^2)
  return(L)
}

w_grid_v=seq(-15,15,0.1)
w_grid=expand.grid(w_grid_v,w_grid_v)

opt1=optimx::optimx(c(1,1),fn=lg_loss ,method="BFGS")
z1=matrix(apply(w_grid,1,lg_loss),ncol=length(w_grid_v))

opt2=optimx::optimx(c(1,1),fn=sq_loss ,method="BFGS")
z2=matrix(apply(w_grid,1,sq_loss),ncol=length(w_grid_v))

par(mfrow=c(1,3))
plot(d,xlim=c(-3,3),ylim=c(-3,3))
abline(0,-opt1$p2/opt1$p1,col='darkred',lwd=2)
abline(0,-opt2$p2/opt2$p1,col='blue',lwd=2)
grid()
contour(w_grid_v,w_grid_v,z1,col='darkred',lwd=2, nlevels = 8)
points(opt1$p1,opt1$p2,col='darkred',pch=19)
grid()
contour(w_grid_v,w_grid_v,z2,col='blue',lwd=2, nlevels = 8)
points(opt2$p1,opt2$p2,col='blue',pch=19)
grid()


# library(rgl)
# persp3d(w_grid_v,w_grid_v,z1,col='darkred')

2
আমি আপনার প্রথম চিত্রের তৃতীয় সাবপ্ল্লট-তে কোনও অ-সংবেদন দেখতে পাচ্ছি না ...
অ্যামিবা বলেছেন মনিকাকে

@ আমেবা আমি ভেবেছিলাম উত্তল কনট্যুরটি আরও উপবৃত্তের মতো, দুটি ইউ আকারের বক্ররেখার পিছনে পিছনে নন-উত্তল, এটি কি ঠিক?
হাইতাও ডু

2
না কেন? সম্ভবত এটি বৃহত্তর উপবৃত্তাকার মতো কনট্যুরের একটি অংশ? মানে, এটি খুব উত্তম-উত্তল হতে পারে, আমি কেবল বলছি যে আমি এটি নির্দিষ্ট চিত্রটিতে দেখছি না।
অ্যামিবা বলেছেন মনিকাকে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.