E1071 libsvm নিয়ে সমস্যা?


13

আমার কাছে দুটি ওভারল্যাপিং ক্লাস সহ একটি ডেটাসেট রয়েছে, প্রতিটি শ্রেণিতে সাতটি পয়েন্ট, পয়েন্টগুলি দ্বিমাত্রিক জায়গায় space আর এ, এবং আমি এই ক্লাসগুলির জন্য পৃথকীকরণের হাইপারপ্লেন তৈরি svmকরতে e1071প্যাকেজটি থেকে চালাচ্ছি । আমি নিম্নলিখিত কমান্ডটি ব্যবহার করছি:

svm(x, y, scale = FALSE, type = 'C-classification', kernel = 'linear', cost = 50000)

যেখানে xআমার ডেটা পয়েন্ট yরয়েছে এবং এতে তাদের লেবেল রয়েছে। কমান্ড একটি svm-বস্তুর, যা আমি পরামিতি নিরূপণ করার জন্য ব্যবহার ফেরৎ (স্বাভাবিক ভেক্টর) এবং (পথিমধ্যে) পৃথক hyperplane করুন।wb

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

চিত্র (খ) আরও একটি হাইপারপ্লেন দেখায় যা সর্বোত্তম একটির সমান্তরাল অনুবাদ 5 (b_new = b_optimal - 5)। এই হাইপারপ্লেনের জন্য উদ্দেশ্য ফাংশন

0.5||w||2+costξi
(যা সি-শ্রেণিবদ্ধকরণ এসএমএম দ্বারা ন্যূনতম করা হয়েছে) চিত্রের মধ্যে দেখানো অনুকূল হাইপারপ্লেনের চেয়ে কম মান হবে তা দেখতে অসুবিধা হয় না ( ক)। তাহলে কি এই svmফাংশনটিতে কোনও সমস্যা আছে বলে মনে হচ্ছে ? নাকি আমি কোথাও ভুল করেছি?

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

এই পরীক্ষায় আমি যে আর কোড ব্যবহার করেছি তার নীচে।

library(e1071)

get_obj_func_info <- function(w, b, c_par, x, y) {
    xi <- rep(0, nrow(x))

    for (i in 1:nrow(x)) {
        xi[i] <- 1 - as.numeric(as.character(y[i]))*(sum(w*x[i,]) + b)
        if (xi[i] < 0) xi[i] <- 0
    }

    return(list(obj_func_value = 0.5*sqrt(sum(w * w)) + c_par*sum(xi), 
                    sum_xi = sum(xi), xi = xi))
}

x <- structure(c(41.8226593092589, 56.1773406907411, 63.3546813814822, 
66.4912298720281, 72.1002963174962, 77.649309469458, 29.0963054665561, 
38.6260575252066, 44.2351239706747, 53.7648760293253, 31.5087701279719, 
24.3314294372308, 21.9189647758150, 68.9036945334439, 26.2543850639859, 
43.7456149360141, 52.4912298720281, 20.6453186185178, 45.313889181287, 
29.7830021158501, 33.0396571934088, 17.9008386892901, 42.5694092520593, 
27.4305907479407, 49.3546813814822, 40.6090664454681, 24.2940422573947, 
36.9603428065912), .Dim = c(14L, 2L))

y <- structure(c(2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L), .Label = c("-1", "1"), class = "factor")

a <- svm(x, y, scale = FALSE, type = 'C-classification', kernel = 'linear', cost = 50000)

w <- t(a$coefs) %*% a$SV;
b <- -a$rho;

obj_func_str1 <- get_obj_func_info(w, b, 50000, x, y)
obj_func_str2 <- get_obj_func_info(w, b - 5, 50000, x, y)

আপনি ব্যয় পরামিতি টিউন করেছেন?
এটিয়েন র্যাকিন

নোট করুন যে BUGS ট্যাগটি সফ্টওয়্যার সমস্যা নয়, গিবস স্যাম্পলিং ব্যবহার করে বায়েশিয়ান অনুমিতিকে বোঝায়। আমি ট্যাগটি সরিয়েছি।
সাইকোরাক্স মনিকাকে

উত্তর:


5

Libsvm এফএকিউতে উল্লিখিত হয় যে "অভ্যন্তরীণ" অ্যালগরিদম ব্যবহৃত লেবেলগুলি আপনার থেকে পৃথক হতে পারে। এটি মাঝেমধ্যে মডেলের "কোফস" এর চিহ্নটিকে বিপরীত করবে।

উদাহরণস্বরূপ, যদি আপনার লেবেল থাকে তবে এর প্রথম লেবেল , যা "-1", libsvm চলার জন্য হিসাবে শ্রেণিবদ্ধ করা হবে এবং, স্পষ্টতই, আপনার "+1" অ্যালগরিদমের অভ্যন্তরে হিসাবে শ্রেণিবদ্ধ করা হবে ।y=[1,+1,+1,1,...]y+11

এবং প্রত্যাহার যে ফিরে svm মডেল coefs নিশ্চয়ই এবং তাই আপনার হিসাব ভেক্টরের চিহ্নের রিভারশন কারণে প্রভাবিত হবে 's।αnynwy

"ভবিষ্যদ্বাণী করা লেবেল এবং সিদ্ধান্তের মানগুলির মাঝে মাঝে কেন বিপরীত হয়?" প্রশ্নটি দেখুন? এখানে


4

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

এটি মূল্যবান কিসের জন্য, অন্তর্নির্মিত ম্যাটল্যাব ফাংশনটি svmtrainপ্রমিতকরণ ছাড়াই 100% নির্ভুলতার সাথে একটি শ্রেণিবদ্ধ প্রস্তুত করে।

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