Micro Average vs Macro Average ประสิทธิภาพในการตั้งค่าการจัดหมวดหมู่หลายคลาส


102

ฉันกำลังลองตั้งค่าการจำแนกประเภทหลายคลาสด้วย 3 คลาส การกระจายคลาสนั้นเบ้โดยข้อมูลส่วนใหญ่ตกหล่นใน 1 ใน 3 คลาส (เลเบลของคลาสเป็น 1,2,3 โดยมี 67.28% ของข้อมูลที่อยู่ในคลาสเลเบล 1, ข้อมูล 11.99% ในคลาส 2 และยังคงอยู่ในคลาส 3)

ฉันกำลังฝึกตัวแยกประเภทหลายคลาสในชุดข้อมูลนี้และฉันได้รับประสิทธิภาพต่อไปนี้:

                    Precision           Recall           F1-Score
Micro Average       0.731               0.731            0.731
Macro Average       0.679               0.529            0.565

ฉันไม่แน่ใจว่าทำไม avg Micro ทั้งหมด การแสดงมีค่าเท่ากันและทำไมค่าเฉลี่ยมาโครจึงต่ำ


1
คุณไม่สามารถดูค่าบวกจริง ๆ ของแต่ละบุคคลเป็นต้นก่อนเฉลี่ยหรือไม่ นอกจากนี้ค่าเฉลี่ยของแมโครมีแนวโน้มที่จะต่ำกว่าค่าเฉลี่ยขนาดเล็ก
oW_

เป็น F-มาตรการจุลภาคและมหภาคมีเฉพาะในการจัดหมวดหมู่ข้อความหรือการดึงหรือพวกเขาสามารถนำมาใช้สำหรับการรับรู้หรือการจัดหมวดหมู่ปัญหาใด ๆ ..... ถ้าเป็นเช่นนั้นที่เราจะได้รับความสำคัญของแต่ละคนหรือแต่ละ refrence อื่น ๆ ...
Idrees

1
Micro Average Precision ไม่เหมือนกับความแม่นยำของชุดข้อมูลหรือไม่ จากสิ่งที่ฉันเข้าใจสำหรับ Micro Average Precision คุณจะคำนวณผลรวมของผลบวกจริงทั้งหมดและหารด้วยผลรวมของผลบวกจริงทั้งหมดบวกผลรวมของผลบวกปลอมทั้งหมด ดังนั้นโดยพื้นฐานแล้วคุณหารจำนวนการทำนายที่ระบุอย่างถูกต้องด้วยจำนวนการทำนายทั้งหมด อะไรคือสิ่งที่แตกต่างจากการคำนวณความแม่นยำ? เหตุใดเราจึงต้องการคำศัพท์ที่มีความแม่นยำพิเศษแบบใหม่ซึ่งทำให้สิ่งต่าง ๆ มีความซับซ้อนมากกว่าเพียงแค่ยึดตามค่าความถูกต้อง โปรดพิสูจน์ว่าฉันผิดเพื่อให้ฉันสามารถนอนหลับได้อย่างสงบสุข
Nico Zettler

1
@NicoZettler คุณถูกต้อง ความแม่นยำเฉลี่ยแบบไมโครและการเรียกคืนแบบไมโครเฉลี่ยทั้งคู่เท่ากับความแม่นยำเมื่อกำหนดจุดข้อมูลแต่ละจุดให้เป็นหนึ่งคลาส สำหรับคำถามที่สองของคุณเมตริกแบบไมโครเฉลี่ยแตกต่างจากความแม่นยำโดยรวมเมื่อการจำแนกประเภทมีหลายป้าย (แต่ละจุดข้อมูลอาจถูกกำหนดมากกว่าหนึ่งป้ายกำกับ) และ / หรือเมื่อบางคลาสไม่รวมอยู่ในกรณีหลายชั้น ดูscikit-learn.org/stable/modules/
จอห์นสัน

คำตอบ:


144

