# Regression contributed by <`kylekylehaha`> ###### tags:`Data Science` ## Linear Regression 當我們發現 label x 和 label y 的大小有一定關係,我們希望用 regression 來估計 y 值。 我們稱圖中點到迴歸線的垂直距離為 residuals(我們預測的 error)。 將各點 error 平方和最小化 -> **cost function** --- ## Cost Function Residuals 的平方和(RSS): $$ SS_{residuals}=\sum_{i=1}^n(h(x_i)-y_i)^2 $$ 我們定義 Cost Function: $C(\theta)$ $$ C(\theta)=\sum_{i=1}^n(h(x_i)-y_i)^2 $$ 目標找到最佳參數集 $\theta ^*=(\theta_0,\theta_1,...,\theta_m)$,使得 $C(\theta)$ 最小。 解決方法: 1) Normal equation: $\theta^*=(X^TX)^{-1}X^Ty$ 2) Gradient descent --- ## Gradient Descent  對 $b_0,b_1$ 做偏微分,並迭代回去直到收斂。  理想上,我們會希望 J(b₀, b₁) 為 Convex function(凸函數),亦即類似下圖的函數,只有一個全域極小值。 對著 J(b₀, b₁) 做 b₀ 的偏微分可以得到斜率;當斜率為負數的時候(藍直線),b₀ 值會增加(往右移動),使 J(b₀, b₁) 的值變小;反之,若斜率為正數時(紅直線),b₀ 值會減少(往左移動),同樣也會使 J(b₀, b₁) 的值變小,進而往極小值處收斂。  --- ## Regression Evaluation ### MSE (Mean Square Error) 將預測值和實際上的差距相減後取平方,加總起來即為之前提到$SS_{residuals}$,再除以項目數。 $$ MSE=\frac{1}{n}\sum_{i=1}^n(h(x_i)-y_i)^2 \\ =\frac{1}{n}SS_{residuals} $$ MSE 有個問題: ==單位不同時,值會不同!== 以下舉個例子: - 預測房價為: 11000(11千美元) - 實際房價為: 10000(10千美元) 若用千為單位,MSE 值為1,但如果用美元為單位,則 MSE 值變為 1000000。 若我們打算讓 MSE 值變小,則改變單位大小即可。 --- ### R^2^ (R-Square) 為了改善上述問題,我們定義 $SS_{total}$: $$ SS_{total}=\sum_{i=1}^n(y_i-y_{mean})^2 $$ 接著我們定義 **R-Square(R^2^):** $$ R^2=1-(SS_{residuals}/SS_{total}) $$ ,其中 $SS_{residuals}=\sum_{i=1}^n(h(x_i)-y_i)^2$。 - R^2^ 值通常介於 **0.5~0.7**,R^2^ $\gt$ 0.7 我們會說是一個好的回歸。 --- ## Overfitting vs. Underfitting - 模型愈複雜,Variance 增加,Bias 下降。 - 模型愈簡單,Variance 下降,Bias 上升。  下圖表示 Vaiance 和 Bias 差異。  --- ## Ridge Regression Ridge 使用 L2 regularization。 在原本的 cost function $C(\theta)$ 中,加入 penalty $\alpha\sum_{j=1}^m\theta^2_j$ 形成 $C^r(\theta)$ $$ C(\theta)=\sum_{i=1}^n(h(x_i)-y_i)^2 \\ C^r(\theta)=\sum_{i=1}^n(h(x_i)-y_i)^2 + \alpha\sum_{j=1}^m\theta^2_j $$ 加入 regular term (penalty) 可以避免模型 overfitting(模型有太多高次項的係數)。若有高次項係數不為 0,而因為 regular term 產生的額外 cost 無法讓 cost function minimize。 在 Ridge 中,我們讓==參數趨近為 0 ,而不是讓參數變為 0==(這是後面的 Lasso Regression),使函數達到平滑。 --- ## Lasso Regression Lasso 採用 L1 regularization。 在原本的 cost function $C(\theta)$ 中,加入 penalty $\alpha\sum_{j=1}^m|\theta_j|$ 形成 $C^l(\theta)$ $$ C(\theta)=\sum_{i=1}^n(h(x_i)-y_i)^2 \\ C^l(\theta)=\sum_{i=1}^n(h(x_i)-y_i)^2 + \alpha\sum_{j=1}^m|\theta_j| $$ 因為 Lasso regression 後面的 penalty 是加入參數的絕對值,如果特徵很多時,Lasso regression 會讓一些比較沒用的特徵的參數變成 0,間接做出「特徵選擇(feature selection)」。 --- ## Ridge vs. Lasso Regression 最大的不同在於Ridge regression的懲罰機制是**加入參數的平方,使得參數收縮到接近0**;而Lasso regression則是讓**某些參數收斂成0,做到特徵選擇**。 如果特徵中又「多重共線性」,所謂多重共線性就是某個特徵可由其他特徵做線性組合而來(eg: $𝑥_3 = 𝑎𝑥_1 + b𝑥_2$ ,a 和b 為某一常數),刪除那些特徵時迴歸參數會發生較大的變化,而 Ridge regression 只是將那些參數變小,而非刪除,其他參數部分自然就不會發生較大變化,所以 Ridge regression 非常適合處理含有多重共線性的問題。 --- **Regularization 可視為一個防護罩。以下圖為例:**  那把 cost function 畫出來看的話就像是,我們在的點是原點,正在一步一步前往最低點,regularization 就像是在我們外圍包了一層防護罩,提早碰到防護罩就提早停止。 --- 結論: - Lasso regression 比較適合參數較多或者需要特徵選擇的情況;而 Ridge regression 就比較適合預測函式簡單、不想求解那麼複雜的情況或是特徵中存有多重共線性的情況。 - 相較於 Lasso regression 將參數收斂成0, Ridge regression 的特點就是以保留所有參數的代價,換取其中數值的穩定性。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up