সিকিত শিখার সাথে মাল্টিক্লাস কেসটির জন্য কীভাবে নির্ভুলতা, প্রত্যাহার, নির্ভুলতা এবং এফ 1-স্কোর গণনা করা যায়?


109

আমি একটি সংবেদন বিশ্লেষণ সমস্যায় কাজ করছি যা ডেটা দেখতে এমন লাগে:

label instances
    5    1190
    4     838
    3     239
    1     204
    2     127

1190 instancesলেবেলযুক্ত হওয়ায় আমার ডেটা ভারসাম্যহীন 5। শ্রেণিবিন্যাসের জন্য আমি বিজ্ঞানের এসভিসি ব্যবহার করছি । সমস্যাটি হ'ল আমি জানি না যে মাল্টিক্লাস কেসটির জন্য নির্ভুলতা, প্রত্যাহার, নির্ভুলতা এবং এফ 1-স্কোর সঠিকভাবে গণনা করতে সঠিকভাবে আমার ডেটাগুলিতে কীভাবে ভারসাম্য বজায় রাখতে হয়। সুতরাং আমি নিম্নলিখিত পদ্ধতির চেষ্টা করেছি:

প্রথম:

    wclf = SVC(kernel='linear', C= 1, class_weight={1: 10})
    wclf.fit(X, y)
    weighted_prediction = wclf.predict(X_test)

print 'Accuracy:', accuracy_score(y_test, weighted_prediction)
print 'F1 score:', f1_score(y_test, weighted_prediction,average='weighted')
print 'Recall:', recall_score(y_test, weighted_prediction,
                              average='weighted')
print 'Precision:', precision_score(y_test, weighted_prediction,
                                    average='weighted')
print '\n clasification report:\n', classification_report(y_test, weighted_prediction)
print '\n confussion matrix:\n',confusion_matrix(y_test, weighted_prediction)

দ্বিতীয়ত:

auto_wclf = SVC(kernel='linear', C= 1, class_weight='auto')
auto_wclf.fit(X, y)
auto_weighted_prediction = auto_wclf.predict(X_test)

print 'Accuracy:', accuracy_score(y_test, auto_weighted_prediction)

print 'F1 score:', f1_score(y_test, auto_weighted_prediction,
                            average='weighted')

print 'Recall:', recall_score(y_test, auto_weighted_prediction,
                              average='weighted')

print 'Precision:', precision_score(y_test, auto_weighted_prediction,
                                    average='weighted')

print '\n clasification report:\n', classification_report(y_test,auto_weighted_prediction)

print '\n confussion matrix:\n',confusion_matrix(y_test, auto_weighted_prediction)

তৃতীয়:

clf = SVC(kernel='linear', C= 1)
clf.fit(X, y)
prediction = clf.predict(X_test)


from sklearn.metrics import precision_score, \
    recall_score, confusion_matrix, classification_report, \
    accuracy_score, f1_score

print 'Accuracy:', accuracy_score(y_test, prediction)
print 'F1 score:', f1_score(y_test, prediction)
print 'Recall:', recall_score(y_test, prediction)
print 'Precision:', precision_score(y_test, prediction)
print '\n clasification report:\n', classification_report(y_test,prediction)
print '\n confussion matrix:\n',confusion_matrix(y_test, prediction)


F1 score:/usr/local/lib/python2.7/site-packages/sklearn/metrics/classification.py:676: DeprecationWarning: The default `weighted` averaging is deprecated, and from version 0.18, use of precision, recall or F-score with multiclass or multilabel data or pos_label=None will result in an exception. Please set an explicit value for `average`, one of (None, 'micro', 'macro', 'weighted', 'samples'). In cross validation use, for instance, scoring="f1_weighted" instead of scoring="f1".
  sample_weight=sample_weight)
