লজিস্টিক রিগ্রেশন নিখুঁত পৃথকীকরণ মামলায় কেন কাজ করবে না তার কোন অন্তর্জ্ঞাত ব্যাখ্যা আছে? এবং নিয়মিতকরণ যুক্ত করা কেন এটি সংশোধন করবে?


20

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

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


ব্রায়ান রিপলির এই পুরাতন পোস্টটি দেখুন: math.yorku.ca/Who/Factory/Monette/S-news/0027.html
kgetil b halvorsen

উত্তর:


29

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

প্রথমে আমরা নিয়মিতকরণ ছাড়াই লজিস্টিক রিগ্রেশন চেষ্টা করি।

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

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

এরপরে আমরা এল 2 নিয়মিতকরণের সাথে লজিস্টিক রিগ্রেশন চেষ্টা করি (এল 1 সমান হয়)।

  • একই সেটআপের সাহায্যে খুব ছোট এল 2 নিয়মিতকরণ যুক্ত করার ফলে তথ্য পৃথক হওয়ার ক্ষেত্রে উদ্দেশ্যমূলক কার্যকারিতা পরিবর্তন হবে।

  • এই ক্ষেত্রে, আমাদের সর্বদা "উত্তল" উদ্দেশ্য থাকবে। ডেটা কতইনা পৃথকীকরণের বিষয়।

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

কোড (আমিও এই উত্তরের জন্য একই কোড ব্যবহার করি: লজিস্টিক রিগ্রেশন জন্য নিয়মিতকরণ পদ্ধতি )

set.seed(0)  
d=mlbench::mlbench.2dnormals(100, 2, r=1)

x = d$x
y = ifelse(d$classes==1, 1, 0)

logistic_loss <- function(w){
  p    = plogis(x %*% w)
  L    = -y*log(p) - (1-y)*log(1-p)
  LwR2 = sum(L) + lambda*t(w) %*% w
  return(c(LwR2))
}

logistic_loss_gr <- function(w){
  p = plogis(x %*% w)
  v = t(x) %*% (p - y)
  return(c(v) + 2*lambda*w)
}

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

lambda = 0
opt1   = optimx::optimx(c(1,1), fn=logistic_loss, gr=logistic_loss_gr, method="BFGS")
z1     = matrix(apply(w_grid,1,logistic_loss), ncol=length(w_grid_v))

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

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

2
λ0+ +λ=ε

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