समायोज्य परिशुद्धता बनाम याद के साथ वर्गीकरण


11

मैं एक द्विआधारी वर्गीकरण समस्या पर काम कर रहा हूं जहां झूठी सकारात्मकता न होना बहुत महत्वपूर्ण है; बहुत सारे झूठे नकारात्मक हैं ठीक है। मैंने उदाहरण के लिए स्केलेर में क्लासिफायर का एक गुच्छा इस्तेमाल किया है, लेकिन मुझे लगता है कि उनमें से कोई भी सटीक-रिकॉल ट्रेडऑफ को स्पष्ट रूप से समायोजित करने की क्षमता नहीं है (वे बहुत अच्छे परिणाम उत्पन्न करते हैं लेकिन समायोज्य नहीं हैं)।

किस कक्षा में समायोज्य परिशुद्धता / याद है? क्या मानक क्लासिफायर पर सटीक / रिकॉल ट्रेडऑफ़ को प्रभावित करने का कोई तरीका है, जैसे रैंडम फ़ॉरेस्ट या AdaBoost?

जवाबों:


12

लगभग सभी scikit-learn के क्लासीफायर निर्णय मान ( decision_functionया के माध्यम से predict_proba) दे सकते हैं ।

निर्णय मूल्यों के आधार पर सटीक-रिकॉल और / या आरओसी घटता की गणना करना सीधा है। scikit-learn अपने मेट्रिक्स सबमॉड्यूल में उन कार्यों को प्रदान करता है ।

एक न्यूनतम उदाहरण, आपके पास 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()

पूर्ण धन्यवाद! यकीन नहीं होता कि मैं कैसे चूक गया :)
एलेक्स I

लगता है precision_recall_curveकि पूरे एफ 1 की गणना करें। केवल नकारात्मक लोगों की गणना कैसे करें?
मिथिल

6

मैंने इस क्यू में टकराए जाने से पहले सिर्फ अपने लिए इसे हल किया है इसलिए मैंने अपना समाधान साझा करने का फैसला किया है।

यह उसी दृष्टिकोण का उपयोग करता है जिसे मार्क क्लेसेन ने प्रस्तावित किया है, लेकिन एक्टॉल प्रश्न का उत्तर देता है कि याद करने के लिए सटीक अक्ष ट्रेडिंग पर उच्चतर स्थानांतरित करने के लिए क्लासिफायर को कैसे समायोजित किया जाए।

X_test डेटा है और 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])

और यह है कि आप अपनी भविष्यवाणी को समायोजित करने के लिए नए सीखे डी न्यूनतम सीमा का उपयोग करेंगे (कि आप अन्यथा केवल कॉलिंग भविष्यवाणी (X_test) प्राप्त करेंगे)

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

जो वर्ग संभावनाओं का उत्पादन करता है। फिर दहलीज, पी को समायोजित करने के लिए विभिन्न मैट्रिक्स का उपयोग करें, जिसे आप छद्म कोड का पालन करके निर्णय में उपयोग करते हैं

अगर p (y)> P, तो y = 1 और y = 0 एंडिफ

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.