โดยทั่วไปจะเลือกลักษณนามแมชชีนเลิร์นนิงแบบใด [ปิด]


207

สมมติว่าฉันกำลังแก้ไขปัญหาการจัดประเภทบางอย่าง (การตรวจจับการฉ้อโกงและสแปมความคิดเห็นเป็นปัญหาสองประการที่ฉันกำลังดำเนินการอยู่ในขณะนี้ แต่ฉันสงสัยเกี่ยวกับงานการจัดประเภทโดยทั่วไป)

ฉันจะรู้ได้อย่างไรว่าควรใช้ลักษณนามใด

  1. ต้นไม้ตัดสินใจ
  2. SVM
  3. Bayesian
  4. โครงข่ายประสาท
  5. K- เพื่อนบ้านที่ใกล้ที่สุด
  6. ถาม - เรียนรู้
  7. ขั้นตอนวิธีทางพันธุกรรม
  8. กระบวนการตัดสินใจของ Markov
  9. โครงข่ายประสาทเทียม
  10. การถดถอยเชิงเส้นหรือการถดถอยโลจิสติก
  11. การส่งเสริมการบรรจุถุงการพนัน
  12. การปีนเขาแบบสุ่มหรือการอบอ่อนแบบจำลอง
  13. ...

ในกรณีใดบ้างที่เป็นตัวเลือกแรก "ธรรมชาติ" และหลักการในการเลือกตัวเลือกนั้นคืออะไร?

ตัวอย่างประเภทของคำตอบที่ฉันกำลังมองหา (จากหนังสือIntroduction to Information Retrieval ของ Manning et al. ):

ก. ถ้าข้อมูลของคุณจะมีป้าย แต่คุณมีเพียงจำนวน จำกัด คุณควรใช้ลักษณนามที่มีอคติสูง (เช่น Naive Bayes)

ฉันคาดเดาว่านี่เป็นเพราะลักษณนามที่มีอคติสูงกว่าจะมีความแปรปรวนต่ำกว่าซึ่งเป็นสิ่งที่ดีเนื่องจากมีข้อมูลจำนวนน้อย

ข. หากคุณมีข้อมูลจำนวนมากตัวลักษณนามก็ไม่ได้มีความสำคัญมากนักดังนั้นคุณควรเลือกลักษณนามที่มีความสามารถในการปรับขนาดได้ดี

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

  2. นอกจากนี้สำหรับคำถามที่แยกออกจากกันนอกเหนือจากตัวแยกประเภทแบบเบย์มาตรฐานแล้วยังมีวิธีการ 'ที่ล้ำสมัยมาตรฐาน' สำหรับการตรวจจับสแปมความคิดเห็น (ซึ่งต่างจากสแปมอีเมล)


7
ในการตอบกลับ "สถานที่ที่ดีที่สุดในการถามคำถามนี้" ของคุณคุณอาจต้องการลองใช้stats.stackexchange.com
jxramos

คำตอบ:


95

ป้อนคำอธิบายภาพที่นี่

ก่อนอื่นคุณต้องระบุปัญหาของคุณ ขึ้นอยู่กับชนิดของข้อมูลที่คุณมีและงานที่คุณต้องการคืออะไร

หากคุณPredicting Category:

  • คุณมี Labeled Data
    • คุณต้องปฏิบัติตามClassification Approachและอัลกอริทึม
  • คุณไม่มี Labeled Data
    • คุณต้องไปเพื่อ Clustering Approach

หากคุณPredicting Quantity:

  • คุณต้องไปเพื่อ Regression Approach

มิฉะนั้น

  • คุณสามารถไปได้ Dimensionality Reduction Approach

มีอัลกอริทึมที่แตกต่างกันในแต่ละแนวทางที่กล่าวถึงข้างต้น การเลือกอัลกอริทึมเฉพาะขึ้นอยู่กับขนาดของชุดข้อมูล

ที่มา: http://scikit-learn.org/stable/tutorial/machine_learning_map/


61

การเลือกรุ่นโดยใช้การตรวจสอบความถูกต้องข้ามอาจเป็นสิ่งที่คุณต้องการ

การตรวจสอบข้าม

