คอมพิวเตอร์วิธีที่มีประสิทธิภาพมากที่สุดในการตัดสินใจว่าสองชุดของจุดแยกเป็นเส้นตรงโดยใช้เขียนโปรแกรมเชิงเส้น GLTKนั้นสมบูรณ์แบบสำหรับจุดประสงค์นั้นและเกือบทุกภาษาระดับสูงมีอินเทอร์เฟซสำหรับมัน - R , Python, Octave, Julia เป็นต้น
ด้วยความเคารพต่อคำตอบที่แนะนำการใช้งานของ SVM :
การใช้ SVM เป็นโซลูชันย่อยที่ดีที่สุดในการตรวจสอบความสามารถในการแยกเชิงเส้นด้วยเหตุผลสองประการ:
SVM เป็นตัวจําแนกซอฟต์ขอบ นั่นหมายความว่า SVM เคอร์เนลเชิงเส้นอาจชำระสำหรับระนาบการแยกซึ่งไม่ได้แยกอย่างสมบูรณ์แม้ว่ามันจะเป็นไปได้จริง หากคุณตรวจสอบอัตราความผิดพลาดมันจะไม่เป็น 0 และคุณจะสรุปได้อย่างผิด ๆ ว่าทั้งสองชุดนั้นไม่สามารถแยกเชิงเส้นได้ ปัญหานี้สามารถถูกลดทอนได้โดยเลือกค่าสัมประสิทธิ์ต้นทุนที่สูงมาก - แต่สิ่งนี้เกิดขึ้นเองในราคาที่คำนวณได้สูงมาก
SVM เป็นตัวจําแนกระยะขอบสูงสุด นั่นหมายความว่าอัลกอริทึมจะพยายามค้นหาระนาบแยกที่แยกทั้งสองคลาสขณะที่พยายามอยู่ห่างจากทั้งสองให้ไกลที่สุด นี่เป็นคุณสมบัติที่เพิ่มความพยายามในการคำนวณโดยไม่จำเป็นเนื่องจากมันจะคำนวณสิ่งที่ไม่เกี่ยวข้องกับการตอบคำถามการแยกเชิงเส้น
สมมติว่าคุณมีคะแนน A และ B:
จากนั้นคุณต้องย่อเล็กสุด 0 สำหรับเงื่อนไขต่อไปนี้:
(A ด้านล่างเป็นเมทริกซ์ไม่ใช่ชุดของจุดจากด้านบน)
"การลดขนาด 0" ได้อย่างมีประสิทธิภาพหมายความว่าคุณไม่จำเป็นต้องปรับฟังก์ชั่นวัตถุประสงค์ให้เหมาะสมเพราะมันไม่จำเป็นที่จะต้องค้นหาว่าเซตนั้นแบ่งได้เป็นเส้นตรงหรือไม่
ในที่สุด ( ) กำลังกำหนดระนาบแยก
ในกรณีที่คุณมีความสนใจในตัวอย่างการทำงานใน R หรือรายละเอียดทางคณิตศาสตร์แล้วตรวจสอบนี้ออก