回归- Regression
回归- Regression
——————————————————————————————————————————
- 回归- Regression
- 线性回归Linear regression
- 模型表示Model representation
- 代价函数Cost function
- 目标Goal
- 多项式回归
- 加权线性回归
- 一般线性回归
- 通用的指数概率分布
- 伯努利分布
- 高斯分布
- 微分与导数1
- 微分
- 导数
- 方向导数
- 梯度
- 梯度下降算法
- 基本思想
- 流程
- 批量梯度下降
- 随机梯度下降
- 特征归一化
- 步长的选择
- 优缺点
- 随机梯度下降的改进
- 最小二乘法
- 代价函数Cost function
- 求解
- 矩阵不可逆解决方法
- 优缺点
- 逻辑回归 -Logistic regression
- 逻辑回归模型
- 代价函数
- 二分类问题
- 对数似然损失函数
- 优点
- 多类分类问题
- 其他优化算法
- 牛顿法2
- 拟牛顿法3
- DFP算法4
- BFGS算法5
- L-BFGS 算法Limited-memory BFGS6
- Softmax回归7
- 过拟合问题8
- 类别不平衡问题9
- 线性回归Linear regression
线性回归(Linear regression)
线性回归属于监督学习,方法和监督学习是一样的,先给定一个训练集,根据训练集学习出一个线性函数,然后测试这个函数训练的好不好(即此函数是否足够拟合训练集数据),挑选出最好的函数(cost function最小)即可
思想:学习一个线性模型(通过属性的线性组合来进行预测的函数)以尽可能准确的预测实值输出标记
处理:1、值间存在序关系转化为连续值。2、属性值间不存在序关系转化为多维向量。模型表示(Model representation)
因为是线性回归,所以学习到的函数为线性函数,即直线函数
hθ(x)=θ0+θ1x1+...+θnxn{h_\theta }(x) = {\theta _0} + {\theta _1}{x_1} + ... + {\theta _n}{x_n}
xnx_n 为特征, nn 为特征数目,hθ(x){h_\theta }(x) 表示假设函数。为了方便,记 x0=1x_0 = 1,于是得到:hθ(x)=∑ni=0θixi=θTx{h_\theta }(x) = \sum\nolimits_{i = 0}^n {{\theta _i}{x_i}} = {\theta ^T}x
其中 θ\theta 和 xx 都是向量。代价函数(Cost function)
评价线性函数拟合的好不好,我们需要使用到代价函数,代价函数越小,说明线性回归地越好,即和训练集拟合地越好,当然最小就是0,即完全拟合
J(θ)=J(θ0,θ1,…,θn)=12∑mi=0(hθ(x(i))−y(i))2J\left( \theta \right) =J(\theta_0, \theta_1, … ,\theta_n) = {1 \over 2}\sum\nolimits_{i = 0}^m {({h_\theta }({x^{\left( i \right)}})} - {y^{(i)}}{)^2}
y(i)y^{(i)} 称之为目标变量;x(i)x^{(i)} 为第 ii 个训练样本的所有输入特征,可以认为是一组特征向量;mm 为训练样本的数目。目标(Goal)
minimizeθJ(θ)\displaystyle\mathop{\mathrm{minimize}}\limits_{\theta} J(\theta)
均方误差最小化。
多项式回归
很多时候,线性回归不能很好的拟合给定的样本点
hθ(x)=θ0+θ1(size)+θ2(size)2+θ3(size)3{h_\theta }(x) = {\theta _0} + {\theta _1}(size) + {\theta _2}{(size)^2} + {\theta _3}{(size)^3}
加权线性回归
在学习过程中,特征的选择对于最终学习到的模型的性能有很大影响,于是选择用哪个特征,每个特征的重要性如何就产生了加权的线性回归。
它的中心思想是在对参数进行求解的过程中,每个样本对当前参数值的影响是有不一样的权重的。
加权线性回归学习过程
Fitθtominimize12∑mi=0wi(y(i)−θTx(i))2OutputθTx\eqalign{}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} \theta {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\rm{to}}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\rm{minimize}}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {1 \over 2}\sum\nolimits_{i = 0}^m {{w^i}({y^{(i)}} - {\theta ^T}{x^{\left( i \right)}}} {)^2} \cr & Output{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\theta ^T}x \cr}
与传统的线性回归的区别在于对不同的输入特征赋予了不同的非负值权重,权重越大,对于代价函数的影响越大。
权重计算公式为
w(i)=exp⎛⎝⎜⎜−(x(i)−x)22τ2⎞⎠⎟⎟{w^{\left( i \right)}} = \exp \left( { - {{{{\left( {{x^{\left( i \right)}} - x} \right)}^2}} \over {2{\tau ^2}}}} \right)
其中,xx 是要预测的特征,表示离 xx 越近的样本权重越大,越远的影响越小。理解:xx 为某个预测点,x(i)x^{(i)} 为样本点,样本点距离预测点越近,贡献的误差越大,权值越大;越远则贡献的误差越小,权值越小。
预测点的选取:可以选取样本点。
算法思路:假设预测点取样本点中的第 ii 个样本点,遍历1到 mm 个样本点,算出每一个样本点与预测点的距离,就可以计算出每个样本贡献误差的权值,可以看出 ww 是一个有 mm 个元素的向量。
代入 J(θ)J\left( \theta \right) 中
J(θ)=12∑mi=0wi(y(i)−θTx(i))2=yTwy−θTxTwy−yTwTxθ+θTxTwxθJ\left( \theta \right) = {\kern 1pt} {1 \over 2}\sum\nolimits_{i = 0}^m {{w^i}({y^{(i)}} - {\theta ^T}{x^{\left( i \right)}}} {)^2} = {y^T}wy - {\theta ^T}{x^T}wy - {y^T}{w^T}x\theta + {\theta ^T}{x^T}wx\theta
利用最小二乘法,可以计算出一个 θ \theta 向量
∇θJ(θ)=−xTwy−xTwy+2xTwxθ=0{\nabla _\theta }J\left( \theta \right) = {\kern 1pt} - {x^T}wy - {x^T}wy + 2{x^T}wx\theta = 0
θ=(xTwx)−1xTwy\theta = {\left( {{x^T}wx} \right)^{ - 1}}{x^T}wy
一般线性回归
线性回归是以高斯分布为误差分析模型。逻辑回归采用的是伯努利分布分析误差。而高斯分布、伯努利分布、贝塔分布、迪特里特分布,都属于指数分布。
通用的指数概率分布
p(y;η)=b(y)exp(ηTT(y)−a(η))p(y;\eta ) = b\left( y \right)\exp \left( {{\eta ^T}T(y) - a\left( \eta \right)} \right)
伯努利分布
p(y;ϕ)=ϕy(1−ϕ)1−y=exp(ylog(ϕ)+(1−y)log(1−ϕ))=exp(ylog(ϕ1−ϕ)+log(1−ϕ))p(y;\phi ) = {\phi ^y}{(1 - \phi )^{1 - y}} = exp(ylog(\phi ) + (1 - y)log(1 - \phi )) \\ = exp\left( {ylog\left( {{\phi \over {1 - \phi }}} \right) + log(1 - \phi )} \right)
高斯分布
p(y;μ)=12π−−√exp(−12(y−μ)2)=12π−−√exp(−12(y)2)exp(μy−12μ2)p(y;\mu ) = {1 \over {\sqrt {2\pi } }}exp\left( { - {1 \over 2}{{\left( {y - \mu } \right)}^2}} \right) = {1 \over {\sqrt {2\pi } }}exp\left( { - {1 \over 2}{{\left( y \right)}^2}} \right)exp\left( {\mu y - {1 \over 2}{\mu ^2}} \right)
——————————————————————————————————————————
微分与导数[1]
微分
微分描述的是当函数自变量的变化量 Δx\Delta x 在足够小的改变时函数值的改变情况,是对函数局部变化率的一种线性描述,在足够微小局部,可以用直线去近似代替曲线。
设函数y=f(x)y=f(x) 在点 x0x_0 的某个邻域内有定义,x0+Δxx_0+Δx 也在此区间,当 ΔxΔx 在做足够小变化时,若函数的增量 Δy=f(x0+Δx)−f(x0)Δy=f(x_0+Δx)−f(x_0) 可表示为 Δy=AΔx+ο(Δx)Δy=AΔx+ο(Δx)(其中 AA 是不依赖于 ΔxΔx 的常数,ο(Δx)ο(Δx) 是ΔxΔx 的高阶无穷小),则称函数 y=f(x)y=f(x) 在x0x_0 点是可微的,AΔxAΔx 称作函数在点 x0x_0 相应于自变量增量ΔxΔx 的微分,记作
dy=AΔxdy=AΔx
由于 ο(Δx)ο(Δx) 是 ΔxΔx 的高阶无穷小,所以函数的微分(dy=AΔxdy=AΔx)是函数增量(Δy=AΔx+ο(Δx)Δy=AΔx+ο(Δx))的主要部分,且是 ΔxΔx 的线性函数,所以函数的微分是函数的线性主部。当 ΔxΔx 足够小时记作微元 dxdx ,实际上由导数的定义可知,A=ΔyΔx|(Δx−>0)=dydxA = \frac{\Delta y}{\Delta x} |_{(\Delta x->0)}=\frac{dy}{dx},所以 dy=f′(x)dxdy=f'(x)dx。
由上述思路可以推广至多元函数的微分。
若二元函数 z=f(x,y)z=f(x,y) 在点 (x,y)(x,y) 处的全增量 Δz=f(x+Δx,y+Δy)−f(x,y)Δz=f(x+Δx,y+Δy)−f(x,y) 可以表示成 Δz=AΔx+BΔy+ο(ρ)Δz=AΔx+BΔy+ο(ρ) ,其中ρ=(Δx)2+(Δy)2−−−−−−−−−−−−√\rho = \sqrt{(\Delta x)^2+(\Delta y)^2} ,A和B不依赖于ΔxΔx 和 ΔyΔy 仅与 x,yx,y 有关,则称函数 f(x,y)f(x,y) 在点 (x,y)(x,y) )可微,将AΔx+BΔyAΔx+BΔy 称为函数 f(x,y)f(x,y) 在点 x,yx,y 的全微分,记作
dz=df=AΔx+BΔydz=df=AΔx+BΔy
或者函数 z=f(x,y)z=f(x,y) 在点 (x,y)(x,y) 的两个偏导数为 fx(x,y)f_x(x,y) 和fy(x,y) f_y(x,y) 时,
dz=∂z∂xdx+∂z∂ydy=∂f∂xdx+∂f∂ydy=fx(x,y)dx+fy(x,y)dydz=\frac{\partial z}{\partial x}dx+\frac{\partial z}{\partial y}dy=\frac{\partial f}{\partial x}dx+\frac{\partial f}{\partial y}dy=f_x(x,y)dx+f_y(x,y)dy
三元函数的全微分记作
du=∂u∂xdx+∂u∂ydy+∂u∂zdzdu=\frac{\partial u}{\partial x}dx+\frac{\partial u}{\partial y}dy+\frac{\partial u}{\partial z}dz
导数
导数是函数的局部性质,函数在某点的导数描述了这个函数在这个点的变化率,几何上表现为函数在该点处的切线的斜率。
设函数 y=f(x)y=f(x) 在点 x0x_0 的某个邻域内有定义,当自变量 xx 在x0x_0 处有变化 Δx(Δx=x−x0Δx (Δx=x−x_0,xx 也在该邻域内)) 时,相应的函数变化 Δy=f(x)−f(x0)Δy=f(x)−f(x_0) ;如果 ΔyΔy 与 ΔxΔx 之比 ΔyΔxΔyΔx 在 ΔxΔx 趋于0时极限存在,则称函数 y=f(x)y=f(x) 在点 x0x_0处可导,并称这个极限值为函数 y=f(x)y=f(x) 在点 x0x_0 处的导数,记为 f'(x0)f′(x_0),即
f′(x0)=limΔx→0f(x)−f(x0)x−x0f'(x_0) =\lim_{\Delta x\to 0}\frac{f(x)-f(x_0)}{x-x_0}
如果函数 y=f(x)y=f(x) 在某开区间内每一点都可导,则称函数 f(x)f(x) 在该区间内可导;函数 y=f(x)y=f(x) 对于该区间内的每一个确定的 xx 值都对应着一个确定的导数,此时就构成一个新的函数,称这个函数为原函数 y=f(x)y=f(x) 的导函数,简称导数,记作 y'(f'(x),dydx,df(x)dx)y′(f′(x),dydx,df(x)dx)。
导数和微分的区别从定义上就可以很清楚了,导数是源自于函数值随自变量增量的变化率,即 ΔyΔxΔyΔx 的极限,而微分则源自于微量的分析,即 ΔxΔx 在足够小变化时函数值的变化 ΔyΔy 可以表示为 AΔxAΔx和 ΔxΔx 的高阶小量 ο(Δx)ο(Δx) 之和;导数的值是函数在该点处切线的斜率而微分的值是函数沿切线方向上函数值的增量,dy=f'(x)dxdy=f′(x)dx。
方向导数
导数描述了函数在某点处的变化率,方向导数顾名思义就是研究函数在一点的某一方向上的变化率。
设函数 z=f(x,y)z=f(x,y) 在点 P(x,y)P(x,y) 的某一邻域 U(P)U(P) 内有定义,在U(P)U(P) 内找一方向任意的点 P'(x+Δx,y+Δy)P′(x+Δx,y+Δy),从点 PP 引射线 ll 到 P'P′点,设X轴正向到射线 ll 的转角为 αα,YY 轴正向到射线ll的转角位 ββ,则 cosαcosα、cosβcosβ为 ll 方向的方向余弦,即为 ll 的单位向量 α、βα、β 是 ll 的方向角,如下图。
若函数 z=f(x,y)z=f(x,y) 的增量 Δz=f(x+Δx,y+Δy)−f(x,y)Δz=f(x+Δx,y+Δy)−f(x,y) 与 PP'PP′ 两点间距 ρ=(Δx)2+(Δy)2−−−−−−−−−−−−√\rho=\sqrt{(\Delta x)^2+(\Delta y)^2} 之比在 P'P′ 沿着 l⃗ \vec{l} 方向趋于 PP 时(ρ−>0\rho->0)极限存在,则称这极限为函数在点 PP 沿方向 l⃗ \vec{l} 的方向导数。记为
∂f∂x|p=limρ→0+f(x+Δx,y+Δy)−f(x,y)ρ\frac{\partial f}{\partial x}|_p=\lim_{\rho\to 0^+}\frac{f(x+\Delta x, y+\Delta y)-f(x,y)}{\rho}
偏导数 ∂f∂x=limΔx−>0f(x+Δx,y+y)−f(x,y)Δx\frac{\partial f}{\partial x}=\lim_{\Delta x->0}\frac{f(x+\Delta x, y+y)-f(x,y)}{\Delta x} , ∂f∂y=limΔy−>0f(x,y+Δy)−f(x,y)Δy\frac{\partial f}{\partial y}=\lim_{\Delta y->0}\frac{f(x, y+\Delta y)-f(x,y)}{\Delta y} 分别是函数在某点沿平行于坐标轴的直线的变化率。
设函数 z=f(x,y)z=f(x,y) 在点 P(x,y)P(x,y) 处可微,则其增量可以表示为
f(x+Δx,y+Δy)−f(x,y)=∂f∂xΔx+∂f∂yΔy+ο(ρ)f(x+\Delta x,y+\Delta y)-f(x,y)=\frac{\partial f}{\partial x}\Delta x+\frac{\partial f}{\partial y}\Delta y+\omicron(\rho)
两边同除以 ρρ 得到
f(x+Δx,y+Δy)−f(x,y)ρ=∂f∂x∙Δxρ+∂f∂y∙Δyρ+ο(ρ)ρ\frac{f(x+\Delta x,y+\Delta y)-f(x,y)}{\rho}=\frac{\partial f}{\partial x}\bullet\frac{\Delta x}{\rho}+\frac{\partial f}{\partial y}\bullet\frac{\Delta y}{\rho}+\frac{\omicron(\rho)}{\rho}
由下图知 Δxρ=cosα\frac{\Delta x}{\rho}=\cos\alpha, Δyρ=cosβ\frac{\Delta y}{\rho}=\cos\beta ,则
f(x+Δx,y+Δy)−f(x,y)ρ=∂f∂x∙cosα+∂f∂y∙cosβ+ο(ρ)ρ\frac{f(x+\Delta x,y+\Delta y)-f(x,y)}{\rho}=\frac{\partial f}{\partial x}\bullet\cos\alpha+\frac{\partial f}{\partial y}\bullet\cos\beta+\frac{\omicron(\rho)}{\rho}
故方向导数
∂f∂l=limρ−>0f(x+Δx,y+Δy)−f(x,y)ρ=∂f∂xcosα+∂f∂ycosβ\frac{\partial f}{\partial l}=\lim_{\rho->0}\frac{f(x+\Delta x,y+\Delta y)-f(x,y)}{\rho}=\frac{\partial f}{\partial x}\cos\alpha+\frac{\partial f}{\partial y}\cos\beta
由上思路推广可得三元函数方向导数
即
∂f∂l=limρ−>0f(x+Δx,y+Δy,z+Δz)−f(x,y,z)ρ=∂f∂xcosα+∂f∂ycosβ+∂f∂zcosγ\frac{\partial f}{\partial l}=\lim_{\rho->0}\frac{f(x+\Delta x,y+\Delta y,z+\Delta z)-f(x,y,z)}{\rho}=\frac{\partial f}{\partial x}\cos\alpha+\frac{\partial f}{\partial y}\cos\beta+\frac{\partial f}{\partial z}\cos\gamma
∂f∂l=∂f∂xcosα+∂f∂ycosβ+∂f∂zcosγ\frac{\partial f}{\partial l}=\frac{\partial f}{\partial x}\cos\alpha+\frac{\partial f}{\partial y}\cos\beta+\frac{\partial f}{\partial z}\cos\gamma
其中 α、β、γα、β、γ 为 ll 的方向角,(cosα、cosβ、cosγ)(cosα、cosβ、cosγ)是 ll 的方向向量。
梯度
由上方向导数的定义可知,函数 z=f(x,y)z=f(x,y) 在某点因为选择的方向不同所以其在该点的方向导数是不相同的,现在思考一个问题:函数沿什么方向的方向导数为最大?
我们已经知道函数的方向导数
∂f∂l=∂fxcosα+∂f∂ycosβ\frac{\partial f}{\partial l}=\frac{\partial f}{x}\cos\alpha+\frac{\partial f}{\partial y}\cos\beta
设向量 G→=(∂f∂x,∂f∂y)\overrightarrow{G}=(\frac{\partial f}{\partial x},\frac{\partial f}{\partial y}), l0→=(cosα,cosβ)\overrightarrow{l^0}=(\cos\alpha,\cos\beta) (|l0→|=1)(|\overrightarrow{l^0}|=1) ,则
∂f∂l=∂f∂xcosα+∂f∂ycosβ=G→∙l0→\frac{\partial f}{\partial l}=\frac{\partial f}{\partial x}\cos\alpha+\frac{\partial f}{\partial y}\cos\beta=\overrightarrow{G}\bullet\overrightarrow{l^0}
由向量相乘的知识可知,当向量 G→\overrightarrow{G} 和 l0→\overrightarrow{l^0} 方向一致时,方向导数 ∂f∂l\frac{\partial f}{\partial l} 最大,其最大值为 max∂f∂l=|G→|\max \frac{\partial f}{\partial l}=|\overrightarrow{G}|。所以函数的方向导数在 G→\overrightarrow{G} 的方向上变化率最大,G→\overrightarrow{G} 的模为最大变化率之值。在几何上向量 G→\overrightarrow{G} 表现为函数等值线上点P处的法向量。
设函数 z=f(x,y)z=f(x,y) 在点 P(x,y)P(x,y) 处可偏导,称向量G→\overrightarrow{G} 为函数 z=f(x,y)z=f(x,y) 在点 P(x,y)P(x,y) 处的梯度(gradient)即
gradf(x,y)=(∂f∂x,∂f∂y)=∂f∂xi→+∂f∂yj→=∇fgrad f(x,y)=(\frac{\partial f}{\partial x},\frac{\partial f}{\partial y})=\frac{\partial f}{\partial x}\overrightarrow{i}+\frac{\partial f}{\partial y}\overrightarrow{j}=\nabla f
梯度下降算法
基本思想
利用负梯度方向来决定每次迭代的新的搜索方向,使得每次迭代能使待优化的目标函数逐步减小。
是利用一阶的梯度信息找到函数局部最优解的一种方法,也是机器学习里面最简单最常用的一种优化方法。流程
1、先确定向下一步的步伐大小,称为Learning rate;
2、任意给定一个 θ\theta 初始值
3、确定一个向下的方向,并向下走预先规定的步伐,并更新;θj {\theta _j}4、当下降的高度小于某个定义的值,则停止下降。
特点:1、初始点不同,获得的最小值也不同,因此梯度下降求得的只是局部最小值;2、越接近最小值时,下降速度越慢。
批量梯度下降
先考虑只有一个训练样本的情况
J(θ)=12∑mi=0(hθ(x(i))−y(i))2=12(Xθ−y)T(Xθ−y)∂∂θjJ(θ)=∂∂θj12(hθ(x)−y)2=2∗12(hθ(x)−y)∗∂∂θj(hθ(x)−y)=(hθ(x)−y)∗∂∂θj(∑ni=0θixi−y)=(hθ(x)−y)xj\eqalign{& J\left( \theta \right) = {1 \over 2}\sum\nolimits_{i = 0}^m {({h_\theta }({x^{\left( i \right)}})} - {y^{(i)}}{)^2} = {1 \over 2}{\left( {X\theta - y} \right)^T}\left( {X\theta - y} \right) \cr }}J(\theta ) = {\partial \over {\partial {\theta _j}}}{1 \over 2}{({h_\theta }(x) - y)^2} = 2*{1 \over 2}({h_\theta }(x) - y)*{\partial \over {\partial {\theta _j}}}({h_\theta }(x) - y) \cr & = ({h_\theta }(x) - y)*{\partial \over {\partial {\theta _j}}}(\sum\nolimits_{i = 0}^n {{\theta _i}{x_i}} - y) = ({h_\theta }(x) - y){x_j} \cr}
得到跟新规则
θj:=θj−∂∑i=1m(hθ(x(i))−y(i))xj(i){\theta _j}: = {\theta _j} - \partial \sum\limits_{i = 1}^m {({h_\theta }({x^{\left( i \right)}}) - {y^{(i)}}){x_j}^{\left( i \right)}}
对于如下更新参数的算法: 直接把单个样本代价函数的梯度换为多个样本代价函数的梯度
Repeat{θj:=θj−∂∑i=1m(hθ(x(i))−y(i))xj(i)(simultaneouslyupdateθjforj=0,...,n)}\eqalign{}\{ \cr : = {\theta _j} - \partial \sum\limits_{i = 1}^m {({h_\theta }({x^{\left( i \right)}}) - {y^{(i)}}){x_j}^{\left( i \right)}} \cr }{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\rm{update}}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\theta _j}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\rm{for}}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} j = 0,...,n) \cr & \} \cr}
由于在每一次迭代都考察训练集的所有样本,而称为批量梯度下降 batch gradient descent。随机梯度下降
如果参数更新计算算法如下
loop{fori=1tom,{θj:=θj−∂(hθ(x(i))−y(i))xj(i)(forj=0,...,n)}}\eqalign{\nolimits} \{ \cr {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} for{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} i = 1{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} to{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} m,\{ \cr {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\theta _j}: = {\theta _j} - \partial ({h_\theta }({x^{\left( i \right)}}) - {y^{(i)}}){x_j}^{\left( i \right)}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\rm{(}}{\kern 1pt} {\rm{for}}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} j = 0,...,n) \cr {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} \} \cr & \} \cr}
这里我们按照单个训练样本更新 θj {\theta _j} 的值,称为随机梯度下降 stochastic gradient descent ,属于在线学习算法。 同样也要遍历整个训练集,但和batch gradient descent不同的是,我们每次只使用单个训练样本来更新 α\alpha ,依次遍历训练集,而不是一次更新中考虑所有的样本。
特征归一化
核心思想:确保特征在相似的尺度里
目标:使每一个特征值都近似的落在 −1≤xi≤1−1≤x_i≤1 的范围内。
作用:加快梯度下降的执行速度
简单的归一化
除以每组特征的最大值均值归一化
用 xi–μix_i–μ_i 替换 xix_i 使特征的均值近似为 0(但是不对 x0=1x_0=1 处理),均值归一化的公式是xi←xi–μiSix_i \leftarrow \frac{x_i – \mu_i} {S_i}
其中 SiS_i 可以是特征的取值范围(最大值-最小值),也可以是标准差(standard deviation).
步长的选择
如果 α\alpha 太小,会收敛很慢
如果 α\alpha 太大,就不能保证每一次迭代 J(θ)J(\theta) 都减小,就不能保证 J(θ)J(\theta) 收敛
选择 α\alpha 经验的方法: 约3倍于前一个数。开始迭代,学习率大,慢慢的接近最优值时,学习率变小。优缺点
需要选择合适的 learning rate α\alpha ;
需要很多轮迭代;
但是即使 nn 很大的时候效果也很好;
需要特征归一化随机梯度下降的改进
在每次迭代时,调整更新步长α\alpha 的值, 随着迭代的进行,α\alpha 越来越小,这会缓解系数的高频波动
每次迭代,改变样本的优化顺序。随机选择样本来更新回归系数。可以减少周期性波动,因为样本顺序改变,使迭代不再形成周期性
——————————————————————————————————————————
最小二乘法
梯度下降算法给出了一种计算 θ\theta 的方法,但需要迭代,比较费时。最小二乘法是一种直接利用矩阵运算可以得到 θ\theta 值的算法
代价函数(Cost function)
将输入特征 xx 和对应的结果 yy 表示成矩阵形式有:
X=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢(x(1))T(x(2))T⋮(x(m))T⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥,y=⎡⎣⎢⎢⎢⎢⎢y(1)y(2)⋮y(m)⎤⎦⎥⎥⎥⎥⎥X = \left[ {\matrix{{{{\left( {{x^{\left( 1 \right)}}} \right)}^T}} \cr {{{\left( {{x^{\left( 2 \right)}}} \right)}^T}} \cr \vdots \cr {{{\left( {{x^{\left( m \right)}}} \right)}^T}} \cr } } \right],y = \left[ {\matrix{{{y^{\left( 1 \right)}}} \cr {{y^{\left( 2 \right)}}} \cr \vdots \cr {{y^{\left( m \right)}}} \cr } } \right]
对于预测模型有
hθ(x)=∑ni=0θixi=θTx{h_\theta }(x) = \sum\nolimits_{i = 0}^n {{\theta _i}{x_i}} = {\theta ^T}x
即
hθ(x(i))=(x(i))Tθ{h_\theta }({x^{\left( i \right)}}) = {({x^{\left( i \right)}})^T}\theta
于是
Xθ−y=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢(x(1))Tθ(x(2))Tθ⋮(x(m))Tθ⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥−⎡⎣⎢⎢⎢⎢⎢y(1)y(2)⋮y(m)⎤⎦⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢hθ(x(1))−y(1)hθ(x(2))−y(2)⋮hθ(x(m))−y(m)⎤⎦⎥⎥⎥⎥⎥X\theta - y = \left[ {\matrix{ {{{\left( {{x^{\left( 1 \right)}}} \right)}^T}\theta } \cr {{{\left( {{x^{\left( 2 \right)}}} \right)}^T}\theta } \cr \vdots \cr {{{\left( {{x^{\left( m \right)}}} \right)}^T}\theta } \cr } } \right] - \left[ {\matrix{ {{y^{\left( 1 \right)}}} \cr {{y^{\left( 2 \right)}}} \cr \vdots \cr {{y^{\left( m \right)}}} \cr } } \right] = \left[ {\matrix{ {{h_\theta }({x^{\left( 1 \right)}}) - {y^{\left( 1 \right)}}} \cr {{h_\theta }({x^{\left( 2 \right)}}) - {y^{\left( 2 \right)}}} \cr \vdots \cr {{h_\theta }({x^{\left( m \right)}}) - {y^{\left( m \right)}}} \cr } } \right]
可以得到
J(θ)=12∑mi=0(hθ(x(i))−y(i))2=12(Xθ−y)T(Xθ−y)J\left( \theta \right) = {1 \over 2}\sum\nolimits_{i = 0}^m {({h_\theta }({x^{\left( i \right)}})} - {y^{(i)}}{)^2} = {1 \over 2}{\left( {X\theta - y} \right)^T}\left( {X\theta - y} \right)
求解
矩阵运算来得到梯度
∇θJ(θ)=∇θ12(Xθ−y)T(Xθ−y)=12∇θ(θTXTXθ−θTXTy−yTXθ+yTy)=12∇θtr(θTXTXθ−θTXTy−yTXθ+yTy)=12∇θ(trθTXTXθ−2tryTXθ)=12(XTXθ+XTXθ−2XTy)=XTXθ−XTy\eqalign{J\left( \theta \right) = {\nabla _\theta }{1 \over 2}{\left( {X\theta - y} \right)^T}\left( {X\theta - y} \right) = {1 \over 2}{\nabla _\theta }\left( {{\theta ^T}{X^T}X\theta - {\theta ^T}{X^T}y - {y^T}X\theta + {y^T}y} \right) \cr & = {1 \over 2}{\nabla _\theta }tr\left( {{\theta ^T}{X^T}X\theta - {\theta ^T}{X^T}y - {y^T}X\theta + {y^T}y} \right) = {1 \over 2}{\nabla _\theta }\left( {tr{\theta ^T}{X^T}X\theta - 2tr{y^T}X\theta } \right) \cr & = {1 \over 2}\left( {{X^T}X\theta + {X^T}X\theta - 2{X^T}y} \right) = {X^T}X\theta - {X^T}y \cr}
求 J(θ)J(\theta) 最小值方法是令
ddθjJ(θ)=0\frac{d}{d\theta_{j}}J(\theta) =0
然后得到 θ\theta 的值
θ=(XTX)−1XTy\theta = (X^T X)^{-1}X^T y
矩阵不可逆解决方法
在(XTX)(X^T X) 不可逆的情况下,我们就不能求得最小二乘解。也就是说,XX 与yy 之间不存在最优的线性模型。
岭回归(Ridge Regression)
虽没有最优解,但可以有很多的近似解。岭回归就是一种求解近似解的方法。岭回归是在平方误差的基础上增加正则项来建立模型,从而使得矩阵非奇异。J(θ)=12((∑mi=0(y(i)−θTx(i))2)+λθ2)=XTXθ−XTy+λθJ\left( \theta \right) ={1 \over 2}\left( {\left( {\sum\nolimits_{i = 0}^m {({y^{(i)}} - {\theta ^T}{x^{\left( i \right)}}} {)^2}} \right) + \lambda {\theta ^2}} \right)={X^T}X\theta - {X^T}y + \lambda \theta
然后得到 θ\theta 的值θ=(XTX+λI)−1XTy\theta = {\left( {{X^T}X + \lambda I} \right)^{ - 1}}{X^T}y
为了选取最优的 λ\lambda 值,可以采取交叉验证法。优缺点
不需要选择 α\alpha ;
不需要迭代,一次搞定;
但是需要计算 (XTX)−1(X^TX)^{−1},其时间复杂度是O(n3)O(n^3)
如果n很大,就非常慢
不需要特征归一化
——————————————————————————————————————————
逻辑回归 -Logistic regression
逻辑回归常用于垃圾邮件分类,天气预测、疾病判断和广告投放
对于二分类问题来说,线性回归模型的假设函数输出值 hθ(x)h_\theta(x) 可以大于1也可以小于0。这个时候我们引出逻辑回归,逻辑回归的假设函数输出介于0与1之间,既
0≤hθ(x)≤10 \leq h_\theta(x) \leq 1
逻辑回归模型
假设函数
hθ(x)=g(θTx)h_\theta(x) = g(\theta^T x)
gg 称为Sigmoid function 或者Logistic function, 具体表达式为:y=g(z)=11+e−zy=g(z) = \frac{1}{1+e^{-z}}
综合上述两式,我们得到逻辑回归模型的数学表达式
hθ(x)=11+e−θTxh_\theta(x) = \frac{1}{1+e^{-\theta^Tx}}
其中 θ\theta 是参数直观解释:对Sigmoid function 转化可以得到
lny1−y=θTxln{y \over {1 - y}} = {\theta ^T}x
就是用线性回归模型的预测结果逼近真实标记的对数几率。 hθ(x)h_\theta(x) = 对于给定的输入x,y=1x,y=1 时估计的概率
即:hθ(x)=P(y=1|x;θ)h_\theta(x) =P(y=1| x;\theta)
代价函数
J(θ)=12∑i=1m(hθ(x(i))–y(i))2J(\theta) = \frac{1}{2}\sum_{i=1}^m{(h_\theta(x^{(i)}) – y^{(i)})^2}
这里取 hθ(x)=11+e−θTxh_\theta(x) = \frac{1}{1+e^{-\theta^Tx}},会存在一个问题,也就是逻辑回归的代价函数是“非凸”的。所以需要其他形式的代价函数来保证逻辑回归的成本函数是凸函数。二分类问题
对于因变量 y=0y=0 或 11 这样的二分类问题
假设P(y=1|x;θ)=hθ(x)P(y=1| x;\theta)=h_\theta(x)
则P(y=0|x;θ)=1–P(y=1|x;θ)=1−hθ(x)P(y=0|x;\theta) = 1 – P(y=1|x;\theta)=1-h_\theta(x)
进一步表示为P(y|x;θ)=(hθ(x))y(1−hθ(x))(1−y)P(y|x;\theta) = (h_\theta(x))^y(1-h_\theta(x))^{(1-y)}
对数似然损失函数
似然估计
L(θ)=p(y|x;θ)=∏i=1mp(y(i)|x(i);θ)=∏i=1m(hθ(x(i)))y(i)(1−hθ(x(i)))(1−y(i))L\left( \theta \right) = p\left( {y|x;\theta } \right) = \prod\limits_{i = 1}^m {p\left( {{y^{^{\left( i \right)}}}|{x^{^{\left( i \right)}}};\theta } \right)} = \prod\limits_{i = 1}^m {(h_\theta(x^{\left( i \right)}))^{y^{\left( i \right)}}(1-h_\theta(x^{\left( i \right)}))^{(1-y^{\left( i \right)})}}
取对数得到代价函数
L(θ)=log(∏i=1m(hθ(x(i)))y(i)(1−hθ(x(i)))(1−y(i)))=∑i=1myilog(hθ(x(i)))+∑i=1m(1−y(i))log(1−hθ(x(i)))L\left( \theta \right) = \log \left( {\prod\limits_{i = 1}^m {(h_\theta(x^{\left( i \right)}))^{y^{\left( i \right)}}(1-h_\theta(x^{\left( i \right)}))^{(1-y^{\left( i \right)})}}} \right)\\ =\sum\limits_{i = 1}^m {{y_i}{\log (h_\theta(x^{\left( i \right)}))}} + \sum\limits_{i = 1}^m {{(1-y^{\left( i \right)})}\log (1-h_\theta(x^{\left( i \right)}))}
令该导数为0,会发现它无法解析求解,所以只能借助迭代算法
∂∂θjL(θ)=⎛⎝⎜y1g(θTx)−(1−y)11−g(θTx)⎞⎠⎟∂∂θjg(θTx)=⎛⎝⎜y1g(θTx)−(1−y)11−g(θTx)⎞⎠⎟g(θTx)(1−g(θTx))∂∂θjθTx=(y(1−g(θTx))−(1−y)g(θTx))xj=(y−hθ(x))xj\eqalign{}}L(\theta ) = \left( {y{1 \over {g\left( {{\theta ^T}x} \right)}} - \left( {1 - y} \right){1 \over {1 - g\left( {{\theta ^T}x} \right)}}} \right){\partial \over {\partial {\theta _j}}}g\left( {{\theta ^T}x} \right) \cr & = \left( {y{1 \over {g\left( {{\theta ^T}x} \right)}} - \left( {1 - y} \right){1 \over {1 - g\left( {{\theta ^T}x} \right)}}} \right)g\left( {{\theta ^T}x} \right)\left( {1 - g\left( {{\theta ^T}x} \right)} \right){\partial \over {\partial {\theta _j}}}{\theta ^T}x \cr & = \left( {y\left( {1 - g\left( {{\theta ^T}x} \right)} \right) - \left( {1 - y} \right)g\left( {{\theta ^T}x} \right)} \right){x_j} = \left( {y - {h_\theta }(x)} \right){x_j} \cr}
得到类似的更新公式
θj:=θj−α∑i=0m(hθ(x(i))−y(i))x(i)j{\theta _j}: = {\theta _j} - \alpha \sum\limits_{i = 0}^m {\left( {{h_\theta }({x^{(i)}}) - {y^{(i)}}} \right){x^{(i)}}_j}
优点
1、直接对分类可能性建模,无需事先假设数据分布,这样就避免了假设分布不准确问题
2、对率函数是任意阶可导凸函数,有很好的数学性质
——————————————————————————————————————————
多类分类问题
策略:
一对一:一对其余:
对于多类分类问题,可以将其看做成二类分类问题:保留其中的一类,剩下的作为另一类。
对于每一个类 i i 训练一个逻辑回归模型的分类器,并且预测 y=iy = i 时的概率;
对于一个新的输入变量x<script type="math/tex" id="MathJax-Element-247">x</script>, 分别对每一个类进行预测,取概率最大的那个类作为分类结果。多对多:
——————————————————————————————————————————
其他优化算法
牛顿法[2]
拟牛顿法[3]
DFP算法[4]
BFGS算法[5]
L-BFGS 算法(Limited-memory BFGS)[6]
Softmax回归[7]
过拟合问题[8]
类别不平衡问题[9]
——————————————————————————————————————————
回归- Regression相关推荐
- 【李宏毅机器学习】02:回归Regression
李宏毅机器学习02:回归Regression 文章目录 李宏毅机器学习02:回归Regression 一.回归(Regression)的定义 1.Regression: Output a scalar ...
- 机器学习之回归(Regression)再理解
文章目录 一 前言引入 1. 回归定义及应用场景 2. 解决步骤 3. 过拟合和解决方法 二 回归问题再理解 1. 问题提出 2. 问题解决 三 结束语 一 前言引入 1. 回归定义及应用场景 ...
- 回归(regression)与分类(classification)的区别
回归与分类的不同 1.回归问题的应用场景 2.分类问题的应用场景 3.如何选择模型 回归与分类的不同 1.回归问题的应用场景 回归问题通常是用来预测一个值,如预测房价.未来的天气情况等等,例如一个产品 ...
- 机器学习中的数学(1)-回归(regression)、梯度下降(gradient descent)
前言: 上次写过一篇关于贝叶斯概率论的数学,最近时间比较紧,coding的任务比较重,不过还是抽空看了一些机器学习的书和视频,其中很推荐两个:一个是stanford的machine learning公 ...
- 李宏毅机器学习 之 回归Regression(二)
目录 1.回归的定义 2.回归的例子 3.建模步骤 1)模型假设,选择模型框架(线性模型) 2)模型评估,如何判断众多模型的好坏(损失函数) 3)模型优化,如何筛选最优的模型(梯度下降) 4.步骤优化 ...
- 李宏毅机器学习课程--回归(Regression)
近期在学习李宏毅老师的机器学习视频(https://www.bilibili.com/video/av10590361/?p=4),下面写一下自己的心得体会. 李老师用的是精灵宝可梦做的比喻,假设进化 ...
- 机器学习之数学基础(四)~Lasso Regression回归, L1、L2 Regularization正则化, 回归问题中的损失函数
目录 1. Lasso回归 1.1 概念 1.2 正则化 1.3 Lasso回归模型 1.4 为什么Lasso Regression可以做降维? 1.5 参数求解 (1)坐标轴下降法 (2)最小角回归 ...
- 水稻微生物组时间序列分析4-随机森林回归
写在前面 哪些菌可以作为生育时间的biomarkers? 回归分析 读取文件 随机森林回归 交叉验证 feature重要性 美化feature贡献度柱状图 图4.2. 绘制时间序列热图 猜你喜欢 写在 ...
- Keras【Deep Learning With Python】LSTM 循环神经网络解决Regressor回归问题
文章目录 1 前言 2 RNN 的弊端 3 LSTM 4 代码实现 5 重要部份讲解 6 输出: 1 前言 和前几篇文章一样,依旧是分为讲解和代码实现. 2 RNN 的弊端 之前我们说过, RNN 是 ...
最新文章
- ServiceMesh究竟解决什么问题?
- CCF-百度松果基金正式“亮出”申报细则,加码产学研前沿合作
- 学习笔记day5:inline inline-block block区别
- 省一级计算机选择题题库及答案,计算机一级考试选择题题库之excel题及答案(最新版).doc...
- Apache Flink 在快手的过去、现在和未来
- 如何给这些textbox中赋值
- SPSS19.0实战之聚类分析(转载)
- sgu 309 Real Fun
- 进程之间有哪些通信方式
- 利用 MAC 自带的 mount_ntfs 工具加载ntfs移动硬盘进行数据读写
- 中点画线完整算法c语言,中点画线算法
- 21.08.01 cnvoron带你玩转Voron2.4
- Unity 骨骼动画模型变形
- 百度地图标记打点展示
- 利用jQuery制作简易手风琴
- ClasssLoader
- 第十三届蓝桥杯B组python(试题A:排列字母)
- python数据分析:使用lifetimes进行客户终身价值(CLV)探索
- 【学算法的辅助练习1】北大POJ2388:Who‘s in the Middle
- Chrome浏览器如何完美实现滚动截图技巧
热门文章
- 晒晒公司发的年货,一家比一家实在,打工人:发了个通知
- 创业公司路演PPT模板
- MongoDB 4.2.3 安装以及安装遇到的问题“service MongoDB failed to start,verify that you have sufficient privilege”
- 2022上海省赛(A,E,G,H,M,N)
- 知云文献翻译打不开_沙拉查词—— 划线翻译的一股清流
- 谁都可以抱怨监管,唯独蚂蚁不应该
- C# AO/ArcEngine 栅格数据总结
- 三款免费杀毒软件+clamAV
- 为什么使用服务器端渲染 (SSR)?
- java递归查询分类及分类下所有子分类