ค่าเฉลี่ยขนาดเล็กและระดับมหภาค (สำหรับสิ่งใดก็ตามที่เป็นตัวชี้วัด) จะคำนวณสิ่งต่าง ๆ เล็กน้อยและการตีความของพวกเขาจะแตกต่างกัน แมโคร - ค่าเฉลี่ยจะคำนวณตัวชี้วัดอย่างอิสระสำหรับแต่ละชั้นแล้วนำค่าเฉลี่ย (ดังนั้นการรักษาทุกชั้นอย่างเท่าเทียมกัน) ในขณะที่ค่าเฉลี่ยขนาดเล็กจะรวมการมีส่วนร่วมของทุกชั้นเรียนเพื่อคำนวณตัวชี้วัดเฉลี่ย ในการตั้งค่าการจำแนกประเภทหลายคลาสค่าเฉลี่ยขนาดเล็กจะดีกว่าถ้าคุณสงสัยว่าอาจมีความไม่สมดุลของคลาส (เช่นคุณอาจมีตัวอย่างมากกว่าหนึ่งคลาสมากกว่าคลาสอื่น)

เพื่อแสดงให้เห็นว่าทำไมใช้เวลาตัวอย่างเช่นความแม่นยำFP)} ลองจินตนาการว่าคุณมีOne-vs-All (มีเพียงคลาสเอาต์พุตที่ถูกต้องต่อตัวอย่างเท่านั้น) ระบบการจำแนกคลาสหลายคลาสที่มีสี่คลาสและหมายเลขต่อไปนี้เมื่อทำการทดสอบ:Pr=TP(TP+FP)

  • Class A: 1 TP และ 1 FP
  • คลาส B: 10 TP และ 90 FP
  • คลาส C: 1 TP และ 1 FP
  • คลาส D: 1 TP และ 1 FP

คุณสามารถมองเห็นได้อย่างง่ายดายว่าในขณะที่Pr_BPrA=PrC=PrD=0.5PrB=0.1

  • ค่าเฉลี่ยของมาโครจะคำนวณ:Pr=0.5+0.1+0.5+0.54=0.4
  • ค่าเฉลี่ยขนาดเล็กจะคำนวณ:Pr=1+10+1+12+100+2+2=0.123

ค่าเหล่านี้ค่อนข้างแตกต่างกันสำหรับความแม่นยำ โดยเฉลี่ยแล้วในระดับมหภาคความแม่นยำ "ดี" (0.5) ของคลาส A, C และ D นั้นมีส่วนช่วยรักษาความแม่นยำโดยรวมที่ "ดี" (0.4) แม้ว่านี่จะเป็นความจริงทางเทคนิค (ในคลาสต่างๆ แต่ความแม่นยำโดยเฉลี่ยคือ 0.4) มันเป็นความเข้าใจผิดเล็กน้อยเนื่องจากตัวอย่างจำนวนมากไม่ได้จัดประเภทอย่างเหมาะสม ตัวอย่างเหล่านี้ส่วนใหญ่สอดคล้องกับคลาส B ดังนั้นพวกเขามีส่วนร่วมเพียง 1/4 ต่อค่าเฉลี่ยแม้จะประกอบไปด้วย 94.3% ของข้อมูลการทดสอบของคุณ ค่าเฉลี่ยขนาดเล็กจะจับความไม่สมดุลของคลาสนี้ได้อย่างเพียงพอและนำค่าเฉลี่ยความแม่นยำโดยรวมลดลงถึง 0.123 (สอดคล้องกับความแม่นยำของคลาส B ที่มีอำนาจเหนือกว่า (0.1))

สำหรับเหตุผลในการคำนวณบางครั้งมันอาจจะสะดวกกว่าในการคำนวณค่าเฉลี่ยของคลาสแล้วค่าเฉลี่ยมาโคร หากทราบว่าความไม่สมดุลของคลาสเป็นปัญหามีหลายวิธีในการแก้ไข หนึ่งคือการรายงานไม่เพียง แต่ค่าเฉลี่ยของแมโคร แต่ยังรวมถึงค่าเบี่ยงเบนมาตรฐาน (สำหรับ 3 คลาสขึ้นไป) อีกวิธีหนึ่งคือการคำนวณมาโคร - ถัวเฉลี่ยถ่วงน้ำหนักซึ่งแต่ละชั้นมีส่วนร่วมกับค่าเฉลี่ยถ่วงน้ำหนักด้วยจำนวนญาติตัวอย่างที่มีอยู่ ในสถานการณ์ข้างต้นเราได้รับ:

Prmacromean=0.25·0.5+0.25·0.1+0.25·0.5+0.25·0.5=0.4 Prmacrostdev=0.173

Prmacroweighted=0.0189·0.5+0.943·0.1+0.0189·0.5+0.0189·0.5=0.009+0.094+0.009+0.009=0.123

