擬合一條線:一張圖說盡全部
這條階梯前面的內容你已經熟悉了:監督學習遞給你一個由樣本組成的資料集,每個樣本都有輸入特徵和一個已知答案,也就是標籤。線性迴歸是對一個問題最樸素而誠實的回答——給定特徵,預測一個*數字*。想像一片散點:一根軸是房屋面積,另一根軸是價格。線性迴歸畫出那條唯一的直線,讓它盡可能貼合地穿過點雲,而這條線就是你的模型。
一條線無非就是 `y = w*x + b`。斜率 `w` 是一個權重——每多一平方公尺值多少錢——而 `b` 是截距,也就是特徵為零時的基準價格。當特徵很多時,你只要疊加更多項:`y = w1*x1 + w2*x2 + ... + b`。這就是整個模型。它只有寥寥幾個參數,而所謂學習,*就是*找到那組讓線擬合得好的數字 `w` 和 `b`。
「最佳擬合」是什麼意思,線又是怎麼學出來的
在你能畫出的無窮多條線裡,哪一條*最好*?我們需要一個數字來給一條線的「錯得有多離譜」打分——這就是損失函數。對線性迴歸,經典的選擇是均方誤差:對每個點,取線的猜測值與真實值之間的差距,把它平方(這樣高估和低估都受罰,而且大錯重罰),再求平均。最好的線,就是讓這個平方誤差總和盡可能小的那一條。
那怎麼找到它?有兩條路。由於線性模型上的平方誤差構成了一個光滑的碗狀(凸)曲面,存在一個乾淨俐落的閉式公式,一步就能落到精確的谷底。但真正能擴展、也是這個領域後面每個模型都依賴的方法,是上一階講過的梯度下降:從一條隨機的線出發,讓 `w` 和 `b` 沿誤差曲面稍稍往下挪一點,再重複。兩條路都通向同一個谷底,因為這裡只有一個谷。
從數字到是與否:邏輯迴歸
現在把問題反過來。不再問*有多少*,而是問*屬於哪一類*:這封郵件是不是垃圾郵件,這位病人會不會復發?這就是分類。我們當然想複用那條線,但一條線從負無窮跑到正無窮,而一個「是/否」的答案應該是介於 0 和 1 之間的機率。邏輯迴歸用一個優雅的動作解決了這個問題:照常算出加權和 `w*x + b`,再把它擠過S 形(sigmoid)函數。
z = w1*x1 + w2*x2 + ... + b # same weighted sum as linear regression p = 1 / (1 + exp(-z)) # sigmoid: squashes z into (0, 1) # p is now a probability, e.g. P(spam) prediction = "yes" if p >= 0.5 else "no"
sigmoid 是一條 S 形曲線:很負的得分被壓平向 0,很正的得分壓平向 1,中間則平滑地穿過 0.5。這裡我們不再用平方誤差——機率需要另一把尺子,即對數損失(交叉熵),它會狠狠懲罰那種「自信地錯」的模型。別被名字騙了,邏輯迴歸做的是*分類*;「迴歸」二字是歷史遺留,因為它骨子裡仍然在迴歸一個線性得分。
決策邊界
「是」究竟在哪裡翻轉成「否」?就在閾值 `p = 0.5` 處,而這恰好發生在內部得分 `z = w*x + b` 等於零的時候。這個方程式——`w*x + b = 0`——本身就是一條線(特徵更多時,就是一張平面)。它就是決策邊界:模型在一側說「是」,在另一側說「否」。邏輯迴歸只能畫出*筆直*的邊界;這既是它的看家本領,也是它誠實的局限。
0.5 這個分界點是一種選擇,而不是鐵律。如果漏掉一筆詐欺的代價遠大於一次誤報,就把閾值往下挪到 0.3,你會抓到更多正例,代價是更多誤報——這正是你之後會從ROC 曲線上讀出的那種取捨。還要注意:到邊界的距離對應著置信度——緊貼線的點拿到接近 0.5 的機率(聳聳肩),而遠離的點被推向 0 或 1(一個篤定的答案)。
一條筆直的邊界圈不出一個圓,也圈不出一條螺旋。如果你的兩類資料纏繞成任何一條線都分不開的樣子,那麼無論你訓練多久,邏輯迴歸都會欠擬合——這是歸納偏置的教科書案例,即模型內建的、關於「哪些答案才被允許」的假設。補救之道未必是神經網路:你可以手工造一個巧妙的特徵,或者把活兒交給本階後面要講的支持向量機或決策樹。
為什麼這些老黃牛至今仍能取勝
這兩個模型安靜的超能力,是可解釋性。每一個學到的權重都是一句你能大聲說出來的話:「在其他條件不變時,多一間臥室大約多值 1.8 萬美元」,或者「這個詞讓垃圾郵件的對數機率上升 0.4」。你可以審查它,向監管者為它辯護,也能看出它什麼時候抓住了不該抓的東西。大多數大模型給不了這些;而在這裡,它免費附贈,這正是它處於可解釋 AI核心的原因。
不過,讀係數要小心。一個很大的權重,可能只是因為那個特徵的量綱更大,所以你通常先做特徵縮放,讓數字之間可比。而且權重報告的是*關聯*,不是因果:「冰淇淋銷量能預測溺水人數」是一個成立的迴歸,卻是一個虛假的故事。把這兩者混為一談,是這類模型最常見的濫用。
由於參數很少,這兩個模型很少過擬合,再加一點輕量的嶺迴歸或套索(lasso)正則化,就能讓它們在小樣本、寬特徵或雜訊大的資料上保持靠譜——而這恰恰是充斥著真實業務的那些表格類問題。它們幾秒就能訓練好,能在手機上跑,還能給出一個強有力的基線,任何更花俏的模型都得先打敗它才配得上自己。從這裡開始吧。很多時候,你根本不需要走得更遠。