Ensemble learningTask02
任务
使用sklearn构建完整的机器学习项目流程
一般来说,一个完整机器学习项目分为以下步骤:
Task2主要了解(1)收集数据集并选择合适的特征
(2)选择度量模型性能的指标
(3)选择具体的模型并进行训练
2.1收集数据集并选择合适的特征
继续使用boston房价例子进行分析
(1)数据收集同task1
(2)特征选择
2.2选择度量模型性能的指标
- MSE均方误差:
M
S
E
(
y
,
y
^
)
=
1
n
s
a
m
p
l
e
s
∑
i
=
0
n
s
a
m
p
l
e
(
y
i
−
y
^
i
)
2
\\MSE(y,\hat{y})=\frac{1}{nsamples}\sum_{i=0}^{nsample} (y_i-\hat{y}_i)^2
MSE(y,y^)=nsamples1∑i=0nsample(yi−y^i)2
该指标计算的是拟合数据和原始数据对应样本点的误差的平方和的均值,其值越小说明拟合效果越好。 - RMSE均方根误差:
R
M
S
E
(
y
,
y
^
)
=
1
n
s
a
m
p
l
e
s
∑
i
=
0
n
s
a
m
p
l
e
(
y
i
−
y
^
i
)
2
\\RMSE(y,\hat{y})=\sqrt{\frac{1}{nsamples}\sum_{i=0}^{nsample} (y_i-\hat{y}_i)^2}
RMSE(y,y^)=nsamples1∑i=0nsample(yi−y^i)2
该指标和MSE实质一样,可以使误差和预测值在同一量级上,更容易理解比较误差大小。
-** MAE平均绝对误差**: M A E ( y , y ^ ) = 1 n s a m p l e ∑ i = 0 n s a m p l e ∣ y i − y ^ i ∣ \\MAE(y,\hat{y})=\frac{1}{nsample}\sum_{i=0}^{nsample} \lvert y_i-\hat{y}_i \rvert MAE(y,y^)=nsample1∑i=0nsample∣yi−y^i∣
用于评估预测结果和真实数据集的接近程度的程度,其值越小说明拟合效果越好。 -
R
2
R^2
R2决定系数:
R
2
(
y
,
y
^
)
=
1
−
∑
i
=
1
n
(
y
i
−
y
^
i
)
2
∑
i
=
1
n
(
y
i
−
y
‾
i
)
2
\\R^2(y,\hat{y})=1-\frac{\sum_{i=1}^n (y_i-\hat{y}_i)^2}{\sum_{i=1}^n (y_i-\overline{y}_i)^2}
R2(y,y^)=1−∑i=1n(yi−yi)2∑i=1n(yi−y^i)2
R2_score:判定系数,其含义是也是解释回归模型的方差得分,其值取值范围是[0,1],0表示还不如什么都不预测,直接取均值的情况,而1表示所有预测跟真实结果完美匹配的情况。
公式:R2=SSR/SST=1-SSE/SST
SST (total sum of squares):总平方和
SSR (regression sum of squares):回归平方和
SSE (error sum of squares) :残差平方和。
链接:
https://www.jianshu.com/p/8aefd78be186
- 解释方差得分:
e
x
p
l
a
i
n
e
d
u
a
r
i
a
n
c
e
(
y
,
y
^
)
=
1
−
V
a
r
(
y
−
y
^
)
V
a
r
(
y
)
\\explained\qquad uariance(y,\hat{y})=1-\frac{Var(y-\hat{y})}{Var(y)}
explaineduariance(y,y^)=1−Var(y)Var(y−y^)
其值取值范围是[0,1],越接近于1说明自变量越能解释因变量的方差变化,值越小则说明效果越差。
疑问:在线性回归中, y − y ^ = ϵ y-\hat{y}=\epsilon y−y^=ϵ,而 V a r ( ϵ ) Var(\epsilon) Var(ϵ)不是个固定值?
2.3选择具体的模型进行训练
- 本次主要学习线性回归模型
回归这个概念是19世纪80年代由英国统计学家郎西斯.高尔顿在研究父子身高关系提出来的,他发现子代的身高有向族群平均身高"平均"的趋势,这就是统计学上"回归"的最初含义。
回归分析 这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。通常使用曲线/直线来拟合数据点,目标是使曲/直线到数据点的距离差异最小。
而线性回归就是回归问题中的一种,线性回归假设目标值与特征之间线性相关,即满足一个多元一次方程。通过构建损失函数,来求解损失函数最小时的参数w :
假设数据集
D
=
{
(
x
1
,
y
1
)
,
.
.
.
,
(
x
N
,
y
N
)
}
D = \{(x_1,y_1),...,(x_N,y_N) \}
D={(x1,y1),...,(xN,yN)},
x
i
∈
R
p
,
y
i
∈
R
,
i
=
1
,
2
,
.
.
.
,
N
x_i \in R^p,y_i \in R,i = 1,2,...,N
xi∈Rp,yi∈R,i=1,2,...,N
X
=
(
x
1
,
x
2
,
.
.
.
,
x
N
)
T
,
Y
=
(
y
1
,
y
2
,
.
.
.
,
y
N
)
T
X = (x_1,x_2,...,x_N)^T,Y=(y_1,y_2,...,y_N)^T
X=(x1,x2,...,xN)T,Y=(y1,y2,...,yN)T
假设X和Y之间存在线性关系,模型的具体形式为
y
^
=
f
(
w
)
=
w
T
x
\hat{y}=f(w) =w^Tx
y^=f(w)=wTx,
Y
=
X
w
Y=Xw
Y=Xw
线性回归模型需要掌握的几个点:
-
在实际估计线性回归系数之前,我们先对我们的模型作一定的假设:
(1)线性趋势 :我们的y与x之间必须要有线性趋势。(可以使用散点图初步判断) ==>最严格的假设
(2)独立性:要求残差间相互独立,不存在自相关性,否则应当使用自回归模型考虑。(数据背景考察,DW检验,自相关/偏相关分析)
(3)正态性:残差服从正态分布或者y服从正态分布。
(4)方差齐性:要求残差的方差一致 或者y的方差一致。 -
线性回归系数估计
(a). 最小二乘估计
我们需要衡量真实值 y i y_i yi与线性回归模型的预测值 w T x i w^Tx_i wTxi之间的差距,在这里用二范数平方和 L ( w ) L(w) L(w)来描述这种差距,即:
L ( w ) = ∑ i = 1 N ∥ w T x i − y i ∥ 2 2 = ∑ i = 1 N ( w T x i − y i ) 2 = ( w T X − Y T ) ( w T X T − Y T ) T = w T X T X w − 2 w T X T Y − Y T Y L(w)=\sum_{i=1}^{N} \left \| w^Tx_i-y_i \right \| _2^2=\sum_{i=1}^{N}(w^Tx_i-y_i)^2=(w^TX-Y^T)(w^TX^T-Y^T)^T=w^TX^TXw-2w^TX^TY-Y^TY L(w)=∑i=1N∥∥wTxi−yi∥∥22=∑i=1N(wTxi−yi)2=(wTX−YT)(wTXT−YT)T=wTXTXw−2wTXTY−YTY
为求使得 L ( w ) L(w) L(w)最小时对应的参数 w w w,即
w ^ = a r g m i n L ( w ) \hat{w}=argminL(w) w^=argminL(w)
为了达到求解最小化L(w)问题,我们对 L ( w ) L(w) L(w)进行求导使
∂ L ( w ) ∂ w = 2 X T X w − 2 X T Y = 0 \frac{\partial L(w)}{\partial w} = 2X^TXw-2X^TY = 0 ∂w∂L(w)=2XTXw−2XTY=0,因此: w ^ = ( X T X ) − 1 X T Y \hat{w} = (X^TX)^{-1}X^TY w^=(XTX)−1XTY
(b). 几何视角
y ^ = w T x \hat{y}=w^Tx y^=wTx
Y − Y ^ = Y − X w Y-\hat{Y}=Y-Xw Y−Y^=Y−Xw是由 x 1 和 x 2 x_1和x_2 x1和x2张成的平面的法向量。
所以 X T ( Y − X w ) = 0 X^T(Y-Xw)=0 XT(Y−Xw)=0解得 w = ( X T X ) − 1 X T Y \\w=(X^TX)^{-1}X^TY w=(XTX)−1XTY
(c). 概率视角
假设噪声 ϵ 服 从 N ( 0 , σ 2 ) , y = f ( w ) + ϵ = w T x + ϵ \epsilon服从N(0,\sigma^2),y=f(w)+\epsilon=w^Tx+\epsilon ϵ服从N(0,σ2),y=f(w)+ϵ=wTx+ϵ,因此: y ∣ x i , w 服 从 N ( w T x , σ 2 ) y|x_i,w 服从 N(w^Tx,\sigma^2) y∣xi,w服从N(wTx,σ2)我们使用极大似然估计MLE对参数 w w w进行估计:
L ( w ) = l o g P ( Y ∣ X ; w ) = l o g ∏ i = 1 N P ( y i ∣ x i ; w ) = ∑ i = 1 N l o g P ( y i ∣ x i ; w ) = ∑ i = 1 N l o g ( 1 2 π σ e x p ( − ( y i − w T x i ) 2 2 σ 2 ) ) = ∑ i = 1 N [ l o g ( 1 2 π σ ) − 1 2 σ 2 ( y i − w T x i ) 2 ] a r g m a x w L ( w ) = a r g m i n w − L ( w ) = ∑ i = 1 N ( y i − w T x i ) 2 ] 因 此 : 线 性 回 归 的 最 小 二 乘 估 计 < = = > 噪 声 ϵ ∽ N ( 0 , σ 2 ) 的 极 大 似 然 估 计 L(w) = log\;P(Y|X;w) = log\;\prod_{i=1}^N P(y_i|x_i;w) = \sum\limits_{i=1}^{N} log\; P(y_i|x_i;w)\\ = \sum\limits_{i=1}^{N}log(\frac{1}{\sqrt{2\pi \sigma}}exp(-\frac{(y_i-w^Tx_i)^2}{2\sigma^2})) = \sum\limits_{i=1}^{N}[log(\frac{1}{\sqrt{2\pi}\sigma})-\frac{1}{2\sigma^2}(y_i-w^Tx_i)^2] \\ argmax_w L(w) = argmin_w-L(w) = \sum\limits_{i = 1}^{N}(y_i-w^Tx_i)^2]\\ 因此:线性回归的最小二乘估计<==>噪声\epsilon\backsim N(0,\sigma^2)的极大似然估计 L(w)=logP(Y∣X;w)=log∏i=1NP(yi∣xi;w)=i=1∑NlogP(yi∣xi;w)=i=1∑Nlog(2πσ1exp(−2σ2(yi−wTxi)2))=i=1∑N[log(2πσ1)−2σ21(yi−wTxi)2]argmaxwL(w)=argminw−L(w)=i=1∑N(yi−wTxi)2]因此:线性回归的最小二乘估计<==>噪声ϵ∽N(0,σ2)的极大似然估计
线性回归代码模板
from sklearn import linear_model # 引入线性回归方法
lin_reg=linear_model.LinearRegression()#创建线性回归的类、lin_reg.fit(X,y) #输入特征X和因变量y进行训练
print('模型系数:',lin_reg.coef_)#输出模型的系数
print('模型得分:',lin_reg.score(X,y))#输出模型的决定系数R^2
- 评估系数估计值的准确性
从以上的分析中,我们得出来一个很重要的额外想法是:我们刚刚估计的系数都是基于某一个样本集,那我换一个样本集,估计出来的系数会不会不一样呢?答案是会的。
可以用以下指标衡量这些样本集估计出来的关系与总体关系之间的差异。
(1)无偏性 :虽然我们基于某个样本集估计出来的直线很可能会高估或者低估我们的总体直线,但是如果我们的样本集数量足够多的,我们将很多个估计出来的系数取个平均就会非常接近我们的总体系数。(期望体现)
(2)标准误: 我们知道基于样本集估计出来的系数很可能会高估或低估我们的总体关系,那究竟单次基于样本集的估计会偏差到什么程度呢
标准误中
∑
i
=
1
N
(
x
i
−
x
‾
)
2
\sum_{i=1}^{N}(x_i-\overline{x})^2
∑i=1N(xi−x)2越大,SE越小
也就是样本量越大,样本点越分散SE越小?
标准差vs标准误
二者都是标准差。区别:
某个随机变量的标准差(standard deviation),衡量的是该随机变量的离散度。
标准误(standard error),也叫抽样标准误,是样本统计量的标准差,衡量的是抽样分布的离散度,对应的随机变量是样本统计量。比如样本均值的标准误(standard error of sample mean),衡量的就是样本均值的离散度
S
E
=
S
D
N
SE=\frac{SD}{\sqrt{N}}
SE=NSD
但有时是指同一个东西。
链接:https://www.zhihu.com/question/22864111/answer/170774417
(2.1)置信区间 :95%置信区间的意思是在该区间内有95%的概率包含真实值。对于线性回归模型的系数的95%置信区间是:
多元线性回归
- 线性模型
-因为线性模型本身形式的局限性无法表达数据中的非线性关系。我们一个很自然的想法是去推广线性回归模型,使推广后的模型更能表达非线性的关系。
(a)多项式回归
为了体现因变量和特征的非线性关系,一个很自然而然的想法就是将标准的线性回归模型:
y i = w 0 + w 1 x i + ϵ i y_i=w_0+w_1x_i+\epsilon_i yi=w0+w1xi+ϵi
换成一个多项式函数:
y i = w 0 + w 1 x i + w 2 x i 2 + . . . + w d x i d + ϵ y_i=w_0+w_1x_i+w_2x_i^2+...+w_dx_i^d+\epsilon yi=w0+w1xi+w2xi2+...+wdxid+ϵ
对于多项式的阶数d不能取过大,一般不大于3或四,因为d越大,多项式曲线会越光滑,在x取值的边界处有异常波动。(过拟合现象也可能出现)
图中边界处的4阶多项式拟合曲线的置信区间明显增大,预测效果的稳定性下降。
(b). 广义可加模型(GAM):
GAM实际上是线性模型推广至非线性模型的一个框架,在这个框架中,每一个变量都用一个非线性函数来代替,但是模型本身保持整体可加性。GAM模型不仅仅可以用在线性回归的推广,还可以将线性分类模型进行推广。具体的推广形式是:
标准线性回归模型:
y
i
=
w
0
+
w
1
x
i
1
+
w
2
x
i
2
+
.
.
.
+
w
p
x
i
p
+
ϵ
i
y_i=w_0+w_1x_{i1}+w_2x_{i2}+...+w_px_{ip}+\epsilon_i
yi=w0+w1xi1+w2xi2+...+wpxip+ϵi
GAM模型框架:
y
i
=
w
0
+
∑
j
=
1
p
f
j
(
x
i
j
)
+
ϵ
i
y_i=w_0+\sum_{j=1}^{p} f_j(x_{ij})+\epsilon_i
yi=w0+∑j=1pfj(xij)+ϵi
CAM模型的优点和不足:
-
优:相比线性回归模型,模型的预测精度有所上升
模型本身还是可加的,因此GAM还是能像线性回归模型一样把其他因素控制不变的情况下单独对某个变量进行推广,极大地保留了线性回归的易于推断的性质。 -
缺:可能会忽略一些有意义的交互作用,比如某两个特征共同影响因变量。但GAM还是能像线性回归一样加入交互项 x ( i ) x ( j ) x^(i) x^(j) x(i)x(j)的形式进行建模。
GAM本质仍是一个可加模型,提高精度有限。
多项式回归实例介绍:
sklearn.preprocessing.PolynomialFeatures(degree=2, *, interaction_only=False, include_bias=True, order='C')
参数:
- degree:特征转换的阶数,默认2
- interaction_only:是否包含交互项,默认False
- include_bias:是否包含截距项,默认True
- order: str in{‘C’,‘F’},默认’C’,输出数组的顺序。(会影响速度,具体不清楚)
例:生成一个新的特征矩阵,该矩阵由度小于或等于指定度的特征的所有多项式组合组成。例如,如果输入样本是二维且格式为[a,b],则2阶多项式特征为[1,a,b,a ^ 2,ab,b ^ 2]。
缺个例子
GAM例子
安装pygam:pip install pygam
from pygam import LinearGAM
gam = LinearGAM().fit(boston_data[boston.feature_names], y)
gam.summary()
- 回归树:
基于树的回归方法主要是依据分层和分割的方式将特征空间划分为一系列简单的区域。对某个给定的待预测的自变量,用他所区域中训练集的平均数或者众数对其进行预测。由于划分特征空间的分裂规则可以用树的形式进行概括,因此这类方法称为决策树方法。
决策树由结点(node)和有向边(directed edge)组成。
结点分成内部结点(internal node)和叶结点(leaf node)
内部结点表示一个特征或属性,叶结点表示一个类别或者某个值。区域R1,R2等称为叶结点,将特征空间分开的点成为内部结点。
回归树与线性模型的比较:
线性回归对模型形式做了如下假定: f ( x ) = w 0 + ∑ j = 1 p w j x ( j ) f(x)=w_0+\sum_{j=1}^{p}w_jx^{(j)} f(x)=w0+∑j=1pwjx(j)
回归树是 f ( x ) = ∑ m = 1 J c ^ m I ( x ∈ R m ) f(x)=\sum_{m=1}^{J}\hat{c}_mI(x\in R_m) f(x)=∑m=1Jc^mI(x∈Rm)
树模型的优缺点:
树模型的解释性强,可以用图来表示。
树模型可以直接做定性的特征而不需要像线性回归一样对定性特征哑元化
树模型能很好处理缺失值和异常值,对异常值不敏感,但线性模型对此不行
树模型的预测准确性一般无法达到其他回归模型的水平,但是改进方法多。
sklearn.tree.DecisionTreeRegressor(*, criterion='mse', splitter='best', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, ccp_alpha=0.0)
参数:
criterion:{“mse”, “friedman_mse”, “mae”, “poisson”}, default=”mse”
splitter{“best”, “random”}, default=”best”
max_depth:int, default=None
min_samples_split:int or float, default=2
拆分内部节点所需要的最少样本数
min_samples_leaf:int or float, default=1
在叶结点处所需要的最小样本数,默认是1
min_weight_fraction_leaf:float, default=0.0
在所有叶结点处(所有输入样本)的权重总和中的最小加权分数。默认是0
from sklearn.tree import DecisionTreeRegressor
reg_tree = DecisionTreeRegressor(criterion = "mse",min_samples_leaf = 5)
reg_tree.fit(X,y)
reg_tree.score(X,y)
支持向量机回归(SVR)
先补充约束优化的相关知识:
-
约束优化问题(p):
-
m i n f ( x ) s . t g i ( x ) ≤ 0 , i = 1 , 2 , 3 , . . . , m h i ( x ) = 0 , j = 1 , 2 , 3 , . . . , l min f(x) \\ s.t \qquad g_i(x)\le0,i=1,2,3,...,m\\ h_i(x)=0,j=1,2,3,...,l minf(x)s.tgi(x)≤0,i=1,2,3,...,mhi(x)=0,j=1,2,3,...,l
我们假设 𝑥∗ 为满足以上条件的局部最优解, 𝑝∗=𝑓(𝑥∗) ,我们的目的就是要找到 𝑥∗ 与 𝑝∗ ,满足不等式和等式约束的x集合成为可行域,记作S。
KKT条件(最优解的一阶必要条件)
(严格的证明在凸优化中学到补上)
举例理解
在这个例子中,我们考虑:( 𝑥∗ 为我们的最优解)
m i n f ( x ) s . t . g 1 ( x ) ≤ 0 x ∈ R n g 2 ( x ) ≤ 0 g 3 ( x ) ≤ 0 minf(x)\\ s.t.\qquad g_1(x) \le 0 \qquad x \in R^n\\ g_2(x) \le 0 \\ g_3(x) \le 0 minf(x)s.t.g1(x)≤0x∈Rng2(x)≤0g3(x)≤0
可以看到: − ∇ f ( x ∗ ) -\nabla f(x^*) −∇f(x∗)可以由 ∇ g 1 ( x ∗ ) \nabla g_1(x^*) ∇g1(x∗)与 ∇ g 2 ( x ∗ ) \nabla g_2(x^*) ∇g2(x∗)线性表示出来,因此有
− ∇ f ( x ∗ ) = λ 1 ∇ g 1 ( x ∗ ) + λ 2 ∇ g 2 ( x ∗ ) -\nabla f(x^*) = \lambda_1 \nabla g_1(x^*) + \lambda_2 \nabla g_2(x^*) −∇f(x∗)=λ1∇g1(x∗)+λ2∇g2(x∗)其中 λ 1 , λ 2 ≥ 0 \lambda_1,\lambda_2 \ge 0 λ1,λ2≥0
即: ∇ f ( x ∗ ) + λ 1 ∇ g 1 ( x ∗ ) + λ 2 ∇ g 2 ( x ∗ ) = 0 , 其 中 λ 1 , λ 2 ≥ 0 \nabla f(x^*) + \lambda_1 \nabla g_1(x^*) + \lambda_2 \nabla g_2(x^*) = 0,\;\;\;其中\lambda_1,\lambda_2 \ge 0 ∇f(x∗)+λ1∇g1(x∗)+λ2∇g2(x∗)=0,其中λ1,λ2≥0
我们把没有起作用的约束 𝑔3(𝑥) 也放到式子里面去,目的也就是为了书写方便,即要求:
∇ f ( x ∗ ) + λ 1 ∇ g 1 ( x ∗ ) + λ 2 ∇ g 2 ( x ∗ ) + λ 3 ∇ g 3 ( x ∗ ) = 0 , 其 中 λ 1 , λ 2 ≥ 0 , λ 3 = 0 \nabla f(x^*) + \lambda_1 \nabla g_1(x^*) + \lambda_2 \nabla g_2(x^*) + \lambda_3 \nabla g_3(x^*)= 0,\;\;\;其中\lambda_1,\lambda_2 \ge 0,\lambda_3 = 0 ∇f(x∗)+λ1∇g1(x∗)+λ2∇g2(x∗)+λ3∇g3(x∗)=0,其中λ1,λ2≥0,λ3=0
由于点 x ∗ x^* x∗位于方程 g 1 ( x ) = 0 g_1(x)=0 g1(x)=0和 g 2 ( x ) = 0 g_2(x)=0 g2(x)=0上,因此: λ 1 g 1 ( x ∗ ) = 0 , λ 2 g 2 ( x ∗ ) = 0 , λ 3 g 3 ( x ∗ ) = 0 \lambda_1 g_1(x^*) = 0,\lambda_2 g_2(x^*) = 0 , \lambda_3 g_3(x^*)= 0 λ1g1(x∗)=0,λ2g2(x∗)=0,λ3g3(x∗)=0
因此,KKT条件就是:假设 𝑥∗ 为最优化问题§的局部最优解,且 𝑥∗ 在某个适当的条件下 ,有:
∇ f ( x ∗ ) + ∑ i = 1 m λ i ∇ g ( x ∗ ) + ∑ j = 1 l μ j ∇ h j ( x ∗ ) = 0 ( 对 偶 条 件 ) λ i ≥ 0 , i = 1 , 2 , . . . , m ( 对 偶 条 件 ) g i ( x ∗ ) ≤ 0 ( 原 问 题 条 件 ) h j ( x ∗ ) = 0 ( 原 问 题 条 件 ) λ i g ( x ∗ ) = 0 ( 互 补 松 弛 定 理 ) \nabla f(x^*) + \sum\limits_{i=1}^{m}\lambda_i \nabla g(x^*) + \sum\limits_{j=1}^{l}\mu_j \nabla h_j(x^*) = 0(对偶条件)\\ \lambda_i \ge 0,\;i = 1,2,...,m(对偶条件)\\ g_i(x^*) \le 0(原问题条件)\\ h_j(x^*) = 0(原问题条件)\\ \lambda_i g(x^*) = 0(互补松弛定理) ∇f(x∗)+i=1∑mλi∇g(x∗)+j=1∑lμj∇hj(x∗)=0(对偶条件)λi≥0,i=1,2,...,m(对偶条件)gi(x∗)≤0(原问题条件)hj(x∗)=0(原问题条件)λig(x∗)=0(互补松弛定理) -
对偶问题
任何一个原问题在变成对偶问题后都会变成一个凸优化的问题,
支持向量回归SVR
在线性回归的理论中,每个样本点都要计算平方损失,但是SVR却是不一样的。SVR认为:落在 𝑓(𝑥) 的 𝜖 邻域空间中的样本点不需要计算损失,这些都是预测正确的,其余的落在 𝜖 邻域空间以外的样本才需要计算损失,因此:
m i n w , b , ξ i , ξ ^ i 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 N ( ξ i , ξ ^ i ) s . t . f ( x i ) − y i ≤ ϵ + ξ i y i − f ( x i ) ≤ ϵ + ξ ^ i ξ i , ξ ^ i ≤ 0 , i = 1 , 2 , . . . , N min_{w,b,\xi_i,\hat{\xi}_i} \frac{1}{2}||w||^2 +C \sum\limits_{i=1}^{N}(\xi_i,\hat{\xi}_i)\\ s.t.\;\;\; f(x_i) - y_i \le \epsilon + \xi_i\\ \;\;\;\;\;y_i - f(x_i) \le \epsilon +\hat{\xi}_i\\ \;\;\;\;\; \xi_i,\hat{\xi}_i \le 0,i = 1,2,...,N minw,b,ξi,ξ^i21∣∣w∣∣2+Ci=1∑N(ξi,ξ^i)s.t.f(xi)−yi≤ϵ+ξiyi−f(xi)≤ϵ+ξ^iξi,ξ^i≤0,i=1,2,...,N
sklearn.svm.SVR(*, kernel='rbf', degree=3, gamma='scale', coef0=0.0, tol=0.001, C=1.0, epsilon=0.1, shrinking=True, cache_size=200, verbose=False, max_iter=- 1)
参数:
kernel:指定算法中要使用的内核类型。核函数,{‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’}, 默认=’rbf’。(后面会详细介绍)
degree:多项式核函数的阶数。默认 = 3。
C:正则化参数,默认=1.0。(后面会详细介绍)
ϵ
\epsilon
ϵ:SVR模型允许的不计算误差的邻域大小。默认0.1。
gamma{‘scale’, ‘auto’} or float, default=’scale’
Kernel coefficient for ‘rbf’, ‘poly’ and ‘sigmoid’.
from sklearn.svm import SVR
from sklearn.preprocessing import StandardScaler # 标准化数据
from sklearn.pipeline import make_pipeline # 使用管道,把预处理和模型形成一个流程
reg_svr = make_pipeline(StandardScaler(), SVR(C=1.0, epsilon=0.2))
reg_svr.fit(X, y)
reg_svr.score(X,y)