ค่าเบี่ยงเบนมาตรฐานขนาดใหญ่ (0.173) บอกเราแล้วว่าค่าเฉลี่ย 0.4 นั้นไม่ได้เกิดจากความแม่นยำที่สม่ำเสมอในหมู่ชั้นเรียน แต่มันอาจจะง่ายกว่าในการคำนวณค่าเฉลี่ยถ่วงน้ำหนักมาโครซึ่งในสาระสำคัญเป็นอีกวิธีในการคำนวณไมโครเฉลี่ย .


10
คำตอบนี้สมควรได้รับการโหวตมากขึ้นเพราะจะช่วยสร้างความเข้าใจว่าทำไมไมโครและมาโครทำงานแตกต่างกันแทนที่จะเพียงแค่แสดงสูตร (และเป็นเนื้อหาต้นฉบับ)
steffen

2
สิ่งนี้อธิบายค่าแมโครที่แตกต่างในคำถามเดิมอย่างไร
shakedzy

3
หากคุณพลิกสถานการณ์ที่ร่างไว้ในการตอบกลับด้วยคลาสที่มีขนาดใหญ่มีประสิทธิภาพดีกว่าตัวเล็ก ๆ คุณคาดว่าจะเห็นค่าเฉลี่ยขนาดเล็กสูงกว่าค่าเฉลี่ยของมาโคร (ซึ่งเป็นพฤติกรรมที่รายงานไว้ในคำถาม) ค่ามาโครนั้นแตกต่างกันมากหรือน้อยกว่าที่คาดไว้เนื่องจากคุณทำการวัดสิ่งต่าง ๆ (ความแม่นยำการเรียกคืน ... ) ทำไมค่าเฉลี่ยขนาดเล็กเหมือนกันทั้งหมดฉันเชื่อว่าเป็นคำถาม
pythiest

4
ฉันไม่เห็นด้วยกับคำสั่งที่ควรค่าเฉลี่ยขนาดเล็กมากกว่าแมโครในกรณีของชุดข้อมูลที่ไม่สมดุล ในความเป็นจริงสำหรับคะแนน F, แมโครเป็นที่ต้องการมากกว่าไมโครเป็นอดีตให้ความสำคัญเท่าเทียมกันในแต่ละชั้นในขณะที่ในภายหลังให้ความสำคัญเท่าเทียมกันกับแต่ละตัวอย่าง (ซึ่งหมายถึงจำนวนตัวอย่างมากยิ่งพูดมากขึ้นว่ามันมีคะแนนสุดท้ายดังนั้น นิยมชั้นเรียนส่วนใหญ่ชอบความถูกต้องมาก) แหล่งที่มา: 1. cse.iitk.ac.in/users/purushot/papers/macrof1.pdf 2. clips.uantwerpen.be/~vincent/pdf/microaverage.pdf
shahensha

3
"ค่าเฉลี่ยถ่วงน้ำหนักมาโคร" จะเท่ากับค่าเฉลี่ยขนาดเล็กเสมอหรือไม่ ใน Scikit-Learn คำจำกัดความของ "ถ่วงน้ำหนัก" แตกต่างกันเล็กน้อย: "คำนวณตัวชี้วัดสำหรับแต่ละป้ายกำกับและค้นหาค่าเฉลี่ยถ่วงน้ำหนักโดยการสนับสนุน (จำนวนอินสแตนซ์ที่แท้จริงสำหรับแต่ละป้ายกำกับ)" จากเอกสารสำหรับคะแนน F1
willk

20

โพสต์ต้นฉบับ - http://rushdishams.blogspot.in/2011/08/micro-and-macro-average-of-precision.html


ในวิธีไมโครค่าเฉลี่ยคุณจะสรุปผลบวกจริงแต่ละรายการผลบวกปลอมและค่าลบเชิงลบของระบบสำหรับชุดที่แตกต่างกันและนำไปใช้เพื่อรับสถิติ

หากิน แต่ฉันพบว่ามันน่าสนใจมาก มีสองวิธีที่คุณสามารถรับสถิติโดยเฉลี่ยของการดึงข้อมูลและการจำแนกประเภท

1. วิธีไมโคร - ค่าเฉลี่ย

