1111
1212下面是一组用于回归的方法,其中目标值 y 是输入变量 x 的线性组合。 在数学概念中,如果 ![ \hat{y}] ( img/047826f1c2e6f2687b304cb5217be8d8.jpg ) 是预测值。
1313
14- ``` py
15-
1614![ \hat{y}(w, x) = w_0 + w_1 x_1 + ... + w_p x_p] ( img/4ee9f6c666393981b6458e54c3ec89d0.jpg )
1715
18- ```
19-
2016在整个模块中,我们定义向量 ![ w = (w_1,..., w_p)] ( img/b003858334d1ad594207911e84219151.jpg ) 作为 ` coef_ ` ,定义 ![ w_0] ( img/57e15e43b846791e47a202e1a9a5d8ce.jpg ) 作为 ` intercept_ ` 。
2117
2218如果需要使用广义线性模型进行分类,请参阅 [ logistic 回归] ( #logistic-regression ) 。
2521
2622[ ` LinearRegression ` ] ( generated/sklearn.linear_model.LinearRegression.html#sklearn.linear_model.LinearRegression " sklearn.linear_model.LinearRegression ") 拟合一个带有系数 ![ w = (w_1, ..., w_p)] ( img/3f5adc0c9b0e51a0759ed6ac49f94431.jpg ) 的线性模型,使得数据集实际观测数据和预测数据(估计值)之间的残差平方和最小。其数学表达式为:
2723
28- ```py
29-
3024![ \underset{w}{min\, } {|| X w - y||_ 2}^2] ( img/1b6228a71a038f66ac7b8a2743adf4e7.jpg )
3125
32- ```
33-
3426[ ![ http://sklearn.apachecn.org/cn/0.19.0/_images/sphx_glr_plot_ols_0011.png ] ( img/af7b81123e6cdf0b42acec802041beef.jpg )] ( ../auto_examples/linear_model/plot_ols.html )
3527
3628[ ` LinearRegression ` ] ( generated/sklearn.linear_model.LinearRegression.html#sklearn.linear_model.LinearRegression " sklearn.linear_model.LinearRegression ") 会调用 ` fit ` 方法来拟合数组 X, y,并且将线性模型的系数 ![ w] ( img/8a58e8df6a985a3273e39bac7dd72b1f.jpg ) 存储在其成员变量 ` coef_ ` 中:
@@ -59,12 +51,8 @@ array([ 0.5, 0.5])
5951
6052[ ` Ridge ` ] ( generated/sklearn.linear_model.Ridge.html#sklearn.linear_model.Ridge " sklearn.linear_model.Ridge ") 回归通过对系数的大小施加惩罚来解决 [ 普通最小二乘法] ( #ordinary-least-squares ) 的一些问题。 岭系数最小化的是带罚项的残差平方和,
6153
62- ```py
63-
6454![ \underset{w}{min\, } {{|| X w - y||_ 2}^2 + \alpha {||w||_ 2}^2}] ( img/c7e49892dca2f0df35d1261a276693f2.jpg )
6555
66- ```
67-
6856其中, ![ \alpha \geq 0] ( img/a4775baaa990a4fbffcfc2688e3b5578.jpg ) 是控制系数收缩量的复杂性参数: ![ \alpha] ( img/d8b3d5242d513369a44f8bf0c6112744.jpg ) 的值越大,收缩量越大,这样系数对共线性的鲁棒性也更强。
6957
7058[ ![ http://sklearn.apachecn.org/cn/0.19.0/_images/sphx_glr_plot_ridge_path_0011.png ] ( img/a4a20739f22e7059a927ba615ec373da.jpg )] ( ../auto_examples/linear_model/plot_ridge_path.html )
@@ -118,12 +106,8 @@ The [`Lasso`](generated/sklearn.linear_model.Lasso.html#sklearn.linear_model.Las
118106
119107在数学公式表达上,它由一个带有 ![ \ell_1] ( img/3bf32d926cdf24f440b6b831f0d9cc37.jpg ) 先验的正则项的线性模型组成。 其最小化的目标函数是:
120108
121- ```py
122-
123109![ \underset{w}{min\, } { \frac{1}{2n_ {samples}} ||X w - y||_ 2 ^ 2 + \alpha ||w||_ 1}] ( img/187eddee2de4e12860dc001c5f74b2b4.jpg )
124110
125- ```
126-
127111lasso estimate 解决了加上罚项 ![ \alpha ||w||_ 1] ( img/b2ea359213f8f5b01eead0821e29e856.jpg ) 的最小二乘法的最小化,其中, ![ \alpha] ( img/d8b3d5242d513369a44f8bf0c6112744.jpg ) 是一个常数, ![ ||w||_ 1] ( img/62eb544f1f6e234c61099fea1517300b.jpg ) 是参数向量的 ![ \ell_1] ( img/3bf32d926cdf24f440b6b831f0d9cc37.jpg ) -norm 范数。
128112
129113[ ` Lasso ` ] ( generated/sklearn.linear_model.Lasso.html#sklearn.linear_model.Lasso " sklearn.linear_model.Lasso ") 类的实现使用了 coordinate descent (坐标下降算法)来拟合系数。 查看 [ 最小角回归] ( #least-angle-regression ) ,这是另一种方法:
@@ -195,28 +179,16 @@ scikit-learn 通过交叉验证来公开设置 Lasso `alpha` 参数的对象: [`
195179
196180在数学上,它由一个线性模型组成,以混合的 ![ \ell_1] ( img/3bf32d926cdf24f440b6b831f0d9cc37.jpg ) ![ \ell_2] ( img/8851bd0fe9749b4841b30cee41fb040d.jpg ) 作为正则化器进行训练。目标函数最小化是:
197181
198- ```py
199-
200182![ \underset{w}{min\, } { \frac{1}{2n_ {samples}} ||X W - Y||_ {Fro} ^ 2 + \alpha ||W||_ {21}}] ( img/aba64ff85b1f99c5d1c4f8e1ace15f89.jpg )
201183
202- ```
203-
204184其中 ![ Fro] ( img/987fc6b717a40e57a95fb79a8e809309.jpg ) 表示 Frobenius 标准:
205185
206- ```py
207-
208186![ ||A||_ {Fro} = \sqrt{\sum_ {ij} a_ {ij}^2}] ( img/9259b19a18f30f67db9e45b8c0b361c7.jpg )
209187
210- ```
211-
212188并且 ![ \ell_1] ( img/3bf32d926cdf24f440b6b831f0d9cc37.jpg ) ![ \ell_2] ( img/8851bd0fe9749b4841b30cee41fb040d.jpg ) 读取为:
213189
214- ```py
215-
216190![ ||A||_ {2 1} = \sum_i \sqrt{\sum_j a_ {ij}^2}] ( img/2f373d871220ee042a8c2ee44e6fff3a.jpg )
217191
218- ```
219-
220192[ ` MultiTaskLasso ` ] ( generated/sklearn.linear_model.MultiTaskLasso.html#sklearn.linear_model.MultiTaskLasso " sklearn.linear_model.MultiTaskLasso ") 类的实现使用了坐标下降作为拟合系数的算法。
221193
222194## 1.1.5\. 弹性网络
@@ -357,12 +329,8 @@ OMP 是基于每一步的贪心算法,其每一步元素都是与当前残差
357329
358330为了得到一个全概率模型,输出  也被认为是关于  的高斯分布。
359331
360- ```py
361-
362332
363333
364- ```
365-
366334Alpha 在这里也是作为一个变量,通过数据中估计得到。
367335
368336贝叶斯回归有如下几个优点:
@@ -452,12 +420,8 @@ array([ 0.49999993, 0.49999993])
452420
453421也就是说,每个权值  从一个中心在 0 点,精度为  的高斯分布中采样得到的。
454422
455- ```py
456-
457423
458424
459- ```
460-
461425并且 .
462426
463427与 [`Bayesian Ridge Regression` _](# id53) 不同, 每个  都有一个标准差  。所有  的先验分布 由超参数  、  确定的相同的 gamma 分布确定。
@@ -488,20 +452,12 @@ scikit-learn 中 logistic 回归在 [`LogisticRegression`](generated/sklearn.lin
488452
489453作为优化问题,带 L2 罚项的二分类 logistic 回归要最小化以下代价函数(cost function):
490454
491- ```py
492-
493455
494456
495- ```
496-
497457类似地,带 L1 正则的 logistic 回归解决的是如下优化问题:
498458
499- ```py
500-
501459
502460
503- ```
504-
505461在 [`LogisticRegression` ](generated/ sklearn.linear_model.LogisticRegression.html# sklearn.linear_model.LogisticRegression "sklearn.linear_model.LogisticRegression") 类中实现了这些优化算法: “liblinear”, “newton-cg”, “lbfgs”, “sag” 和 “saga”。
506462
507463“liblinear” 应用了坐标下降算法(Coordinate Descent, CD ),并基于 scikit- learn 内附的高性能 C++ 库 [LIBLINEAR library](http:// www.csie.ntu.edu.tw/ ~ cjlin/ liblinear/ ) 实现。不过 CD 算法训练的模型不是真正意义上的多分类模型,而是基于 “one- vs- rest” 思想分解了这个优化问题,为每个类别都训练了一个二元分类器。因为实现在底层使用该求解器的 [`LogisticRegression` ](generated/ sklearn.linear_model.LogisticRegression.html# sklearn.linear_model.LogisticRegression "sklearn.linear_model.LogisticRegression") 实例对象表面上看是一个多元分类器。 [`sklearn.svm.l1_min_c`](generated/sklearn.svm.l1_min_c.html#sklearn.svm.l1_min_c "sklearn.svm.l1_min_c") 可以计算使用 L1 罚项时 C 的下界,以避免模型为空(即全部特征分量的权重为零)。
@@ -677,12 +633,8 @@ scikit-learn 中实现的 [`TheilSenRegressor`](generated/sklearn.linear_model.T
677633
678634关于时间复杂度和空间复杂度,Theil- Sen 的尺度根据
679635
680- ```py
681-
682636
683637
684- ```
685-
686638这使得它不适用于大量样本和特征的问题。因此,可以选择一个亚群的大小来限制时间和空间复杂度,只考虑所有可能组合的随机子集。
687639
688640示例:
@@ -707,12 +659,8 @@ scikit-learn 中实现的 [`TheilSenRegressor`](generated/sklearn.linear_model.T
707659
708660这个 [`HuberRegressor` ](generated/ sklearn.linear_model.HuberRegressor.html# sklearn.linear_model.HuberRegressor "sklearn.linear_model.HuberRegressor") 最小化的损失函数是:
709661
710- ```py
711-
712662
713663
714- ```
715-
716664其中
717665
718666```py
@@ -749,36 +697,20 @@ scikit-learn 中实现的 [`TheilSenRegressor`](generated/sklearn.linear_model.T
749697
750698例如,可以通过构造系数的 ** polynomial features** 来扩展一个简单的线性回归。在标准线性回归的情况下,你可能有一个类似于二维数据的模型:
751699
752- ```py
753-
754700
755701
756- ```
757-
758702如果我们想把抛物面拟合成数据而不是平面,我们可以结合二阶多项式的特征,使模型看起来像这样:
759703
760- ```py
761-
762704
763705
764- ```
765-
766706观察到这 _还是一个线性模型_ (这有时候是令人惊讶的): 看到这个,想象创造一个新的变量
767707
768- ```py
769-
770708![z = [x_1, x_2, x_1 x_2, x_1^ 2 , x_2^ 2 ]](img/ 642372b631f22b9db0dc4f30d9ab67e6 .jpg)
771709
772- ```
773-
774710有了这些重新标记的数据,我们可以将问题写成
775711
776- ```py
777-
778712
779713
780- ```
781-
782714我们看到,所得的 _polynomial regression_ 与我们上文所述线性模型是同一类(即关于  是线性的),因此可以用同样的方法解决。通过用这些基函数建立的高维空间中的线性拟合,该模型具有灵活性,可以适应更广泛的数据范围。
783715
784716这里是一个例子,使用不同程度的多项式特征将这个想法应用于一维数据:
0 commit comments