/usr/local/lib/python2.7/site-packages/sklearn/metrics/classification.py:1172: DeprecationWarning: The default `weighted` averaging is deprecated, and from version 0.18, use of precision, recall or F-score with multiclass or multilabel data or pos_label=None will result in an exception. Please set an explicit value for `average`, one of (None, 'micro', 'macro', 'weighted', 'samples'). In cross validation use, for instance, scoring="f1_weighted" instead of scoring="f1".
  sample_weight=sample_weight)
/usr/local/lib/python2.7/site-packages/sklearn/metrics/classification.py:1082: DeprecationWarning: The default `weighted` averaging is deprecated, and from version 0.18, use of precision, recall or F-score with multiclass or multilabel data or pos_label=None will result in an exception. Please set an explicit value for `average`, one of (None, 'micro', 'macro', 'weighted', 'samples'). In cross validation use, for instance, scoring="f1_weighted" instead of scoring="f1".
  sample_weight=sample_weight)
 0.930416613529

তবে আমি এই জাতীয় সতর্কতা পাচ্ছি:

/usr/local/lib/python2.7/site-packages/sklearn/metrics/classification.py:1172:
DeprecationWarning: The default `weighted` averaging is deprecated,
and from version 0.18, use of precision, recall or F-score with 
multiclass or multilabel data or pos_label=None will result in an 
exception. Please set an explicit value for `average`, one of (None, 
'micro', 'macro', 'weighted', 'samples'). In cross validation use, for 
instance, scoring="f1_weighted" instead of scoring="f1"

শ্রেণিবদ্ধের মেট্রিকগুলিতে সঠিকভাবে গণনা করতে আমি কীভাবে আমার ভারসাম্যহীন ডেটার সাথে সঠিকভাবে ডিল করতে পারি?


তাহলে averageতৃতীয় ক্ষেত্রে পরামিতি যুক্ত করবেন না কেন ?
ইয়াংজি

1
@ ইয়াংজি আমি জানি না আমি কেবল ডকুমেন্টেশন চেক করি তবে ভারসাম্যহীন ডেটার জন্য কীভাবে সঠিকভাবে মেট্রিক ব্যবহার করতে হয় তা আমি বুঝতে পারি না। আপনি কিছু বিস্তৃত ব্যাখ্যা এবং একটি উদাহরণ দিতে পারে ?. ধন্যবাদ!
new_with_python

উত্তর:


164

আমি মনে করি যেগুলি নিয়ে কী ওজন ব্যবহৃত হয় তা নিয়ে প্রচুর বিভ্রান্তি রয়েছে। আমি নিশ্চিত নই যে আমি আপনাকে ঠিক কীভাবে বিরক্ত করে তা আমি জানি তাই আমি বিভিন্ন বিষয় কভার করতে চলেছি, আমার সাথে সহ্য করুন;)।

ক্লাস ওজন

class_weightপ্যারামিটার থেকে ওজন শ্রেণিবদ্ধ প্রশিক্ষণ দিতে ব্যবহৃত হয় । তারা মেট্রিক্স আপনি ব্যবহার করছেন কোনো হিসাব ব্যবহৃত হয় না : বিভিন্ন শ্রেণী ওজন সঙ্গে, সংখ্যা বিভিন্ন কারণ ক্লাসিফায়ার ভিন্ন হতে হবে।

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

মেট্রিক্স

আপনার ক্লাসিফায়ার হয়ে গেলে আপনি এটি কতটা ভাল পারফর্ম করছে তা জানতে চান। এখানে আপনি মেট্রিক্স আপনাকে উল্লেখ ব্যবহার করতে পারেন: accuracy, recall_score, f1_score...

সাধারণত যখন শ্রেণি বিতরণ ভারসাম্যহীন থাকে তখন নির্ভুলতা একটি দুর্বল পছন্দ হিসাবে বিবেচিত হয় কারণ এটি এমন মডেলগুলিকে উচ্চ স্কোর দেয় যা সর্বাধিক ঘন শ্রেণীর পূর্বাভাস দেয়।