ในวิธีไมโครค่าเฉลี่ยคุณจะสรุปผลบวกจริงแต่ละรายการผลบวกปลอมและค่าลบเชิงลบของระบบสำหรับชุดที่แตกต่างกันและนำไปใช้เพื่อรับสถิติ ตัวอย่างเช่นสำหรับชุดของข้อมูลระบบ

True positive (TP1)  = 12
False positive (FP1) = 9
False negative (FN1) = 3

จากนั้นความแม่นยำ (P1) และการเรียกคืน (R1) จะเป็นและ57.14%=TP1TP1+FP180%=TP1TP1+FN1

และสำหรับชุดข้อมูลอื่นระบบของ

True positive (TP2)  = 50
False positive (FP2) = 23
False negative (FN2) = 9

จากนั้นความแม่นยำ (P2) และการเรียกคืน (R2) จะเท่ากับ 68.49 และ 84.75

ตอนนี้ความแม่นยำเฉลี่ยและการเรียกคืนระบบโดยใช้วิธี Micro-average คือ

Micro-average of precision=TP1+TP2TP1+TP2+FP1+FP2=12+5012+50+9+23=65.96

Micro-average of recall=TP1+TP2TP1+TP2+FN1+FN2=12+5012+50+3+9=83.78

คะแนนเฉลี่ย F-Micro จะเป็นเพียงค่าเฉลี่ยฮาร์มอนิกของสองร่างนี้

2. วิธีมาโครเฉลี่ย

วิธีนี้เป็นวิธีที่ตรงไปตรงมา เพียงใช้ค่าเฉลี่ยของความแม่นยำและการเรียกคืนระบบในชุดอื่น ตัวอย่างเช่นความแม่นยำเฉลี่ยแมโครและการเรียกคืนของระบบสำหรับตัวอย่างที่กำหนดคือ

Macro-average precision=P1+P22=57.14+68.492=62.82 Macro-average recall=R1+R22=80+84.752=82.25

คะแนนเฉลี่ยมาโครจะเป็นเพียงค่าเฉลี่ยฮาร์มอนิกของสองร่างนี้

ความเหมาะสมวิธีการมาโครเฉลี่ยสามารถใช้เมื่อคุณต้องการทราบว่าระบบทำงานโดยรวมในชุดข้อมูล คุณไม่ควรตัดสินใจโดยเฉพาะกับค่าเฉลี่ยนี้

ในทางตรงกันข้ามค่าเฉลี่ยขนาดเล็กอาจเป็นประโยชน์ในการวัดเมื่อชุดข้อมูลของคุณมีขนาดแตกต่างกัน


21
คุณควรให้เครดิตกับโพสต์บล็อกนี้หรือไม่
xiaohan2012

3
ใช่ @ xiaohan2012 เขาเพิ่งคัดลอกคำตอบ
Manuel G

นี่เป็นคำตอบแรกของฉันในการล้นสแต็คฉันไม่แน่ใจว่าจะทำอย่างไร คุณช่วยแนะนำการแก้ไขได้ไหม ฉันจะยอมรับมัน ขอบคุณ
Rahul Reddy Vemireddy

อาจเป็นที่น่าสังเกตว่าคะแนน F1 ที่นี่ไม่จำเป็นต้องเหมือนกับคะแนนเฉลี่ย F1 ที่ใช้โดยทั่วไป (เช่นนำไปใช้ในscikitหรืออธิบายไว้ในบทความนี้) โดยปกติแล้วคะแนน F1 จะถูกคำนวณสำหรับแต่ละชั้น / ชุดแยกต่างหากจากนั้นค่าเฉลี่ยจะคำนวณจากคะแนน F1 ที่แตกต่างกัน (ที่นี่จะทำในทางตรงข้าม: ก่อนอื่นให้คำนวณความแม่นยำ / การเรียกคืนแบบมหภาคเฉลี่ยจากนั้นคะแนน F1 )
Milania

11

ในการตั้งค่าหลายระดับความแม่นยำไมโครเฉลี่ยและการเรียกคืนจะเหมือนกันเสมอ

P=cTPccTPc+cFPcR=cTPccTPc+cFNc
โดยที่ c คือเลเบลคลาส

เนื่องจากในการตั้งค่าหลายคลาสคุณจะนับอินสแตนซ์ที่ผิดพลาดทั้งหมดมันกลับกลายเป็นว่า

cFPc=cFNc

