Courses
เคยพยายามดึงรูปแบบที่เป็นประโยชน์จากชุดข้อมูลที่มีคุณลักษณะนับพันหรือไม่?
รู้กันว่าชุดข้อมูลขนาดใหญ่มักมีโครงสร้างที่มีประโยชน์ซ่อนอยู่ ปัญหาคือชุดข้อมูลดิบมักเต็มไปด้วยสัญญาณรบกวน ความซ้ำซ้อน ค่าที่หายไป และมิติมากเกินความจำเป็น อัลกอริทึมการเรียนรู้ของเครื่องส่วนใหญ่จะไม่สามารถเข้าใจข้อมูลลักษณะนี้ได้ หรืออย่างดีก็ทำให้เวลาเทรนนานขึ้น
การแยกค่าสเกลาร์เอกฐาน (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
Singular Value Decomposition (SVD) คืออะไร?
SVD เป็นวิธีแยกเมทริกซ์ที่แยกเมทริกซ์ใด ๆ ออกเป็นสามองค์ประกอบ: เวกเตอร์เอกฐานซ้าย (U) ค่าสเกลาร์เอกฐาน (Σ) และเวกเตอร์เอกฐานขวา (V*) ใช้ได้กับเมทริกซ์ทุกรูปทรงไม่ว่าจะมีรูปร่างหรือขนาดอย่างไร SVD เผยโครงสร้างพื้นฐานของข้อมูลโดยแยกออกเป็นรูปแบบและความสำคัญสัมพัทธ์ของมัน
ทำไม SVD จึงถูกใช้ในวิทยาการข้อมูลและการเรียนรู้ของเครื่อง?
SVD ช่วยลดจำนวนมิติในชุดข้อมูลมิติสูงขณะยังคงเก็บรูปแบบที่สำคัญที่สุดไว้ เป็นคณิตศาสตร์เบื้องหลัง PCA และระบบแนะนำ แอปพลิเคชันเหล่านี้ต่างอาศัยแนวคิดเดียวกันคือเก็บองค์ประกอบเด่นและตัดส่วนที่เหลือออก
ความแตกต่างระหว่าง SVD กับ eigendecomposition คืออะไร?
Eigendecomposition ใช้ได้เฉพาะกับเมทริกซ์สี่เหลี่ยมจัตุรัส ในขณะที่ SVD ใช้ได้กับเมทริกซ์ทุกรูปทรง สำหรับเมทริกซ์สี่เหลี่ยมจัตุรัสแบบสมมาตร เช่น เมทริกซ์โควาเรียนซ์ ทั้งสองวิธีให้ผลลัพธ์ที่เกี่ยวข้องกันอย่างใกล้ชิด — ค่าสเกลาร์เอกฐานของเมทริกซ์กึ่งบวกจะเท่ากับค่าเอกลักษณ์ SVD จึงเป็นเครื่องมือที่ทั่วไปกว่า จึงมักเป็นค่าเริ่มต้นในเวิร์กโฟลว์วิทยาการข้อมูลส่วนใหญ่
ค่าสเกลาร์เอกฐานเกี่ยวข้องกับการบีบอัดข้อมูลอย่างไร?
ค่าสเกลาร์เอกฐานถูกเรียงจากมากไปน้อย และแต่ละค่าบ่งชี้ว่าหนึ่งองค์ประกอบอธิบายความแปรปรวนได้มากเพียงใด การลบค่าน้อย (และเวกเตอร์ที่ตรงกัน) จะลบรูปแบบเล็กน้อยและสัญญาณรบกวนออก ขณะคงโครงสร้างหลักไว้ คุณแลกความแม่นยำที่ลดลงเล็กน้อยกับการลดขนาดที่มาก
เมื่อใดควรหลีกเลี่ยงการใช้ SVD?
SVD มีต้นทุนสูงสำหรับเมทริกซ์ขนาดใหญ่ โดยมีความซับซ้อนเวลา O(mn^2) สำหรับการแยกแบบเต็ม สำหรับชุดข้อมูลเล็กที่มีคุณลักษณะไม่กี่ตัว วิธีที่ง่ายกว่า เช่น การวิเคราะห์สหสัมพันธ์หรือการคัดเลือกคุณลักษณะพื้นฐาน มักทำงานได้เร็วกว่า หากเมทริกซ์มีขนาดใหญ่มากและต้องการแค่องค์ประกอบบนสุด Truncated หรือ Randomized SVD จะเหมาะกว่าการทำ SVD แบบเต็ม