আমি এই সমস্ত মেট্রিকের বিবরণ দেবো না তবে নোট করুন যে ব্যতীত accuracyএগুলি স্বাভাবিকভাবেই ক্লাস স্তরে প্রয়োগ করা হয়েছে: আপনি যেমন printকোনও শ্রেণিবিন্যাসের প্রতিবেদনে দেখতে পাচ্ছেন তারা প্রতিটি শ্রেণির জন্য সংজ্ঞায়িত হয়েছে। তারা যেমন ধারণার উপর নির্ভর করে true positivesবা এর false negativeজন্য কোন শ্রেণিটি ইতিবাচক তা নির্ধারণ করা প্রয়োজন ।

             precision    recall  f1-score   support

          0       0.65      1.00      0.79        17
          1       0.57      0.75      0.65        16
          2       0.33      0.06      0.10        17
avg / total       0.52      0.60      0.51        50

সতর্কবার্তা

F1 score:/usr/local/lib/python2.7/site-packages/sklearn/metrics/classification.py:676: DeprecationWarning: The 
default `weighted` averaging is deprecated, and from version 0.18, 
use of precision, recall or F-score with multiclass or multilabel data  
or pos_label=None will result in an exception. Please set an explicit 
value for `average`, one of (None, 'micro', 'macro', 'weighted', 
'samples'). In cross validation use, for instance, 
scoring="f1_weighted" instead of scoring="f1".

আপনি এই সতর্কতাটি পেয়েছেন কারণ আপনি কীভাবে গণনা করা উচিত তা নির্ধারণ না করে আপনি F1- স্কোর, স্মরণ এবং নির্ভুলতা ব্যবহার করছেন! প্রশ্নটি পুনঃবিদ্রৃত করা যেতে পারে: উপরের শ্রেণিবিন্যাসের প্রতিবেদন থেকে, আপনি কীভাবে এফ 1-স্কোরের জন্য একটি গ্লোবাল নম্বর আউটপুট করবেন ? আপনি করতে পারেন:

  1. প্রতিটি শ্রেণীর জন্য f1-স্কোরের গড় নিন: এটি avg / totalউপরের ফলাফল। একে ম্যাক্রো গড় হিসাবেও বলা হয়।
  2. সত্য ধনাত্মক / মিথ্যা নেতিবাচক ইত্যাদি গ্লোবাল গণনা ব্যবহার করে F1-স্কোর গণনা করুন (আপনি প্রতিটি শ্রেণীর জন্য সত্য ধনাত্মক / মিথ্যা নেতিবাচক সংখ্যার যোগফল)। আকা মাইক্রো গড়।
  3. এফ 1-স্কোরের ওজনযুক্ত গড় গণনা করুন। 'weighted'স্কাইকিট-লার্ন ব্যবহার করে ক্লাসের সমর্থন দ্বারা এফ 1-স্কোরকে ওজন করা হবে: একটি শ্রেণীর যত বেশি উপাদান রয়েছে, গণনার ক্ষেত্রে এই শ্রেণীর জন্য F1-স্কোর তত বেশি গুরুত্বপূর্ণ।

এগুলি সাইকিট-লার্নিংয়ের 3 টি বিকল্প, সতর্কতাটি আপনাকে বলতে হবে যে একটি বাছাই করতে হবে । সুতরাং আপনাকে averageস্কোর পদ্ধতির জন্য একটি আর্গুমেন্ট নির্দিষ্ট করতে হবে ।

আপনি কোনটি বেছে নিন তা আপনি শ্রেণিবদ্ধের পারফরম্যান্সটি কীভাবে পরিমাপ করতে চান তা নির্ভর করে: উদাহরণস্বরূপ ম্যাক্রো-এভারেজিং ক্লাসের ভারসাম্যহীনতাটিকে বিবেচনায় নেয় না এবং ক্লাস 1 এর f1- স্কোরটি ক্লাসের F1- স্কোরের মতোই গুরুত্বপূর্ণ হবে ৫. আপনি যদি ওজন গড়ে গড় ব্যবহার করেন তবে ক্লাস ৫ এর জন্য আপনি আরও বেশি গুরুত্ব পাবেন।

