วิธีการทำนายผลลัพธ์ด้วยการฝึกอบรมเชิงบวกเท่านั้น?


21

เพื่อความเรียบง่ายสมมติว่าฉันทำงานกับตัวอย่างคลาสสิกของอีเมลสแปม / จดหมายขยะ

ฉันมีอีเมลหนึ่งชุด ในบรรดาสิ่งเหล่านี้ฉันรู้ว่า 2000 เป็นสแปม แต่ฉันไม่มีตัวอย่างของอีเมลขยะ ฉันต้องการที่จะคาดการณ์ว่าส่วนที่เหลืออีก 18,000 เป็นสแปมหรือไม่ ตามหลักการแล้วผลลัพธ์ที่ฉันค้นหาคือความน่าจะเป็น (หรือค่า p) ที่อีเมลเป็นสแปม

ฉันสามารถใช้อัลกอริทึมใดในการทำนายอย่างสมเหตุสมผลในสถานการณ์นี้

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

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


1
อัลกอริทึมการเรียนรู้ใด ๆ ที่คุณจะใช้จะทำนายอีเมลทั้งหมดว่าเป็นสแปม คุณต้องมีตัวอย่างจากสองหมวดหมู่เพื่อการเรียนรู้ที่สมเหตุสมผล
JohnRos

ตกลงว่าจะออกกฎวิธีการเรียนรู้แบบมีผู้สอน แต่มีอัลกอริทึมที่ส่งคืนเมทริกความคล้ายคลึงกันบางประเภทหรือไม่ เช่นอีเมลนี้คล้ายกับอีเมลสแปม แต่อีเมลนี้ไม่ใช่
enricoferrero

6
@JohnRos ไม่เป็นความจริงการเรียนรู้จากข้อมูลเชิงบวกและไม่มีชื่อเป็นหัวข้อใหญ่ในการเรียนรู้แบบกึ่งกำกับและไม่มีอะไรเหมือนที่คุณอธิบาย
Marc Claesen

5
@ MarcClaesen: ฉันไม่คุ้นเคยกับงานวิจัยนี้ (เจ๋งมาก) ฉันเห็นว่าเวทมนต์นั้นอยู่ในสมมติฐานที่ว่าข้อมูลที่ไม่มีป้ายกำกับนั้นเป็นการผสมผสานระหว่างสแปมและไม่ใช่สแปมซึ่งทำให้เกิดปัญหาที่แก้ไขได้
JohnRos

2
@ JohnRos แน่นอนและฉันเห็นด้วยกับปัจจัยความเย็น สิ่งที่ฉันคิดว่าเจ๋งจริงๆคือความจริงที่ว่าเมื่อเร็ว ๆ นี้เราสามารถแสดงวิธีการคำนวณตัวชี้วัดประสิทธิภาพแบบดั้งเดิมได้จากตารางฉุกเฉิน (เช่นความแม่นยำความแม่นยำการเรียกคืน ... ) โดยที่ไม่รู้จักเชิงลบ !
Marc Claesen

คำตอบ:


19

สิ่งนี้เรียกว่าการเรียนรู้จากข้อมูลเชิงบวกและไม่มีป้ายกำกับหรือการเรียนรู้แบบ PU สำหรับระยะสั้นและเป็นช่องทางการเรียนรู้แบบกึ่งภายใต้การดูแล

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

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

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

  • เทคนิคล้ำสมัยในการเรียนรู้แบบจำลองจากข้อมูลที่เป็นบวกและไม่มีชื่อ (มีการเผยแพร่อย่างเป็นทางการที่นี่ ): http://arxiv.org/abs/1402.3144
  • เทคนิคในการคำนวณตัวชี้วัดประสิทธิภาพที่ใช้กันทั่วไปโดยที่ไม่รู้จักเชิงลบ (ภายใต้การทบทวนนี่เป็นครั้งแรกของประเภทนี้): http://arxiv.org/abs/1504.06837

1
ยอดเยี่ยม ขอบคุณมากสำหรับการอ้างอิง RESVM และ SVM ที่ใส่ถุงดูเหมือนจะทำงานคล้ายกันในการตั้งค่าการเรียนรู้ PU คุณสามารถแนะนำการใช้งาน (โดยเฉพาะอย่างยิ่งใน R) ของอัลกอริทึมอย่างใดอย่างหนึ่งได้หรือไม่ ดูเหมือนว่าจะไม่รวมอยู่ในเครื่องหมายรูปหมวกน่าเสียดาย
enricoferrero

