চতুর্ভুজ প্রোগ্রামিং সহ একটি সমর্থন ভেক্টর মেশিনের অনুকূলকরণ


12

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

প্রশিক্ষণ ডেটা

set.seed(2015)
df <- data.frame(X1=c(rnorm(5), rnorm(5)+5), X2=c(rnorm(5), rnorm(5)+3), Y=c(rep(1,5), rep(-1, 5)))
df
           X1       X2  Y
1  -1.5454484  0.50127  1
2  -0.5283932 -0.80316  1
3  -1.0867588  0.63644  1
4  -0.0001115  1.14290  1
5   0.3889538  0.06119  1
6   5.5326313  3.68034 -1
7   3.1624283  2.71982 -1
8   5.6505985  3.18633 -1
9   4.3757546  1.78240 -1
10  5.8915550  1.66511 -1

library(ggplot2)
ggplot(df, aes(x=X1, y=X2, color=as.factor(Y)))+geom_point()

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

সর্বোচ্চ মার্জিন হাইপারপ্লেন সন্ধান করা Find

এসভিএমগুলিতে এই উইকিপিডিয়া নিবন্ধ অনুসারে , সর্বাধিক মার্জিন হাইপারপ্লেনটি সমাধান করার জন্য আমার প্রয়োজন

argmin(w,b)12w2
সাপেক্ষে (যে কোনও আই = 1, ..., এন)
yi(wxib)1.

আমি কীভাবে sample নির্ধারণ করতে আমার নমুনা ডেটা আর (উদাহরণস্বরূপ চতুষ্কোণ ) এর QP সলভারের মধ্যে 'প্লাগ' করব ?w


আপনাকে দ্বৈত সমস্যাটি সমাধান করতে হবে

2
@fcop আপনি কি বিস্তারিত বলতে পারবেন? এই ক্ষেত্রে দ্বৈত কি? আমি কীভাবে সমাধান করব R? ইত্যাদি
বেন

উত্তর:


6

ইঙ্গিত :

কোয়াডপ্রোগ নিম্নলিখিতটি সমাধান করে:

minxdTx+1/2xTDxsuch that ATxx0

বিবেচনা করুন

x=(wb)and D=(I000)

যেখানে পরিচয় ম্যাট্রিক্স।I

তাহলে হয় এবং হল :wp×1yn×1

x:(2p+1)×1D:(2p+1)×(2p+1)

অনুরূপ লাইনে:

x0=(11)n×1

আপনার বৈষম্যের প্রতিবন্ধকতা উপস্থাপন করতে উপরের সঙ্কেতগুলি ব্যবহার করে তৈরি করুন ulateA


1
আমি শেষ. কি ? dT
বেন

1
সহগ কি আপনার উদ্দেশ্য ফাংশনে? না কিন্তু ? | | ডাব্লু | | 2 2 ডাব্লুw||w||22w
রচনা

1
সাহায্যের প্রশংসা করুন। আমি ভেবেছিলাম আমি এটি বের করে ফেলেছি কিন্তু আমি যখন ডি = ম্যাট্রিক্স সেট করি তখন আপনি প্রস্তাব quadprogকরেন ত্রুটিটি "চতুর্ভুজ ফাংশনে ম্যাট্রিক্স ডি ইতিবাচক নির্দিষ্ট নয়!"
বেন

3
হ্যাক: বিমূঢ় একটি ছোট মান বলে যোগ করে তির্যক উপর1 - 6D1e6
rightskewed

7

রাইটসকিউডের ইঙ্গিত অনুসরণ করা হচ্ছে ...

library(quadprog)

# min(−dvec^T b + 1/2 b^T Dmat b) with the constraints Amat^T b >= bvec)
Dmat       <- matrix(rep(0, 3*3), nrow=3, ncol=3)
diag(Dmat) <- 1
Dmat[nrow(Dmat), ncol(Dmat)] <- .0000001
dvec       <- rep(0, 3)
Amat       <- as.matrix(df[, c("X1", "X2")])
Amat <- cbind(Amat, b=rep(-1, 10))
Amat <- Amat * df$Y
bvec       <- rep(1, 10)
solve.QP(Dmat,dvec,t(Amat),bvec=bvec)

plotMargin <- function(w = 1*c(-1, 1), b = 1){
  x1 = seq(-20, 20, by = .01)
  x2 = (-w[1]*x1 + b)/w[2]
  l1 = (-w[1]*x1 + b + 1)/w[2]
  l2 = (-w[1]*x1 + b - 1)/w[2]
  dt <- data.table(X1=x1, X2=x2, L1=l1, L2=l2)
  ggplot(dt)+geom_line(aes(x=X1, y=X2))+geom_line(aes(x=X1, y=L1), color="blue")+geom_line(aes(x=X1, y=L2), color="green")+
    geom_hline(yintercept=0, color="red")+geom_vline(xintercept=0, color="red")+xlim(-5, 5)+ylim(-5, 5)+
    labs(title=paste0("w=(", w[1], ",", w[2], "), b=", b))
}

plotMargin(w=c(-0.5065, -0.2525), b=-1.2886)+geom_point(data=df, aes(x=X1, y=X2, color=as.factor(Y)))

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

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