এই মেট্রিকগুলির পুরো আর্গুমেন্টের স্পেসিফিকেশন এখনই বিজ্ঞান-শিখতে খুব স্পষ্ট নয়, ডক্স অনুসারে এটি 0.18 সংস্করণে আরও ভাল হবে। তারা কিছু অ-সুস্পষ্ট মানক আচরণ সরিয়ে দিচ্ছে এবং তারা সতর্কতা জারি করছে যাতে বিকাশকারীরা এটি লক্ষ্য করে।

গণনা স্কোর

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

এটি ব্যবহার করে করার একটি উপায় এখানে StratifiedShuffleSplitলেবেল বিতরণ সংরক্ষণ করে এমন আপনাকে আপনার ডেটা (এলোমেলো করার পরে) এলোমেলো বিভাজন দেয়।

from sklearn.datasets import make_classification
from sklearn.cross_validation import StratifiedShuffleSplit
from sklearn.metrics import accuracy_score, f1_score, precision_score, recall_score, classification_report, confusion_matrix

# We use a utility to generate artificial classification data.
X, y = make_classification(n_samples=100, n_informative=10, n_classes=3)
sss = StratifiedShuffleSplit(y, n_iter=1, test_size=0.5, random_state=0)
for train_idx, test_idx in sss:
    X_train, X_test, y_train, y_test = X[train_idx], X[test_idx], y[train_idx], y[test_idx]
    svc.fit(X_train, y_train)
    y_pred = svc.predict(X_test)
    print(f1_score(y_test, y_pred, average="macro"))
    print(precision_score(y_test, y_pred, average="macro"))
    print(recall_score(y_test, y_pred, average="macro"))    

আশাকরি এটা সাহায্য করবে.


একটি মাল্টিক্লাসের জন্য, আপনি কীভাবে শ্রেণীর ওজন নির্দিষ্ট করবেন? উদাহরণস্বরূপ, class_weight={1:10}3 শ্রেণি রয়েছে এমন ডেটার অর্থ কী?
আজিজ জাভেদ

লেবেল অনুসারে নির্ভুলতার স্কোরগুলি পেতে কী কী আছে?
অঙ্কুর সিনহা

মাইক্রো কীভাবে আরও স্পষ্টভাবে কাজ করে তা আপনি ব্যাখ্যা করতে পারেন। এছাড়াও আপনি বাইনারি সম্পর্কে কোনও কিছুই উল্লেখ করবেন না
নম্র

আমার জন্য স্ট্র্যাটেড শ্যাফেল ইস্যু তৈরি করছিল তাই আমি যখন ট্রেন-টেস্ট বিভক্ত হয়ে যাচ্ছিলাম ততক্ষণে ফিরে এসেছি ValueError: The least populated class in y has only 1 member, which is too few. The minimum number of labels for any class cannot be less than 2.। এটি ট্রেন-পরীক্ষা বিভাজনের সাথে দুর্দান্ত কাজ করছে তবে কেউ এসএসএসের সাহায্যে আমি কেন এই ত্রুটিটি পাচ্ছি তা আমাকে সাহায্য করতে পারে? ধন্যবাদ।
আকাশ কান্দপাল

এইচআই আমি আপনার কোডটি পরীক্ষা করেছি তবে আমার কাছে এই ত্রুটি বার্তা রয়েছে সি: \ ব্যবহারকারীগণ \\ অ্যানাকোন্ডা 3 \ lib \ সাইট-প্যাকেজগুলি le sklearn \ মেট্রিক্স \ শ্রেণিবদ্ধি.পি: 976: অবমানন সতর্কতা: সংস্করণ 0.18 থেকে, বাইনারি ইনপুটটি বিশেষভাবে ব্যবহার করা হবে না গড় নির্ভুলতা / স্মরণ / এফ-স্কোর। কেবলমাত্র ইতিবাচক শ্রেণির পারফরম্যান্সের প্রতিবেদন করতে দয়া করে গড় = 'বাইনারি' ব্যবহার করুন। 'ইতিবাচক শ্রেণির পারফরম্যান্স।',
অবজ্ঞাপনের সতর্কতা

