What is F1 score in machine learning and why? (bangle post)


মেশিন লানিং (Machine learning) এর একটা খুবই পরিচিত শব্দ হচ্ছে  F1 score। সাধারণত কোন মডেলের পারফরমেন্স কেমন সেটা বুঝার জন্যে F1 score ব্যবহার হয়; F1 score এর মান যত বেশী হয়, মডেল তত ভাল ধরে নেওয়া হয়। 

কিন্তু আমারা কি আসলে জানি F1 score আমাদের কি বলে? F1 score স্কোর বেশী হলে, মডেল ভাল কিন্তু মডেলের কোন দিকটি ভাল? Accuracy বেশী হলেও,  একটি মডেলকে ভাল বলা হয়, কিন্তু তাহলে accuracy এবং F1 এর মাঝে পার্থক্য কোথায়? সহজ কথায় আমার কি F1 score দেখে পরিষ্কার ভাবে বোঝতে পারি ঠিক কোথায় আমাদের মডেল ভালভাবে কাজ করছে? এই সমস্ত প্রশ্নের উত্তর সহজ উদাহরণ দিয়ে ব্যাখ্যা দেওয়ার জন্যেই আজকের এই পোষ্ট। 

ধরুন, আপনার একটি মডেল আছে যেটি আপনার এক্সরে ছবি দেখে বলে দিতে পারে আপনার বুকের মাঝে ক্যান্সার আছে কিনা। এখন এই ক্যান্সার ছবি সনাক্তে মডেলটির রেজাল্ট ৪ টি বিশেষ কেসে ভাগ করা যেতে পারে। 
১) ছবিটিতে ক্যান্সার আছে এবং মডেল বলল ক্যান্সার আছে। 
২) ছবিটিতে ক্যান্সার  নেই, মডেল বলল ক্যান্সার নেই। 
৩) ছবিটিতে ক্যান্সার আছে , মডেল বলল ক্যান্সার নেই। 
৪) ছবিটিতে ক্যান্সার নেই, কিন্তু মডেল বলল ক্যান্সার আছে। 

প্রথম দুটি ক্ষেত্রে মডেল সঠিক ভাবে কাজ করেছে। বাকি দুটি ক্ষেত্রে ভুল করেছে।
এখন ধরি, 100 টা ছবির মাঝে 20 টি  ক্যান্সারের ছবি আছে। আর মডেল 15 টি  ক্যান্সারের ছবিকে সঠিক ভাবে সনাক্ত করেছে। আর বাকি 80 টি ছবির মাঝে 70 টি ছবিকে সঠিক ভাবে বলেছে ক্যান্সারের ছবি নয়। তাহলে, মডেলের accuracy হচ্ছে  (15+70)/100 = 0.85 Or, 85%। তাহলে, প্রথম দুটি কেস নিয়ে মডেলদের পারফ্রমেন্স বের করার পদ্ধতি হচ্ছে accuracy।

এখন মনে করি, আমাদের আরেকটি মডেল আছে যেটি প্রায় সব ছবিতেই ক্যান্সার দেখতে পায়। যেমন সেই মডেলকে ঐ ১০০ টা ছবি দেখালে সে ৯৫ টাকেই ক্যান্সার ছবি বলবে। কিন্তু যেহেতু সেখানে 80 টি ছবি আসলেই ক্যান্সারের নয়, তাই এই মডেলটিরও accuracy হবে (5+80)/100 = 0.85 or 85%। 

মজার বিষয় হচ্ছে যদিও আমরা বোঝতে পারছি ২য় মডেলটিতে একটু গরমিল আছে, তবু দুটি মডেলের accuracy সমান হয়ে গেল। কিন্তু কিভাবে বলব যে প্রথমটি ভাল? আমাদেরকে তো গানিতিকভাবে দেখানো উচিত। 

এই সমস্যা সমাধানের জন্যে আমাদেরকে ৩ ও ৪ নং কেস গুলোও বিবেচনা করতে হবে। এই ১, ২, ৩, ও ৪ নং কেস গুলোকে যথাক্রমে True positive, True negative, False negative, False positive বলে। 

এখন আমরা নতুন দুটি পরিমাপ সম্পর্কে জানব (e.g. precision and recall)। মডেল যত গুলো ক্যান্সারের ছবি বলল, তার মাঝে কত গুলো আসলেই ক্যান্সারের ছবি তার পরিমাপকে বলে precision । আর যতগুলো ক্যান্সারের ছবি আছে তার মাঝে কয়টিকে মডেল ক্যান্সারের ছবি বলতে পারল তার পরিমাপকে বলে recall । গানিতিক ভাবে বলতে গেলে, 
Precision = True positive / (True positive + False positve)

Recall = True positive / (True positive+False negative)

এখন এই দুটি পরিমাপেরই গড় নেওয়া প্রয়োজন মডেলটির পারফ্রমেন্স বোঝার জন্যে। কিন্তু এই দুটি পরিমাপ দুটি ভিন্ন ধরনের পরিমাপ। তাই তাদের সাধারন গড় নেওয়া যাবে না। আমাদেরকে জ্যামেতিক গড় বা geometric mean নিতে হবে। এই geometric mean কেই F1 score বা F1 value বলে থাকে। 

F1 score = 2 * Precision * Recall / (Precision + Recall)  

এখন আবার আমাদের উদাহরণে ফিরে আসে। 
আমাদের প্রথম মডেলের ক্ষেত্রে F1 score হচ্ছেঃ
Precision = 15 /(15+10) = 0.6
Recall = 15 / (15+5) = 0.75
Now, F1 = 2*0.75*0.6/( 0.75+0.6) =  0.66

আমাদের দ্বিতীয় মডেলের ক্ষেত্রে F1 score হচ্ছেঃ
Precision = 5 / (5 +0) = 1
Recall = 5 /(5 +15) = 0.25
Now, F1 = 2*1*0.5/ (1+0.5) = 0.40

এখন দেখা যাচ্ছে, আমাদের প্রথম মডেলের F1 score দ্বিতীয় মডেলের F1 score হতে বেশী। তাহলে আমারা কি দেখতে পাচ্ছি? যখন মডেল কতটুকু ভুল করল সেটাকে গুরুত্ব দিচ্ছি বা তার হিসেব করছি (৩ ও ৪ নং কেস), তখন আমাদের F1 score সাহায্য করছে। আর যখন মডেল কতটুকু সঠিক করছে, তার হিসেব করছি তখন আমরা accuracy ব্যবহার করতে পারি। 

F1 score এর মত আরেকটি metric আছে, যাকে F2 score বলে। নিচের লিংক গুলোতে গেলে সেটি সম্পর্কেও জানতে পারবেন। 

Reference:


মন্তব্যসমূহ