1. 程式人生 > 其它 >【PTA】搶紅包

【PTA】搶紅包

目錄

線性迴歸

線性迴歸概念

線性迴歸模型

線性迴歸分析 (Linear Regression Analysis) 是確定兩種或兩種以上變數間相互依賴的定量關係的一種統計分析方法. 即給定一個數據集 \(D={(\mathbf{x}_1,y_1),(\mathbf{x}_2,y_2),\cdots,(\mathbf{x}_N,y_N)}\), 線性迴歸試圖學習到一個線性模型 :

\[f(\mathbf{x}) = \mathbf{\omega}^T \mathbf{x} + b, \ \large 使得 \ \normalsize f(\mathbf{x}_i) \approx y_i \]

\(f(\mathbf{x}_i)\)\(y_i\) 之間的距離最小. 可以使用均方誤差衡量他們之間的距離, 基於均方誤差最小化來進行模型求解的方法稱為最小二乘法 (Least Square Method) :

\[(\mathbf{\omega}^*,b^*) = {\arg\min}_{(\mathbf{\omega},b)} \sum^N_i (f(\mathbf{x}_i) - y_i)^2 \]

可以把 \(\mathbf{\omega}\)\(b\) 合併進一個向量形式 \(\hat{\mathbf{\omega}} = (\mathbf{\omega}; b)\), 資料集增加一個維數且最後一個元素恆置 \(1\)

. 當 \(\mathbf{X}^T\mathbf{X}\) 是滿秩矩陣時,

\[\hat{\mathbf{\omega}} = (\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{y} \]

最終得到的線性模型為 :

\[f(\hat{\mathbf{x}}_i) = \hat{\mathbf{x}}^T_i (\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{y} \]

在現實大部分情況, \(\mathbf{X}^T\mathbf{X}\) 不是滿秩矩陣, 例如變數數超過樣本數時, 最小二乘法的結果不唯一, 可以引入正則項 (regularization term).

概率角度解釋

從概率角度來看, 線性迴歸假設對於給定的 \(y_i\), 可以表示為 \(y_i = f(\mathbf{x}_i) + \varepsilon_i\), 其中 \(\varepsilon_i\) 代表真實值與預測值之間的誤差, 並且服從正態分佈 \(\varepsilon_i \sim \mathcal{N}(0, \sigma^2)\). 誤差的產生有很多種因素的影響, 誤差可以看作是這些因素 (隨機變數) 之和共同作用而產生的, 由中心極限定理可知隨機變數和的分佈近似的服從正態分佈. 隨機變數 \(\varepsilon_i\) 的概率密度函式為 :

\[p(\varepsilon_i) = \frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{\varepsilon_i^2}{2\sigma^2}} \]

代入 \(\varepsilon_i = y_i - f(\mathbf{x}_i)\) 有 :

\[p(y_i | \mathbf{x}_i, \mathbf{\omega}) = \frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(\mathbf{\omega}^T\mathbf{x}_i - y_i)^2}{2\sigma^2}} \]

利用最大似然估計求解最大化對數似然函式可以得到 :

\[\arg \max _{\mathbf{\omega}} L(\mathbf{\omega}) = \arg \max _{\mathbf{\omega}} \prod^N_i p(y_i | \mathbf{x}_i, \mathbf{\omega}) \]

等價於

\[\arg \max _{\mathbf{\omega}} \mathcal{L}(\mathbf{\omega}) = \arg \max _{\mathbf{\omega}} \log (L(\mathbf{\omega})) = \arg \max _{\mathbf{\omega}} \sum^N_i \log (p(y_i | \mathbf{x}_i, \mathbf{\omega})) \]

最後可以轉化為

\[\arg \max _{\mathbf{\omega}} \sum^N_i (f(\mathbf{x}_i) - y_i)^2 \]

也就是均方誤差下的損失函式. 最小二乘的意義是所選擇的迴歸模型應該使所有觀察值的殘差平方和達到最小.

正則化方法 (Lasso 迴歸和嶺迴歸)

L1 範數正則化和 L2 範數正則化 (分別使用 \(\mathcal{l}_1\text{-norm}\)\(\mathcal{l}_2\text{-norm}\), L2 正則化也被稱為 Tikhonov 正則化) 可以看作損失函式的懲罰項. 對於線性迴歸模型, 使用 L1 正則化的模型叫做 LASSO (The Least Absolute Shrinkage and Selection Operator) 迴歸 :

\[\label{lasso} \min_\mathbf{\omega}\frac{1}{2N} \sum^N_{i=1} || \mathbf{\omega}^T \mathbf{x}_i - y_i ||^2_2 + \alpha ||\mathbf{\omega}||_1 \]

使用 L2 正則化的模型叫做嶺迴歸 (Ridge regression) :

\[\label{ridge} \min_\mathbf{\omega} \sum^N_{i=1} || \mathbf{\omega}^T \mathbf{x}_i - y_i ||^2_2 + \alpha ||\mathbf{\omega}||_2^2 \]

當樣本特徵很多而樣本數相對較少時, 沒有加入正則項的模型容易產生過擬合, 也就是模型的抗擾動能力差, L2 正則化可以防止模型過擬合 (overfitting), 它縮小了迴歸係數, 使得模型相對而言比較穩定. L1 正則化可以產生稀疏權向量, 即產生一個稀疏模型, 可以用於特徵選擇, 在一定程度上 L1 正則化也有助於降低過擬合風險.