73

এখানে খুব বিস্তারিত উত্তর রয়েছে তবে আমি মনে করি না আপনি সঠিক প্রশ্নের উত্তর দিচ্ছেন। আমি যেমন প্রশ্নটি বুঝতে পারি, তখন দুটি উদ্বেগ রয়েছে:

  1. আমি কীভাবে একটি মাল্টিক্লাস সমস্যা স্কোর করব?
  2. আমি ভারসাম্যহীন ডেটা কীভাবে মোকাবিলা করব?

1।

আপনি একক শ্রেণীর সমস্যা হিসাবে বহু উভয় সমস্যার সাথেই স্কাইকিট-শিখায় বেশিরভাগ স্কোরিং ফাংশন ব্যবহার করতে পারেন। প্রাক্তন .:

from sklearn.metrics import precision_recall_fscore_support as score

predicted = [1,2,3,4,5,1,2,1,1,4,5] 
y_test = [1,2,3,4,5,1,2,1,1,4,1]

precision, recall, fscore, support = score(y_test, predicted)

print('precision: {}'.format(precision))
print('recall: {}'.format(recall))
print('fscore: {}'.format(fscore))
print('support: {}'.format(support))

এইভাবে আপনি ক্লাসের প্রতিটি জন্য স্পষ্ট এবং ব্যাখ্যাযোগ্য নম্বর দিয়ে শেষ।

| Label | Precision | Recall | FScore | Support |
|-------|-----------|--------|--------|---------|
| 1     | 94%       | 83%    | 0.88   | 204     |
| 2     | 71%       | 50%    | 0.54   | 127     |
| ...   | ...       | ...    | ...    | ...     |
| 4     | 80%       | 98%    | 0.89   | 838     |
| 5     | 93%       | 81%    | 0.91   | 1190    |

তারপর ...

2।

... ভারসাম্যহীন ডেটা এমনকি সমস্যা কিনা তা আপনি বলতে পারেন। আরও প্রশিক্ষণের নমুনা (ক্লাস 4 এবং 5) সহ ক্লাসের তুলনায় যদি কম প্রতিনিধিত্ব করা ক্লাসের (ক্লাস 1 এবং 2) এর স্কোরিং কম হয় তবে আপনি জানেন যে ভারসাম্যহীন ডেটা আসলে একটি সমস্যা এবং আপনি সেই অনুযায়ী কাজ করতে পারেন এই থ্রেডে অন্য কয়েকটি উত্তর বর্ণিত। তবে, একই বর্গ বিতরণ যদি আপনি পূর্বাভাস দিতে চান এমন ডেটাতে উপস্থিত থাকে তবে আপনার ভারসাম্যহীন প্রশিক্ষণ ডেটা ডেটাগুলির একটি ভাল প্রতিনিধি এবং তাই, ভারসাম্যহীনতা একটি ভাল জিনিস।


1
দুর্দান্ত পোস্ট এবং ভাল বলেছেন। ধন্যবাদ
অ্যালভিস

1
আরে কেবল একটি ফলো-আপ প্রশ্ন: আপনি কীভাবে লেবেলগুলি ব্যবহার করে মুদ্রণ করেছেন precision_recall_fscore_support? অর্ডার দ্বারা লেবেলগুলি মুদ্রিত হয়?
বিগডি

@ বিগডি হ্যাঁ, একেবারে নীচের অংশে বিজ্ঞান-বিজ্ঞপ্তি.অ্যাaverage=Noneলেবেলগুলি সেট এবং সংজ্ঞায়িত করুন, তারপরে আপনার নির্দিষ্ট প্রতিটি লেবেলের জন্য আপনি যে মেট্রিকটি সন্ধান করছেন তা পাবেন।
আশ্চর্যজনকভাবে

লেবেল অনুসারে নির্ভুলতার স্কোরগুলি পেতে কী কী আছে?
অঙ্কুর সিনহা

