0Pricing
Learn AI with Python · บทเรียน

สหสัมพันธ์และความแปรปรวนร่วม

สหสัมพันธ์แบบเพียร์สันและสเปียร์แมน เมทริกซ์ความแปรปรวนร่วม และการตีความสหสัมพันธ์ในบริบทแมชชีนเลิร์นนิง

สหสัมพันธ์และความแปรปรวนร่วม เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

การวัดความสัมพันธ์

ความแปรปรวนร่วมและสหสัมพันธ์ใช้วัดว่าตัวแปรสองตัวเปลี่ยนแปลงไปด้วยกันอย่างไร แนวคิดเหล่านี้เป็นพื้นฐานของการคัดเลือกคุณลักษณะ ทฤษฎีพอร์ตโฟลิโอ และการวิเคราะห์เชิงสำรวจ

ความแปรปรวนร่วม

ความแปรปรวนร่วมเป็นบวกเมื่อตัวแปรเพิ่มขึ้นไปด้วยกัน และเป็นลบเมื่อตัวแปรหนึ่งเพิ่มขึ้นขณะที่อีกตัวลดลง ขนาดของค่าขึ้นอยู่กับหน่วย ทำให้ตีความความแปรปรวนร่วมดิบได้ยาก

import numpy as np
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 5, 4, 6])
print(np.cov(x, y, ddof=1))   # 2x2 covariance matrix

เมทริกซ์ความแปรปรวนร่วม

np.cov ส่งคืนเมทริกซ์ โดยสมาชิกบนแนวทแยงคือความแปรปรวน และสมาชิกนอกแนวทแยงคือความแปรปรวนร่วมระหว่างคู่ตัวแปร แนวคิดนี้ขยายไปใช้กับตัวแปรหลายตัวและเป็นพื้นฐานของ PCA

data = np.array([[1, 2, 3], [2, 4, 5], [3, 6, 7]], dtype=float)
print(np.cov(data.T))   # 3x3 covariance matrix of the columns

สหสัมพันธ์: ความแปรปรวนร่วมที่ปรับขนาดแล้ว

สหสัมพันธ์ของเพียร์สันปรับขนาดความแปรปรวนร่วมให้อยู่ในช่วง -1 ถึง 1 ด้วยการหารด้วยผลคูณของส่วนเบี่ยงเบนมาตรฐาน จึงไม่ขึ้นกับหน่วยและสามารถเปรียบเทียบกันได้

print(np.corrcoef(x, y))   # 2x2 correlation matrix, diagonal is 1

การอ่านค่าสหสัมพันธ์

+1 คือความสัมพันธ์เชิงเส้นเชิงบวกที่สมบูรณ์แบบ -1 คือความสัมพันธ์เชิงลบที่สมบูรณ์แบบ และ 0 คือไม่มีความสัมพันธ์แบบ LINEAR ค่าใกล้ 0 ก็ยังอาจซ่อนรูปแบบที่ไม่เป็นเชิงเส้นซึ่งมีความชัดเจนไว้ได้

สหสัมพันธ์ใน pandas

df.corr() คำนวณสหสัมพันธ์เป็นคู่ระหว่างคอลัมน์ตัวเลขทั้งหมดพร้อมกัน จึงเป็นวิธีที่รวดเร็วที่สุดในการสำรวจความสัมพันธ์ในชุดข้อมูล

import pandas as pd
df = pd.DataFrame({"a": [1,2,3,4,5], "b": [2,4,5,4,6], "c": [9,7,6,5,3]})
print(df.corr())   # Pearson by default

Pearson เทียบกับ Spearman

Pearson วัดความสัมพันธ์เชิงเส้นจากค่าดิบ ส่วน Spearman ทำงานกับ RANKS จึงตรวจจับความสัมพันธ์แบบโมโนโทนิกได้ทุกรูปแบบและทนต่อค่าผิดปกติ

from scipy import stats
x = np.array([1, 2, 3, 4, 100])
y = np.array([1, 2, 3, 4, 5])
print(stats.pearsonr(x, y).statistic)    # distorted by outlier
print(stats.spearmanr(x, y).statistic)   # 1.0 (perfectly monotonic)

การเลือกวิธีการ

df.corr(method="spearman") เปลี่ยน pandas ให้ใช้สหสัมพันธ์จากอันดับ ควรเลือก Spearman เมื่อมีค่าผิดปกติหรือมีความสัมพันธ์ที่ไม่เป็นเส้นตรงแต่ยังเป็นแบบโมโนโทนิก และเลือก Pearson เมื่อข้อมูลสะอาดและมีความสัมพันธ์เชิงเส้น

print(df.corr(method="spearman"))

สหสัมพันธ์ไม่ใช่เหตุเป็นผล

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

สหสัมพันธ์ลวง

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

การแสดงภาพด้วย heatmap

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

# import seaborn as sns
# sns.heatmap(df.corr(), annot=True, cmap="coolwarm")

ตรวจสอบอย่างรวดเร็ว

ทดสอบความรู้เรื่องสหสัมพันธ์ของคุณ

ทบทวน

ชุดเครื่องมือสหสัมพันธ์:

  • ความแปรปรวนร่วมแสดงทิศทาง แต่ขึ้นอยู่กับหน่วยวัด np.cov ให้เมทริกซ์
  • สหสัมพันธ์ปรับขนาดให้อยู่ในช่วง -1..1: np.corrcoef, df.corr()
  • Pearson (เชิงเส้น) เทียบกับ Spearman (อันดับ ทนทาน และโมโนโทนิก)
  • สหสัมพันธ์ไม่ใช่เหตุเป็นผล ควรระวังตัวแปรกวนและความเชื่อมโยงลวง

คำถามที่พบบ่อย

บทเรียน “สหสัมพันธ์และความแปรปรวนร่วม” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “สหสัมพันธ์และความแปรปรวนร่วม” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “สหสัมพันธ์และความแปรปรวนร่วม”

สหสัมพันธ์แบบเพียร์สันและสเปียร์แมน เมทริกซ์ความแปรปรวนร่วม และการตีความสหสัมพันธ์ในบริบทแมชชีนเลิร์นนิง คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “สหสัมพันธ์และความแปรปรวนร่วม” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม

ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. สถิติเชิงพรรณนาและการแจกแจง
  2. ความน่าจะเป็นและทฤษฎีบทของเบย์
  3. การทดสอบสมมติฐาน
  4. สหสัมพันธ์และความแปรปรวนร่วม
← กลับไปที่ Learn AI with Python