সাবসেট নির্ভুলতা প্রকৃতপক্ষে একটি কঠোর মেট্রিক। 0.29 কতটা ভাল বা খারাপ তা অনুধাবন করতে কিছু ধারণা:
- প্রতিটি নমুনার জন্য আপনার কত গড় লেবেল রয়েছে তা দেখুন
- আন্ত-এনোটোটার চুক্তিটি দেখুন, যদি উপলভ্য থাকে (যদি তা না হয় তবে আপনি শ্রেণিবদ্ধ হওয়ার সময় কী সাবসেটটি পেয়েছেন তা সঠিকভাবে দেখার চেষ্টা করুন)
- বিষয় ভালভাবে সংজ্ঞায়িত করা হয়েছে কিনা তা ভাবুন
- প্রতিটি লেবেলের জন্য আপনার কতটি নমুনা রয়েছে তা দেখুন
আপনিও হ্যামিং স্কোর গণনা করতে চাইতে পারেন, আপনার শ্রেণিবদ্ধটি নিখুঁত কিনা, পরিবর্তে শালীনভাবে ভাল তবে সমস্ত লেবেলকে সঠিকভাবে ভবিষ্যদ্বাণী করা করতে সমস্যা রয়েছে তা দেখতে। হামিং স্কোর গণনা করতে নীচে দেখুন।
একই সাথে, আমি যা বুঝতে পেরেছি সেগুলি থেকে আমি ওয়ানভিএসআরস্টক্লাসিফায়ার দিয়ে সাইকিট.মেট্রিক্স ব্যবহার করতে পারি না তাই আমি কীভাবে কিছু মেট্রিক (এফ 1, যথার্থতা, পুনর্বিবেচনা ইত্যাদি) পেতে পারি যাতে ভুল কী?
দেখুন multiclass-multilabel শ্রেণীবিভাগ জন্য গনা কিভাবে স্পষ্টতা / রিকল? । আমি ভুলে গিয়েছিলাম যে স্ক্লার্ন এটি সমর্থন করে কিনা, আমি মনে করি এটির কিছু সীমাবদ্ধতা ছিল, উদাহরণস্বরূপ স্ক্লেয়ারন কনফিউশন ম্যাট্রিক্সের জন্য মাল্টি-লেবেল সমর্থন করে না । এই সংখ্যাগুলি দেখতে সত্যিই ভাল ধারণা হবে good
হামিং স্কোর :
একটি multilabel শ্রেণীবিন্যাস সেটিং sklearn.metrics.accuracy_score
শুধুমাত্র নির্ণয় উপসেট সঠিকতা অর্থাত একটি নমুনা ঠিক y_true মধ্যে লেবেলের সংশ্লিষ্ট সেট মেলানো জন্য আগাম অনুমান লেবেলের সেট: (3)।
নির্ভুলতার গণনার এই পদ্ধতিটির নামকরণ করা হয়েছে কিছুটা সময়, সম্ভবত কম অস্পষ্টতার সাথে, সঠিক মিলের অনুপাত (1):
নির্ভুলতা গণনার আর একটি সাধারণ উপায় (1) এবং (2) এ সংজ্ঞায়িত করা হয়েছে, এবং হ্যামিং স্কোর (4) (যেহেতু এটি হামিং ক্ষতির সাথে নিবিড়ভাবে সম্পর্কিত) বা লেবেল-ভিত্তিক নির্ভুলতা হিসাবে সংজ্ঞায়িত করা হয়েছে কম সংজ্ঞায়িতভাবে । এটি নিম্নলিখিত হিসাবে গণনা করা হয়:
হামিং স্কোর গণনা করার জন্য এখানে অজগর পদ্ধতি রয়েছে:
# Code by /programming//users/1953100/william
# Source: /programming//a/32239764/395857
# License: cc by-sa 3.0 with attribution required
import numpy as np
y_true = np.array([[0,1,0],
[0,1,1],
[1,0,1],
[0,0,1]])
y_pred = np.array([[0,1,1],
[0,1,1],
[0,1,0],
[0,0,0]])
def hamming_score(y_true, y_pred, normalize=True, sample_weight=None):
'''
Compute the Hamming score (a.k.a. label-based accuracy) for the multi-label case
/programming//q/32239577/395857
'''
acc_list = []
for i in range(y_true.shape[0]):
set_true = set( np.where(y_true[i])[0] )
set_pred = set( np.where(y_pred[i])[0] )
#print('\nset_true: {0}'.format(set_true))
#print('set_pred: {0}'.format(set_pred))
tmp_a = None
if len(set_true) == 0 and len(set_pred) == 0:
tmp_a = 1
else:
tmp_a = len(set_true.intersection(set_pred))/\
float( len(set_true.union(set_pred)) )
#print('tmp_a: {0}'.format(tmp_a))
acc_list.append(tmp_a)
return np.mean(acc_list)
if __name__ == "__main__":
print('Hamming score: {0}'.format(hamming_score(y_true, y_pred))) # 0.375 (= (0.5+1+0+0)/4)
# For comparison sake:
import sklearn.metrics
# Subset accuracy
# 0.25 (= 0+1+0+0 / 4) --> 1 if the prediction for one sample fully matches the gold. 0 otherwise.
print('Subset accuracy: {0}'.format(sklearn.metrics.accuracy_score(y_true, y_pred, normalize=True, sample_weight=None)))
# Hamming loss (smaller is better)
# $$ \text{HammingLoss}(x_i, y_i) = \frac{1}{|D|} \sum_{i=1}^{|D|} \frac{xor(x_i, y_i)}{|L|}, $$
# where
# - \\(|D|\\) is the number of samples
# - \\(|L|\\) is the number of labels
# - \\(y_i\\) is the ground truth
# - \\(x_i\\) is the prediction.
# 0.416666666667 (= (1+0+3+1) / (3*4) )
print('Hamming loss: {0}'.format(sklearn.metrics.hamming_loss(y_true, y_pred)))
আউটপুট:
Hamming score: 0.375
Subset accuracy: 0.25
Hamming loss: 0.416666666667
(১) সোভারার, মোহাম্মদ এস। " মাল্টি-লেবেল শেখার জন্য অ্যালগরিদম সম্পর্কিত একটি সাহিত্য জরিপ। " ওরেগন স্টেট বিশ্ববিদ্যালয়, করভালিস (২০১০) 2010
(২) সৈওমাকাস, গ্রিগরিওস এবং আইওনিস কাটাকিস। " মাল্টি-লেবেল শ্রেণিবদ্ধকরণ: একটি ওভারভিউ। " ইনফরম্যাটিকস বিভাগ, থিসালোনিকি, অ্যারিস্টটল ইউনিভার্সিটি অফ গ্রীস (2006)।
(3) ঘামরাবি, নাদিয়া এবং অ্যান্ড্রু ম্যাককালাম। " সম্মিলিত মাল্টি-লেবেল শ্রেণিবদ্ধকরণ। " তথ্য ও জ্ঞান পরিচালনার বিষয়ে 14 তম এসিএম আন্তর্জাতিক সম্মেলনের কার্যক্রম। এসিএম, 2005
(৪) গডবোলে, শান্তনু, এবং সুনিতা সরওয়াগী। " বহু-লেবেলযুক্ত শ্রেণিবদ্ধকরণের জন্য বৈষম্যমূলক পদ্ধতি " "জ্ঞান আবিষ্কার এবং ডেটা মাইনিংয়ে অগ্রগতি। স্প্রিঞ্জার বার্লিন হাইডেলবার্গ, 2004. 22-30।