1
@enricoferrero ใช่พวกมันทำงานในทำนองเดียวกันเว้นแต่จะมีผลบวกปลอม (ที่รู้จักกัน) ซึ่งในกรณีนี้ RESVM มีประสิทธิภาพเหนือกว่าการบรรจุถุง SVM (ฉันออกแบบ RESVM เพื่อวัตถุประสงค์ดังกล่าวเนื่องจากแอปพลิเคชันที่ฉันทำงานมี ผมไม่คิดว่ามีการใช้งาน R พร้อม แต่คุณสามารถใช้ทั้งของพวกเขาได้อย่างง่ายดายโดยการตัดการดำเนิน SVM เหมือนหรือkernlab e1071โปรดทราบว่าการบรรจุถุง SVM และ RESVM มีพารามิเตอร์หลายอย่างที่คุณต้องปรับให้เหมาะสมซึ่งฉันขอแนะนำให้ใช้ไลบรารีOptunity (มีอินเทอร์เฟซ R)
Marc Claesen

1
@enricoferrero ฉันมีการใช้บรรทัดคำสั่งของ RESVM ที่github.com/claesenm/resvmถึงแม้ว่ารหัสนั้นจะไม่ได้รับการขัดมากนัก repo นั้นเขียนใน Python และใช้เป็นไดรเวอร์สำหรับแพ็คเกจEnsembleSVM
Marc Claesen

ดูเหมือนว่าตัวเลือกที่ดีอีกขั้นตอนวิธี SVM ถุงอาจจะใช้อัตราดอกเบี้ย MLRแพคเกจใน R ด้วยกระดาษห่อห่อรอบ SVM เรียน
enricoferrero

7

ฉันสมมติว่ามีกรณีสแปมไม่มากนักใน 18,000 คดีของคุณ ในการใช้วิธีการเรียนรู้แบบมีผู้สอนคุณต้องมีมากกว่า 1 หมวดหมู่ / คลาสในข้อมูลของคุณ เนื่องจากคุณรู้ว่ามี 2,000 กรณีเป็นสแปมคุณสามารถติดป้ายกรณีที่เหลืออีก 18,000 กรณีเป็น 'หมวดหมู่ที่ไม่รู้จัก' และฝึกอบรมรูปแบบการเรียนรู้ภายใต้การดูแลเพื่อคาดการณ์กรณีที่อยู่ในสแปมหรือหมวดหมู่ที่ไม่รู้จัก จากนั้นตรวจสอบความถูกต้องของตัวอย่างแบบจำลองของคุณเพื่อดูว่าแบบจำลองนั้นมีประสิทธิภาพดีเพียงใดในการจำแนกความแตกต่างระหว่าง 2 หมวดหมู่ ถ้ามันทำงานได้ดีสมมุติว่ามีบางกรณีสแปมในหมวดหมู่ 'unknown' ถ้ามันทำงานได้ไม่ดีคุณจะต้องใช้ผู้เรียนที่ไม่ได้รับการดูแล (เช่น kmeans ฯลฯ ) เพื่อจัดกลุ่มและระบุกลุ่มที่เป็นเนื้อเดียวกันแยกต่างหากในข้อมูลของคุณ จากนั้นระบุว่ากลุ่มใดมีอีเมลสแปมมากที่สุด 2,000 รายการ และอันไหนที่ทำไม่ได้และติดป้ายกำกับว่าเป็นจดหมายขยะและไม่ใช่จดหมายขยะตามลำดับ ขั้นต่อไปคุณสามารถดำเนินการสร้างแบบจำลองโดยใช้ผู้เรียนที่มีการดูแลอย่างที่ฉันอธิบายไว้ก่อนหน้านี้


2

สิ่งที่ OP กำลังพูดถึงคืองานการจำแนกชั้นหนึ่งซึ่งเป็นงานที่ท้าทายมาก

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


ฉันพบข้อผิดพลาด 404 เมื่อติดตามลิงก์ของคุณ
enricoferrero

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