কীভাবে আমরা সিদ্ধান্তের গাছগুলির জন্য একটি আরওসি বক্ররেখা আঁকতে পারি?


13

সাধারণত আমরা সিদ্ধান্ত গাছের মতো বিযুক্ত শ্রেণিবদ্ধের জন্য কোনও আরওসি বক্ররেখা আঁকতে পারি না। আমি কি সঠিক? Dtree এর জন্য কোনও আরওসি বক্ররেখা আঁকানোর কোনও উপায় আছে কি?


1
আপনি এখানে আপনার প্রতিপত্তি
রপাইও

[আর-তে "প্রশিক্ষণ সেট" বনাম "টেস্টিং সেট" এর জন্য বৃক্ষের মডেল মূল্যায়ন] [1] [1]: stats.stackexchange.com/questions/49416/… আপনি নিজের উত্তরটি এখানে খুঁজে পেতে পারেন।
সংগ্রাম

@rapaio দুঃখিত আপনার লিঙ্কটি একটি শ্রেণিবদ্ধে একটি প্রান্তিক সন্ধান করতে একটি আরওসি বক্ররেখা দেখায় যা 1 এবং 0 এর মধ্যে আউটপুট উত্পাদন করে (ক্রমাগত মান) produce
ডেটা মাইনার

@ সংগ্রামগ্রাম এটি আর এর সমাধান তবে আমি কীভাবে এটি কাজ করে তা কেবল বুঝতে চাই।
ডেটা মাইনার

উত্তর:


15

যদি আপনার শ্রেণিবদ্ধকারী স্কোর ছাড়াই কেবলমাত্র ফ্যাক্টর ফলাফল (কেবলমাত্র লেবেল) উত্পাদন করে তবে আপনি এখনও একটি আরওসি বক্ররেখা আঁকতে পারেন। তবে এই আরওসি বক্ররেখা কেবল একটি পয়েন্ট। আরওসি স্থান বিবেচনা করে, এই পয়েন্টগুলি হ'ল , যেখানে - মিথ্যা ধনাত্মক হার এবং - সত্য ধনাত্মক হার।(x,y)=(FPR,TPR)FPRTPR

উইকিপিডিয়া পৃষ্ঠায় এটি কীভাবে গণনা করা হয় সে সম্পর্কে আরও দেখুন ।

আপনি আপনার বিন্দুতে থেকে একটি লাইন আঁকতে এবং সেখান থেকে একটি আরওসি বক্ররেখার মতো দেখতে এই বিন্দুটি প্রসারিত করতে পারেন । সুতরাং আপনি একটি বক্ররেখা আছে।(0,0)(1,1)

তবে কোনও সিদ্ধান্তের জন্য ট্রি একটি লেবেল আউটপুট থেকে একটি সংখ্যাসূচক আউটপুট পর্যন্ত প্রসারিত করা সহজ। নোট করুন যে আপনি যখন সিদ্ধান্তের গাছের সাথে পূর্বাভাস দেন তখন আপনি মূল নোড থেকে নীচের লিফ নোডে যান, যেখানে আপনি সংখ্যাগরিষ্ঠ শ্রেণীর সাথে পূর্বাভাস দেন। যদি সেই শ্রেণীর পরিবর্তে আপনি সেই লিফ নোডে ক্লাসের অনুপাত ফিরিয়ে দেন তবে আপনার প্রতিটি শ্রেণির জন্য একটি স্কোর থাকবে। মনে করুন যে আপনার দুটি শ্রেণি রয়েছে এবং , এবং আপনার লিফ নোডে আপনার with সহ 10 উদাহরণ এবং with সহ 5 উদাহরণ রয়েছে , আপনি স্কোরগুলির একটি ভেক্টর ফিরে আসতে পারেন :TFTF(scoreT,scoreF)=(countTcountT+countF,countFcountT+countF)=(10/15,5/15)=(0.66,0.33)। এটি সত্যিই সঠিক স্কোরিং নিয়ম (এটি সম্ভাবনার পক্ষে সেরা অনুমানকারী নয়) নোট করে রাখুন এটি খেয়াল রাখুন, তবে আমি বিশ্বাস করি না কিছুই এর চেয়ে ভাল and


13

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

নিম্নলিখিত সিদ্ধান্ত গাছ কল্পনা (এটা এই একটি সামান্য বিট পরিবর্তিত সংস্করণ এক )

সিদ্ধান্ত গাছ উদাহরণ

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

উদাহরণস্বরূপ, নিম্নলিখিত ডেটা বিবেচনা করুন

উপাত্ত

আমরা এটি চালাই, এবং আউটপুটকে স্কোরগুলি বরাদ্দ করি, প্রকৃত লেবেলগুলিতে নয়। এটির সাহায্যে আমরা এখানে প্রস্তাবিত মতো একটি আরওসি বক্ররেখা আঁকতে পারি

রক বক্ররেখা

এটি আপনার প্রান্তিক অংশটি টিউনহোল্ড করার জন্য এটি ব্যবহার করার পক্ষে কিছুটা অর্থপূর্ণ নয় (যেহেতু অবশ্যই, সিদ্ধান্তের গাছের প্রান্তিকের মতো কিছু নেই), তবে এটি এখনও এটিউকে গণনা করতে ব্যবহার করা যেতে পারে, যা এই ক্ষেত্রে 0.92

আর কোড এখানে ব্যবহৃত:

outlook = c('rain', 'overcast', 'rain', 'sunny', 'rain', 
            'rain', 'sunny', 'overcast', 'overcast', 'overcast', 
            'sunny', 'sunny', 'rain', 'rain', 'overcast',
            'sunny', 'overcast', 'overcast', 'sunny', 'sunny',
            'sunny', 'overcast')
humidity = c(79, 74, 80, 60, 65, 79, 60, 74, 77, 80, 
             71, 70, 80, 65, 70, 56, 80, 70, 56, 70,
             71, 77)
windy = c(T, T, F, T, F, T, T, T, T, F, T, F, F, F, T, T, F, T, T, F, T, T)
play = c(F, F, T, F, T, F, F, T, T, T, F, F, T, T, T, T, T, T, F, T, F, T)

game = data.frame(outlook, humidity, windy, play)
game$score = NA

attach(game)
game$score[outlook == 'sunny' & humidity <= 70] = 5/8
game$score[outlook == 'sunny' & humidity > 70] = 1 - 3/4
game$score[outlook == 'overcast'] = 4/5
game$score[outlook == 'rain' & windy == T] = 1 - 2/2
game$score[outlook == 'rain' & windy == F] = 3/3
detach(game)

game$predict = game$score >= 0.5
game$correct = game$predict == game$play

library(ROCR)

pred = prediction(game$score, game$play)
roc = performance(pred, measure="tpr", x.measure="fpr")
plot(roc, col="orange", lwd=2) 
lines(x=c(0, 1), y=c(0, 1), col="red", lwd=2)

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