@ ট্রোলস্টার আমি নিশ্চিত আপনি কি বলতে চাইছেন না? আমি উত্তরের লেবেলযুক্ত নির্ভুলতার স্কোরগুলিতে যা দেখছি তা নয়?
আশ্চর্যজনকভাবে

15

প্রশ্ন উত্থাপন

'ভারসাম্যহীন ডেটা সহ বহু শ্রেণীর শ্রেণিবিন্যাসের জন্য কী মেট্রিক ব্যবহার করা উচিত' এই প্রশ্নের জবাবে: ম্যাক্রো-এফ 1-পরিমাপ। ম্যাক্রো যথার্থ এবং ম্যাক্রো রিকালও ব্যবহার করা যেতে পারে তবে বাইনারি শ্রেণিবদ্ধের জন্য এগুলি এত সহজে ব্যাখ্যাযোগ্য নয়, তারা ইতিমধ্যে এফ-পরিমাপে অন্তর্ভুক্ত রয়েছে এবং অতিরিক্ত মেট্রিকগুলি পদ্ধতিগুলির তুলনা, পরামিতিগুলির সুরকরণ এবং আরও জটিল করে তোলে।

মাইক্রো এভারেজিং শ্রেনী ভারসাম্যহীনতার জন্য সংবেদনশীল: যদি আপনার পদ্ধতিটি উদাহরণস্বরূপ, সর্বাধিক সাধারণ লেবেলগুলির পক্ষে ভাল কাজ করে এবং অন্যকে পুরোপুরি মিস করে তবে মাইক্রো-এভারেজেড মেট্রিকগুলি ভাল ফলাফল দেখায়।

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

সোকলোভা, মেরিনা এবং গাই ল্যাপালমে। "শ্রেণিবদ্ধকরণ কার্যগুলির জন্য কর্মক্ষমতা ব্যবস্থাগুলির একটি পদ্ধতিগত বিশ্লেষণ।" তথ্য প্রক্রিয়াকরণ এবং পরিচালনা 45.4 (2009): 427-437।

অ্যাপ্লিকেশন-নির্দিষ্ট প্রশ্ন

যাইহোক, আপনার কার্যে ফিরে, আমি 2 টি বিষয় নিয়ে গবেষণা করব:

  1. আপনার নির্দিষ্ট কাজের জন্য সাধারণত ব্যবহৃত মেট্রিকগুলি - এটি (ক) অন্যদের সাথে আপনার পদ্ধতির তুলনা করতে এবং আপনি কোনও ভুল করেন কিনা তা বুঝতে দেয় এবং (খ) নিজের দ্বারা এটি অন্বেষণ না করে এবং অন্যের অনুসন্ধানগুলি পুনরায় ব্যবহার করতে দেয়;
  2. আপনার পদ্ধতির বিভিন্ন ত্রুটির ব্যয় - উদাহরণস্বরূপ, আপনার অ্যাপ্লিকেশনটির ব্যবহারের ক্ষেত্রে কেবল 4- এবং 5-তারা পর্যালোচনাগুলির উপর নির্ভর করা যেতে পারে - এই ক্ষেত্রে ভাল মেট্রিককে এই 2 টি লেবেলই গণনা করা উচিত।

সাধারণত ব্যবহৃত মেট্রিক্স। আমি যেমন সাহিত্যের সন্ধানের পরে অনুমান করতে পারি, সেখানে 2 টি মূল মূল্যায়ন মেট্রিক রয়েছে:

  1. নির্ভুলতা , যা ব্যবহৃত হয়, যেমন

ইউ, এপ্রিল এবং ড্যারিল চ্যাং। "ইয়েলপ বিজনেস ব্যবহার করে মাল্টিক্লাস সেন্টিমেন্ট প্রেডিকশন" "

( লিঙ্ক ) - নোট করুন যে লেখকরা রেটিংয়ের প্রায় একই বিতরণ নিয়ে কাজ করেন, চিত্র 5 দেখুন।