嶺迴歸模型是可微凸函式, 可以直接利用最小二乘等方式求解. 而 LASSO 模型是不可導連續凸函式, 可以使用例如最小角迴歸 (Least Angle Regression, LARS) 和交替乘子法 (ADMM, Alternating Direction Method of Multipliers) 等方法求解. ADMM 每一步只更新一個變數而固定另外兩個變數, 如此交替重複更新, ADMM 演算法提供了一個將多優化變數問題轉化為單優化變數問題的轉化方式, 並未涉及具體的下降方向.

需要注意的是 Lasso 迴歸比嶺迴歸更容易產生稀疏解, 即通過 Lasso 模型求解的權向量 \(\mathbf{\omega}\) 會有更少的非零分量. Lasso 迴歸和 Ridge 迴歸的目標都是最小化損失函式, 式 \(\eqref{lasso}\)\(\eqref{ridge}\) 都是拉格朗日形式, 它們對應的等價形式可以寫為:

Lasso 迴歸:

\[\begin{equation}\left \{ \begin{aligned} & \min_\mathbf{\omega} \frac{1}{2N} \sum^N_{i=1} || \mathbf{\omega}^T \mathbf{x}_i - y_i ||^2_2\\ & \text{subject to } ||\mathbf{\omega}||_1 \leq t \end{aligned} \right. \end{equation} \]

Ridge 迴歸:

\[\begin{equation}\left \{ \begin{aligned} & \min_\mathbf{\omega} \frac{1}{2N} \sum^N_{i=1} || \mathbf{\omega}^T \mathbf{x}_i - y_i ||^2_2\\ & \text{subject to } ||\mathbf{\omega}||^2_2 \leq t \end{aligned} \right. \end{equation} \]

上面兩個模型可以理解為在不同的權向量 \(\mathbf{\omega}\) 限制條件下, 找到目標權向量 \(\hat{\mathbf{\omega}}\) 使得均方誤差最小, 其中 \(t\) 可以理解為正則化的力度, \(t\) 越小意味著 \(\lambda\) 越大, 正則化力度越大.

L1 正則化比 L2 正則化更容易得到稀疏解

如上圖, 假設 \(\mathbf{x}\) 僅有兩個屬性, 於是權向量 \(\mathbf{\omega}\) 也只有兩個分量, 圖中的橢圓表示均方誤差項的等高線, 再分別繪製出 L1 範數和 L2 範數等高線. 橢圓的中心表示均方誤差項取得全域性最小的值, 當沒有正則項時該值是可以達到的. 但是當有了 L1 正則項或 L2 正則項, 即約束 \(||\mathbf{\omega}||_1 \leq t\)\(||\mathbf{\omega}||_2^2 \leq t\) 時, 權向量 \(\mathbf{\omega}\) 的取值被限制在方形區域或圓形區域以內. 從上圖可以看到均方誤差項的等高線與方形區域的等高線的切點更有可能在座標軸上, 而與圓形區域的切點在座標軸上的概率相對很小. 因此 Lasso 模型更容易使得部分權重為 \(0\), 得到稀疏解.

scikit-learn 線性迴歸庫

Ordinary least squares Linear Regression (普通最小二乘線性迴歸) sklearn.linear_model.LinearRegression 如下, 沒有額外的引數.

class sklearn.linear_model.LinearRegression(*, fit_intercept=True, normalize=False, copy_X=True, n_jobs=None)[source]

Ridge Regression (嶺迴歸) sklearn.linear_model.Ridge 如下, 引數為 \(\alpha\).

class sklearn.linear_model.Ridge(alpha=1.0, *, fit_intercept=True, normalize=False, copy_X=True, max_iter=None, tol=0.001, solver='auto', random_state=None)[source]¶

LASSO Regression sklearn.linear_model.Lasso 如下, 引數為 \(\alpha\).

class sklearn.linear_model.Lasso(alpha=1.0, *, fit_intercept=True, normalize=False, precompute=False, copy_X=True, max_iter=1000, tol=0.0001, warm_start=False, positive=False, random_state=None, selection='cyclic')

ElasticNet sklearn.linear_model.ElasticNet 如下, 它是 L1 範數和 L2 範數的結合, 即:

\[\min_\mathbf{\omega}\frac{1}{2N} \sum^N_{i=1} || \mathbf{\omega}^T \mathbf{x}_i - y_i ||^2_2 + \alpha_1 ||\mathbf{\omega}||_1 + \alpha_2 ||\mathbf{\omega}||_2^2 \]

class sklearn.linear_model.ElasticNet(alpha=1.0, *, l1_ratio=0.5, fit_intercept=True, normalize=False, precompute=False, max_iter=1000, copy_X=True, tol=0.0001, warm_start=False, positive=False, random_state=None, selection='cyclic')

需要注意的是, 當使用普通的線性迴歸原始資料不需要進行標準化, 這從線性模型的推導表示式可以看出, 每項的係數最後都約減掉了. 但是當加入正則化後需要預先對資料進行標準化, 因為不同尺度的資料大小 (量綱不同) 相當於對其預設了權值, 進而影響權向量的大小, 進而對正則項產生影響. 資料標準化不影響一般的 Logistic 迴歸 (它也是僅學習權值), 以及決策樹及其他一些整合學習演算法, 例如 GBDT 和隨機森林 (因為它們每次針對一個特徵進行處理).

REFERENCE

  1. 周志華. 機器學習 : = Machine learning[M]. 清華大學出版社, 2016.
  2. Hastie T , Tibshirani R , Friedman J . The element of statistical learning[M]// The elements of statistical learning :. Springer, 2009.
  3. 線性迴歸——lasso迴歸和嶺迴歸(ridge regression)
  4. sklearn.linear_model.LinearRegression