分类的目标是根据输入数据将样天职配到不同类别中,输出标签是离散的如有限的类别。比方垃圾邮件过滤。 3.线性回归 linear regression
3.1 单特征线性回归
案例:根据房子尺寸猜测房价 符号定义
x:输入向量
y:输出/目标向量
m:训练数据量
(x,y): 训练集中的一个数据
(x(i),y(i)):训练集中第i个数据 线性回归模子
y ^ = f w , b ( x ) = w x + b \hat{y}=f_{w,b}(x) =wx+b y^=fw,b(x)=wx+b 代价函数 cost function
平均平方误差函数 squared error function
J ( w , b ) = 1 2 m ∑ i = 1 m ( y ^ ( i ) − y ( i ) ) 2 J(w,b)=\frac{1}{2m}\sum_{i=1}^{m}(\hat{y}^{(i)}-y^{(i)})^2 J(w,b)=2m1i=1∑m(y^(i)−y(i))2
说明:
1、额外乘 1 2 \frac{1}{2} 21是为了便于后续求导
2、代价函数J是关于线性系数w和b的函数
训练目标:最小化代价J
训练思绪:梯度降落 gradient descent 模块一:梯度降落
作甚梯度降落?
先看看单变量梯度降落:
一元函数中可以以为梯度即是导数,从下图中可以看出,我们从任意点出发,当该点导数大于0时,往左移动靠近极小值点,当该点导数小于0时,往右移动靠近极小值点。因此给出一种收敛到极小值点的方法: w − w − α ∂ J ( w ) ∂ w w-w-\alpha\frac{\partial{J(w)}}{\partial{w}} w−w−α∂w∂J(w),此中 α \alpha α是学习率,用来控制每一次移动步距。当学习率太小时,收敛缓慢,当学习率太大时,由于步距大,可能造成远离极值点而无法收敛,故应该选择合适的学习率进行训练。进行充足多次梯度降落后,w近似取到极小值点。
再来看多变量梯度降落,这里以方便可视化的二元函数梯度降落为例,学过高数的我们知道梯度的定义为:
∇ f = [ f x , f y ] T \nabla{f}=[f_x,f_y]^T ∇f=[fx,fy]T
即由两个偏导构成的梯度向量,当方向导数和梯度方向一致时,方向导数最大,方向相反时,方向导数最小。因此想要最快降落到山谷位置,应沿着梯度反方向走,用数学表述为(假设两个变量是w和b)
[ w , b ] T = [ w , b ] T − α ∇ f [w,b]^T=[w,b]^T-\alpha\nabla{f} [w,b]T=[w,b]T−α∇f
即 w = w − α ∂ J ∂ w , b = b − α ∂ J ∂ w w=w-\alpha\frac{\partial{J}}{\partial{w}},b=b-\alpha\frac{\partial{J}}{\partial{w}} w=w−α∂w∂J,b=b−α∂w∂J
对于多元函数,梯度降落表达式即
[ x 1 , x 2 . . . , x n ] T = [ x 1 , x 2 . . . , x n ] T − α [ ∂ J ∂ x 1 , ∂ J ∂ x 2 , . . . , ∂ J ∂ x n ] T [x_1,x_2...,x_n]^T=[x_1,x_2...,x_n]^T-\alpha[\frac{\partial{J}}{\partial{x_1}},\frac{\partial{J}}{\partial{x_2}},...,\frac{\partial{J}}{\partial{x_n}}]^T [x1,x2...,xn]T=[x1,x2...,xn]T−α[∂x1∂J,∂x2∂J,...,∂xn∂J]T
梯度降落算法的起始点随机确定,但收敛的极值点不一定是全局极值点,有可能陷入局部极值点,一种解决的思绪是多次随机天生起点进行多次梯度降落,比较每次极值进行比较获取全局极值。 对于上面线性回归模子中提到的资本函数,其3D图像是凹函数,即只有一个极值点,因此不必考虑陷入局部极值的问题。
求偏导过程如下,注意求导和求和可以互换,即先导再求和:
∂ ∂ w J ( w , b ) = ∂ ∂ w 1 2 m ∑ i = 1 m ( w x ( i ) + b − y ( i ) ) 2 = 1 2 m ∑ i = 1 m 2 ( w x ( i ) + b − y ( i ) ) x ( i ) = 1 m ∑ i = 1 m x ( i ) ( w x ( i ) + b − y ( i ) ) \frac{\partial}{\partial{w}}J(w,b)=\frac{\partial}{\partial{w}}\frac{1}{2m}\sum_{i=1}^{m}(wx^{(i)}+b-y^{(i)})^2\\=\frac{1}{2m}\sum_{i=1}^{m}2(wx^{(i)}+b-y^{(i)})x^{(i)}=\frac{1}{m}\sum_{i=1}^{m}x^{(i)}(wx^{(i)}+b-y^{(i)}) ∂w∂J(w,b)=∂w∂2m1i=1∑m(wx(i)+b−y(i))2=2m1i=1∑m2(wx(i)+b−y(i))x(i)=m1i=1∑mx(i)(wx(i)+b−y(i))
∂ ∂ b J ( w , b ) = ∂ ∂ b 1 2 m ∑ i = 1 m ( w x ( i ) + b − y ( i ) ) 2 = 1 2 m ∑ i = 1 m 2 ( w x ( i ) + b − y ( i ) ) = 1 m ∑ i = 1 m ( w x ( i ) + b − y ( i ) ) \frac{\partial}{\partial{b}}J(w,b)=\frac{\partial}{\partial{b}}\frac{1}{2m}\sum_{i=1}^{m}(wx^{(i)}+b-y^{(i)})^2\\=\frac{1}{2m}\sum_{i=1}^{m}2(wx^{(i)}+b-y^{(i)})=\frac{1}{m}\sum_{i=1}^{m}(wx^{(i)}+b-y^{(i)}) ∂b∂J(w,b)=∂b∂2m1i=1∑m(wx(i)+b−y(i))2=2m1i=1∑m2(wx(i)+b−y(i))=m1i=1∑m(wx(i)+b−y(i)) 关于学习率的选择
梯度降落算法是否有效与学习率的选择密切相干
假如学习率太小,梯度降落速率太慢
假如学习率太大,可能无法收敛(发散)/无法抵达极小值点
可以绘制学习曲线cost-iteration,发现曲线降落太慢/没到达收敛时,说明学习率太小,得当增长学习率;当曲线上升(不收敛)时,说明学习率太大,得当减小学习率
保举的学习率实行是…0.003、0.01、0.03、0.1…,即以3倍的公比调解
代码实现:
一元线性回归梯度降落代码实现
3.2 多特征线性回归
案例:
根据房子尺寸、房间数量、楼层数、年龄猜测房价
符号定义
x j 表 示 第 j 个 特 征 , x ⃗ ( i ) 表 示 第 i 个 数 据 , n 表 示 特 征 数 量 , m 表 示 数 据 量 , , x ⃗ j ( i ) 表 示 第 i 个 数 据 第 j 个 特 征 x_j表示第j个特征,\vec{x}^{(i)}表示第i个数据,n表示特征数量,m表示数据量,,\vec{x}^{(i)}_j表示第i个数据第j个特征 xj表示第j个特征,x (i)表示第i个数据,n表示特征数量,m表示数据量,,x j(i)表示第i个数据第j个特征 多元线性回归模子
w = [ w 1 , w 2 , . . . , w n ] y ^ ( i ) = f w ⃗ , b ( x ⃗ ) = w ⃗ ⋅ x ⃗ + b w=[w_1,w_2,...,w_n]~~~\\ \hat{y}^{(i)}=f_{\vec{w},b}(\vec{x})=\vec{w}\cdot\vec{x}+b w=[w1,w2,...,wn] y^(i)=fw ,b(x )=w ⋅x +b 代价函数 cost function
平均平方误差函数 squared error function
J ( w ⃗ , b ) = 1 2 m ∑ i = 1 m ( y ^ ( i ) − y ( i ) ) 2 J(\vec{w},b)=\frac{1}{2m}\sum_{i=1}^{m}(\hat{y}^{(i)}-y^{(i)})^2 J(w ,b)=2m1i=1∑m(y^(i)−y(i))2
训练目标:最小化代价J
训练思绪:梯度降落 gradient descent
n个特征,即参数包含n个w和1个b,共n+1个参数
先计算偏导:
∂ ∂ w j J ( w ⃗ , b ) = ∂ ∂ w j 1 2 m ∑ i = 1 m ( w ⃗ ⋅ x ⃗ ( i ) + b − y ( i ) ) 2 = 1 2 m ∑ i = 1 m 2 ( w ⃗ ⋅ x ⃗ ( i ) + b − y ( i ) ) x j ( i ) = 1 m ∑ i = 1 m x j ( i ) ( w ⃗ ⋅ x ⃗ ( i ) + b − y ( i ) ) \frac{\partial}{\partial{w_j}}J(\vec{w},b)=\frac{\partial}{\partial{w_j}}\frac{1}{2m}\sum_{i=1}^{m}(\vec{w}\cdot\vec{x}^{(i)}+b-y^{(i)})^2\\=\frac{1}{2m}\sum_{i=1}^{m}2(\vec{w}\cdot\vec{x}^{(i)}+b-y^{(i)})x_j^{(i)}=\frac{1}{m}\sum_{i=1}^{m}x_j^{(i)}(\vec{w}\cdot\vec{x}^{(i)}+b-y^{(i)}) ∂wj∂J(w ,b)=∂wj∂2m1i=1∑m(w ⋅x (i)+b−y(i))2=2m1i=1∑m2(w ⋅x (i)+b−y(i))xj(i)=m1i=1∑mxj(i)(w ⋅x (i)+b−y(i))
∂ ∂ b J ( w ⃗ , b ) = ∂ ∂ b 1 2 m ∑ i = 1 m ( w ⃗ ⋅ x ⃗ ( i ) + b − y ( i ) ) 2 = 1 2 m ∑ i = 1 m 2 ( w ⃗ ⋅ x ⃗ ( i ) + b − y ( i ) ) = 1 m ∑ i = 1 m ( w ⃗ ⋅ x ⃗ ( i ) + b − y ( i ) ) \frac{\partial}{\partial{b}}J(\vec{w},b)=\frac{\partial}{\partial{b}}\frac{1}{2m}\sum_{i=1}^{m}(\vec{w}\cdot\vec{x}^{(i)}+b-y^{(i)})^2\\=\frac{1}{2m}\sum_{i=1}^{m}2(\vec{w}\cdot\vec{x}^{(i)}+b-y^{(i)})=\frac{1}{m}\sum_{i=1}^{m}(\vec{w}\cdot\vec{x}^{(i)}+b-y^{(i)}) ∂b∂J(w ,b)=∂b∂2m1i=1∑m(w ⋅x (i)+b−y(i))2=2m1i=1∑m2(w ⋅x (i)+b−y(i))=m1i=1∑m(w ⋅x (i)+b−y(i))
更新参数:
w j = w j − α ∂ ∂ w j J ( w ⃗ , b ) ( j = 1 、 2... 、 n ) b = b − α ∂ ∂ b J ( w ⃗ , b ) w_j=w_j-\alpha\frac{\partial}{\partial{w_j}}J(\vec{w},b)(j=1、2...、n)\\b=b-\alpha\frac{\partial}{\partial{b}}J(\vec{w},b) wj=wj−α∂wj∂J(w ,b)(j=1、2...、n)b=b−α∂b∂J(w ,b)
代码实现:
多元线性回归梯度降落代码实现 模块二:正规方程 normal equation
优化丧失函数,除了梯度降落这种不停迭代直至收敛的算法外,从数学角度上还有一种暴力解法叫正规方程。 正规方程(Normal Equation)是用于求解线性回归模子参数的一种解析方法。它通过最小化误差平方和来找到最佳参数,不须要使用迭代优化方法如梯度降落。正规方程尤其实用于小规模数据集,因为它在大规模数据集上计算资本可能较高。
首先列出须要用到的线代知识:
①y是一维向量,则
y T y = ∣ ∣ y ∣ ∣ 2 = y ⋅ y y^Ty=||y||^2=y\cdot{y} yTy=∣∣y∣∣2=y⋅y
②转置相干公式:
( A + B ) T = A T + B T ( A B ) T = B T A T (A+B)^T=A^T+B^T\\(AB)^T=B^TA^T (A+B)T=AT+BT(AB)T=BTAT
③p,q是一维列向量,则
p ⋅ q = p T q = q T p p\cdot{q}=p^Tq=q^Tp p⋅q=pTq=qTp
④矩阵求导公式:
∂ ( A X ) ∂ X = A T \frac{\partial (AX)}{\partial X} = A^T ∂X∂(AX)=AT
∂ ( X T A X ) ∂ X = ( A + A T ) X [ A 对 称 时 = 2 A X ] \frac{\partial (X^T A X)}{\partial X} = (A + A^T) X~~[A对称时=2AX] ∂X∂(XTAX)=(A+AT)X [A对称时=2AX]
假设我们有一个线性回归模子:
y = X β + ϵ y = X\beta + \epsilon y=Xβ+ϵ
此中:
y 是目标变量向量( M × 1 M \times 1 M×1)
X 是特征矩阵( M × ( N + 1 ) M \times (N+1) M×(N+1)),第一列通常为1,对应于截距项
β 是待估参数向量( ( N + 1 ) × 1 (N+1) \times 1 (N+1)×1)
ϵ 是误差项向量( M × 1 M \times 1 M×1)
则代价函数表示为
J ( β ) = ∣ ∣ y − X β ∣ ∣ 2 = ( y − X β ) T ( y − X β ) = ( y T − β T X T ) ( y − X β ) = y T y − y T X β − β T X T y + β T X T X β = y T y − 2 y T X β + β T X T X β J(\beta)=||y-X\beta||^2=(y-X\beta)^T(y-X\beta)=(y^T-\beta^TX^T)(y-X\beta)\\=y^Ty-y^TX\beta-\beta^TX^Ty+\beta^TX^TX\beta=y^Ty-2y^TX\beta+\beta^TX^TX\beta J(β)=∣∣y−Xβ∣∣2=(y−Xβ)T(y−Xβ)=(yT−βTXT)(y−Xβ)=yTy−yTXβ−βTXTy+βTXTXβ=yTy−2yTXβ+βTXTXβ
求导,令导数为0
∂ J ( β ) ∂ β = − 2 X T y + 2 X T X β = 0 → β = ( X T X ) − 1 X T y \frac{∂J(β)}{∂\beta}=-2X^Ty+2X^TX\beta=0\rightarrow\beta=(X^TX)^{-1}X^Ty ∂β∂J(β)=−2XTy+2XTXβ=0→β=(XTX)−1XTy
从最优参数向量的表达式可以看出,但矩阵规模较大时,计算资本很大,因此我们通常会在面对大规模数据集时选择梯度降落算法进行训练。
除此之外,我们还可以趁便证实一下平均平方丧失函数是凸函数,如何判定凸函数,一般接纳黑塞矩阵,是由目标函数在点X处的二阶偏导数构成的对称矩阵是否是半正定的,对J求二阶导:
J ′ ′ ( β ) = 2 X T X J^{''}(\beta)=2X^TX J′′(β)=2XTX
由于XTX为半正定矩阵,因此代价函数J简直是凸函数,计算出的极值即全局最值。
除此之外,正规方程法一个缺点是只实用于线性回归问题,而梯度降落在后续的逻辑回归、神经网络中都是我们优化算法的焦点。 模块三: 梯度降落分类
特征缩放(Feature Scaling)是数据预处置处罚中的一个紧张步调,它涉及到调解不同特征值的尺度,使它们处于雷同的量级。如许做的目标是资助优化算法(比如梯度降落)更快、更有效地收敛。
当特征的尺度(范围)相差很大时,丧失函数的等高线图(在参数空间中)将变得非常扁平和延伸。这意味着在某些方向上,丧失函数的变革会非常缓慢,而在其他方向上,它可能变革得非常快。在这种情况下,梯度降落算法在实行找到最小值的过程中,会在较扁平的方向上迈出很小的步伐,而在陡峭的方向上迈出较大的步伐。这会导致算法在参数空间中走“之字形”路径,从而减慢收敛速度。
通过特征缩放,我们可以将所有特征的范围调解到相似的尺度上。如许做的直接结果是,丧失函数的等高线将变得更加接近圆形,而不是延伸的椭圆形。这意味着无论梯度降落在哪个方向上进行,步伐的巨细都将更加一致,淘汰了在参数空间中走“之字形”路径的须要。因此,梯度降落能够更直接、更有效地朝着最小值方向前进,从而加速了收敛速度。
常见的特征缩放有:
1、Z-score 尺度化 Z-score normalization
x ′ = x − μ σ x^{'}=\frac{x-\mu}{\sigma} x′=σx−μ
假如特征满足正态分布,则Z-尺度化将其线性变换为均值为0,尺度差为1的尺度正态分布
特点:
1、对有异常值的数据有较强的鲁棒性(数据分析前应该先清洗异常数据)
2、对大多数呆板学习算法结果好
3、对于非正态分布的数据,结果可能不显着
2、Min-Max 尺度化 Min-Max normalization
x ′ = x − x m i n x m a x − x m i n x^{'}=\frac{x-x_{min}}{x_{max}-x_{min}} x′=xmax−xminx−xmin
将数据映射到[0,1]区间内,缺点是对对于存在异常值的数据不鲁棒,异常值会显著影响缩放结果
3、最大绝对值缩放 MaxAbs scaling
x ′ = x m a x ( a b s ( x ) ) x^{'}=\frac{x}{max(abs(x))} x′=max(abs(x))x
将数据映射到[-1,1]区间内,特点是能保持稀疏数据的稀疏性,对于稀疏数据(如文本数据)非常有效
以上特征缩放的代码实现较为简单,读者不妨本身练手实现。 模块四: 引入scikit-learn
增补参数解释: learning_rate string范例,默认’invscaling’
选项:
①’constant’,学习率不变,eta=eta0
②’optimal’: η t = 1 α t η_t=\frac{1}{\alpha{t}} ηt=αt1,使用 Léon Bottou 提出的理论学习率,通常能够更好地顺应不同的数据规模和特性。
③’invascaling’: η t = e t a 0 t p o w e r t η_t=\frac{eta0}{t^{power_{t}}} ηt=tpowerteta0,此中power_t(默认0.25)是另一个函数参数。使用反向比例缩放学习率,学习率随迭代次数增长而渐渐减小。
④‘adaptive’:自顺应学习率计谋,当迭代过程中的丧失停止改善时,学习率会动态调解。 4.多项式回归 polynomial regression
使用二次拟合,我们可以构建二次函数模子:
y = w 1 x + w 2 x 2 + b y=w_1x+w_2x^2+b y=w1x+w2x2+b
从特征构建的角度,可以将x2视为构建的新特征,因此特征是[x,x2],相当于数据集新增了一列特征,模子的系数仍然是线性的,因此依然可以从线性回归的角度进行处置处罚。
再举一个例子,根据房子的长x1和宽x2猜测房价z,可以构建模子:
y = w 1 x 1 + w 2 x 2 + w 3 x 1 x 2 + b y=w_1x_1+w_2x_2+w_3x_1x_2+b y=w1x1+w2x2+w3x1x2+b
这里的 x 1 x 2 x_1x_2 x1x2表示占地面积,作为构建的新特征。这个非线性模子,提升了模子的学习能力,使模子猜测能力更强。
下面用代码演示如何构建高次(多项式)特征并使用线性回归模子进行训练:
下面是示例数据集,example.csv
x,y
1,2
2,-1
3,-14
(!示例中未进行尺度化)
from sklearn.preprocessing import PolynomialFeatures
复制代码
重要参数
degree (default=2):
用于指定天生多项式特征的最高次幂。比方,degree=3 则表示天生最高为三次的多项式特征。
示例:特征 X 1 , X 2 X_1,X_2 X1,X2,则新构建的特征包罗 X 1 2 , X 1 X 2 , X 2 2 , X 1 3 , X 1 2 X 2 , X 2 X 1 2 , X 2 3 X_1^2,X_1X_2,X_2^2,X_1^3,X_1^2X_2,X_2X_1^2,X2^3 X12,X1X2,X22,X13,X12X2,X2X12,X23
interaction_only (default=False):
假如为 True,则天生的多项式特征只包罗交互项,不包罗各特征自身的多项式项。比方, 方法
X_new=fit_transform(X, y=None)
先拟合数据,再转化数据。返回扩展后的特征矩阵。
transform(X)
将已拟合的模子应用于数据,天生扩展后的特征矩阵。 示例
import numpy as npfrom sklearn.preprocessing import PolynomialFeatures
正则化的焦点思想是将多项式系数当做处罚项引入代价函数,实现精确拟合,避免过拟合。
在上面过拟合图示中,我们使用四次函数进行拟合
y = w 1 x 1 + w 2 x 2 + w 3 x 3 + w 4 x 4 + b y=w_1x_1+w_2x_2+w_3x_3+w_4x_4+b y=w1x1+w2x2+w3x3+w4x4+b
我们知道最佳拟合应该是二次拟合,那么假如 w 3 , w 4 → 0 w_3,w_4\rightarrow{0} w3,w4→0,那么拟合结果就近似于二次拟合。这给我们的启示是,多项式模子应追求在减小误差的同时,在优化过程中应倾向于使高次项的系数趋近于零,从而降低模子的复杂度,引入权重平方和构成的平方项后,丧失函数调解为:
J ( w ⃗ , b ) = 1 2 m ∑ i = 1 m ( w ⃗ ⋅ x ⃗ ( i ) + b − y ( i ) ) 2 + λ 2 m ∑ j = 1 n w j 2 J(\vec{w},b)=\frac{1}{2m}\sum_{i=1}^{m}(\vec{w}\cdot{\vec{x}^{(i)}}+b-y^{(i)})^2+\frac{\lambda}{2m}\sum_{j=1}^{n}w_j^2 J(w ,b)=2m1i=1∑m(w ⋅x (i)+b−y(i))2+2mλj=1∑nwj2
这也称为L2正则化,假如将平方项改为绝对值项,则称为L1正则化,我们重要讨论前者。
此中的 λ \lambda λ称为正则化系数,假如 λ \lambda λ太小,那么正则化结果不显着,假如 λ \lambda λ太大,那么所有的权重都会被调解得很小,使模子过于简单,因此选取合适的 λ \lambda λ很紧张,一般 λ \lambda λ设置为0.01。
引入处罚项后,重新计算偏导:
∂ ∂ w j J ( w ⃗ , b ) = 1 m ∑ i = 1 m x j ( i ) ( w ⃗ ⋅ x ⃗ ( i ) + b − y ( i ) ) + λ m w j \frac{\partial}{\partial{w_j}}J(\vec{w},b)=\frac{1}{m}\sum_{i=1}^{m}x_j^{(i)}(\vec{w}\cdot\vec{x}^{(i)}+b-y^{(i)})+\frac{\lambda}{m}w_j ∂wj∂J(w ,b)=m1i=1∑mxj(i)(w ⋅x (i)+b−y(i))+mλwj
∂ ∂ b J ( w ⃗ , b ) = 1 m ∑ i = 1 m ( w ⃗ ⋅ x ⃗ ( i ) + b − y ( i ) ) \frac{\partial}{\partial{b}}J(\vec{w},b)=\frac{1}{m}\sum_{i=1}^{m}(\vec{w}\cdot\vec{x}^{(i)}+b-y^{(i)}) ∂b∂J(w ,b)=m1i=1∑m(w ⋅x (i)+b−y(i))
将前面的线性回归代码(手动编写)略加修改,就能将线性回归模子正则化。
假如使用sckit-learn进行线性回归,引入正则化很简单,只需在创建回归器时,设置参数penalty=‘l2’,究竟上不须要手动设置,因为默认参数就是’l2’,再通过alpha设置正则化系数,示例:
模子的超参数(Hyperparameters)是指在训练呆板学习模子之前须要设置的参数,它们不能通过模子从数据中学习得到,而是须要在模子训练之前手动设定的。超参数的选择对模子的性能有偏紧张影响,因此在呆板学习中通常会通过实行、交错验证等方法来调优这些超参数。
比方在线性回归模子中,学习率 α \alpha α、正则化系数 λ \lambda λ都是模子预设的参数,属于超参数。而权重 w ⃗ \vec{w} w 和偏置 b b b都是训练过程中不停调解的,不属于超参数。 模块七: 训练集、验证集和测试集 dataset split
在模子训练过程中,只有训练集是不敷的,纵然模子在训练过程中体现优异,但假如没有检验其在新数据集中的体现,就无法检测其泛化能力,假如直接发布应用,模子可能体现得非常一般。
因此一般获取数据集后,对数据集进行分割,分为训练集(train set)和测试集(test set)。分割的比例一般是7:3或6:4。训练集用于训练模子,比方在回归任务中,呆板通过不停学习特征和目标之间的映射关系,优化参数,终极天生具备一定猜测能力的模子。而测试集用于检验模子的性能,指示模子存在的问题和下一步优化的方向。假如训练误差 J t r a i n J_{train} Jtrain和测试误差 J t e s t J_{test} Jtest都较大,则说明模子存在欠拟合的情况,应想方法降低弊端;假如训练误差 J t r a i n J_{train} Jtrain较小,而测试误差 J t e s t J_{test} Jtest远大于 J t r a i n J_{train} Jtrain,则说明模子存在过拟合的情况,应想方法降低方差。
用sklearn中的model_selection模块能很快速实现将数据集分割为训练集和测试集。test_size=0.33表示测试集占1/3,。
#random_state:随机种子
from sklearn.model_selection import train_test_split
一个好的模子不能存在高弊端或高方差的问题,这一模块讨论如何从数据集、超参数等角度入手,辨认模子存在的缺陷,然后设法调解模子的弊端与方差,提升模子的性能。 多项式次数
下图横轴表示多项式次数(d),纵轴表示训练集误差 J t r a i n J_{train} Jtrain和验证集误差 J c v J_{cv} Jcv。首先对于同一多项式次数,验证集误差正常情况下都比训练集误差大。在d较小时, J c v J_{cv} Jcv和 J t r a i n J_{train} Jtrain都较大,高弊端,出现了欠拟合;在d取中心值时, J c v J_{cv} Jcv和 J t r a i n J_{train} Jtrain都较小,低弊端同时低方差,处于正拟合;在d较小时, J t r a i n J_{train} Jtrain极小, J c v J_{cv} Jcv很大,高方差,出现了过拟合。因此得出结论: ①多项式回归中,出现高方差问题时,可以通过得当降低多项式次数降低方差
②多项式回归中,出现高弊端问题时,可以通过得当增长多项式次数降低弊端
正则化系数
下图横轴表示正则化系数 λ \lambda λ,纵轴表示训练集误差 J t r a i n J_{train} Jtrain和验证集误差 J c v J_{cv} Jcv。在 λ \lambda λ较小时,处罚项作用小,出现了过拟合,高弊端, J t r a i n J_{train} Jtrain极小, J c v J_{cv} Jcv很大;在 λ \lambda λ取中心值时, J c v J_{cv} Jcv和 J t r a i n J_{train} Jtrain都较小,低弊端同时低方差,处于正拟合;在 λ \lambda λ较大时,为了使J充足小,权重次数趋近于0,出现了欠拟合,低弊端, J t r a i n J_{train} Jtrain和 J c v J_{cv} Jcv很较大。因此得出结论: ①正则化中,出现高方差问题时,可以通过得当升高正则化系数降低方差
②正则化中,出现高弊端问题时,可以通过得当降低正则化系数降低弊端