Isriya Paireepairit / mk / markpeak
A Thai tech geek. Co-founder of Blognone and SIU. Blogging on almost everything.
เทอมนี้ลงวิชา Information Storage and Retrieval Research ซึ่งเป็นตัวต่อของ Information Retrieval เมื่อเทอมที่แล้ว อาจารย์ก็คนเดิมคือ Mark Sanderson
เผอิญว่าคาบล่าสุดเกิดคึกอะไรไม่รู้ตั้งใจเรียนเป็นพิเศษ (ปกติจะหลับเพราะมันเรียนเช้า 9 โมง) เลยมาจดไว้เสียหน่อย หัวข้อคือการประเมินผล search engine หรือ Evaluation in Information Retrieval ตามธรรมเนียมของการเรียนแบบฝรั่งที่ดี อาจารย์ต้องเดินเข้ามาในห้องแล้วถามว่า ใครมีไอเดียอะไรบ้างว่าเราควรวัดผล search engine กันอย่างไร นักเรียนในห้องซึ่งมีตั้งแต่ ป. ตรีถึง ป. เอกก็เสนอไอเดีย ตั้งแต่ relevance ไปจนถึง speed (ส่วนผมก็เป็นนักเรียนไทยที่ดีคือนั่งเฉยๆ)
พอมีคนพูดถึง speed อาจารย์บอกว่ามันเป็นเรื่องพูดง่ายแต่ทำยาก เขาเคยคุยกับนักจิตวิทยา บอกว่า threshold ในการประเมินผลของมนุษย์ต่อเหตุการณ์ใดๆ (เช่น การเปิดสวิตช์ไฟแล้วไฟสว่าง) อยู่ที่ 1/4 วินาที ซึ่งถ้ามากเกินกว่านี้ เราจะเริ่มสงสัยแล้วว่ามีอะไรผิดปกติหรือเปล่า (เช่น ไฟเสีย) การแสดงผลลัพธ์ของ search engine ก็ใช้หลักการเดียวกันนี้
แต่เรื่องสำคัญกว่าคือ relevant ของผลการค้นหา ว่าตรงเป้าหมายที่เราต้องการแค่ไหน โดยทั่วไปแล้วไม่ว่าได้ผลลัพธ์มากขนาดไหน คนมักสนใจแค่หน้าแรก (top 10) แต่เอาเข้าจริง ความสนใจอาจแคบลงไปแค่ top 4 (หรือ top 5) คือผลการค้นหาหน้าแรกที่ไม่ลง scroll down เพื่อลงไปดู
ในวงการ search engine มีการวัดค่า relevance แบบดั้งเดิมอยู่ 2 ชนิด คือ precision กับ recall
Precision อธิบายง่ายๆ ว่า ในเอกสารทั้งหมดที่ search engine ค้นมาให้เรา มีเอกสารที่เข้าเป้ากี่อัน อธิบายแบบคณิตศาสตร์คือ Precision = (Relevant and Retrieved) / Retrieved
Recall คือในเอกสารที่เข้าเป้าทั้งหมดนั้น search engine มันไปหาเจอมาให้เรากี่อัน สูตรคณิตศาสตร์คือ Recall = (Relevant and Retrieved) / Total Relevant
ตัวอย่าง ถ้าเอกสารในระบบทั้งหมดมี 100 อัน มีเอกสารที่เข้าเป้าทั้งหมด 10 อัน (สมมติว่าเรารู้โดยการไล่อ่านทั้ง 100 อัน) ถ้า query แล้วมีผลการค้นหาออกมาทั้งหมด 20 อัน ในนี้มีเข้าเป้า 5 อัน เราจะประเมินได้ว่า precision = 5/20 = 0.25 และ recall = 5/10 = 0.50
โดยทั่วไปแล้วจะใช้ precision เป็นหลัก แต่ข้อเสียของการวัดด้วย precision ก็มาก
วิธีแก้ปัญหาเหล่านี้คือสร้าง test collections มาตรฐานขึ้นมา ให้ทุก search engine ที่ต้องการเปรียบเทียบใช้ร่วมกัน (จะได้เปรียบเทียบกันได้)
Test collections ประกอบด้วยของ 3 อย่าง
อันสุดท้ายนี่สำคัญที่สุด และสร้างได้ยากที่สุด ในสมัยโบราณที่ set of documents ยังแค่หลักร้อยหรือหลักพัน เราสามารถถึกทำมือได้ แต่พอจำนวนเอกสารมากขึ้นเรื่อยๆ ต้องมีเทคนิคเข้ามาช่วยสร้าง set of relevant judgements ซึ่งก็คือ pooling
Pooling
Pooling คือการสร้าง subset ของ set of documents ขึ้นมา เพื่อจำกัดวงการค้นหาไม่ให้มากเกินไป โดยเราหวังว่า (แค่หวัง) relevant documents ทั้งหมดนั้นจะอยู่ใน subset นี้ (ไม่การันตี) การสร้าง subset มีด้วยกันสองวิธี
เทคนิค pooling นี้ค่อนข้างประสบความสำเร็จในวงการ search engine อย่างไรก็ตามมีเปเปอร์หลายชิ้นประเมินว่าการทำ pooling นั้นเจอ relevant documents จริงๆ แค่ไหน ขาดตกบกพร่องอะไรบ้าง
พอได้ของทั้ง 3 อย่างครบแล้ว ก็รัน query แล้วเอาผลมาเปรียบเทียบกับ relevant judgement เพื่อหาค่า precision จากนั้นเราสามารถเอา precision ของต่าง search engine มาเปรียบเทียบกันได้เสียที (เพราะว่าตัวแปรอื่นๆ ถูกปรับให้เท่ากันหมดแล้วนี่)
ย้อนกลับมาดูความหมายของ relevant บ้าง ว่ามีปัจจัยอื่นอะไรบ้าง ที่นำมาพิจารณาว่าเป็นเอกสารที่ relevant
เปเปอร์ของ Andrew Broder ได้แบ่งชนิดของ query ออกเป็น 3 แบบ
นอกจากนี้ยังมีเคสพิเศษอื่นๆ ที่อาจมีผลต่อ relevant ของผลการค้นหา เช่น
Comments
มะระ
10 March, 2008 - 08:48
Permalink
ตอนผมเรีย
ตอนผมเรียนวิชานี้ ผมโคตรไม่รู้เรื่องเลย จนจบแล้ว ผมก็ยังไม่รู้เรื่องอยู่ บางทีผมยังสงสัยด้วยซ้ำว่าได้เรียนป่าว แต่ในใบเกรดผมมันมีว่าผมลงวิชานี้
ZhouYi
10 March, 2008 - 18:22
Permalink
Cool. I've never learned it
Cool. I've never learned it before. It's really interesting.
tomoomoo
13 March, 2008 - 09:17
Permalink
ขอบคุณมาก
ขอบคุณมากเลยครับ อยากให้เขียน blog แบบนี้บ่อยๆนะครับ :D
มีพิมผิดนิดหน่อยนะครับ => Test Collecions
bact'
13 March, 2008 - 14:14
Permalink
ถ้าสนใจเร
ถ้าสนใจเรื่องการประเมินผลระบบค้นคืนสารสนเทศนี้ ลองดูเพิ่มเติมที่ TREC http://trec.nist.gov/
แต่ละปีเค้าจะกำหนดกติกาและให้ชุดทดสอบกลาง แล้วบริษัทและห้องวิจัยต่าง ๆ ก็จะเอาระบบของตัวมาทดสอบกัน ว่าใครทำได้ดี/ด้อยในด้านไหน
ชุดทดสอบเก่า ๆ + รายงานการทดสอบ สามารถหาดูได้ในเว็บเช่นกัน
bact'
13 March, 2008 - 14:19
Permalink
ใน TREC
ใน TREC แต่ละครั้ง ก็จะมี "track" หลาย ๆ อัน ซึ่งเน้นเรื่องต่าง ๆ กัน
ตัวอย่าง track หนึ่งในปีนี้ (ซึ่งมีมาตั้งแต่ปี 2006) คือ Blog track เค้ามีชุดข้อมูลที่ดึงจากบล็อกต่าง ๆ (30+ GB) มาให้ แล้วก็ให้ลองหาข้อมูลจากในนั้นดู หัวข้อปีนี้คือ "Opinion Retrieval Task" ค้นหา "ความคิดเห็น"
http://ir.dcs.gla.ac.uk/wiki/TREC-BLOG
mk
13 March, 2008 - 15:33
Permalink
@tomoomoo
@tomoomoo แบบนี้เขียนบ่อยไม่ไหวครับ แหะๆ
พิช
2 March, 2010 - 05:16
Permalink
ขอเก็บไปอ่านก่อนสอบนะครับ
ขอเก็บไปอ่านก่อนสอบนะครับ
โฮม
24 July, 2011 - 10:22
Permalink
ขอบคุณมากนะครับ ขอไปอ่านบ้าง
ขอบคุณมากนะครับ ขอไปอ่านบ้าง จะสอบแล้ว ^^
iPAS
11 November, 2011 - 10:19
Permalink
ขอบคุณมากครับ .. นำไปใช้ทำ
ขอบคุณมากครับ .. นำไปใช้ทำ Thesis ต่อได้
Add new comment