ดังนั้น P = R กล่าวอีกนัยหนึ่งการคาดคะเนเท็จทุกครั้งจะเป็นผลบวกเชิงบวกต่อชั้นเรียนและการปฏิเสธเชิงลบทุกครั้งจะเป็นการปฏิเสธที่ผิดสำหรับชั้นเรียน หากคุณปฏิบัติกับกรณีการจำแนกประเภทไบนารีเป็นการจำแนกประเภทสองชั้นและคำนวณความแม่นยำระดับไมโครเฉลี่ยและเรียกคืนพวกเขาจะเหมือนกัน

คำตอบที่ได้รับจากราหุลคือในกรณีของค่าเฉลี่ยความแม่นยำไบนารีและเรียกคืนจากชุดข้อมูลหลายชุด ในกรณีนี้ความแม่นยำและการเรียกคืนแบบไมโครเฉลี่ยจะแตกต่างกัน


2

นั่นเป็นวิธีที่ควรจะเป็น ฉันได้ผลเหมือนกันสำหรับการวิจัยของฉัน มันดูแปลก ๆ ในตอนแรก แต่ความแม่นยำและการเรียกคืนควรเหมือนกันในขณะที่ค่าเฉลี่ยขนาดเล็กเป็นผลมาจากตัวแยกประเภทฉลากแบบชั้นเดียวหลายระดับ นี่เป็นเพราะถ้าคุณพิจารณา misclassification c1 = c2 (โดยที่ c1 และ c2 เป็น 2 คลาสที่แตกต่างกัน) misclassification เป็น false positive (fp) ที่เกี่ยวข้องกับ c2 และ false negative (fn) ที่เกี่ยวข้องกับ c1 หากคุณรวม fn และ fp สำหรับคลาสทั้งหมดคุณจะได้รับหมายเลขเดียวกันเนื่องจากคุณนับจำนวนการแยกประเภทแต่ละครั้งเป็น fp สำหรับคลาสหนึ่งและ fn สำหรับคลาสอื่น


0

ฉันคิดว่าเหตุผลที่ค่าเฉลี่ยมาโครต่ำกว่าค่าเฉลี่ยขนาดเล็กอธิบายได้ดีจากคำตอบของ pythiest (ผู้ปกครองมีการคาดการณ์ที่ดีกว่าและค่าเฉลี่ยขนาดเล็กเพิ่มขึ้น)

แต่ความจริงที่ว่าค่าเฉลี่ยขนาดเล็กนั้นมีค่าเท่ากับความแม่นยำ, การเรียกคืนและคะแนน F1 เนื่องจากไมโครเฉลี่ยค่าการวัดเหล่านี้ส่งผลให้เกิดความแม่นยำโดยรวม โปรดทราบว่าหากความแม่นยำและการเรียกคืนมีค่าเท่ากันคะแนน F1 จะเท่ากับความแม่นยำ / การเรียกคืน

สำหรับคำถามว่า "ค่าเฉลี่ยถ่วงน้ำหนักมาโคร" จะเท่ากับ "ค่าเฉลี่ยขนาดเล็ก" หรือไม่? ฉันทำการทดลองบางอย่างโดยไม่ใช้หมายเลขอื่น ของคลาสและความไม่สมดุลของคลาสที่แตกต่างกันและปรากฎว่าสิ่งนี้ไม่จำเป็นจริง

ข้อความเหล่านี้จัดทำขึ้นโดยมีสมมติฐานว่าเรากำลังพิจารณาชุดข้อมูลทั้งหมดในคลาสเดียวกัน (ตรงกันข้ามกับคำตอบของ Rahul Reddy Vemireddy)


0

ข้อดีของการใช้ Macro F1 Score ก็คือมันให้น้ำหนักที่เท่าเทียมกันกับจุดข้อมูลทั้งหมดตัวอย่างเช่นลองคิดดูสิเพราะ F1 micro จะใช้ผลรวมของ Recall และ Presession ทั้งหมดของฉลากที่แตกต่างกันอย่างอิสระดังนั้นเมื่อเรามีคลาสที่ไม่สมดุล เช่น T1 = 90%, T2 = 80%, T3 = 5 จากนั้น F1 Micro ให้น้ำหนักเท่ากันทุกคลาสและไม่ได้รับผลกระทบจากการเบี่ยงเบนในการกระจายของคลาสบันทึกการสูญเสียบันทึกจะลงโทษการเบี่ยงเบนเล็กน้อยในชั้นเรียน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.