机器学习基础个人笔记(二)

本文介绍了多变量线性回归的基本概念,涉及多维特征处理、梯度下降算法的实践应用,包括特征缩放和学习率调整。通过实例演示了正规方程与梯度下降的不同,并提供了Python代码实现。核心话题围绕数据预处理和多元模型优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里附上上一章的链接机器学习个人笔记(一)_NanGuai的博客-CSDN博客

目录

多变量线性回归

多维特征

多变量梯度下降

梯度下降法实践1-特征缩放

梯度下降算法实践2-学习率

特征和多项式回归

 正规方程


多变量线性回归

多维特征

        前面我们讨论了单变量线性回归,但我们知道,在实际生活中一件事物总是被多件事物影响。例如房价模型当中影响房价的其实还可能包括房间数量、楼层、房屋年限等。

        此时我们假设h_{\theta } =\theta _{0} +\theta _{1} x _{1}+\theta _{2} x _{2}+...+\theta _{n} x _{n}

        为了简化公式,设x _{0}=1,即h_{\theta } =\theta _{0}x _{0} +\theta _{1} x _{1}+\theta _{2} x _{2}+...+\theta _{n} x _{n}

        进一步简化为h_{\theta }=\theta ^{T} X,上标T表示矩阵转置

多变量梯度下降

        与单变量线性回归类似,多变量线性回归的误差函数为:

J\left ( \theta _{0} ,\theta _{1} ,...,\theta _{n}\right ) = \frac{1}{2m} {\textstyle \sum_{i=1}^{m}} \left ( h_{\theta \left ( x^{(i)} \right )-y^{(i)} } \right ){\small {\scriptsize {\tiny {\tiny } } } }^{2}

        其中:h_{\theta } =\theta _{0}x _{0} +\theta _{1} x _{1}+\theta _{2} x _{2}+...+\theta _{n} x _{n},求导方式与单变量类似,在这里直接给出结果:

        代码示例:

        计算误差函数J\left ( \theta _{0} ,\theta _{1} ,...,\theta _{n}\right ) = \frac{1}{2m} {\textstyle \sum_{i=1}^{m}} \left ( h_{\theta \left ( x^{(i)} \right )-y^{(i)} } \right ){\small {\scriptsize {\tiny {\tiny } } } }^{2} 

        其中: h_{\theta } =\theta _{0}x _{0} +\theta _{1} x _{1}+\theta _{2} x _{2}+...+\theta _{n} x _{n}

         python代码:

def computeCost(X, y, theta):
    inner = np.power(((X * theata.T) - y), 2 )
    return np.sum(inner) / (2 * len(X))

梯度下降法实践1-特征缩放

        特征缩放听起来可能有点绕口,但我相信标准化、归一化这样的名词你一定听过,它们便是常见的特征缩放方法。那么为什么要进行这样的操作呢?当存在一个范围相较其他特征偏大的特征存在时,会导致结果有偏差(例如,范围为0到100的变量将主导范围为0到1的变量)。而如果这些特征都具有相似的尺度,可以帮助梯度下降算法更快的收敛。

        还是以房价问题为例,以横轴为房屋面积(0-2000平方英尺),竖轴为房间数量(0-5)作等高线图。可以看出图像非常的扁平,这就导致了梯度下架算法需要迭代很多次才能够收敛,找到局部最优点。

        为了解决这一问题,就需要对特征进行缩放,尽量让所有尺度都在一个数量级上。在本例当中,面积缩小了2000倍,房间数缩小了5倍。

梯度下降算法实践2-学习率

        在梯度下降算法的公式中我们可以明显看出学习率α的影响。在选择学习率时不能过大也不能过小。过小会导致每次下降太少,需要迭代的次数就会变得很高;过大的话可能会直接越过局部最优点从而导致无法收敛的情况出现。

        在选择学习率时,一般取以下值做实验:

α=0.01, 0.03, 0.1, 0.3, 1, 3, 10, ...

特征和多项式回归

        线性回归不一定适合所有的情况,有时候我们可以选择曲线来构建模型,比如二次方模型:h_{0}=\theta _{0}+\theta _{1}x_{1}+\theta _{2}x_{2}^2

        或者三次方模型:h_{0}=\theta _{0}+\theta _{1}x_{1}+\theta _{2}x_{2}^2+\theta _{3}x_{3}^3

        在经过观察后选择合适的模型。除此之外,还可以令:x_{2}=x{2}^2,x_{3}=x{3}^3,从而将模型再转换回线性模型。

正规方程

        对于某些线性回归问题,正规方程相较于梯度下降算法更为出色。如:J(\theta)=a\theta^2+b\theta+c

        假设训练集特征矩阵为X,对应的结果向量为y,则利用正规方程解出向:\theta=(X^TX)^{-1} X^Ty具体推导过程可以看下面这篇博客,在这里我就直接把结果列出来了哈。

正规方程求解特征参数的推导过程_chenlin41204050的博客-CSDN博客_正规方程组的求解过程

         下面举个例子:

那么梯度下降与正规方程到底有那些不同呢?

梯度下降正规方程
需要选择学习率无需选择学习率
需要多次迭代只需一次运算
特征数量n较大时也能适用需要计算(X^TX)^{-1}如果特征数量n较大则运算代价较大(矩阵相乘比较麻烦),通常来说当n小于10000时还是可以接受的
适用于各种类型的模型只适用于线性模型

        其实只要特征变量的数目不大,正规方程是一个很不错的方法,当特征变量少于10000时可以用它来代替梯度下降。

        最后在这里附上正规方程的python实现:

import numpy as np
def normalEqn(X, y):
    theata = np.linalg.inv(X.T@X)@X.T@y #X.T@X等价于X.T.dot(X)
    return theata

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

楠怪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值