আর এর বুট প্যাকেজে সিভি.এল.এম. এর ব্যয়ের কাজটি কী?


14

আমি ছাড়ার-এক-আউট পদ্ধতিটি ব্যবহার করে ক্রস বৈধকরণ করছি। আমার একটি বাইনারি প্রতিক্রিয়া আছে এবং আর এর জন্য বুট প্যাকেজ এবং cv.glm ফাংশনটি ব্যবহার করছি । আমার সমস্যাটি হ'ল আমি এই ফাংশনটির "ব্যয়" অংশটি পুরোপুরি বুঝতে পারি না। আমি যা বুঝতে পারি তা থেকে এটি এমন ফাংশন যা সিদ্ধান্ত নেয় যে অনুমানিত মানটি 1 বা 0 হিসাবে শ্রেণিবদ্ধ করা উচিত, অর্থাত শ্রেণিবদ্ধের জন্য প্রান্তিক মান। এটা কি সঠিক?

আর, আর সাহায্যের মধ্যে তারা একটি দ্বিপদ মডেল জন্য এই ফাংশন ব্যবহার করুন: cost <- function(r, pi = 0) mean(abs(r-pi) > 0.5)। আমি এই ফাংশনটি কীভাবে ব্যাখ্যা করব? সুতরাং আমি আমার বিশ্লেষণের জন্য এটি সঠিকভাবে সংশোধন করতে পারি।

কোনও সহায়তা প্রশংসা করা হয়, আমি বুঝতে পারি না এমন কোনও ফাংশন ব্যবহার করতে চাই না।

উত্তর:


9

r হ'ল ভেক্টর যার আসল ফলাফল থাকে, পাই পাই ভেক্টর যার মধ্যে লাগানো মান থাকে।

cost <- function(r, pi = 0) mean(abs(r-pi) > 0.5)

এটি বলছেগুলিটি=Σ|Rআমি-পিআমিআমি|

mycost <- function(r, pi){
    weight1 = 1 #cost for getting 1 wrong
    weight0 = 1 #cost for getting 0 wrong
    c1 = (r==1)&(pi<0.5) #logical vector - true if actual 1 but predict 0
    c0 = (r==0)&(pi>=0.5) #logical vector - true if actual 0 but predict 1
    return(mean(weight1*c1+weight0*c0))
  }

এবং মাইকোস্টকে সিভি.glm ফাংশনে আর্গুমেন্ট হিসাবে রাখুন।


গুলিটি
Σ|Rআমি-পিআমি|0.5
|Rআমি-পিআমি|=11, না 2)?
মুনক্র্যাটার

@ ফেং-মাই পাই == 0 বা পাই <0.5? (এবং পাই == 1 বা পাই> 0.5?) যদি সিদ্ধান্তের সীমানা হিসাবে 0.5 ব্যবহার করে। পাই কি ভবিষ্যদ্বাণী করা সম্ভাবনাগুলি নয় ?
প্রধানমন্ত্রী

1
@ পিএম হ্যাঁ আপনি ঠিক বলেছেন। পিআমিগ্ল্যাম মডেল থেকে প্রতিক্রিয়া হয়। সংশোধনীর জন্য ধন্যবাদ.
ফেং মাই

1
cost <- function(r, pi = 0) mean(abs(r-pi) > 0.5)

প্রথমত, আপনি 0.5 হিসাবে একটি কাট অফ সেট করেছেন। আপনার আর 0/1 হয়, তবে পাই সম্ভাবনা। সুতরাং স্বতন্ত্র ত্রুটি ০.৫ এর চেয়ে বেশি হলে স্বতন্ত্র ব্যয় ১ হয়, অন্যথায় 0 তারপর, এই ফাংশনটি গড় ত্রুটির হার গণনা করে। তবে মনে রাখবেন, আপনি আপনার ব্যয় কার্যকারিতাটি সংজ্ঞায়নের আগে কাটা অফ সেট করা হয়েছে।

প্রকৃতপক্ষে, আমি মনে করি যদি কাটা বন্ধের পছন্দটি ব্যয় ক্রিয়াকলাপ দ্বারা নির্ধারিত হয় তবে এটি আরও বেশি অর্থবোধ করে।


0

@ এসএলআইয়ের উত্তর ইতিমধ্যে খুব ভালভাবে ব্যাখ্যা করেছে যে আপনি নির্ধারিত ব্যয় ফাংশনটি কী করে। তবে, আমি ভেবেছিলাম যে আমি যুক্ত করব যে ব্যয় ফাংশনটি deltaমানটি গণনা করতে ব্যবহৃত হয় cv.glmযা ক্রস বৈধতা ত্রুটির একটি পরিমাপ। যাইহোক, সমালোচনামূলকভাবে deltaব্যয় দ্বারা প্রদত্ত প্রতিটি ভাঁজটির ত্রুটির ওজনযুক্ত গড়। আমরা কোডের প্রাসঙ্গিক বিট পরিদর্শন করে এটি দেখতে পাই:

for (i in seq_len(ms)) {
    j.out <- seq_len(n)[(s == i)]
    j.in <- seq_len(n)[(s != i)]
    Call$data <- data[j.in, , drop = FALSE]
    d.glm <- eval.parent(Call)
    p.alpha <- n.s[i]/n # create weighting for averaging later
    cost.i <- cost(glm.y[j.out], predict(d.glm, data[j.out, 
        , drop = FALSE], type = "response"))
    CV <- CV + p.alpha * cost.i # add previous error to running total
    cost.0 <- cost.0 - p.alpha * cost(glm.y, predict(d.glm, 
        data, type = "response"))
}

এবং ফাংশন দ্বারা ফেরত মান হ'ল:

  list(call = call, K = K, delta = as.numeric(c(CV, CV + cost.0)), 
    seed = seed)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.