วันเสาร์ที่ 2 มกราคม พ.ศ. 2564

การใช้ PCA วิเคราะห์องค์ประกอบหลักเพื่อลดตัวแปรด้วย python

เวลาวิเคราะห์ model ที่ตัวแประเยอะเช่นรูปภาพ เอามาใส่ขนาด 100x100 ก็มีตัวแปรเป็น 10,000 ต้องหาวิธีลดตัวแปรให้สามารถวิเคราะห์ได้ง่ายและรวดเร็วมากขึ้น

เนื้อหาขอบคุณ ศ.ดร.ธนารักษ์ ธีระมั่นคง ดร.กอบกฤตย์ วิริยะยุทธกร จาก aiat มากๆนะครับที่อธิบายได้แจ่มแจ้งมาก https://www.youtube.com/watch?v=1qZyWTTw0mI

นี่คือหน้าตาข้อมูลเดิม
แกนใหม่ก็หมุนมาได้อย่างสวยงาม

จะหา PCA ก็คือหา lamda ที่ทำให้มี covariance สูงสุด ภายใต้เงื่อนไข dot กันแล้วได้ 1 ใน unit vector (วันไหนเข้าใจจะมา update)  แปะการ proof ที่มาที่ไปไว้หน่อย




ที่มา เอกสารคำบรรยายวิชา  Advanced Data Analysis บทที่ 18
อันนี้บทที่ 18 https://www.stat.cmu.edu/~cshalizi/uADA/12/lectures/ch18.pdf
อันนี้หน้าวิชามีบทอื่นๆด้วย https://www.stat.cmu.edu/~cshalizi/uADA/12/

หา ไอเก้นเวกเตอร์ และไอเก้นแวลู ของ covariance ได้ก็จบล่ะ

จากสมการสุดท้ายที่ proof มา ย้างข้างให้เท่ากับ 0 จะเท่ากับ 0 ได้ determinant ต้องเท่ากับ 0 หลายตัวแปรแก้ยากเดี๋ยวให้ numpy มันแก้ให้


จะออกมาสองตัวคือ eigen value จะบอกว่าอันไหนมีค่า variance สูงสุด , eigen vector เอาไว้คูณกับตัวแปรเดิมเพื่อสร้าง ตัวแปรใหม่

ความแหล่มคือ เราเห็น lamda2 มีค่ามากๆ เราสามารถลดมิติข้อมูลโดยการเอาแค่ eigen vector คอลั่มที่ 2 มาคูณข้อมูลที่ทำการปรับค่าด้วย mean แล้ว ให้เหลือตัวแปรเดียวได้

ลองเขาขั้นตอนจากคลิปมาเขียน code ถ้าเลขออกมาตรงกันก็ใช้ได้




import numpy as np
def PCA(x):  
    #ทำ normalize ข้อมูล
    xnorm = x - x.mean(axis=0)
    #หา covarian
    cov = np.dot(xnorm.T,xnorm)/(xnorm.shape[0]-1)
    #หา eigen value และ eigen_vector
    eigen_value, eigen_vector = np.linalg.eig(cov)
    #คำนวณ PC1, PC2, PC3,... ที่ลดมิติมาแล้วเดี๋ยวค่อยเลือกใช้จาก result table อีกที
    x_dat = np.dot(eigen_vector.T,xnorm.T)
    #หาความสามารถในการอธิบายความผันผวนของตัวแปรเดิม 
    varienratio = eigen_value/eigen_value.sum()
    #หายอดสะสม
    cumsum = varienratio.cumsum()
    result_table = np.array([eigen_value,varienratio,cumsum])
    
    return x_dat.T, result_table,eigen_vector    

ก่อนเอา data มาใส่ให้ แถวเป็นข้อมูล คอลั่มเป็นตัวแปร จะกลับกับในคลิปหน่อย 

ผลออกมา เลือก PC2 คอลั่มที่ 2 อันเดียวก็พอเพราะมีค่า lamda สูงสุดที่ 6.6 อธิบายความแปรปรวนรวมได้ถึง 96%

ขอบคุณ อ จาก AIAT ที่อธิบายและยกตัวอย่างคำนวณอย่างยอดเยี่ยมครับ





☀หลักสูตรวิเคราะห์หุ้นด้วยปัจจัยพื้นฐาน☀


✅เจาะลึกหุ้นอย่างเซียน เห็นผลจริง100% สไตร์ อ.ภัทร
✅Workshop !! ทำจริง เห็นผลจริง พิสูจน์ได้
✅เรียนคลาสเล็ก ถามได้ทุกคำถามคาใจ

☀เรียนแล้วได้อะไร☀


✅10 จุุดสำคัญอ่านงบการเงิน วิเคราะห์ธุรกิจไม่เสียเวลา
✅ปัจจัยเร่ง ให้หุ้นวิ่ง และสัญญาณยืนยันในงบการเงิน
✅ประมาณราคาเหมาะสม เห็นเป้าราคาหุ้นตั้งแต่วันที่ซื้อ
✅เคล็ดลับสแกนหุ้น ถูก ดี กำไรโต

🔈สอนโดย อ ภัทรธร ช่อวิชิต
นักลงทุนอิสระ เจ้าของผลงานหนังสือ คุ้ยแคะแกะหุ้นเด้ง และเจาะหุ้นร้อนสแกนหุ้นเด้ง

=======================================

🔈รายละเอียดหลักสูตร วันเวลา

investidea.in.th/p/value-investor

=======================================

☎ติดต่อสอบถามและลงทะเบียน (รับจำนวนจำกัด)

มือถือ: 0865035023

ข้อความ; www.facebook.com/messages/investidea.in.th/

line id; pat4310

เพิ่มเพื่อน
=======================================

☀เนื้อหาหลักสูตร☀


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

=======================================

☎ติดต่อสอบถามและลงทะเบียน (รับจำนวนจำกัด)

มือถือ: 0865035023

ข้อความ; www.facebook.com/messages/investidea.in.th/

line id; pat4310

เพิ่มเพื่อน