পাং, বো, এবং লিলিয়ান লি। "তারকারা দেখছেন: রেটিং আইশের ক্ষেত্রে শ্রেনীকরণের শ্রেণিবদ্ধকরণের জন্য শ্রেণীর সম্পর্কের অন্বেষণ" " অ্যাসোসিয়েশন ফর কম্পিউটেশনাল ভাষাতত্ত্ব সম্পর্কিত 43 তম বার্ষিক সভার কার্যক্রম। অ্যাসোসিয়েশন ফর কম্পিউটেশনাল ভাষাতত্ত্ব, 2005

( লিঙ্ক )

  1. এমএসই (বা, কম প্রায়ই, অর্থ সম্পূর্ণ ত্রুটি - এমএই ) - দেখুন, উদাহরণস্বরূপ,

লি, মুন্তে এবং আর গ্রাফ। "রেস্তোঁরা পর্যালোচনার সাথে মাল্টিক্লাস সংবেদন বিশ্লেষণ।" সিএস এন 224 (2010) থেকে চূড়ান্ত প্রকল্পগুলি।

( লিঙ্ক ) - তারা পরবর্তীকে আরও ভাল হিসাবে বিবেচনা করে যথার্থতা এবং এমএসই উভয়ই অন্বেষণ করে

পাপ্পাস, নিকোলোস, রুয়ে মার্কনি এবং আন্দ্রে পোপেস্কু-বেলিস। "নক্ষত্রগুলির ব্যাখ্যা: অ্যাসপেক্ট ভিত্তিক সংবেদন বিশ্লেষণের জন্য ওজনযুক্ত একাধিক-ইনস্ট্যান্স লার্নিং"। প্রাকৃতিক ভাষা প্রক্রিয়াজাতকরণের অনুগত পদ্ধতিতে 2014 এর সম্মেলনের কার্যক্রম। নং EPFL-CONF-200899 2008 2014।

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

বিভিন্ন ত্রুটির ব্যয় যদি আপনি স্থূল ত্রুটিগুলি এড়ানোর বিষয়ে বেশি যত্নশীল হন, যেমন 1-তারকাকে 5-তারা পর্যালোচনা বা এমন কিছু দেওয়ার আশ্বাস, এমএসই দেখুন; পার্থক্যটি যদি গুরুত্বপূর্ণ হয় তবে খুব বেশি না, এমএই চেষ্টা করুন, যেহেতু এটি স্কোয়ার পৃথক নয়; অন্যথায় নির্ভুলতার সাথে থাকুন।

পদ্ধতির সম্পর্কে, মেট্রিকগুলি নয়

রিগ্রেশন পদ্ধতির চেষ্টা করুন, যেমন এসভিআর , যেহেতু তারা সাধারণত এসভিসি বা ওভিএ এসভিএমের মতো মাল্টিক্লাস শ্রেণিবদ্ধগুলিকে ছাড়িয়ে যায়।


12

প্রথমত আপনার ডেটা ভারসাম্যহীন কিনা তা জানাতে কেবল গণনা বিশ্লেষণ ব্যবহার করা কিছুটা শক্ত। উদাহরণস্বরূপ: 1000 সালে 1 ইতিবাচক পর্যবেক্ষণটি কি কেবল একটি শব্দ, ত্রুটি বা বিজ্ঞানের একটি যুগান্তকারী? আপনি কখনো জানেন না.
সুতরাং আপনার সমস্ত উপলভ্য জ্ঞান ব্যবহার করা এবং সর্বদা বিজ্ঞের সাথে এর স্থিতি পছন্দ করা সর্বদা ভাল।

ঠিক আছে, যদি এটি সত্যিই ভারসাম্যহীন হয়?
আবার - আপনার ডেটা তাকান। কখনও কখনও আপনি এক বা দুটি পর্যবেক্ষণটি सौ গুণ দ্বারা গুণিত পেতে পারেন। কখনও কখনও এটি এই জাল এক-শ্রেণীর-পর্যবেক্ষণ তৈরি করতে দরকারী।
সমস্ত ডেটা যদি পরিষ্কার থাকে তবে পরবর্তী পদক্ষেপটি হল পূর্বাভাসের মডেলটিতে শ্রেণীর ওজন ব্যবহার করা।

