เคยพยายามดึงรูปแบบที่เป็นประโยชน์จากชุดข้อมูลที่มีคุณลักษณะนับพันหรือไม่?
รู้กันว่าชุดข้อมูลขนาดใหญ่มักมีโครงสร้างที่มีประโยชน์ซ่อนอยู่ ปัญหาคือชุดข้อมูลดิบมักเต็มไปด้วยสัญญาณรบกวน ความซ้ำซ้อน ค่าที่หายไป และมิติมากเกินความจำเป็น อัลกอริทึมการเรียนรู้ของเครื่องส่วนใหญ่จะไม่สามารถเข้าใจข้อมูลลักษณะนี้ได้ หรืออย่างดีก็ทำให้เวลาเทรนนานขึ้น
การแยกค่าสเกลาร์เอกฐาน (SVD) จะแยกเมทริกซ์ใด ๆ (ในที่นี้คือชุดข้อมูล) ออกเป็นสามเมทริกซ์ที่ง่ายกว่าเพื่อแสดงโครงสร้างแก่นหลักของมัน นี่คือคณิตศาสตร์เบื้องหลังระบบแนะนำ การบีบอัดภาพ และเทคนิคการลดมิติอย่าง PCA และเมื่อเข้าใจแล้ว จะมองเห็นมันได้แทบทุกที่ในการทำงานประจำวัน
บทความนี้จะพาไปรู้จักว่า SVD คืออะไร ทำงานอย่างไร ใช้ที่ไหนในวิทยาการข้อมูล และเมื่อใดควรเลือกใช้ทางเลือกอื่นแทน
สับสนกับแนวคิดอย่างเวกเตอร์และดีเทอร์มิแนนต์หรือไม่? ลองอ่านโพสต์ ไขปริศนาคณิตศาสตร์สำหรับการเรียนรู้เชิงลึก ของเราให้จบก่อนอ่านบทความนี้ต่อ
การแยกค่าสเกลาร์เอกฐาน (SVD) คืออะไร?
SVD เป็นวิธีที่แยกเมทริกซ์ใด ๆ ออกเป็นสามเมทริกซ์ที่ง่ายกว่า
ลองนึกแบบนี้ คุณมีเมทริกซ์ A ซึ่งอาจเป็นชุดข้อมูลหรือภาพ SVD จะแยก A ออกเป็นสามส่วน:
สูตร SVD
U เป็นเมทริกซ์ตั้งฉากขนาด m x m คอลัมน์ของมันเรียกว่าเวกเตอร์เอกฐานซ้าย และอธิบายความสัมพันธ์ระหว่างแถวของ A
\Sigma เป็นเมทริกซ์ทแยงมุมขนาด m x n ค่าบนแนวทแยงคือ ค่าสเกลาร์เอกฐาน ซึ่งเป็นจำนวนไม่ลบเสมอและเรียงจากมากไปน้อย
V* คือทรานสโพสแบบคอนจูเกตของเมทริกซ์ตั้งฉากขนาด n x n แถวของมันเรียกว่า เวกเตอร์เอกฐานขวา และอธิบายความสัมพันธ์ระหว่างคอลัมน์ของ A
แต่ละส่วนบอกข้อมูลคนละด้านเกี่ยวกับข้อมูลต้นฉบับ U เก็บรูปแบบในระดับแถว (แถวสัมพันธ์กันอย่างไร) \Sigma เก็บน้ำหนักความสำคัญ (แต่ละรูปแบบสำคัญแค่ไหน) และ V* เก็บรูปแบบในระดับคอลัมน์ (คอลัมน์สัมพันธ์กันอย่างไร)
ลองเปรียบเทียบกับการบอกสูตรอาหาร คุณอาจแยกออกเป็นสามส่วน: วัตถุดิบ (มีอะไรบ้าง) สัดส่วน (แต่ละอย่างเท่าไร) และวิธีทำ (ผสมอย่างไร) ส่วนใดส่วนหนึ่งเพียงอย่างเดียวไม่อาจทำให้อาหารจานนั้นเสร็จสมบูรณ์ แต่เมื่อรวมกันก็ได้ทุกอย่างที่ต้องรู้ SVD ก็ทำแบบเดียวกันกับเมทริกซ์ โดยแยกส่วนว่า “มีอะไร” “มีเท่าไร” และ “ทำอย่างไร” ออกเป็นองค์ประกอบที่จัดการแยกกันได้
จุดเด่นของ SVD ในพีชคณิตเชิงเส้นคือใช้ได้กับเมทริกซ์ใด ๆ ไม่จำเป็นต้องเป็นสี่เหลี่ยมจัตุรัสหรือมีสมบัติพิเศษใด ๆ เมทริกซ์ขนาด m x n ใด ๆ ก็แยกได้ด้วยวิธีนี้ จึงพบได้ทั่วไปในวิทยาการข้อมูล
SVD ทำงานจริงอย่างไร
มาดูการทำงานของ SVD อย่างใกล้ชิด โดยเริ่มจากพื้นฐานกัน
อธิบายการแยกเมทริกซ์
สมมุติว่ามีเมทริกซ์ขนาด 3×2 A :
การแยกเมทริกซ์
SVD จะแยกสิ่งนี้ออกเป็น U (3×3), \Sigma (3×2), และ V* (2×2) คอลัมน์ของ U มาจากเวกเตอร์ลักษณะเฉพาะของ A x A^T และคอลัมน์ของ V มาจากเวกเตอร์ลักษณะเฉพาะของ A^T x A ค่าสเกลาร์เอกฐานใน \Sigma คือรากที่สองของค่าเอกลักษณ์จากผลคูณทั้งสองแบบ
ข่าวดีก็คือไม่ต้องคำนวณเองด้วยมือ ใน Python ใช้เพียงบรรทัดเดียว:
import numpy as np
A = np. array( [ [ 1 , 2 ] , [ 3 , 4 ] , [ 5 , 6 ] ] )
U, sigma, Vt = np. linalg. svd( A, full_matrices= True ) ขับเคลื่อนโดย
ผลลัพธ์ Numpy
เมทริกซ์ทั้งสามทำงานร่วมกันผ่านการคูณ U หมุนข้อมูลในปริภูมิแถว \Sigma ปรับสเกลตามแกนแต่ละแกน และ V* หมุนข้อมูลในปริภูมิคอลัมน์ ผลลัพธ์คือเมทริกซ์เดิม A
บทบาทของค่าสเกลาร์เอกฐาน
ค่าบนแนวทแยงใน \Sigma บอกว่าชิ้นส่วนแต่ละตัวมีส่วนต่อเมทริกซ์โดยรวมมากน้อยแค่ไหน
ค่าสเกลาร์เอกฐานตัวแรกจะใหญ่ที่สุดเสมอ — จับรูปแบบที่เด่นที่สุดในข้อมูล ตัวถัดไปจะจับได้น้อยลง หากค่าสองสามตัวแรกมีค่าสูงและที่เหลือเข้าใกล้ศูนย์ แปลว่าข้อมูลส่วนใหญ่กระจุกอยู่ในไม่กี่องค์ประกอบ
นี่คือสิ่งที่ทำให้การบีบอัดข้อมูลเป็นไปได้
สามารถตัดค่าสเกลาร์เอกฐานที่เล็ก (และคอลัมน์ที่สอดคล้องกันใน U และแถวใน V*) ออกได้โดยไม่สูญเสียข้อมูลมาก ผลคือการประมาณเมทริกซ์อันดับต่ำกว่าของเมทริกซ์เดิมที่มีขนาดเล็กลงและทำงานได้เร็วขึ้น
จำนวนค่าสเกลาร์เอกฐานที่ไม่เป็นศูนย์ยังบอกถึง อันดับ (rank) ของเมทริกซ์ — จำนวนแถวหรือคอลัมน์ที่เป็นอิสระเชิงเส้น หากเมทริกซ์ 100×50 มีค่าสเกลาร์เอกฐานไม่เป็นศูนย์เพียง 10 ค่า หมายความว่าข้อมูลมีมิติอิสระเพียง 10 มิติ อีก 40 มิติที่เหลือซ้ำซ้อน
การสร้างเมทริกซ์กลับคืน
สามารถสร้างเมทริกซ์เดิมกลับมาได้ด้วยการคูณองค์ประกอบทั้งสามเข้าด้วยกัน:
การสร้างเมทริกซ์กลับคืน
แต่สิ่งที่ต้องการจริง ๆ คือการสร้างกลับแบบบางส่วน ดังนั้นแทนที่จะใช้ค่าสเกลาร์เอกฐานทั้งหมด ให้เก็บไว้เพียง k ค่าบนสุดและเวกเตอร์ที่สอดคล้องกัน จะได้ การประมาณอันดับ-k ของ A:
การประมาณเมทริกซ์อันดับ-k
ทฤษฎีบท Eckart-Young รับประกันว่าการประมาณอันดับ-k นี้คือเมทริกซ์ที่ใกล้เคียงที่สุดของอันดับ k เมื่อเทียบกับ A เดิม (วัดด้วยบรรทัดฐาน Frobenius) กล่าวอีกนัยหนึ่ง หากจะบีบอัดเมทริกซ์เหลือ k มิติ SVD จะให้ผลลัพธ์ที่ดีที่สุดเท่าที่จะเป็นไปได้
การประยุกต์ใช้ SVD ในวิทยาการข้อมูล
เมื่อเริ่มสังเกต จะพบ SVD ในที่ต่าง ๆ มากกว่าที่คาดคิด
แนวคิดคือการหยิบเมทริกซ์ขนาดใหญ่ แล้วเก็บเฉพาะส่วนที่สำคัญและตัดส่วนที่เหลือ ความต่างอยู่ที่ความหมายของคำว่า “สำคัญ” ซึ่งขึ้นอยู่กับปัญหา
การลดมิติ
ชุดข้อมูลมิติสูงทำงานและตีความได้ยาก ยิ่งมีคุณลักษณะมาก เวลาฝึกสอนก็ยิ่งนานและเสี่ยงต่อการฟิตเกิน SVD ช่วยป้องกันโดยการลดจำนวนมิติ
โดยภาพรวมคือ แยกเมทริกซ์ข้อมูล ดูค่าสเกลาร์เอกฐาน และเก็บไว้เฉพาะองค์ประกอบบนสุด k ค่าที่เล็กมักแทนสัญญาณรบกวนและความเปลี่ยนแปลงเล็กน้อย ดังนั้นการลบออกจะกระทบคุณภาพข้อมูลเพียงเล็กน้อย สิ่งที่เหลือคือตัวแทนขนาดกะทัดรัดที่ยังคงโครงสร้างดั้งเดิมไว้ส่วนใหญ่
นี่คือวิธีที่ การวิเคราะห์องค์ประกอบหลัก (PCA) ทำงานพอดี PCA จะปรับศูนย์ข้อมูลแล้วรัน SVD กับผลลัพธ์ องค์ประกอบหลักคือเวกเตอร์เอกฐานขวา และค่าสเกลาร์เอกฐานจะบอกว่าทุกองค์ประกอบอธิบายความแปรปรวนได้มากน้อยเพียงใด
ระบบแนะนำ
บริษัทอย่าง Netflix และ Amazon มีเมทริกซ์ผู้ใช้-ไอเท็มขนาดใหญ่ที่ส่วนใหญ่เป็นค่าว่าง ผู้ใช้ให้คะแนนภาพยนตร์เพียงไม่กี่เรื่องจากหลายพันเรื่อง ทำให้เมทริกซ์เบาบาง SVD ช่วยเติมช่องว่างเหล่านี้
แนวคิดคือแยกเมทริกซ์คะแนนออกเป็นความชื่นชอบของผู้ใช้และลักษณะของไอเท็ม เมทริกซ์ U แทนสิ่งที่ผู้ใช้แต่ละคนให้ความสำคัญ (แนวภาพยนตร์ จังหวะ อารมณ์) และ V* แทนสิ่งที่ไอเท็มแต่ละรายการมีให้ ค่าสเกลาร์เอกฐานใน \Sigma จะปรับสเกลปัจจัยเหล่านี้ตามความสำคัญ เมื่อนำมาคูณกลับ จะได้คะแนนที่คาดการณ์สำหรับภาพยนตร์ที่ผู้ใช้ยังไม่เคยดู
ในทางปฏิบัติ SVD มาตรฐานไม่สามารถใช้กับเมทริกซ์เบาบางได้โดยตรง เพราะจะถือว่าค่าที่ขาดหายเป็นศูนย์ นั่นจึงเป็นเหตุให้ระบบใช้วิธีแปรผันอย่าง Truncated SVD หรือ Matrix Factorization ที่ทำงานเฉพาะกับรายการที่สังเกตได้
การบีบอัดภาพ
ภาพขาวดำก็คือเมทริกซ์ของค่าพิกเซล SVD สามารถบีบอัดได้โดยเก็บเพียงค่าสเกลาร์เอกฐานที่สำคัญที่สุด
สมมุติมีภาพขนาด 1000×1000 SVD แบบเต็มจะให้ค่าสเกลาร์เอกฐาน 1000 ค่า แต่ถ้าเก็บไว้เพียง 50 ค่าบนสุด ก็สามารถสร้างภาพกลับด้วยองค์ประกอบเพียง 50 แทน 1000 ภาพจะดูเบลอเล็กน้อยแต่ยังจำได้ และการจัดเก็บลดจาก 1,000,000 ค่าเหลือประมาณ 100,500 ค่า (50 คอลัมน์ของ U + ค่าสเกลาร์เอกฐาน 50 ค่า + 50 แถวของ V*)
ยิ่งเก็บค่าสเกลาร์เอกฐานมาก คุณภาพภาพยิ่งดีขึ้นแต่การบีบอัดน้อยลง เก็บน้อยลงไฟล์จะเล็กกว่าแต่สูญเสียมากขึ้น สามารถเลือกสมดุลตามกรณีใช้งานได้
ข้อคำนึงด้านประสิทธิภาพและข้อจำกัด
ยิ่งเมทริกซ์ใหญ่ ต้นทุนการคำนวณก็ยิ่งสูง
ต้นทุนการคำนวณ
SVD แบบเต็มบนเมทริกซ์ m x n มีความซับซ้อนด้านเวลาเป็น O(mn²) (โดยสมมุติว่า m >= n) สำหรับเมทริกซ์เล็ก ๆ ก็ไม่มีปัญหา แต่ถ้าเป็นเมทริกซ์ที่มีหลายล้านแถวและหลายพันคอลัมน์จะมีต้นทุนสูง
หน่วยความจำก็เป็นคอขวดอีกจุด SVD แบบเต็มจะให้เมทริกซ์หนาแน่นสามตัว และการเก็บทั้งหมดพร้อมกันอาจเกิน RAM ที่มีอยู่
ทางแก้คือหลีกเลี่ยงการคำนวณ SVD แบบเต็มเมื่อไม่จำเป็น Truncated SVD คำนวณเฉพาะค่าสเกลาร์เอกฐานบนสุด k ค่าและเวกเตอร์ของมัน ซึ่งเร็วกว่าอย่างมาก ใน Python scipy.sparse.linalg.svds และ sklearn.decomposition.TruncatedSVD ทำสิ่งนี้ได้ Randomized SVD ก้าวไปอีกขั้นด้วยการสุ่มตัวอย่างเพื่อประมาณการแยก และได้ผลดีเมื่อสนใจเฉพาะองค์ประกอบเด่น
เสถียรภาพและความแม่นยำ
SVD โดยมากมีเสถียรภาพเชิงตัวเลข แต่ก็อาจมีปัญหากับรูปแบบข้อมูลบางอย่าง
ข้อมูลที่มีสัญญาณรบกวนสูงเป็นตัวอย่างหนึ่ง หากอัตราส่วนสัญญาณต่อสัญญาณรบกวนต่ำ ค่าสเกลาร์เอกฐานบนสุดจะไม่แยกจากสัญญาณรบกวน ผลคือเก็บสัญญาณรบกวนไว้ในการประมาณหรือทำให้สัญญาณลดลงเมื่อทำการตัดทอน
เมทริกซ์ที่มีสภาพเลวก็เป็นปัญหาอีกแบบ เมื่ออัตราส่วนระหว่างค่าสเกลาร์เอกฐานที่ใหญ่สุดกับเล็กสุดสูงมาก (เลขสภาพสูง) ความผิดพลาดเชิงตัวเลขเล็กน้อยระหว่างคำนวณจะถูกขยาย ทำให้ผลลัพธ์ไม่น่าเชื่อถือ โดยเฉพาะเมื่อมีข้อจำกัดด้านความละเอียดจุดลอยตัว
วิธีแก้คือพิจารณาค่าสเกลาร์เอกฐานก่อนการตัดทอน ลองพล็อตและมองหาการตกลงอย่างชัดเจนระหว่างสัญญาณกับสัญญาณรบกวน หากการลดลงเป็นไปอย่างค่อยเป็นค่อยไปโดยไม่มี “ข้อศอก” ชัดเจน SVD อาจไม่ใช่เครื่องมือที่เหมาะกับชุดข้อมูลนั้น
ทางเลือกแทน SVD
SVD ไม่ใช่วิธีแยกเมทริกซ์เพียงวิธีเดียว และไม่ใช่ตัวเลือกที่ดีที่สุดเสมอไปสำหรับทุกงาน
ทางเลือกแต่ละอย่างด้านล่างแก้ปัญหาเฉพาะด้าน ไม่ใช่ตัวแทนของ SVD เพราะทำงานภายใต้สมมติฐานและข้อจำกัดที่ต่างกัน การเลือกที่ถูกต้องขึ้นอยู่กับงานที่กำลังทำเสมอ
Eigendecomposition
Eigendecomposition มีความใกล้เคียงกับ SVD มากที่สุด โดยแยกเมทริกซ์สี่เหลี่ยมจัตุรัสออกเป็นค่าเอกลักษณ์และเวกเตอร์เอกลักษณ์:
สูตร Eigendecomposition
โดยที่ Q เก็บเวกเตอร์เอกลักษณ์ และ \Lambda เป็นเมทริกซ์ทแยงมุมของค่าเอกลักษณ์
ข้อจำกัดคือใช้ได้เฉพาะกับเมทริกซ์สี่เหลี่ยมจัตุรัส หากเมทริกซ์ข้อมูลเป็น m x n ที่ m != n ก็ใช้ eigendecomposition โดยตรงไม่ได้ SVD ใช้ได้กับเมทริกซ์ทุกทรง จึงเป็นเครื่องมือที่ทั่วไปกว่า
สำหรับเมทริกซ์สี่เหลี่ยมจัตุรัสแบบสมมาตร (เช่น เมทริกซ์โควาเรียนซ์) eigendecomposition และ SVD ให้ผลที่เกี่ยวข้องกันอย่างใกล้ชิด ค่าสเกลาร์เอกฐานของเมทริกซ์กึ่งบวกสมมาตรจะเท่ากับค่าเอกลักษณ์ ดังนั้นหากทำงานกับเมทริกซ์โควาเรียนซ์ใน PCA ทั้งสองวิธีจะให้ผลลัพธ์เดียวกัน เพียงแต่ SVD สามารถเหมารวมไปยังกรณีไม่เป็นสี่เหลี่ยมจัตุรัสได้
QR decomposition
QR decomposition แยกเมทริกซ์ออกเป็นเมทริกซ์ตั้งฉาก Q และเมทริกซ์สามเหลี่ยมบน R:
สูตร QR decomposition
เร็วกว่า SVD สำหรับงานบางอย่าง โดยเฉพาะการแก้ระบบสมการเชิงเส้นและปัญหา least-squares
ข้อแลกเปลี่ยนคือข้อมูล QR ไม่ให้ค่าสเกลาร์เอกฐาน จึงบอกอันดับของเมทริกซ์หรือองค์ประกอบที่มีน้ำหนักมากที่สุดไม่ได้ หากต้องแก้ Ax = b และไม่สนใจโครงสร้างพื้นฐาน QR เป็นตัวเลือกที่ดี แต่ถ้าต้องการทำความเข้าใจหรือบีบอัดข้อมูล SVD เหมาะกว่า
Non-negative Matrix Factorization (NMF)
NMF แยกเมทริกซ์ออกเป็นสองเมทริกซ์ที่ทุกค่าต้องไม่เป็นลบ:
สูตร NMF
ข้อจำกัดนี้ทำให้ NMF เหมาะกับข้อมูลที่มีค่าไม่เป็นลบโดยเนื้อแท้ (เช่น ความเข้มพิกเซล หรือจำนวนคำ) ในทางกลับกัน SVD ไม่มีการบังคับนี้ เมทริกซ์ที่แยกออกมาอาจมีค่าติดลบ ซึ่งบางครั้งทำให้ตีความองค์ประกอบได้ยาก
NMF ได้รับความนิยมเป็นพิเศษในเหมืองข้อความและการจำลองหัวข้อคอนเทนต์ แต่ละคอลัมน์ของ W อาจแทนหัวข้อ และแต่ละแถวของ H แสดงว่าหัวข้อนั้นมีอยู่ในแต่ละเอกสารมากน้อยเพียงใด เงื่อนไขไม่เป็นลบทำให้หัวข้อถูกสร้างจากการผสมคำแบบบวกเพิ่ม จึงอ่านง่ายกว่าองค์ประกอบแบบสลับเครื่องหมายของ SVD
ข้อเสียคือ NMF ไม่รับประกันคำตอบที่เป็นเอกเทศ และผลลัพธ์ขึ้นกับการตั้งต้น SVD จะให้ผลลัพธ์เดิมเสมอเมื่ออินพุตเท่าเดิม
Randomized SVD
หากเมทริกซ์ใหญ่เกินไปสำหรับ SVD แบบเต็ม แต่ยังต้องการค่าสเกลาร์เอกฐาน Randomized SVD น่าลอง ใช้การฉายแบบสุ่มเพื่อประมาณค่าสเกลาร์เอกฐานและเวกเตอร์บนสุด k โดยไม่ต้องคำนวณการแยกแบบเต็ม ไลบรารีอย่าง scikit-learn (TruncatedSVD) และ fbpca ของ Facebook ใช้วิธีนี้ และปรับขนาดได้ดีกับเมทริกซ์ที่มีหลายล้านแถว
ตารางด้านล่างสรุปว่าเมื่อใดควรเลือกใช้แต่ละวิธี
ทางเลือกแทน SVD
ข้อพิจารณาอื่น ๆ เกี่ยวกับ SVD
มีสองสามเรื่องที่มักทำให้นักวิทยาการข้อมูลมือใหม่สับสน
เรื่องแรกคือการอ่านค่าค่าสเกลาร์เอกฐานผิดความหมาย ค่าสเกลาร์เอกฐานที่ใหญ่หมายถึงองค์ประกอบนั้นอธิบายความแปรปรวนในข้อมูลได้มาก ไม่ได้หมายความว่าองค์ประกอบนั้น “สำคัญ” ในความหมายเชิงโดเมน ตัวอย่างเช่น ค่าสเกลาร์เอกฐานเด่นในเมทริกซ์การให้คะแนนของผู้ใช้อาจสะท้อนเพียงข้อเท็จจริงว่าคนส่วนใหญ่ให้คะแนนหนังยอดนิยม ไม่ใช่รูปแบบความชอบที่มีนัยสำคัญเสมอไป ควรตีความค่าสเกลาร์เอกฐานในบริบทของข้อมูล ไม่ใช่มองแค่ขนาดของมัน
เรื่องที่สองคือหยิบใช้ SVD โดยไม่จำเป็น สำหรับชุดข้อมูลเล็ก (ไม่กี่ร้อยแถวและคุณลักษณะไม่กี่ตัว) SVD เพียงเพิ่มความซับซ้อนโดยไม่จำเป็น วิธีง่าย ๆ อย่างการวิเคราะห์สหสัมพันธ์หรือการคัดเลือกคุณลักษณะพื้นฐานมักทำงานได้เร็วกว่าและใช้โค้ดน้อยกว่า SVD เหมาะมากเมื่อมีข้อมูลมิติสูงที่มีโครงสร้างซ้ำซ้อน หากชุดข้อมูลของคุณไม่เข้าข่ายนี้ ให้ใช้วิธีที่ง่ายกว่า
สรุป
SVD แยกเมทริกซ์ใด ๆ ออกเป็นสามองค์ประกอบที่เผยโครงสร้างของมัน ค่าสเกลาร์เอกฐานบอกว่าส่วนใดของข้อมูลสำคัญที่สุด และเวกเตอร์เอกฐานซ้าย-ขวาแสดงรูปแบบของแถวและคอลัมน์ที่อยู่เบื้องหลัง
การแยกนี้อยู่เบื้องหลังเครื่องมือเชิงปฏิบัติหลายอย่างที่ใช้กันทุกวัน ระบบแนะนำใช้เพื่อทำนายคะแนนที่ขาดหาย การบีบอัดภาพใช้เพื่อลดขนาดไฟล์โดยยังคงคุณภาพการมองเห็น คณิตศาสตร์เบื้องหลังแทบจะเหมือนกัน แม้ว่าโดเมนจะต่างกันโดยสิ้นเชิง
แต่ SVD ก็ไม่ใช่เครื่องมือที่ถูกต้องเสมอไป มันมีต้นทุนสูงกับเมทริกซ์ขนาดใหญ่ และอาจผสมสัญญาณกับสัญญาณรบกวนเมื่อค่าสเกลาร์เอกฐานแยกไม่ชัด นอกจากนี้ยังมากเกินความจำเป็นสำหรับชุดข้อมูลเล็ก ทางเลือกอย่าง QR decomposition, eigendecomposition และ NMF ต่างก็รับมือกรณีเฉพาะได้ดีกว่า
กุญแจสำคัญคือรู้ว่าเมื่อใดควรใช้ SVD และเมื่อใดควรใช้วิธีที่ง่ายกว่า และเพื่อให้ได้ความรู้นั้น สมัครเข้าเรียน เส้นทาง Machine Learning Scientist ด้วย Python ของเราและเตรียมความพร้อมสู่สายงานในปี 2026
เคยพยายามดึงรูปแบบที่เป็นประโยชน์จากชุดข้อมูลที่มีคุณลักษณะนับพันหรือไม่?
รู้กันว่าชุดข้อมูลขนาดใหญ่มักมีโครงสร้างที่มีประโยชน์ซ่อนอยู่ ปัญหาคือชุดข้อมูลดิบมักเต็มไปด้วยสัญญาณรบกวน ความซ้ำซ้อน ค่าที่หายไป และมิติมากเกินความจำเป็น อัลกอริทึมการเรียนรู้ของเครื่องส่วนใหญ่จะไม่สามารถเข้าใจข้อมูลลักษณะนี้ได้ หรืออย่างดีก็ทำให้เวลาเทรนนานขึ้น
การแยกค่าสเกลาร์เอกฐาน (SVD) จะแยกเมทริกซ์ใด ๆ (ในที่นี้คือชุดข้อมูล) ออกเป็นสามเมทริกซ์ที่ง่ายกว่าเพื่อแสดงโครงสร้างแก่นหลักของมัน นี่คือคณิตศาสตร์เบื้องหลังระบบแนะนำ การบีบอัดภาพ และเทคนิคการลดมิติอย่าง PCA และเมื่อเข้าใจแล้ว จะมองเห็นมันได้แทบทุกที่ในการทำงานประจำวัน
บทความนี้จะพาไปรู้จักว่า SVD คืออะไร ทำงานอย่างไร ใช้ที่ไหนในวิทยาการข้อมูล และเมื่อใดควรเลือกใช้ทางเลือกอื่นแทน
สับสนกับแนวคิดอย่างเวกเตอร์และดีเทอร์มิแนนต์หรือไม่? ลองอ่านโพสต์ ไขปริศนาคณิตศาสตร์สำหรับการเรียนรู้เชิงลึก ของเราให้จบก่อนอ่านบทความนี้ต่อ
การแยกค่าสเกลาร์เอกฐาน (SVD) คืออะไร?
SVD เป็นวิธีที่แยกเมทริกซ์ใด ๆ ออกเป็นสามเมทริกซ์ที่ง่ายกว่า
ลองนึกแบบนี้ คุณมีเมทริกซ์
Aซึ่งอาจเป็นชุดข้อมูลหรือภาพ SVD จะแยกAออกเป็นสามส่วน:สูตร SVD
Uเป็นเมทริกซ์ตั้งฉากขนาดm x mคอลัมน์ของมันเรียกว่าเวกเตอร์เอกฐานซ้าย และอธิบายความสัมพันธ์ระหว่างแถวของA\Sigmaเป็นเมทริกซ์ทแยงมุมขนาดm x nค่าบนแนวทแยงคือ ค่าสเกลาร์เอกฐาน ซึ่งเป็นจำนวนไม่ลบเสมอและเรียงจากมากไปน้อยV*คือทรานสโพสแบบคอนจูเกตของเมทริกซ์ตั้งฉากขนาดn x nแถวของมันเรียกว่า เวกเตอร์เอกฐานขวา และอธิบายความสัมพันธ์ระหว่างคอลัมน์ของ Aแต่ละส่วนบอกข้อมูลคนละด้านเกี่ยวกับข้อมูลต้นฉบับ
Uเก็บรูปแบบในระดับแถว (แถวสัมพันธ์กันอย่างไร)\Sigmaเก็บน้ำหนักความสำคัญ (แต่ละรูปแบบสำคัญแค่ไหน) และV*เก็บรูปแบบในระดับคอลัมน์ (คอลัมน์สัมพันธ์กันอย่างไร)ลองเปรียบเทียบกับการบอกสูตรอาหาร คุณอาจแยกออกเป็นสามส่วน: วัตถุดิบ (มีอะไรบ้าง) สัดส่วน (แต่ละอย่างเท่าไร) และวิธีทำ (ผสมอย่างไร) ส่วนใดส่วนหนึ่งเพียงอย่างเดียวไม่อาจทำให้อาหารจานนั้นเสร็จสมบูรณ์ แต่เมื่อรวมกันก็ได้ทุกอย่างที่ต้องรู้ SVD ก็ทำแบบเดียวกันกับเมทริกซ์ โดยแยกส่วนว่า “มีอะไร” “มีเท่าไร” และ “ทำอย่างไร” ออกเป็นองค์ประกอบที่จัดการแยกกันได้
จุดเด่นของ SVD ในพีชคณิตเชิงเส้นคือใช้ได้กับเมทริกซ์ใด ๆ ไม่จำเป็นต้องเป็นสี่เหลี่ยมจัตุรัสหรือมีสมบัติพิเศษใด ๆ เมทริกซ์ขนาด
m x nใด ๆ ก็แยกได้ด้วยวิธีนี้ จึงพบได้ทั่วไปในวิทยาการข้อมูลSVD ทำงานจริงอย่างไร
มาดูการทำงานของ SVD อย่างใกล้ชิด โดยเริ่มจากพื้นฐานกัน
อธิบายการแยกเมทริกซ์
สมมุติว่ามีเมทริกซ์ขนาด 3×2 A:
การแยกเมทริกซ์
SVD จะแยกสิ่งนี้ออกเป็น
U(3×3),\Sigma(3×2), และV*(2×2) คอลัมน์ของUมาจากเวกเตอร์ลักษณะเฉพาะของA x A^Tและคอลัมน์ของ V มาจากเวกเตอร์ลักษณะเฉพาะของA^T x Aค่าสเกลาร์เอกฐานใน\Sigmaคือรากที่สองของค่าเอกลักษณ์จากผลคูณทั้งสองแบบข่าวดีก็คือไม่ต้องคำนวณเองด้วยมือ ใน Python ใช้เพียงบรรทัดเดียว:
ผลลัพธ์ Numpy
เมทริกซ์ทั้งสามทำงานร่วมกันผ่านการคูณ
Uหมุนข้อมูลในปริภูมิแถว\Sigmaปรับสเกลตามแกนแต่ละแกน และV*หมุนข้อมูลในปริภูมิคอลัมน์ ผลลัพธ์คือเมทริกซ์เดิม Aบทบาทของค่าสเกลาร์เอกฐาน
ค่าบนแนวทแยงใน
\Sigmaบอกว่าชิ้นส่วนแต่ละตัวมีส่วนต่อเมทริกซ์โดยรวมมากน้อยแค่ไหนค่าสเกลาร์เอกฐานตัวแรกจะใหญ่ที่สุดเสมอ — จับรูปแบบที่เด่นที่สุดในข้อมูล ตัวถัดไปจะจับได้น้อยลง หากค่าสองสามตัวแรกมีค่าสูงและที่เหลือเข้าใกล้ศูนย์ แปลว่าข้อมูลส่วนใหญ่กระจุกอยู่ในไม่กี่องค์ประกอบ
นี่คือสิ่งที่ทำให้การบีบอัดข้อมูลเป็นไปได้
สามารถตัดค่าสเกลาร์เอกฐานที่เล็ก (และคอลัมน์ที่สอดคล้องกันใน
UและแถวในV*) ออกได้โดยไม่สูญเสียข้อมูลมาก ผลคือการประมาณเมทริกซ์อันดับต่ำกว่าของเมทริกซ์เดิมที่มีขนาดเล็กลงและทำงานได้เร็วขึ้นจำนวนค่าสเกลาร์เอกฐานที่ไม่เป็นศูนย์ยังบอกถึง อันดับ (rank) ของเมทริกซ์ — จำนวนแถวหรือคอลัมน์ที่เป็นอิสระเชิงเส้น หากเมทริกซ์ 100×50 มีค่าสเกลาร์เอกฐานไม่เป็นศูนย์เพียง 10 ค่า หมายความว่าข้อมูลมีมิติอิสระเพียง 10 มิติ อีก 40 มิติที่เหลือซ้ำซ้อน
การสร้างเมทริกซ์กลับคืน
สามารถสร้างเมทริกซ์เดิมกลับมาได้ด้วยการคูณองค์ประกอบทั้งสามเข้าด้วยกัน:
การสร้างเมทริกซ์กลับคืน
แต่สิ่งที่ต้องการจริง ๆ คือการสร้างกลับแบบบางส่วน ดังนั้นแทนที่จะใช้ค่าสเกลาร์เอกฐานทั้งหมด ให้เก็บไว้เพียง
kค่าบนสุดและเวกเตอร์ที่สอดคล้องกัน จะได้การประมาณอันดับ-k ของA:การประมาณเมทริกซ์อันดับ-k
ทฤษฎีบท Eckart-Young รับประกันว่าการประมาณอันดับ-k นี้คือเมทริกซ์ที่ใกล้เคียงที่สุดของอันดับ
kเมื่อเทียบกับAเดิม (วัดด้วยบรรทัดฐาน Frobenius) กล่าวอีกนัยหนึ่ง หากจะบีบอัดเมทริกซ์เหลือ k มิติ SVD จะให้ผลลัพธ์ที่ดีที่สุดเท่าที่จะเป็นไปได้การประยุกต์ใช้ SVD ในวิทยาการข้อมูล
เมื่อเริ่มสังเกต จะพบ SVD ในที่ต่าง ๆ มากกว่าที่คาดคิด
แนวคิดคือการหยิบเมทริกซ์ขนาดใหญ่ แล้วเก็บเฉพาะส่วนที่สำคัญและตัดส่วนที่เหลือ ความต่างอยู่ที่ความหมายของคำว่า “สำคัญ” ซึ่งขึ้นอยู่กับปัญหา
การลดมิติ
ชุดข้อมูลมิติสูงทำงานและตีความได้ยาก ยิ่งมีคุณลักษณะมาก เวลาฝึกสอนก็ยิ่งนานและเสี่ยงต่อการฟิตเกิน SVD ช่วยป้องกันโดยการลดจำนวนมิติ
โดยภาพรวมคือ แยกเมทริกซ์ข้อมูล ดูค่าสเกลาร์เอกฐาน และเก็บไว้เฉพาะองค์ประกอบบนสุด
kค่าที่เล็กมักแทนสัญญาณรบกวนและความเปลี่ยนแปลงเล็กน้อย ดังนั้นการลบออกจะกระทบคุณภาพข้อมูลเพียงเล็กน้อย สิ่งที่เหลือคือตัวแทนขนาดกะทัดรัดที่ยังคงโครงสร้างดั้งเดิมไว้ส่วนใหญ่นี่คือวิธีที่ การวิเคราะห์องค์ประกอบหลัก (PCA) ทำงานพอดี PCA จะปรับศูนย์ข้อมูลแล้วรัน SVD กับผลลัพธ์ องค์ประกอบหลักคือเวกเตอร์เอกฐานขวา และค่าสเกลาร์เอกฐานจะบอกว่าทุกองค์ประกอบอธิบายความแปรปรวนได้มากน้อยเพียงใด
ระบบแนะนำ
บริษัทอย่าง Netflix และ Amazon มีเมทริกซ์ผู้ใช้-ไอเท็มขนาดใหญ่ที่ส่วนใหญ่เป็นค่าว่าง ผู้ใช้ให้คะแนนภาพยนตร์เพียงไม่กี่เรื่องจากหลายพันเรื่อง ทำให้เมทริกซ์เบาบาง SVD ช่วยเติมช่องว่างเหล่านี้
แนวคิดคือแยกเมทริกซ์คะแนนออกเป็นความชื่นชอบของผู้ใช้และลักษณะของไอเท็ม เมทริกซ์
Uแทนสิ่งที่ผู้ใช้แต่ละคนให้ความสำคัญ (แนวภาพยนตร์ จังหวะ อารมณ์) และV*แทนสิ่งที่ไอเท็มแต่ละรายการมีให้ ค่าสเกลาร์เอกฐานใน\Sigmaจะปรับสเกลปัจจัยเหล่านี้ตามความสำคัญ เมื่อนำมาคูณกลับ จะได้คะแนนที่คาดการณ์สำหรับภาพยนตร์ที่ผู้ใช้ยังไม่เคยดูในทางปฏิบัติ SVD มาตรฐานไม่สามารถใช้กับเมทริกซ์เบาบางได้โดยตรง เพราะจะถือว่าค่าที่ขาดหายเป็นศูนย์ นั่นจึงเป็นเหตุให้ระบบใช้วิธีแปรผันอย่าง Truncated SVD หรือ Matrix Factorization ที่ทำงานเฉพาะกับรายการที่สังเกตได้
การบีบอัดภาพ
ภาพขาวดำก็คือเมทริกซ์ของค่าพิกเซล SVD สามารถบีบอัดได้โดยเก็บเพียงค่าสเกลาร์เอกฐานที่สำคัญที่สุด
สมมุติมีภาพขนาด 1000×1000 SVD แบบเต็มจะให้ค่าสเกลาร์เอกฐาน 1000 ค่า แต่ถ้าเก็บไว้เพียง 50 ค่าบนสุด ก็สามารถสร้างภาพกลับด้วยองค์ประกอบเพียง 50 แทน 1000 ภาพจะดูเบลอเล็กน้อยแต่ยังจำได้ และการจัดเก็บลดจาก 1,000,000 ค่าเหลือประมาณ 100,500 ค่า (50 คอลัมน์ของ
U+ ค่าสเกลาร์เอกฐาน 50 ค่า + 50 แถวของV*)ยิ่งเก็บค่าสเกลาร์เอกฐานมาก คุณภาพภาพยิ่งดีขึ้นแต่การบีบอัดน้อยลง เก็บน้อยลงไฟล์จะเล็กกว่าแต่สูญเสียมากขึ้น สามารถเลือกสมดุลตามกรณีใช้งานได้
ข้อคำนึงด้านประสิทธิภาพและข้อจำกัด
ยิ่งเมทริกซ์ใหญ่ ต้นทุนการคำนวณก็ยิ่งสูง
ต้นทุนการคำนวณ
SVD แบบเต็มบนเมทริกซ์
m x nมีความซับซ้อนด้านเวลาเป็น O(mn²) (โดยสมมุติว่าm >= n) สำหรับเมทริกซ์เล็ก ๆ ก็ไม่มีปัญหา แต่ถ้าเป็นเมทริกซ์ที่มีหลายล้านแถวและหลายพันคอลัมน์จะมีต้นทุนสูงหน่วยความจำก็เป็นคอขวดอีกจุด SVD แบบเต็มจะให้เมทริกซ์หนาแน่นสามตัว และการเก็บทั้งหมดพร้อมกันอาจเกิน RAM ที่มีอยู่
ทางแก้คือหลีกเลี่ยงการคำนวณ SVD แบบเต็มเมื่อไม่จำเป็น Truncated SVD คำนวณเฉพาะค่าสเกลาร์เอกฐานบนสุด k ค่าและเวกเตอร์ของมัน ซึ่งเร็วกว่าอย่างมาก ใน Python
scipy.sparse.linalg.svdsและsklearn.decomposition.TruncatedSVDทำสิ่งนี้ได้ Randomized SVD ก้าวไปอีกขั้นด้วยการสุ่มตัวอย่างเพื่อประมาณการแยก และได้ผลดีเมื่อสนใจเฉพาะองค์ประกอบเด่นเสถียรภาพและความแม่นยำ
SVD โดยมากมีเสถียรภาพเชิงตัวเลข แต่ก็อาจมีปัญหากับรูปแบบข้อมูลบางอย่าง
ข้อมูลที่มีสัญญาณรบกวนสูงเป็นตัวอย่างหนึ่ง หากอัตราส่วนสัญญาณต่อสัญญาณรบกวนต่ำ ค่าสเกลาร์เอกฐานบนสุดจะไม่แยกจากสัญญาณรบกวน ผลคือเก็บสัญญาณรบกวนไว้ในการประมาณหรือทำให้สัญญาณลดลงเมื่อทำการตัดทอน
เมทริกซ์ที่มีสภาพเลวก็เป็นปัญหาอีกแบบ เมื่ออัตราส่วนระหว่างค่าสเกลาร์เอกฐานที่ใหญ่สุดกับเล็กสุดสูงมาก (เลขสภาพสูง) ความผิดพลาดเชิงตัวเลขเล็กน้อยระหว่างคำนวณจะถูกขยาย ทำให้ผลลัพธ์ไม่น่าเชื่อถือ โดยเฉพาะเมื่อมีข้อจำกัดด้านความละเอียดจุดลอยตัว
วิธีแก้คือพิจารณาค่าสเกลาร์เอกฐานก่อนการตัดทอน ลองพล็อตและมองหาการตกลงอย่างชัดเจนระหว่างสัญญาณกับสัญญาณรบกวน หากการลดลงเป็นไปอย่างค่อยเป็นค่อยไปโดยไม่มี “ข้อศอก” ชัดเจน SVD อาจไม่ใช่เครื่องมือที่เหมาะกับชุดข้อมูลนั้น
ทางเลือกแทน SVD
SVD ไม่ใช่วิธีแยกเมทริกซ์เพียงวิธีเดียว และไม่ใช่ตัวเลือกที่ดีที่สุดเสมอไปสำหรับทุกงาน
ทางเลือกแต่ละอย่างด้านล่างแก้ปัญหาเฉพาะด้าน ไม่ใช่ตัวแทนของ SVD เพราะทำงานภายใต้สมมติฐานและข้อจำกัดที่ต่างกัน การเลือกที่ถูกต้องขึ้นอยู่กับงานที่กำลังทำเสมอ
Eigendecomposition
Eigendecomposition มีความใกล้เคียงกับ SVD มากที่สุด โดยแยกเมทริกซ์สี่เหลี่ยมจัตุรัสออกเป็นค่าเอกลักษณ์และเวกเตอร์เอกลักษณ์:
สูตร Eigendecomposition
โดยที่
Qเก็บเวกเตอร์เอกลักษณ์ และ\Lambdaเป็นเมทริกซ์ทแยงมุมของค่าเอกลักษณ์ข้อจำกัดคือใช้ได้เฉพาะกับเมทริกซ์สี่เหลี่ยมจัตุรัส หากเมทริกซ์ข้อมูลเป็น
m x nที่m != nก็ใช้ eigendecomposition โดยตรงไม่ได้ SVD ใช้ได้กับเมทริกซ์ทุกทรง จึงเป็นเครื่องมือที่ทั่วไปกว่าสำหรับเมทริกซ์สี่เหลี่ยมจัตุรัสแบบสมมาตร (เช่น เมทริกซ์โควาเรียนซ์) eigendecomposition และ SVD ให้ผลที่เกี่ยวข้องกันอย่างใกล้ชิด ค่าสเกลาร์เอกฐานของเมทริกซ์กึ่งบวกสมมาตรจะเท่ากับค่าเอกลักษณ์ ดังนั้นหากทำงานกับเมทริกซ์โควาเรียนซ์ใน PCA ทั้งสองวิธีจะให้ผลลัพธ์เดียวกัน เพียงแต่ SVD สามารถเหมารวมไปยังกรณีไม่เป็นสี่เหลี่ยมจัตุรัสได้
QR decomposition
QR decomposition แยกเมทริกซ์ออกเป็นเมทริกซ์ตั้งฉาก
Qและเมทริกซ์สามเหลี่ยมบนR:สูตร QR decomposition
เร็วกว่า SVD สำหรับงานบางอย่าง โดยเฉพาะการแก้ระบบสมการเชิงเส้นและปัญหา least-squares
ข้อแลกเปลี่ยนคือข้อมูล QR ไม่ให้ค่าสเกลาร์เอกฐาน จึงบอกอันดับของเมทริกซ์หรือองค์ประกอบที่มีน้ำหนักมากที่สุดไม่ได้ หากต้องแก้
Ax = bและไม่สนใจโครงสร้างพื้นฐาน QR เป็นตัวเลือกที่ดี แต่ถ้าต้องการทำความเข้าใจหรือบีบอัดข้อมูล SVD เหมาะกว่าNon-negative Matrix Factorization (NMF)
NMF แยกเมทริกซ์ออกเป็นสองเมทริกซ์ที่ทุกค่าต้องไม่เป็นลบ:
สูตร NMF
ข้อจำกัดนี้ทำให้ NMF เหมาะกับข้อมูลที่มีค่าไม่เป็นลบโดยเนื้อแท้ (เช่น ความเข้มพิกเซล หรือจำนวนคำ) ในทางกลับกัน SVD ไม่มีการบังคับนี้ เมทริกซ์ที่แยกออกมาอาจมีค่าติดลบ ซึ่งบางครั้งทำให้ตีความองค์ประกอบได้ยาก
NMF ได้รับความนิยมเป็นพิเศษในเหมืองข้อความและการจำลองหัวข้อคอนเทนต์ แต่ละคอลัมน์ของ
Wอาจแทนหัวข้อ และแต่ละแถวของHแสดงว่าหัวข้อนั้นมีอยู่ในแต่ละเอกสารมากน้อยเพียงใด เงื่อนไขไม่เป็นลบทำให้หัวข้อถูกสร้างจากการผสมคำแบบบวกเพิ่ม จึงอ่านง่ายกว่าองค์ประกอบแบบสลับเครื่องหมายของ SVDข้อเสียคือ NMF ไม่รับประกันคำตอบที่เป็นเอกเทศ และผลลัพธ์ขึ้นกับการตั้งต้น SVD จะให้ผลลัพธ์เดิมเสมอเมื่ออินพุตเท่าเดิม
Randomized SVD
หากเมทริกซ์ใหญ่เกินไปสำหรับ SVD แบบเต็ม แต่ยังต้องการค่าสเกลาร์เอกฐาน Randomized SVD น่าลอง ใช้การฉายแบบสุ่มเพื่อประมาณค่าสเกลาร์เอกฐานและเวกเตอร์บนสุด k โดยไม่ต้องคำนวณการแยกแบบเต็ม ไลบรารีอย่าง
scikit-learn(TruncatedSVD) และfbpcaของ Facebook ใช้วิธีนี้ และปรับขนาดได้ดีกับเมทริกซ์ที่มีหลายล้านแถวตารางด้านล่างสรุปว่าเมื่อใดควรเลือกใช้แต่ละวิธี
ทางเลือกแทน SVD
ข้อพิจารณาอื่น ๆ เกี่ยวกับ SVD
มีสองสามเรื่องที่มักทำให้นักวิทยาการข้อมูลมือใหม่สับสน
เรื่องแรกคือการอ่านค่าค่าสเกลาร์เอกฐานผิดความหมาย ค่าสเกลาร์เอกฐานที่ใหญ่หมายถึงองค์ประกอบนั้นอธิบายความแปรปรวนในข้อมูลได้มาก ไม่ได้หมายความว่าองค์ประกอบนั้น “สำคัญ” ในความหมายเชิงโดเมน ตัวอย่างเช่น ค่าสเกลาร์เอกฐานเด่นในเมทริกซ์การให้คะแนนของผู้ใช้อาจสะท้อนเพียงข้อเท็จจริงว่าคนส่วนใหญ่ให้คะแนนหนังยอดนิยม ไม่ใช่รูปแบบความชอบที่มีนัยสำคัญเสมอไป ควรตีความค่าสเกลาร์เอกฐานในบริบทของข้อมูล ไม่ใช่มองแค่ขนาดของมัน
เรื่องที่สองคือหยิบใช้ SVD โดยไม่จำเป็น สำหรับชุดข้อมูลเล็ก (ไม่กี่ร้อยแถวและคุณลักษณะไม่กี่ตัว) SVD เพียงเพิ่มความซับซ้อนโดยไม่จำเป็น วิธีง่าย ๆ อย่างการวิเคราะห์สหสัมพันธ์หรือการคัดเลือกคุณลักษณะพื้นฐานมักทำงานได้เร็วกว่าและใช้โค้ดน้อยกว่า SVD เหมาะมากเมื่อมีข้อมูลมิติสูงที่มีโครงสร้างซ้ำซ้อน หากชุดข้อมูลของคุณไม่เข้าข่ายนี้ ให้ใช้วิธีที่ง่ายกว่า
สรุป
SVD แยกเมทริกซ์ใด ๆ ออกเป็นสามองค์ประกอบที่เผยโครงสร้างของมัน ค่าสเกลาร์เอกฐานบอกว่าส่วนใดของข้อมูลสำคัญที่สุด และเวกเตอร์เอกฐานซ้าย-ขวาแสดงรูปแบบของแถวและคอลัมน์ที่อยู่เบื้องหลัง
การแยกนี้อยู่เบื้องหลังเครื่องมือเชิงปฏิบัติหลายอย่างที่ใช้กันทุกวัน ระบบแนะนำใช้เพื่อทำนายคะแนนที่ขาดหาย การบีบอัดภาพใช้เพื่อลดขนาดไฟล์โดยยังคงคุณภาพการมองเห็น คณิตศาสตร์เบื้องหลังแทบจะเหมือนกัน แม้ว่าโดเมนจะต่างกันโดยสิ้นเชิง
แต่ SVD ก็ไม่ใช่เครื่องมือที่ถูกต้องเสมอไป มันมีต้นทุนสูงกับเมทริกซ์ขนาดใหญ่ และอาจผสมสัญญาณกับสัญญาณรบกวนเมื่อค่าสเกลาร์เอกฐานแยกไม่ชัด นอกจากนี้ยังมากเกินความจำเป็นสำหรับชุดข้อมูลเล็ก ทางเลือกอย่าง QR decomposition, eigendecomposition และ NMF ต่างก็รับมือกรณีเฉพาะได้ดีกว่า
กุญแจสำคัญคือรู้ว่าเมื่อใดควรใช้ SVD และเมื่อใดควรใช้วิธีที่ง่ายกว่า และเพื่อให้ได้ความรู้นั้น สมัครเข้าเรียน เส้นทาง Machine Learning Scientist ด้วย Python ของเราและเตรียมความพร้อมสู่สายงานในปี 2026