机器学习-多元线性回归

image.png
在前面的章节中,我们仅仅使用了一个变量 x x x,接下来我们将考虑多个变量的影响。
x j x_j xj:第 j j j个特征
n n n:表示特征的数目,有 n n n
x ⃗ ( i ) \vec{\mathrm{x}}^{(i)} x (i):表示第 i i i个训练示例,也可以称为一组行向量
x j ( i ) x_{j}^{(i)} xj(i):表示第 j j j个特征的第 i i i个训练示例
image.png
我们可以将上面的逐个相乘再相加的式子写成一个向量之间点乘的形式,更加简洁。通过引入多个特征,这也被称为多元线性回归。

向量化

image.png
对于 f w , b ( x ) f_{w,b}(x) fw,b(x)的表示我们有三种不同的方式,分别为直接相加,循环,使用向量表示。前两者不仅在编写上不如第三种,而且由于考虑到numpy可以实现GPU加速,在运算速度上也是胜过前两者。
image.png
可以看到由于numpy可以将 w , x w,x w,x之间并行处理,不需要一步步的计算,因此速度远远快于累加的循环方法。

梯度下降

image.png
我们将 w w w向量化,可以得到右边的式子。
image.png
需要注意 w j w_j wj的计算,最后的 x j ( i ) x_{j}^{(i)} xj(i)是一个数,而不是一个向量。

特征缩放

image.png
像上面这个例子一样,由于面积这个特征的取值范围远远大于房间数目这个取值范围,因此我们可能会需要一个更聪明的模型才可以选择一个合适的 w 1 , w 2 w1,w2 w1,w2使得预估结果更加合理。
image.png
即使我们的模型足够聪明,选择了合适的 w 1 , w 2 w1,w2 w1,w2。但是我们可以看到上边两幅图中的特征值和等高线的分布都是十分不均匀的,这可能会导致我们在进行梯度下降的时候会折返多次。这时候就需要我们对于特征值进行一些缩放,使其可以更加均匀的分布,在进行梯度下降时可以更快的得到最小值。

  1. 直接缩放

image.png
采用直接除以最大值的方式,使其范围在 [ 0 , 1 ] [0,1] [0,1]之间。

  1. Mean normalization

image.png
使用 x n e w = x − m e a n ( x ) m a x ( x ) − m i n ( x ) x_{new}=\frac{x-mean(x)}{max(x)-min(x)} xnew=max(x)min(x)xmean(x),通过减去均值在除以范围,使得范围在 [ − 1 , 1 ] [-1,1] [1,1]之间。

  1. Z-score normalization

image.png
使用 x n e w = x − μ σ x_{new}=\frac{x-\mu}{\sigma} xnew=σxμ,将数据变换为均值为 0 0 0,标准差为 1 1 1的分布切记,并非一定是正态的,只有原来就是正态分布才会变成标准正态化。
同时由于这些变化都是线性的,对于数据本身的顺序不会造成影响。
数据标准化和归一化 方法小结 - 数说张小桃 - 博客园

梯度下降收敛

image.png
通过左边的曲线我们看到当迭代次数达到 300 300 300时,我们的曲线的减少已经接近为0,在 400 400 400时已经接近于平衡。同时我们也可以使用一个 ϵ \epsilon ϵ来进行判断,当减少量小于这个数时,代表该曲线已经收敛。

选择合适的学习率

image.png
如果曲线不是呈现前面的逐渐下降直到最终趋近于平衡的话,而是不断起伏或者上升,那么就代表程序本身出现了bug或者学习率设置的过大,使得无法找到最小值,这时候我们需要调整这个数,使得曲线可以慢慢下降到最小。
image.png
在最开始选择一个很小的学习率,不断地增大直到无法收敛,然后根据这样找到一个合适的值。

特征工程

image.png
有时候原生特征不能完全满足预测的要求,那么可以根据一个或者多个原生特征衍生出其它可用或不可用的特征,这一过程称为“特征衍生”。特征衍生是特征工程一个比较重要的组成部分,它需要花费比较多的精力和时间尽量去认识原生特征和具体的预测命题,然后根据原生特征的特点构造出一些衍生特征。
例如我们一开始使用长度和宽度分别作为特征进行预估,但是可以使用这两个值的乘积也就是面积作为新的特征进行预测,使得结果更加精准。

多项式回归

image.png
我们已经使用了很久的 f ( w , b ) = w x + b f(w,b)=wx+b f(w,b)=wx+b,现在让我们使用一个曲线来更好地拟合这些数据。
image.png
我们可以使用不同的多项式函数,使得我么的曲线更好的拟合数据。

正规方程

image.png
我们可以看到当偏微分为 0 0 0时,我们可以得到这个代价函数的最小值。

根据以上推导我们可以得到一个公式 θ = ( X T X ) − 1 X T y ⃗ \theta=\begin{pmatrix}X^TX\end{pmatrix}^{-1}X^T\vec{y} θ=(XTX)1XTy ,通过这个式子我们无需在进行迭代可以直接得到我们需要的 θ \theta θ
对于其它的方式也可以参看刘建平老师的博客
机器学习中的矩阵向量求导(四) 矩阵向量求导链式法则 - 刘建平Pinard - 博客园
假如我们有 m m m个训练样本, n n n个特征变量。

梯度下降法正规方程
缺点:
1. 需要选择学习速率 α α α
2. 需要更多次的迭代
3. 特征值范围相差太大时需要进行特征缩放。
缺点:
1. 当特征数 n n n很大时,运算的很慢,因为求解逆矩阵的时间复杂度很高,属于 O ( n 3 ) O(n^3) O(n3)
优点:
1. 当特征数 n n n很大时,也可以正常工作。
优点:
1. 不需要选择学习速率 α α α
2. 不需要多次迭代
3. 不需要特征缩放
n < 10000 n<10000 n<10000时,通常使用正规方程,当 n > = 10000 n>=10000 n>=10000时,要考虑使用梯度下降。一些更加复杂的算法仅可以使用梯度下降。

image.png
同时我们需要注意并不是所有的情况 X T X X^TX XTX都是可逆的,当 X X X中的特征 X 1 , X 2 X1,X2 X1,X2出现线性相关时,或者需要的特征数 n n n大于等于( n n n等于 m m m时需要满足 d e t ( X ) det(X) det(X)不等于 0 0 0)给出的样本数 m m m的个数时会出现不可逆的现象。从数学的角度来看就是矩阵不满秩。
可以采取的措施就是删掉一些多余的特征,或者使用正则化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值