তাহলে মাল্টিক্লাস মেট্রিকের কী হবে?
আমার অভিজ্ঞতায় আপনার মেট্রিকগুলির কোনওটিই সাধারণত ব্যবহৃত হয় না। দুটি প্রধান কারণ আছে।
প্রথম: দৃ pred় পূর্বাভাসের চেয়ে সম্ভাবনার সাথে কাজ করা সর্বদা ভাল (কারণ আপনি যদি ০.৯ এবং ০..6 পূর্বাভাসের সাথে মডেলগুলি পৃথক করতে পারেন তবে তারা উভয়ই আপনাকে একই শ্রেণি দেয়?)
এবং দ্বিতীয়: আপনার পূর্বাভাসের মডেলগুলি তুলনা করা এবং নতুন তৈরি করা আরও সহজ কেবলমাত্র একটি ভাল মেট্রিকের উপর নির্ভর করে।
আমার অভিজ্ঞতা থেকে আমি লগলস বা এমএসই সুপারিশ করতে পারি (বা কেবল স্কোয়ার ত্রুটির অর্থ)।

স্ক্যালার্ন সতর্কতাগুলি কীভাবে ঠিক করবেন?
কেবল সহজভাবে (যেমন ইয়াংজি লক্ষ্য করেছেন) averageএই মানগুলির একটির সাথে প্যারামিটারটি ওভাররাইট করুন : 'micro'(বিশ্বব্যাপী মেট্রিক গণনা করুন), 'macro'(প্রতিটি লেবেলের জন্য মেট্রিক গণনা করুন) বা 'weighted'(ম্যাক্রোর মতো তবে অটো ওজন সহ)

f1_score(y_test, prediction, average='weighted')

আপনার সমস্ত সতর্কতাগুলি ডিফল্ট averageমান সহ মেট্রিক্স ফাংশনগুলিতে কল করার পরে এসেছিল 'binary'যা মাল্টিক্লাসের পূর্বাভাসের পক্ষে অনুপযুক্ত।
শুভকামনা এবং মেশিন শেখার সাথে মজা করুন!

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

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

এর পরে আপনি গণনা বা জ্যামিতিক গড় গণনা করতে পারেন ভবিষ্যদ্বাণীগুলির মধ্যে এবং বেশিরভাগ সময় আপনি আরও ভাল ফলাফল পাবেন।

final_prediction = (KNNprediction * RFprediction) ** 0.5

1
> "রিগ্রেশন এবং শ্রেণিবিন্যাসের মধ্যে স্যুইচ করুন (যদি শ্রেণিগুলি কোনওভাবে সাজানো থাকে তবে তবে এটি খুব বিরল") এটি ক্ষেত্রে: 5> 4> 3> 2> ১। আমি আপনাকে এই কাজের জন্য কাগজগুলি একবার দেখে নেওয়ার পরামর্শ দিই - এখানে রয়েছে কাজের জন্য অনেক রিগ্রেশন এবং শ্রেণিবিন্যাসের পদ্ধতি (কখনও কখনও একই কাজে)।
নিকিতা আস্ট্রখান্তসেভ

তারপরে এটি এমনকি কোনও মাল্টিক্লাস শ্রেণিবিন্যাস নয় বরং একটি সাধারণ রিগ্রেশন।
ভ্লাদ মিরনভ

হ্যাঁ, অভ্যন্তরীণভাবে, বা এমএল দৃষ্টিকোণ থেকে, এটি একটি রিগ্রেশন, তবে চূড়ান্ত পদক্ষেপে আমরা রিগ্রেশন ফলাফলগুলিকে লেবেলে রূপান্তর করি, সুতরাং এটি একটি মাল্টিক্লাস শ্রেণিবিন্যাস - ব্যবহারকারী বা অ্যাপ্লিকেশন, দৃষ্টিকোণ থেকে।
নিকিতা আস্ট্রখান্তসেভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.