সামঞ্জস্যযোগ্য নির্ভুলতা বনাম স্মরণ সহ শ্রেণিবদ্ধকারী


11

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

কোন শ্রেণিবদ্ধদের সামঞ্জস্যযোগ্য নির্ভুলতা / পুনরুদ্ধার আছে? স্ট্যান্ডার্ড শ্রেণিবদ্ধে উদাহরণস্বরূপ র্যান্ডম ফরেস্ট বা অ্যাডাবোস্টে স্পষ্টতা / রেকর্ড ট্রেড অফকে প্রভাবিত করার কোনও উপায় আছে কি?

উত্তর:


12

সাইকিট-লার্নের প্রায় সমস্ত শ্রেণিবদ্ধ সিদ্ধান্তের মান দিতে পারে (মাধ্যমে decision_functionবা predict_proba)।

সিদ্ধান্তের মানগুলির উপর ভিত্তি করে যথার্থ-রিক্যাল এবং / অথবা আরওসি রেখাচিত্রগুলি গণনা করা সহজ straight সাইকিট-লার্ন তার মেট্রিক্স সাবমডিউলে সেই ফাংশন সরবরাহ করে ।

একটি ন্যূনতম উদাহরণ, ধরে নিচ্ছি dataএবং আপনার labelsউপযুক্ত সামগ্রী সহ:

import sklearn.svm
import sklearn.metrics
from matplotlib import pyplot as plt

clf = sklearn.svm.LinearSVC().fit(data, labels)
decision_values = clf.decision_function(data)

precision, recall, thresholds = sklearn.metrics.precision_recall_curve(labels, decision_values)

plt.plot(recall, precision)
plt.show()

নিখুঁত তোমাকে ধন্যবাদ! আমি কীভাবে এটি মিস করেছি তা নিশ্চিত নই :)
অ্যালেক্স আমি

দেখে মনে হচ্ছে precision_recall_curveপুরো এফ 1 গণনা করুন। কীভাবে কেবল নেতিবাচকগুলি গণনা করবেন?
মিথিল

6

আমি এই কিউতে প্রবেশের আগে কেবল নিজের জন্য এটি সমাধান করেছি তাই আমি আমার সমাধানটি ভাগ করে নেওয়ার সিদ্ধান্ত নিয়েছি।

এটি মারক ক্লেসেন প্রস্তাবিত একই পদ্ধতির ব্যবহার করে তবে কীভাবে শ্রেণিবদ্ধকে সামঞ্জস্য করা যায় তার পুনরুত্থানের বাইরে যথার্থ অক্ষের ট্রেডিংয়ে উচ্চতর স্থানান্তর করতে কীভাবে সামঞ্জস্য করা যায় তার বাস্তব প্রশ্নের উত্তর দেয়।

এক্স_েস্ট হ'ল ডেটা এবং y_test হ'ল সত্য লেবেল। শ্রেণিবদ্ধটি ইতিমধ্যে ফিট করা উচিত।

y_score = clf.decision_function(X_test)

prcsn,rcl,thrshld=precision_recall_curve(y_test,y_score)

min_prcsn=0.25 # here is your precision lower bound e.g. 25%
min_thrshld=min([thrshld[i] for i in range(len(thrshld)) if prcsn[i]>min_prcsn])

এবং আপনার ভবিষ্যদ্বাণীটি সামঞ্জস্য করতে আপনি এভাবে নতুন লার্ন ডি ন্যূনতম প্রান্তকে ব্যবহার করবেন (যে আপনি অন্যথায় কেবল কলিং প্রেডিক্টটি পাবেন (এক্স_টেষ্ট))

y_pred_adjusted=[1 if y_s>min_thrshld else 0 for y_s in y_score]

এই সমন্বয় রেসিপি সম্পর্কে আপনার প্রতিক্রিয়া শুনতে ভাল লাগবে।


1

এখানে ফাংশন

http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html#sklearn.ensemble.RandomForestClassifier.predict_proba

যা শ্রেণীর সম্ভাবনা তৈরি করে। তারপরে থ্রোসোল্ড, পি সমন্বয় করতে বিভিন্ন মেট্রিক ব্যবহার করুন যা সিউডো কোড অনুসরণ করে আপনি সিদ্ধান্তে ব্যবহার করেন

যদি পি (y)> পি হয়, তবে y = 1 অন্য y = 0 এন্ডিফ

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