全景地圖:主線十六關,其實只有一個運算在重複
這關不教新東西。它把前面十五關擺成一張圖 —— 線性代數把一份資料壓成一張矩陣 C、 機率統計讓那張 C 能算機率、 最佳化把它變成要被最小化的目標 —— 回答那些「跨主題才會冒出來」的問題,用十八題測驗確認你不是「看懂了」而是「真的懂了」, 最後誠實列一張這間實驗室還沒教的清單。
整條主線,一句話
一句話骨架
內積問「你們同方向嗎」 → 拿一欄資料跟自己內積,就是變異數 → 拿兩欄互相內積,就是共變異數 → 把所有欄兩兩配對排成方陣,就是共變異數矩陣 C → 問 C「哪個方向最散」, 答案是它的特徵向量,那件事的名字叫 PCA。
機率統計接手:把「一堆點」換成「一個分布」—— 原本 C 只是描述形狀的一張帳, 補上機率之後它可以算機率(某個範圍裡到底會有多少比例的點); 再把它反過來當一把尺,量出來的就是馬氏距離。
最佳化再接手:把 C 從「描述」變成「要被最小化的目標」—— wᵀCw 從此不是讀數而是成本; 再加上「錢要用完、不能做空」這些約束,畫出來就是有效邊界。
線性代數 —— 把一份資料壓成一張矩陣
機率統計 × 線代 —— 讓那張矩陣能算機率
最佳化 —— 把那張矩陣當成要壓低的成本
整條線只有一個動作在重複:兩個東西相乘再加總。變的只是「誰跟誰」、「除以幾」、 以及「你想把算出來的那個數字變大還是變小」。
而且本實驗室每一種用法各給了一整關:
- 看形狀 —— 把 C 夾在中間、最大化 vᵀCv,答案是主軸。 05 關 · PCA
- 當尺 —— 取反矩陣當度量,量 (x−μ)ᵀC−1(x−μ), 答案是「這個點有多罕見」。機率統計 05 關 · 馬氏距離
- 當目標 —— 在約束下最小化 wᵀCw,答案是一整條有效邊界。 最佳化 03 關 · 有效邊界
三個式子裡的 C 是同一個 C。 變的只有兩件事:你把它夾在中間還是取反矩陣、你要最大化還是最小化。 這一句話就是整份教材的骨頭,其他都是肉。
特徵向量是矩陣的,還是資料集的?
特徵向量只有「方陣」才有。資料集本身沒有特徵向量。
「特徵向量」這個問題只有在你能寫下 Av = λv 的時候才成立 —— 左邊是「矩陣吃一個向量、吐出一個同維度的向量」。n×2 的資料表沒辦法吃自己的向量: 它吃一個 2 維向量會吐出 n 維的東西,形狀就對不上,方程式根本寫不出來。
所以:一份資料集必須先被壓成一個方陣,才輪得到特徵向量。壓法不只一種:
- 共變異數矩陣 C = XcᵀXc / (n−1) —— 最常見,特徵向量=資料主軸(PCA)
- Gram / 核矩陣 XᵀX(或 XXᵀ)—— 沒去中心化的版本,特徵向量是「含原點位置」的主方向
- 圖的鄰接矩陣 —— 節點 × 節點,特徵向量=節點重要度(PageRank 家族)
- 馬可夫轉移矩陣 —— 狀態 × 狀態,λ=1 的特徵向量=跑久了會停在哪的穩態分佈
看出來了嗎?這四個都是方的,而且都是「把一份資料折成一張兩兩關係表」。 資料集沒有特徵向量,但資料集的摘要表有。
同一條式子 Av = λv,兩種讀法
這是 04 關跟 05 關看起來像兩件事的真正原因:矩陣可以是「一個動作」,也可以是「一份資料的摘要」。 式子完全一樣,但每個符號的物理意義不同。
| 你在問什麼 | 矩陣=一個動作(04 關那種) | 矩陣=一份資料的摘要(05 關那種) |
|---|---|---|
| 這矩陣哪來的? | 你(或物理定律)寫下來的規則:一步之後系統怎麼變、一幀之後座標怎麼變。 | 從資料算出來的:拿去中心化後的資料表,每兩欄做一次內積、除以 n−1。 |
| 它在幹什麼? | 把輸入向量搬到別的地方 —— 拉長、壓扁、剪歪、轉一圈。是個函數。 | 什麼都不搬。它只是一張帳:每一格記著「這兩欄有多常一起動」。 |
| Av = λv 讀成什麼? | 「v 這個方向丟進去,出來還在同一條線上,只是長度乘了 λ。」 | 「v 這個方向上,資料的散開程度是 λ,而且這個方向不會跟其他方向互相污染。」 |
| λ 的物理意義? | 拉伸倍率(無單位)。>1 放大、<1 縮小、負的翻面、=1 原地不動。 | 那個方向上的變異數(單位=原單位的平方)。一定 ≥ 0,因為變異數不會是負的。 |
| v 的意義? | 不轉向的方向 —— 這個動作作用在它身上時懶得改它的方向。系統的「骨架」。 | 資料最散開的方向 —— 把頭歪到這個角度看資料雲,它看起來最長。 |
| 一定對稱嗎?特徵向量互相垂直嗎? | 不一定。一般矩陣的特徵向量可以歪歪地擠在一起(甚至只有一個)。 | 一定對稱(因為 cov(x,y)=cov(y,x)),所以特徵向量保證互相垂直 —— 這就是主軸能當新座標軸的原因。 |
| λ 可能是複數嗎? | 會。純旋轉就沒有實特徵向量 ——「沒有任何方向不被轉走」。見 04 關 | 不會。實對稱矩陣的特徵值保證是實數,而且保證 ≥ 0。所以 PCA 永遠算得出答案。 |
| 典型用途 | PageRank 排名、馬可夫穩態、控制系統穩定性(看 |λ| 有沒有超過 1)、振動模態、對角化加速矩陣次方 | PCA 降維、因子模型(金融的風險因子)、eigenfaces、白化(whitening)、共線性診斷 |
np.linalg.eigh(C) 的時候,
那個函式根本不知道 C 是「一個轉場動畫」還是「三十天的股價共變異數」——
它只知道你給了它一個對稱方陣。「先把問題壓成方陣」才是真正的功夫,特徵分解只是最後一行。
從資料表到主軸 —— 以及 C 的另外兩條出路
左邊那一直線是 05 關那一整套操作的形狀變化史;右邊接的是後面兩組從同一張 C 分出去的兩條路。 注意方陣是在第三步才出現的 —— 在那之前,「特徵向量」這個詞是無效的。
你會看到什麼:左邊一直線往下是線性代數的主流程 (青=原始資料表、藍=去中心化後、 橘=共變異數矩陣 C);右邊是同一張 C 的三種用法 (紫=看形狀,連 05、青=當尺,連 12、 桃=當目標,連 10/15,最下面多一張是加了約束之後的有效邊界)。 每張卡右上角的 n × 2 這種標記讀作「幾列 × 幾欄」;箭頭旁的字是那一步在做什麼。 左下角那張虛線框不是流程的一步,是讀圖說明。
你可以動什麼:這張是靜態流程圖,沒有滑桿。但右邊四張卡跟那條紫色虛線都可以點, 點下去直接到對應的那一關(滑上去會先顯示它要帶你去哪)。
要看出什麼:兩件事。第一, 綠色那條分界線以上全是長方形(n 列 × 2 欄), 以下全是「已經被壓成方陣」之後的世界 —— 所以「特徵向量」這個詞在前兩張卡上根本無效。 第二,右邊三條分岔的起點是同一張卡:差別只在你對 C 做什麼(夾在中間 / 取反矩陣 / 當成要壓低的成本)。
左邊的形狀標註是重點:n × 2 → n × 2 → 2 × 2。降維那個「維」是欄數不是列數; 而變成方陣的那一刻,欄數就決定了矩陣邊長。 那條紫色虛線從「去中心化後」那張卡直接抵達主軸, 省掉「壓成方陣」那一步(去中心化還是得做,所以它不是從最上面那張卡出發), 那條路的名字叫 SVD,就在第 07 關。
同一個東西,三個圈子的三種說法
為什麼你看幾何的解釋跟看統計的解釋會覺得「這是兩門課」?因為它們在講同一件事, 但用的名詞、單位、關心的問題都不同。下面分成三張表把三種語言並排放 (一張二十八列的表沒人讀得完)—— 滑過任一列會整列高亮,方便你橫著讀完一個概念。
- σ 有兩個意思。前面線性代數與機率統計裡的 σ 是標準差; 07 關的 σi 是奇異值(橢圓第 i 根半軸有多長)。 兩者只有在「對去中心化資料表做 SVD」時才有換算關係: σi2 ÷ (n−1) = λi。
- λ 有兩個意思。04 關的 λ 是特徵值(那個方向上的變異數); 最佳化 02 關的 λ 是Lagrange 乘子(約束鬆一單位能換到多少改善)。 兩者完全無關,純粹是希臘字母被用完了。看到 λ 先問「這裡在講方向還是講約束」。
- Σ 有三個意思:加總符號、母體共變異數矩陣 (對應樣本的那張 C)、以及 SVD 裡裝奇異值的對角矩陣。 看上下文,不要看字形。
還有一組不是撞名、但更常搞混: x̄/s2/C 是從手上這批樣本算出來的, μ/σ2/Σ 是母體的真值(你永遠看不到,只能估)。 機率統計 01 #sample-vs-pop 整節就在講這件事。
表一 · 線性代數(01–07)
這十五列的共同點:全部只需要「長度」跟「夾角」。沒有機率,也沒有「要變好」。 表裡的 rank(A) 是秩(06 關, 「這個矩陣的輸出實際上撐得開幾維」)、Q 是正交矩陣 (06 關,只轉不拉不歪,所以 QᵀQ = I,I 是「什麼都不做」的那個單位矩陣)。
| 概念 | 幾何看(形狀、影子、角度) | 統計看(平均、離差、機率) | 工程看(訊號、風險、系統) |
|---|---|---|---|
| 內積 u·v | 「u 打在 v 上的影子長度」乘上「v 的長度」。同向為正、垂直為 0、反向為負。 | 兩欄離差乘積的總和 —— 也就是「一起偏高/一起偏低」累積下來的票數。 | 相似度分數。embedding 檢索、attention 權重、匹配濾波器(matched filter)全是它。 |
| 長度平方 u·u | 畢氏定理:每個座標平方加起來,就是斜邊長的平方。 | 離差平方和(SS)。除以 n−1 就變成變異數。 | 訊號能量、L2 loss、平方誤差 —— 所有「越大越糟」的懲罰項。 |
| 中心化 x − x̄ | 把整團資料的重心平移到原點,方向資訊留下、位置資訊丟掉。 | 只保留「比平均高多少 / 低多少」,把絕對水位拿掉。 | 去直流(DC offset)、baseline 校正、去掉大盤只留個股超額報酬。 |
| 變異數 σ2 | 中心化向量長度的平方,再除以 n−1。 | 平均離差平方 —— 資料有多散。 | 訊號功率、波動率的平方、雜訊量。 |
| 標準差 σ | 中心化向量的長度,除以 √(n−1)。 | 回到原單位的散開程度,可以直接跟原始數字比。 | 誤差棒、延遲抖動(jitter)、年化波動率 —— 講給人聽的那個風險數字。 |
| 共變異數 cov(x,y) | 兩個中心化向量的內積,除以 n−1。 | 兩欄一起偏離平均的程度,有正負號。 | 對沖配對、感測器串擾、兩路訊號的同步程度。 |
| 相關係數 r | 兩個中心化向量的夾角餘弦 cos θ,所以必然落在 −1 到 1。 | 把共變異數除掉兩邊標準差,變成無單位、可跨欄比較的強度。 | 特徵去重(|r| > 0.9 就砍一個)、指標互相關、多重共線性警報。 |
| 共變異數矩陣 C | 一顆橢圓:長軸方向=資料最散的方向,胖瘦=兩軸的散開比例。 | 所有欄兩兩配對的共變異數表;對角線是各欄自己的變異數。 | 投資組合風險矩陣、Kalman 濾波的不確定度、白化用的那個矩陣。 |
| 特徵向量 v | 被這個矩陣作用後方向不變的那條線。 | (對 C 而言)資料最散開的方向,也就是主成分。 | PageRank 的排名向量、結構的振動模態、eigenfaces 的那些臉。 |
| 特徵值 λ | 在那個方向上被拉長幾倍(無單位的倍率)。 | (對 C 而言)那個方向上的變異數,一定 ≥ 0。 | 穩定性判準(|λ| > 1 就會發散)、能量佔比、矩陣條件數。 |
| 投影 projv(u) | 正上方照光時,u 落在 v 那條線上的影子(帶正負號)。 | 用 x 能解釋掉 y 的那一份 —— 迴歸的擬合值。 | 降維後的座標、beamforming、最小平方解、訊號分解成基底。 |
| 正交 | 夾角剛好 90°,內積 0,影子長度是 0。 | 線性上完全不相關 —— 知道一個,對猜另一個一點幫助都沒有。 | 可以獨立轉的旋鈕、互不串擾的通道、不共線的特徵(模型才不會爆)。 |
| 秩 rank(A) | 這個矩陣的輸出實際上撐得開幾維。2×2 的秩 2 = 還是整個平面,秩 1 = 整個平面被壓成一條線。 | 資料表真正獨立的欄數。三欄裡有一欄是另兩欄相加,秩就是 2,而 C 會有一個 λ = 0。 | 多重共線性診斷、矩陣可不可逆、系統能控制幾個自由度、低秩壓縮能砍到幾層。 |
| 正交矩陣 Q | 只轉不變形的動作:所有長度不變、所有夾角不變。反矩陣就是轉置(QᵀQ = I)。 | 換一組新的座標軸(每軸互相垂直、長度 1)來看同一份資料 —— 總變異數完全不變,只是重新分配到各軸上。 | 旋轉與反射、換基底、QR 分解(數值穩定的解法)、白化後的那個旋轉、姿態表示。 |
| 奇異值 σi | 單位圓被這個矩陣壓成橢圓後,橢圓各半軸的長度。σ1 是最長的那根。 | 對去中心化資料表 Xc 而言,σi2 ÷ (n−1) 就是第 i 個特徵值 λi,也就是那一軸的變異數。 | 條件數 σ1/σn(數值穩不穩)、低秩壓縮留幾層、雜訊底噪該在哪裡截斷。 |
表二 · 機率統計 × 線代(01–05)
這一組只做一件事:把「一堆已經發生的點」換成「一台會生點的機器」。 所以這九列的「統計看」那一欄,重點永遠是你手上的數字 vs 你想知道的真值之間那道縫。
| 概念 | 幾何看(形狀、面積、切面) | 統計看(樣本 vs 母體) | 工程看(訊號、風險、系統) |
|---|---|---|---|
| 隨機變數 X | 畫出來不是一顆點,是整條軸上的一片濃淡 —— 哪裡濃就是哪裡常出現。 | 一個還沒發生的數字,只知道「哪些值多、哪些值少」。已經發生的那些叫樣本 x1…xn。 | 一次 API 呼叫的延遲、一顆感測器的讀值。你手上的 log 是它的樣本,它本人是那個「機制」。 |
| 期望值 E[X] | 密度那塊面積的重心橫座標 —— 剪下來用一根手指頂住,頂得起來的那個位置。 | 長期平均會收斂到的那個數。它是分布的性質(寫成 μ),不是資料的統計量(那個叫 x̄)。 | 無限次重跑之後的平均延遲/平均損益。不是最常見的值,也不保證真的發生過。 |
| 母體 vs 樣本 | 母體是整條密度曲線,樣本是從曲線底下隨機灑出來的有限幾顆點。 | x̄, s2, C 是拿來估 μ, σ2, Σ 的。÷(n−1) 就是為了讓估計平均起來不偏低。 | 你手上永遠只有樣本(上週的 log),要決策的卻是母體(下週的表現)。A/B 測試整套都在打這一仗。 |
| 標準誤 SE = σ/√n | 把「平均數」自己也當成一個會抖的量 —— 它的分布比原始資料窄 √n 倍。 | 不是「資料有多散」(那是 σ),而是你算出來的那個平均有多不可靠。 | 誤差棒、信賴區間、「這個 5% 提升是真的還是雜訊」。要把不確定砍半得多收 4 倍資料。 |
| 密度函數 f(x) | 一條曲線,「面積」才是機率;高度只是「這附近有多擠」,單位是「每單位 x 的機率」。 | 直方圖把長條寬度縮到 0、同時把高度改成「比例 ÷ 寬度」的極限。整條曲線下面積 = 1。 | 延遲分布圖;「bucket 大小換一下結論就變」的那個坑 —— 改看密度就跟 bucket 無關了。 |
| z 分數 z = (x−μ)/σ | 把整條軸先平移再縮放:中心落到 0,一個標準差剛好一格。 | 「離平均幾個標準差」,無單位,所以身高跟考試分數可以直接比。|z| > 2 大約是最外面 5%。 | 異常門檻、指標標準化(05 關 PCA 前處理就是逐欄算 z)、跨服務比較不同量級的抖動。 |
| Var(X+Y) 的交叉項 2cov | 兩根向量相加的長度平方 —— 餘弦定理裡那個 2|u||v|cos θ 就是交叉項本人。 | 變異數不能直接相加,除非 cov = 0。正相關比各自加起來更抖,負相關會互相抵銷。 | 兩個服務串起來的總延遲抖動、投資組合的分散效果、雙路備援到底有沒有真的變穩。 |
| 聯合分布與獨立 f(x,y) | 從「一條曲線」升級成一座山。獨立=這座山剛好是兩條曲線相乘撐出來的,每一刀切面形狀都一樣。 | 獨立的定義是 f(x,y) = f(x)f(y),比「cov = 0」強得多:cov 只看線性,獨立管所有形狀。 | Naive Bayes 敢把機率相乘的那個假設、特徵能不能分開建模、快取命中與延遲是不是真的無關。 |
| 馬氏距離 dM | 先把資料雲揉成正圓(除掉各方向的散開程度),再量普通直線距離。等距線是橢圓而不是圓。 | 「離平均幾個標準差」的多維版本 —— 用 C−1 同時校正各方向的尺度與相關。 | 離群偵測門檻、Kalman 濾波的殘差檢定、感測器異常判定、多指標一起看的漂移警報。 |
表三 · 最佳化(01–03)
最佳化把前面所有讀數翻轉一次:原本是「算出來給你看」,現在是「要被推到最好」。 同一個 wᵀCw,在機率統計 01–05 是讀數、在最佳化 01–03 是成本。
| 概念 | 幾何看(地形、等高線、相切) | 統計看(要被最小化的那個量) | 工程看(訊號、風險、系統) |
|---|---|---|---|
| 目標函數與可行域 | 目標是一片地形(等高線圖),可行域是地圖上被允許站的那塊區域。最優解=區域裡最低的那一點。 | 把「要變好」寫成一條明確的式子:組合變異數、殘差平方和、負對數概似。 | loss function 與 constraint。沒寫下目標函數的「調參數」其實是瞎試,因為連「更好」都還沒定義。 |
| 梯度 ∇f | 站在地形上,指向最陡上坡的那根箭頭;長度=有多陡。往反方向走就是下降。 | 沒有約束時,最低點的必要條件是 ∇f = 0(地形變平)。但那只是必要,鞍點也滿足。 | gradient descent 每一步的方向、backprop 算的東西;學習率就是「這根箭頭要走多長」。 |
| Lagrange 乘子 λ | 相切時的那個比例:最優點上目標的梯度跟約束的梯度指同一條線,λ 是兩者的長度比。 | 把「有約束的最佳化」改寫成無約束的 f − λg,就能繼續用「梯度為 0」那一套。 | 影子價格:約束鬆一單位,目標能改善多少。預算多一塊錢值不值得,λ 就是答案。(跟 04 關的特徵值 λ 無關。) |
| 約束最佳化 wᵀCw | 在一條線或一顆球面上找二次型的極值 —— 答案落在「等高線剛好碰到約束」的那一點。 | 在「權重加起來等於 1」之下把組合變異數最小化,就是最小風險組合;換成最大化就回到 PCA。 | 投資組合最佳化、beamforming 權重、正則化下的最小平方、任何「資源有限下求最好」。 |
什麼情況下該掏出哪個工具
前面十五關都是「這個工具怎麼運作」。這張表反過來:先給情境,再給工具。 真實工作裡你拿到的是情境,不是題目。表格分三段 —— 機率統計 01–05 那一段特別值得看,因為那些大多是「你其實已經在做、但一直做得不太對」的事。
| 情境(你真正想知道的事) | 該用 | 為什麼是它 | 回去看 |
|---|---|---|---|
| 線性代數(01–07)—— 把一份資料壓成一張 C | |||
| 兩個使用者品味像不像,但一個給分很寬鬆(都打 8~10 分)、一個很嚴格(都打 3~5 分) | cos 相似度 | 內積會被「打分大方」這件事放大。除掉兩邊長度之後只剩方向,寬鬆度就被消掉了。 | 01 #cos |
| 想知道一段訊號裡「跟某個已知模式重合的部分」有多少,並把它抽出來 | 投影 | 投影就是「只保留 v 方向那一份」,剩下的垂直分量正好是沒被解釋掉的殘差。 | 01 #proj |
| 想確認兩個特徵是不是真的互不相干、可以分開調整而不互相影響 | 內積是否為 0(正交) | 內積 0 = 幾何上垂直 = 統計上不相關。這是「兩顆旋鈕互不干擾」的數學定義。 | 01 #ortho |
| 兩個班平均分一樣,你想知道哪一班「穩」、哪一班有人特別高特別低 | 標準差 σ | 平均數看不出散開。標準差跟原始分數同單位,可以直接說「上下大概 12 分」。 | 02 #std-vs-var |
| 想知道兩檔股票能不能互相避險(一個跌的時候另一個會不會撐住) | 共變異數(要負的才有效) | 避險要的是「反向一起動」。共變異數保留正負號跟量級,這裡的符號就是答案。 | 03 #lab-cov |
| 「氣溫 vs 冰品銷量」跟「氣溫 vs 空調用電」,哪一組關係更緊? | 相關係數 r | 兩組單位完全不同(杯 vs 度),共變異數的數字沒法比。r 無單位,才能跨組比較。 | 03 #corr |
| 手上兩個特徵各自看都正常,但你懷疑「它們合起來」才是真正在動的東西 | 共變異數矩陣的特徵向量 | 單欄變異數只看得到 x 軸、y 軸兩個方向。特徵向量會找出斜的那個真正主方向。 | 05 #meaning |
| 資料有 30 個欄位,但你直覺覺得它們其實在講三件事 | PCA | PCA 會告訴你前幾軸吃掉多少變異數比例。若前 3 軸就 90%,你的直覺就被量化證實了。 | 05 #reduce |
| 要餵進 PCA 的欄位單位差很多(年薪是六位數、年資是一位數) | 先標準化,再 PCA | 不標準化的話主軸幾乎一定指向「年薪」,因為它的數字大 —— 那是單位造成的假訊號。 | 05 #scale-trap |
| 一個系統反覆套同一個規則跑很多輪,想知道它最後會停在哪 | λ = 1 的特徵向量(穩態) | 不斷相乘之後,最大 |λ| 的方向會吃掉一切。轉移矩陣的最大 λ 恰好是 1,那個方向就是終點。 | 04 #power |
| 想知道這個系統會不會跑久了就爆掉(發散) | 看最大 |λ| 是否 > 1 | 每跑一輪,該方向就乘上 λ。|λ| > 1 是指數爆炸、< 1 是指數衰減、= 1 是持平。 | 04 #power |
| 同一個線性動作要套 1000 次,直接乘 1000 次太慢 | 對角化 | 換到特徵向量座標系,動作就退化成「每軸各乘自己的 λ」。1000 次只是把 λ 取 1000 次方。 | 04 #diag |
| PCA 跑出來兩軸的變異數比例是 52% / 48% | 別硬解讀主軸 | 兩個 λ 接近時主軸方向極度不穩定,資料抖一下就轉九十度。這種時候「主軸的意義」是雜訊。 | 05 #scan |
| 三個特徵裡有一個剛好是另兩個加起來的,模型一跑係數就亂飛 | 算矩陣的秩 | 秩 < 欄數 = 有一欄沒帶新資訊。這時共變異數矩陣會有一個 λ = 0、而且不可逆,任何要用 C−1 的方法都會當場翻車。 | 06 #rank |
| 想換一組新座標軸來看同一份資料,但不希望長度跟角度被扭曲 | 正交矩陣 Q | Q 只轉不變形(QᵀQ = I),所以總變異數一滴都不會變 —— 「換角度看」跟「改動資料」因此可以徹底分開。要轉回去也只是轉置。 | 06 #ortho-matrix |
| 資料表 5000 列 × 300 欄,共變異數矩陣又大又算得不穩 | 直接對資料表做 SVD | SVD 不用先壓成方陣(少一次平方,條件數不會被惡化),右奇異向量就是主軸。sklearn 的 PCA 底層走的就是這條。 | 07 #vs-eigen |
| 機率統計 × 線代(01–05)—— 讓那張 C 能算機率 | |||
| 手上只有五筆資料,算出來的標準差能不能信 | 標準誤 SE = s/√n | 標準差講的是「資料有多散」,你問的是「我這個估計有多不穩」—— 那是另一個量。n = 5 的時候 SE 大到幾乎任何結論都講不得;而 SE 只跟 √n 走,想把不確定砍半得收 4 倍資料。 | 機率統計 01 #estimate |
| 手上這批到底是「全部」,還是「抽出來的一部分」 | 決定 ÷n 還是 ÷(n−1) | 是全部(母體)就 ÷n;是抽出來的(樣本)要 ÷(n−1),否則會系統性低估 —— 因為你的離差是拿「樣本自己的平均」量的,而那個平均已經被這批資料拉到最貼合的位置了。 | 機率統計 01 #sample-vs-pop |
| 一次實驗看到「提升 5%」,要不要相信 | 平均數自己的分布(CLT) | 樣本平均本身是隨機變數;而且不管原始資料長什麼形狀,它都會逼近常態、寬度是 σ/√n。有了這個形狀才回答得出「5% 落在雜訊範圍內嗎」。 | 機率統計 02 #clt |
| 直方圖的長條寬度換一下,結論就跟著變 | 改看密度函數 | 長條高度是「這個 bucket 裡有幾筆」,會隨 bucket 寬度亂跳。密度把高度除以寬度,於是面積才是機率,跟你怎麼切 bucket 無關。 | 機率統計 02 #pdf |
| 要跟人解釋「這個值算不算異常」 | 單欄看 z 分數;多欄且相關看馬氏距離 | z 把「離平均幾個標準差」講成一個無單位的數字,一句話就講完。但兩個欄位本身相關(資料雲是斜橢圓)時,逐欄算 z 會同時漏抓真異常又誤判正常點 —— 那時要用 C−1 一起校正尺度與相關。 | 機率統計 02 #z/機率統計 05 #mahalanobis |
| 兩個服務串起來,總延遲的波動有多大 | Var(X+Y) 的三項,別漏交叉項 | 直覺會把兩邊的標準差相加,那是錯的。正確的是變異數相加再加 2cov:兩邊常一起塞車就比你想的更抖,一邊塞另一邊反而順就會互相抵銷。 | 機率統計 03 #variance-add |
| 幾檔資產各自都很抖,合起來會不會反而比較穩 | 算 wᵀCw,看交叉項的正負 | 這正是交叉項在幫忙的情況。只要相關不是 +1,組合波動就一定小於「各自波動的加權和」—— 分散效果不是玄學,就是那個 2ab·cov 在扣分。 | 機率統計 03 #portfolio |
| 模型能不能假設特徵獨立(例如 Naive Bayes 直接把機率乘起來) | 看聯合分布,不是看 cov | cov = 0 只保證沒有線性關聯;獨立要求 f(x,y) = f(x)f(y),管的是所有形狀。一個馬蹄形的關係可以 cov = 0 卻強烈相依,這時把機率相乘會錯得很難查。 | 機率統計 04 #independent |
| 已經知道身高是 175,想問體重的合理範圍 | 條件分布(在山上切一刀) | 逐欄看邊際分布會漏掉「同時發生」這件事。要問的是「x 已經是這個值的條件下,y 這個值常不常見」—— 那是把聯合分布這座山切一刀的切面。 | 機率統計 04 #conditional |
| 要判斷一筆新資料算不算異常,但兩個欄位本身就高度相關(資料雲是斜橢圓) | 馬氏距離 | 用普通直線距離會把「沿著橢圓長軸的正常點」誤判成離群,又漏掉「往窄邊偏一點」的真異常。C−1 會先把橢圓拉回正圓再量。 | 機率統計 05 #mahalanobis |
| 最佳化(01–03)—— 把那張 C 當成要壓低的成本 | |||
| 調參數調不出來、卡在一個下不去的地方 | 先問目標函數是不是凸的 | 凸的地形只有一個谷底,往下走一定走到全域最優;非凸的地形有一堆局部谷底,換個起點就給你不同答案。「調不出來」跟「已經最好了」在非凸地形上長得一模一樣 —— 先確認凸性,再怪自己。 | 最佳化 01 #convex |
| 梯度算出來不是 0,但我確定這就是最優解 | 有約束時的條件是相切,不是梯度為 0 | 「梯度為 0」只在無約束時成立。被約束擋住時,最優點的梯度通常不是 0,而是被約束的法向量抵住 —— 幾何上就是等高線跟約束曲線剛好相切。 | 最佳化 02 #tangent |
| 預算多給一單位,能換到多少改善(值不值得) | Lagrange 乘子 λ(影子價格) | λ 不是計算的副產品,它就是那個答案:約束放寬一單位,最優目標值改善 λ。λ 很小=這條約束其實沒卡住你,加預算是浪費。 | 最佳化 02 #multiplier |
| 手上三檔股票,要決定各放多少比例,讓總波動最小 | 在約束下最小化 wᵀCw | 這不是「挑最好的一檔」而是「挑配置」。目標是二次型(跟 PCA 同一個東西),約束是「權重加起來等於 1」,解落在有效邊界上 —— 而那是一整條線,不是一個點。 | 最佳化 03 #frontier |
自我驗收:十八題
每題考的是理解,不是背誦 —— 所有錯的選項都是「聽起來很順、但把兩個概念搞混」的版本。 選了立刻給回饋。答錯不會鎖死,可以再選;但分數只算第一次就對的題數。
費曼測試:講給國中生聽
規則只有一條:不准用專有名詞解釋專有名詞。 「共變異數就是衡量兩個隨機變數共同變異的程度」——這種句子零分,它只是把字拆開又裝回去。 先自己在心裡講一遍,再點卡片翻面比對。
如果你翻開背面的反應是「我剛才講的比這個爛」,那很正常,這一頁就是拿來當對照組的。 如果反應是「這句我根本沒想到」,那個詞就是你的漏洞 —— 回去那一關再玩一次互動區。
你現在會什麼了
用能力寫,不是用名詞寫 —— 名詞背得出來不算會。
線性代數:把一份資料壓成一張矩陣
- 拿到兩串數字,你能判斷它們是同向、無關、還是相反,並且知道要看內積的正負, 以及什麼時候該改看 cos(當兩邊的「量級」不公平的時候)。
- 看到「平均一樣」的兩組資料,你不會就此收工 —— 你會再問散開程度, 而且說得出為什麼要平方(不平方會抵銷成 0)以及為什麼除以 n−1。
- 你能把「兩件事會不會一起動」翻譯成一次內積,並且知道共變異數的大小不能跨單位比、 要比就得先除掉兩邊標準差變成相關係數。
- 看到一個 2×2 共變異數矩陣,你讀得懂它的形狀:對角線是各欄自己多會動、 非對角線的正負決定資料雲往哪邊斜。
- 看到 Av = λv,你會先問「這個矩陣是動作還是摘要」, 因為那決定了 λ 該讀成「拉伸倍率」還是「那個方向的變異數」。
- 你知道 PCA 不是魔法:它是「在所有單位向量裡把 vᵀCv 最大化」, 而這個最佳化問題的答案剛好就是特徵向量 —— 所以主軸不是被找出來的,是被推導出來的; 你也知道降維丟掉的不是樣本,是次要方向上的變異數。
- 拿到一份新資料表,你會先問「有沒有一欄是多餘的」(秩), 而且知道秩不足會讓 C 出現 λ = 0、不可逆, 任何要用 C−1 的方法當場翻車。
- 遇到又大又不穩的資料表,你知道可以繞過 C 直接做 SVD, 而且說得出 σ12 ÷ (n−1) = λ1 —— 兩條路算的是同一件事。
機率統計 × 線代:讓那張矩陣能算機率
- 你會分「手上這批」跟「背後那台機器」:說得出 x̄ 是估計、μ 是被估的東西, 而且知道 ÷(n−1) 是為了不低估,而不是為了保守。
- 有人給你一個平均數,你會接著問「n 多少」 —— 因為你知道那個平均自己有 σ/√n 的抖動, 而且它只跟 √n 走,所以「多收一點資料」通常不夠。
- 你不會再把直方圖的高度當機率:知道密度的面積才是機率、知道問「剛好等於某個值」沒有答案, 也知道 z 分數是把任何量表換成「離平均幾個 σ」的通用尺。
- 要把兩個會抖的東西加起來時,你不會把標準差相加 —— 你會攤開 Var(aX+bY) 的三項, 並且看得出第三項就是 wᵀCw 的交叉項。
- 有人說「這兩個特徵不相關,所以可以獨立處理」,你會反問一句: 你是說 cov = 0,還是真的 f(x,y) = f(x)f(y)? 因為前者救不了彎曲的相依。
- 要判斷一筆多維資料異不異常,你知道要用 C−1 一起校正尺度與相關, 而不是逐欄各看一次 z。
最佳化:把那張矩陣當成要壓低的成本
- 你會先把「要變好」寫成一條明確的目標函數與可行域,才開始調, 而且會先問地形是不是凸的 —— 因為在非凸地形上「調不出來」跟「已經最好了」長得一樣。
- 你知道有約束時最優解的條件是相切,不是梯度為 0; 而那個相切比例 λ 有很實際的意思:約束鬆一單位值多少。
- 你看有效邊界時知道它是一整條線而不是一個答案, 而且知道它是用估出來的 C 畫的, 所以會追問「這條線明年還在原地嗎」。
跨主題:一句話帶走整份教材
- 你認得同一張 C 的三種用法 —— 看到 vᵀCv、 xᵀC−1x、 wᵀCw 不會覺得是三個不同的東西, 而是同一張帳被夾在中間 / 取反矩陣 / 當成成本的三種讀法。
- 你踩得出坑:單位不同要先標準化、相關不等於因果、兩個 λ 接近時主軸沒有意義、 cov = 0 不等於獨立、標準差不能相加、非凸地形的局部最低、 以及「C 是估出來的」這件事會怎麼反咬你。
下一段路:這間實驗室還沒教的
前面十五關把「一份靜態資料表 → 一張 C → 拿它做三件事」這條線走完了。 下面四張卡是真的還沒教的東西 —— 每張只寫「它是什麼」跟「它接在本教材哪個接口上」, 不展開,因為展開就是另外四關。
隨機過程與時間序列
本教材每一筆資料都假設彼此獨立、而且來自同一個分布(i.i.d.)。 真實的時間序列不是:今天的延遲跟昨天的延遲相關(自相關),而且分布本身會隨時間漂移。 接口是機率統計 01 關那個 i.i.d. 假設 與最佳化 03 關那句「歷史報酬 ≠ 未來報酬」 —— 那句話的正式版就在這裡:C 是用過去的樣本估的, 而過去只有在 i.i.d. 成立時才代表未來。
非線性方法(kernel PCA、t-SNE)
全站從頭到尾只抓線性關係:內積、投影、直線、平面。 所以一旦資料彎成弧形或纏成兩圈,主軸就會說謊。 接口是05 關那個「資料彎曲時線性方法整套失效」的坑 與機率統計 04 關「cov = 0 卻強烈相依」的反例 —— 那些反例正是這一整族方法存在的理由:先把資料搬到一個「彎得開」的空間, 再在那裡做我們已經會的線性的事。
迴歸與最小平方的完整版
零件你已經齊了:最小平方解就是把目標向量投影到 「模型做得到的那個平面」上,殘差必然垂直於那個平面(又是內積 0); 單變數斜率就是 cov(x,y) / var(x)。 沒教的是把它拼成一套:多變數的 (XᵀX)−1Xᵀy、 係數的標準誤(接機率統計 01 關的 SE)、 共線性下係數為什麼亂飛(接06 關的秩)、 以及正則化為什麼能救它(接最佳化 02 關的約束)。
不乖的 C:負特徵值與數值穩定性
本教材永遠假設 C 很乖:特徵值 ≥ 0、算得出 C−1。真實世界會給你「欄數比樣本數多」、 「兩欄幾乎共線」、「浮點誤差跑出 −10−17 的特徵值」, 於是 C−1 炸開、 wᵀCw 算出負的波動。 接口是06 關的秩不足、 機率統計 05 關非得用 C⁻¹ 與機率統計 01 關的「C 是估出來的」。 沒教的是應對手法:條件數、Cholesky、shrinkage(把估出來的 C 往對角線拉回去)。
「C 估得夠準」那一張的具體案例已經有了:實戰:五萬預算怎麼分拿一張真人白板走完全部流程,然後把月數從 3 拉到 60 —— 親眼看 λ=0 消失、det Σ 離開 0、C⁻¹ 從算不出來變成算得出來。
主線十六關從頭到尾只靠向量的兩種關係:長度、還有夾角。 線性代數用它壓出一張 C、機率統計讓那張 C 能算機率、 最佳化把它變成要壓低的成本。而這三段都成立的前提有三個, 而且它們都會在真實資料上破掉:關係是線性的、樣本是 i.i.d. 的、 C 估得夠準。上面那四張卡,就是這三個前提各自破掉之後的世界。
另一個洞更大:全站幾乎都是 2 維,因為 2 維畫得出來。真實資料是 300 維,而 300 維沒辦法畫 —— 到那時你唯一能倚賴的就是「內積、投影、特徵向量、期望值、梯度」這幾個不依賴維度的定義。 這也正是為什麼這套教材從頭到尾逼你用「影子」、「一起動」、「地形」去理解,而不是用圖去記: 圖會在第四維消失,直覺不會。