আমি ভাবছি যে কীভাবে নির্ভুলতা গণনা করতে হবে এবং মাল্টিক্লাস মাল্টিলেবল শ্রেণিবদ্ধকরণের জন্য প্রতিকারগুলি পুনরুদ্ধার করতে হবে, যেখানে শ্রেণিবিন্যাস যেখানে দুটির বেশি লেবেল রয়েছে এবং যেখানে প্রতিটি উদাহরণে একাধিক লেবেল থাকতে পারে?
আমি ভাবছি যে কীভাবে নির্ভুলতা গণনা করতে হবে এবং মাল্টিক্লাস মাল্টিলেবল শ্রেণিবদ্ধকরণের জন্য প্রতিকারগুলি পুনরুদ্ধার করতে হবে, যেখানে শ্রেণিবিন্যাস যেখানে দুটির বেশি লেবেল রয়েছে এবং যেখানে প্রতিটি উদাহরণে একাধিক লেবেল থাকতে পারে?
উত্তর:
শ্রেণিবদ্ধ কর্মক্ষমতা পরিমাপের জন্য আর একটি জনপ্রিয় সরঞ্জাম হ'ল আরওসি / এউসি ; এটিরও একটি বহু-শ্রেণি / মাল্টি-লেবেল এক্সটেনশন রয়েছে: দেখুন [হ্যান্ড 2001]
[হ্যান্ড 2001]: একাধিক শ্রেণি শ্রেণিবিন্যাসের সমস্যাগুলিতে আরওসি বক্ররেখার অধীনে অঞ্চলটির একটি সাধারণ সাধারণীকরণ
কনফিউশন ম্যাট্রিক্স এবং মাল্টি-ক্লাস সুস্পষ্টতা / রিকাল পরিমাপ সম্পর্কে কোর্স ফোরামের থ্রেড সম্পর্কে এখানে কিছু আলোচনা।
মূল ধারণাটি হ'ল সমস্ত ক্লাসের সমস্ত নির্ভুলতা এবং পুনরুদ্ধার গণনা করা, তারপরে একটি একক আসল সংখ্যা পরিমাপ করার জন্য তাদের গড় করুন।
বিভ্রান্তির ম্যাট্রিক্স একটি ক্লাসের নির্ভুলতা এবং পুনরুদ্ধার গণনা করা সহজ করে তোলে।
নীচে এই থ্রেড থেকে অনুলিপি বিভ্রান্তির ম্যাট্রিক্স সম্পর্কে কিছু প্রাথমিক ব্যাখ্যা দেওয়া আছে:
একটি বিভ্রান্তির ম্যাট্রিক্স 2 টিরও বেশি শ্রেণি থাকা অবস্থায় সত্য ধনাত্মক, সত্য নেতিবাচক, মিথ্যা ধনাত্মক এবং মিথ্যা নেতিবাচক শ্রেণিবদ্ধ করার একটি উপায়। এটি নির্ভুলতা এবং পুনরায় কল করার জন্য এবং তাই বহু শ্রেণীর সমস্যার জন্য f1-স্কোরের জন্য ব্যবহৃত হয় used
আসল মানগুলি কলাম দ্বারা প্রতিনিধিত্ব করা হয়। পূর্বাভাসিত মানগুলি সারি দ্বারা প্রতিনিধিত্ব করা হয়।
উদাহরণ:
10 টি প্রশিক্ষণ উদাহরণ যা 8 টি,
প্রকৃতপক্ষে 4 টি হিসাবে 13 টি প্রশিক্ষণ উদাহরণ হিসাবে ভুলভাবে শ্রেণিবদ্ধ (পূর্বাভাস) করা হয়েছে 9 হিসাবে ভুল হিসাবে শ্রেণিবদ্ধ করা হয়েছে
কনফিউশন ম্যাট্রিক্স
সেমি = 0 1 2 3 4 5 6 7 8 9 10 1 298 2 1 0 1 1 3 1 1 0 2 0 293 7 4 1 0 5 2 0 0 3 1 3 263 0 8 0 0 3 0 2 4 1 5 0 261 4 0 3 2 0 1 5 0 0 10 0 254 3 0 10 2 1 6 0 4 1 1 4 300 0 1 0 0 7 1 3 2 0 0 0 264 0 7 1 8 3 5 3 1 7 1 0 289 1 0 9 0 1 3 13 1 0 11 1 289 0 10 0 6 0 1 6 1 2 1 4 304
দশম শ্রেণির জন্য:
সত্য ধনাত্মক: তির্যক অবস্থান, সেন্টিমিটার (এক্স, এক্স)।
মিথ্যা ধনাত্মক: কলামের যোগফল (প্রধান তির্যক ছাড়া), যোগফল (সেমি (:, এক্স)) - সেমি (এক্স, এক্স)।
মিথ্যা নেতিবাচক: সারির x এর যোগফল (প্রধান তির্যক ছাড়া), যোগফল (সেমি (x, :), 2)-সেমি (এক্স, এক্স)।
আপনি নির্ভুলতা গণনা করতে পারেন, কোর্সের সূত্র অনুসরণ করে পুনরায় কল এবং এফ 1 স্কোর।
সমস্ত ক্লাসের ওভারেজ (ওজন সহ বা ছাড়াই) পুরো মডেলের মান দেয়।
মাল্টি-লেবেল শ্রেণিবিন্যাসের জন্য আপনার দুটি উপায় যেতে হবে প্রথমে নিম্নলিখিতটি বিবেচনা করুন।
মেট্রিকগুলি প্রতি ডেটাপয়েন্ট পন্থায় গণনা করা হয়। প্রতিটি পূর্বাভাসীকৃত লেবেলের জন্য এর কেবলমাত্র তার স্কোর গণনা করা হয় এবং তারপরে এই স্কোরগুলি সমস্ত ডেটাপয়েন্টগুলিতে একত্রিত হয়।
পাশাপাশি অন্যান্য মেট্রিক রয়েছে।
এখানে জিনিসগুলি লেবেল অনুসারে সম্পন্ন হয়েছে। প্রতিটি লেবেলের জন্য মেট্রিকগুলি (যেমন: যথার্থতা, পুনর্বিবেচনা) গণনা করা হয় এবং তারপরে এই লেবেল-ভিত্তিক মেট্রিকগুলি একত্রিত করা হয়। সুতরাং, এক্ষেত্রে আপনি বাইনারি শ্রেণিবদ্ধকরণের জন্য (যেমন প্রতিটি লেবেলের বাইনারি অ্যাসাইনমেন্ট রয়েছে) পুরো ডেটাसेटের উপরে প্রতিটি লেবেলের জন্য যথাযথতা / পুনরুদ্ধার গণনা শেষ করবেন, তারপরে এটি একত্র করুন।
সহজ উপায়টি হ'ল সাধারণ ফর্মটি উপস্থাপন করা।
এটি স্ট্যান্ডার্ড মাল্টি-ক্লাস সমতুল্য মাত্র একটি এক্সটেনশন।
আপনি মাল্টি-লেবেল মেট্রিকগুলির কোডটি সন্ধান করতে আগ্রহী হতে পারেন এখানে , যা প্যাকেজের একটি অংশ mldr মধ্যে আর । এছাড়াও আপনি জাভা মাল্টি-লেবেল লাইব্রেরি MULAN সন্ধান করতে আগ্রহী হতে পারেন ।
এটি বিভিন্ন মেট্রিকগুলিতে প্রবেশ করার জন্য একটি দুর্দান্ত কাগজ: মাল্টি-লেবেল লার্নিং অ্যালগরিদম সম্পর্কিত একটি পর্যালোচনা
আমি মাল্টি-লেবেল অংশটি সম্পর্কে জানি না তবে মুতলি-শ্রেণির শ্রেণিবিন্যাসের জন্য সেই লিঙ্কগুলি আপনাকে সহায়তা করবে
এই লিঙ্কটি ব্যাখ্যা করে যে কীভাবে বিভ্রান্তির ম্যাট্রিক্স তৈরি করা যায় যা আপনি নির্ভুলতা গণনা করতে এবং প্রতিটি বিভাগের জন্য প্রত্যাহার করতে পারেন
এবং এই লিঙ্কটি ব্যাখ্যা করে কীভাবে সামগ্রিকভাবে শ্রেণিবদ্ধের মূল্যায়ন করতে মাইক্রো- f1 এবং ম্যাক্রো-এফ 1 পদক্ষেপ গণনা করতে হয়।
আশা করি আপনি এটি দরকারী খুঁজে পেয়েছেন।
এই লিঙ্কটি আমাকে সাহায্য করেছে .. https://www.youtube.com/watch?v=HBi-P5j0Kec আমি আশা করছি এটি আপনাকেও সহায়তা করবে
নীচে হিসাবে বিতরণ বলুন
A B C D
A 100 80 10 10
B 0 9 0 1
C 0 1 8 1
D 0 1 0 9
এ জন্য নির্ভুলতা হবে
পি (এ) = 100/100 + 0 + 0 +0 = 100
পি (বি) = 9/9 + 80 + 1 + 1 = 9/91 পিএসএস ... মূলত ক্লাসের আসল ইতিবাচক গ্রহণ করুন এবং কলামের ডেটা দিয়ে সারিগুলিতে ভাগ করুন
একটি জন্য মনে রাখবেন
আর (এ) = 100 / 100+ 80 + 10 + 10 = 0.5
আর (বি) = 9 / 9+ 0 + 0 + 1 = 0.9
psst ... মূলত শ্রেণীর আসল ইতিবাচক গ্রহণ করুন এবং কলামগুলিতে সারি ডেটা দ্বারা ভাগ করুন
একবার আপনি সমস্ত মান পেতে, ম্যাক্রো গড় নিতে
গড় (পি) = পি (এ) + পি (বি) + পি (সি) + পি (ডি) / ৪
গড় (আর) = আর (এ) + আর (বি) + আর (সি) + আর (ডি) / ৪
F1 = 2 * গড় (পি) * গড় (আর) / গড় (পি) + গড় (আর)
হার্ভার্ডে cs205.org থেকে এই স্লাইডগুলি দেখুন । ত্রুটি ব্যবস্থাপনার বিভাগটি একবার পেয়ে গেলে, বহু-শ্রেণীর সেটিংসে (যেমন, এক-বনাম-সমস্ত বা এক-বনাম-ওয়ান) এবং বিভ্রান্তির ম্যাট্রিকগুলিতে যথার্থতা এবং পুনরায় কল করার আলোচনা হয় discussion কনফিউশন ম্যাট্রিক্স যা আপনি এখানে সত্যই চান।
এফওয়াইআই, পাইথন সফ্টওয়্যার প্যাকেজ সাইকিটস.লার্নে , বহু-শ্রেণীর ডেটাতে প্রশিক্ষিত শ্রেণিবদ্ধদের কাছ থেকে বিভ্রান্তির ম্যাট্রিক্সের মতো জিনিসগুলি স্বয়ংক্রিয়ভাবে গণনা করার জন্য অন্তর্নির্মিত পদ্ধতি রয়েছে। এটি সম্ভবত আপনার জন্য সরাসরি নির্ভুলতা-প্রত্যাহার প্লটগুলিও গণনা করতে পারে। এক নজর মূল্যবান।
ওজগুর এট আল (২০০৫) থেকে এটি দেখতে পাওয়া যায় যে আপনার স্বাভাবিক অভিব্যক্তিগুলি অনুসরণ করে যথার্থতা গণনা করা উচিত এবং পুনরুদ্ধার করা উচিত তবে আপনার ডেটাসেটে মোট এন উদাহরণগুলির চেয়ে বেশি গড়ের পরিবর্তে আপনার এন = ব্যবহার করতে হবে [কমপক্ষে একটি লেবেল সহ উদাহরণস্বরূপ প্রশ্নে নিয়োগ ক্লাস]।
এখানে উল্লিখিত রেফারেন্সটি রয়েছে: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.104.8244&rep=rep1&type=pdf
ঠিক একইভাবে আপনি সেটগুলি সহ সাধারণ কেসটি করবেন:
http://en.wikipedia.org/wiki/F1_score
http://en.wikipedia.org/wiki/Precision_and_recall
এখানে পাইথন ফাংশনগুলি যা সঠিকভাবে এটি করে:
def precision(y_true, y_pred):
i = set(y_true).intersection(y_pred)
len1 = len(y_pred)
if len1 == 0:
return 0
else:
return len(i) / len1
def recall(y_true, y_pred):
i = set(y_true).intersection(y_pred)
return len(i) / len(y_true)
def f1(y_true, y_pred):
p = precision(y_true, y_pred)
r = recall(y_true, y_pred)
if p + r == 0:
return 0
else:
return 2 * (p * r) / (p + r)
if __name__ == '__main__':
print(f1(['A', 'B', 'C'], ['A', 'B']))