สิ่งที่คุณทำก็เพียงแค่แบ่งชุดข้อมูลของคุณออกเป็นชุดย่อยที่ไม่ทับซ้อนกัน (พับ) ฝึกโมเดลโดยใช้การพับ k-1 และทำนายประสิทธิภาพโดยใช้การพับที่คุณทิ้ง สิ่งนี้คุณทำสำหรับการรวมกันของการพับที่เป็นไปได้แต่ละครั้ง (จากนั้นปล่อยให้พับที่ 1 ออกจากนั้นครั้งที่ 2, ... หลังจากเสร็จสิ้นคุณจะประมาณค่าเฉลี่ยประสิทธิภาพของการพับทั้งหมด (อาจรวมถึงความแปรปรวน / ส่วนเบี่ยงเบนมาตรฐานของประสิทธิภาพด้วย)

วิธีการเลือกพารามิเตอร์ k ขึ้นอยู่กับเวลาที่คุณมี ค่าปกติสำหรับ k คือ 3, 5, 10 หรือแม้แต่ N โดยที่ N คือขนาดของข้อมูลของคุณ (เช่นเดียวกับการตรวจสอบความถูกต้องข้ามแบบไม่ต้องออกเดียว ) ฉันชอบ 5 หรือ 10

การเลือกรุ่น

สมมติว่าคุณมี 5 วิธี (ANN, SVM, KNN ฯลฯ ) และชุดค่าผสม 10 พารามิเตอร์สำหรับแต่ละวิธี (ขึ้นอยู่กับวิธีการ) คุณต้องเรียกใช้การตรวจสอบความถูกต้องข้ามสำหรับแต่ละวิธีและการรวมพารามิเตอร์ (5 * 10 = 50) และเลือกรูปแบบวิธีการและพารามิเตอร์ที่ดีที่สุด จากนั้นคุณจะฝึกอบรมอีกครั้งด้วยวิธีการและพารามิเตอร์ที่ดีที่สุดสำหรับข้อมูลทั้งหมดของคุณและคุณมีโมเดลสุดท้ายของคุณ

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

การตรวจสอบความถูกต้องข้ามซ้อนกัน

ในการตรวจสอบความถูกต้องข้ามแบบซ้อนกันคุณจะต้องทำการตรวจสอบความถูกต้องข้ามกับอัลกอริทึมการเลือกแบบจำลอง

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

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


5
ใช่ฉันรู้เกี่ยวกับการตรวจสอบความถูกต้องข้าม - ฉันสงสัยมากขึ้นเกี่ยวกับเหตุผลเบื้องต้นในการเลือกลักษณนามบางตัว (จากนั้นฉันสามารถใช้การตรวจสอบความถูกต้องข้ามเพื่อปรับแต่งพารามิเตอร์บางตัวหรือเพื่อเลือกระหว่างลักษณนามชุดเล็ก ๆ ) ขอบคุณแม้ว่า!
LM.

45

หนังสือ " OpenCV " มีดีสองหน้าเกี่ยวกับเรื่องนี้ในหน้า 462-463 การค้นหาตัวอย่าง Amazon สำหรับคำว่า "เลือกปฏิบัติ" (อาจเป็นหนังสือของ Google ด้วย) จะช่วยให้คุณเห็นหน้าที่มีปัญหา สองหน้านี้เป็นอัญมณีที่ยิ่งใหญ่ที่สุดที่ฉันพบในหนังสือเล่มนี้

ในระยะสั้น:

  • Boosting - มักจะได้ผลเมื่อมีข้อมูลการฝึกอบรมจำนวนมาก

  • ต้นไม้สุ่ม - มักจะมีประสิทธิภาพมากและยังสามารถดำเนินการถดถอย

  • เพื่อนบ้านที่ใกล้ที่สุด K - สิ่งที่ง่ายที่สุดที่คุณทำได้มักจะได้ผลแต่ทำงานช้าและต้องใช้หน่วยความจำมากมาย

  • โครงข่ายประสาทเทียม - ช้ารถไฟแต่มากอย่างรวดเร็วในการเรียกใช้นักแสดงยังคงเหมาะสมที่สุดสำหรับการรับรู้จดหมาย

  • SVM - หมู่ที่ดีที่สุดกับข้อมูลที่ จำกัดแต่การสูญเสียกับการส่งเสริมหรือต้นไม้สุ่มเฉพาะเมื่อชุดข้อมูลขนาดใหญ่ที่มีอยู่


39

สิ่งที่คุณควรพิจารณาในการเลือกอัลกอริทึมที่จะใช้ ได้แก่ :

  1. คุณจำเป็นต้องฝึกทีละน้อย (เมื่อเทียบกับแบตช์) หรือไม่?

    หากคุณต้องการอัปเดตลักษณนามของคุณด้วยข้อมูลใหม่บ่อยๆ (หรือคุณมีข้อมูลมากมาย) คุณอาจต้องการใช้ Bayesian Neural nets และ SVM จำเป็นต้องทำงานกับข้อมูลการฝึกอบรมในครั้งเดียว

  2. เป็นข้อมูลของคุณประกอบด้วยเด็ดขาดเท่านั้นหรือตัวเลขเท่านั้นหรือทั้งสอง ?

    ฉันคิดว่า Bayesian ทำงานได้ดีที่สุดกับข้อมูลหมวดหมู่ / ทวินาม ต้นไม้ตัดสินใจไม่สามารถทำนายค่าตัวเลขได้

  3. คุณหรือผู้ชมของคุณจำเป็นต้องเข้าใจว่าลักษณนามทำงานอย่างไร?

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

  4. คุณต้องการความเร็วในการจัดหมวดหมู่เท่าใด

    SVM มีความรวดเร็วในการจัดประเภทเนื่องจากจำเป็นต้องระบุว่าข้อมูลของคุณอยู่ด้านใดของ "เส้น" ต้นไม้ตัดสินใจอาจช้าโดยเฉพาะอย่างยิ่งเมื่อมีความซับซ้อน (เช่นกิ่งก้านจำนวนมาก)

  5. ความซับซ้อน .

    อวนประสาทและ SVM สามารถจัดการกับการจำแนกประเภทที่ไม่ใช่เชิงเส้นที่ซับซ้อนได้


2
หนังสือบทนี้อาจให้ข้อมูลเพิ่มเติมเกี่ยวกับความซับซ้อนnlp.stanford.edu/IR-book/html/htmledition/…
supermus

31

ดังที่ศาสตราจารย์แอนดรูว์อึ้งมักกล่าวว่า: เริ่มต้นด้วยการใช้อัลกอริธึมที่หยาบและสกปรกจากนั้นจึงปรับแต่งมันซ้ำ

สำหรับการจัดหมวดหมู่Naive Bayesเป็นตัวเริ่มต้นที่ดีเนื่องจากมีประสิทธิภาพที่ดีสามารถปรับขนาดได้สูงและสามารถปรับให้เข้ากับงานการจัดประเภทได้เกือบทุกประเภท นอกจากนี้1NN (K-Nearest Neighbours ที่มีเพื่อนบ้านเพียง 1 คน) เป็นอัลกอริธึมที่เหมาะสมที่สุดที่ไม่ยุ่งยาก (เนื่องจากข้อมูลจะเป็นต้นแบบดังนั้นคุณจึงไม่ต้องสนใจเกี่ยวกับขนาดที่พอดีกับขอบเขตการตัดสินใจของคุณ) เพียงอย่างเดียว ปัญหาคือต้นทุนการคำนวณ (กำลังสองเนื่องจากคุณต้องคำนวณเมทริกซ์ระยะทางดังนั้นจึงอาจไม่เหมาะสำหรับข้อมูลที่มีมิติสูง)

อัลกอริธึมเริ่มต้นที่ดีอีกอย่างหนึ่งคือRandom Forests (ประกอบด้วยต้นไม้การตัดสินใจ) ซึ่งสามารถปรับขนาดได้อย่างมากตามขนาดใดก็ได้และมีประสิทธิภาพที่ยอมรับได้โดยทั่วไป ในที่สุดก็มีอัลกอริทึมทางพันธุกรรมซึ่งปรับขนาดได้ดีในทุกมิติและข้อมูลใด ๆ ที่มีความรู้เกี่ยวกับข้อมูลน้อยที่สุดโดยการนำไปใช้งานที่น้อยที่สุดและง่ายที่สุดคืออัลกอริธึมทางพันธุกรรมของจุลินทรีย์ (รหัส C เพียงบรรทัดเดียว! โดย Inman Harvey ใน 2539) และหนึ่งในสิ่งที่ซับซ้อนที่สุดคือ CMA-ES และ MOGA / e-MOEA

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

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


11

Sam Roweis เคยบอกว่าคุณควรลอง Bayes ที่ไร้เดียงสาการถดถอยโลจิสติกเพื่อนบ้านที่ใกล้ที่สุด k และการเลือกปฏิบัติเชิงเส้นของฟิชเชอร์ก่อนสิ่งอื่นใด


8

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

ดังนั้นหากคุณมีการดูแลข้อมูลให้ฝึกตัวแยกประเภทของ Naive Bayes หากคุณมีข้อมูลที่ไม่ได้รับการดูแลคุณสามารถลองใช้ k-mean cluster

แหล่งข้อมูลอื่นคือหนึ่งในวิดีโอการบรรยายของชุดวิดีโอStanford Machine Learningซึ่งฉันดูย้อนหลังไปสักพัก ในวิดีโอ 4 หรือ 5 ฉันคิดว่าผู้บรรยายพูดถึงอนุสัญญาที่เป็นที่ยอมรับโดยทั่วไปบางประการเมื่อฝึกตัวแยกประเภทข้อดี / ข้อแลกเปลี่ยน ฯลฯ


1
ทฤษฎีบท“ งดอาหารกลางวันฟรี” ระบุว่าไม่มีแบบจำลองใดที่เหมาะกับทุกปัญหา สมมติฐานของโมเดลที่ยอดเยี่ยมสำหรับปัญหาหนึ่งอาจไม่ถือเป็นปัญหาอื่นดังนั้นจึงเป็นเรื่องปกติในแมชชีนเลิร์นนิงที่จะลองใช้โมเดลหลาย ๆ แบบและค้นหาโมเดลที่เหมาะกับปัญหาเฉพาะ
msarafzadeh

5

คุณควรคำนึงถึงการอนุมานเทียบกับการคาดการณ์การแลกเปลี่ยน

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


3

การเลือกอัลกอริทึมขึ้นอยู่กับสถานการณ์และประเภทและขนาดของชุดข้อมูล ยังมีปัจจัยอื่น ๆ อีกมากมาย

นี่คือเอกสารสรุปสั้น ๆ สำหรับการเรียนรู้ของเครื่องขั้นพื้นฐาน

คุณสามารถตรวจสอบสถานการณ์ของคุณได้ที่นี่ด้วยข้อมูลสรุปง่ายๆ


-2

ก่อนอื่นขึ้นอยู่กับประเภทของปัญหาที่คุณกำลังเผชิญไม่ว่าจะเป็นการจำแนกประเภทหรือการถดถอย จากนั้นเลือกรุ่นของคุณอย่างชาญฉลาด ขึ้นอยู่กับรุ่นใดรุ่นหนึ่งที่มีประสิทธิภาพเหนือกว่ารุ่นอื่น ๆ สมมติว่าคุณกำลังทำงานกับ wine_dataset จากไลบรารี sklearn และก่อนอื่นคุณพยายามฝึกข้อมูลด้วย kernel svm ด้วย linear และคุณได้รับความแม่นยำบางอย่างจากนั้นคุณคิดว่ามันไม่น่าพอใจดังนั้นคุณจึงพยายามฝึกข้อมูลของคุณด้วย DecisionTreeClassifier () จากนั้นคุณลองใช้ RandomForestClassifier () หลังจากนั้นความแม่นยำใดจะดีกว่าหรือคุณสามารถพูดได้ว่าเหมาะกับข้อมูลของคุณคุณสามารถสรุปได้ มีความแตกต่างทางไวยากรณ์เล็กน้อยที่คุณจะพบในขณะที่เปลี่ยนโมเดลสำหรับการทดสอบต่อไป ดังนั้นขอให้ดีที่สุดและเข้าใจปัญหาเป็นอย่างดี


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