吴恩达机器学习 -- 多变量线性回归

5.1 多维特征

前一周所讲是单变量线性回归,即 h(x) = \theta _{0} +\theta _{1}x ,是只有一个变量 x 的假设函数,现在对房价预测模型有了更多的参考特征,比如楼层数,卧室的数量,还有房子的使用年限。根据这些特征来预测房价。此时的变量有多个。 构成一个含有多个变量的模型,模型中的特征为 x=(x_{1},x_{2},...,x_{n})

一些注释:

n:特征的数量

x^{(i)} :第 i 个样本的特征向量

x_{j}^{(i)}:第 i 个样本的 特征向量中的第 j 个特征

那么,线性回归的多变量假设函数变为 h(x) = \theta _{0} +\theta _{1}x_{1} + \theta _{2}x_{2} + ... + \theta _{n}x_{n},式子中有n+1个参数和n个变量。为了公式简化,引入 x_{0} =1,公式变为 h(x) = \theta _{0}x_{0} +\theta _{1}x_{1} + \theta _{2}x_{2} + ... + \theta _{n}x_{n}

此模型中,参数是一个n+1维的向量,任何一个训练实例也都是n+1维的向量,公式就简化为 h(x) = \theta ^{T}X

 

5.2 多变量梯度下降

和单变量线性回归一样,构造多变量模型的代价函数 :J(\theta _{0},\theta _{1},...,\theta _{n})= \frac{1}{2m}\sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})^{2}

其中 h(x) = \theta ^{T}X=\theta _{0}x_{0} +\theta _{1}x_{1} + \theta _{2}x_{2} + ... + \theta _{n}x_{n}

与单变量线性回归梯度下降相同,多变量线性回归梯度下降算法为: \theta_{j} := \theta_{j}-\alpha\frac{\partial J(\theta_{0},\theta_{1},...,\theta_{n})}{\partial \theta_{j}}

求导后 :

\theta_{0} := \theta_{0}-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{0}^{(i)}

\theta_{1} := \theta_{1}-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{1}^{(i)}

\theta_{2} := \theta_{2}-\alpha\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})x_{2}^{(i)}

然后随机选择一系列的参数值,计算所有的预测结果后,再给所有的参数一个新的值,如此循环直到收敛。

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

如果多个特征的取值范围差距悬殊过大,会导致梯度下降收敛速度较慢。因此我们要保证这些特征都具有相近的尺度,这样就可以使梯度下降算法更快地收敛。

解决的方法是尝试将所有特征的尺度都尽量缩放到-1到1之间。

最简单的方法是令:x_{i} = \frac{x_{i} - \mu_{i}}{s_{i}},其中 \mu_{i}是平均值,s_{i}是标准差(或者是特征的范围max-min)。

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

梯度下降法迭代次数随不同模型而不同,提前无法预知。但我们可以通过两种方法来观察 算法在何时趋于收敛。

(1)绘制迭代次数与 代价函数的图表

(2)自动测试是否收敛的方法:例如将代价函数的变化值与某个阀值(例如0.001)进行比较

梯度下降算法的每次迭代受到学习率 α 的影响,如果学习率过小,则达到收敛所需的迭代次数会非常高;

如果学习率过大,每次迭代可能不会减小代价函数,可能会越过局部最小值导致无法收敛。

吴恩达建议的 α 选择:\alpha = 0.001,0.003,0.01,0.03,0.1,0.3,1,3...

5.5 特征和多项式回归

线性回归并不适用于所有数据,有时我们需要曲线来适应我们的数据,比如一个二次方模型:h(x) = \theta _{0} +\theta _{1}x_{1} + \theta _{2}x_{2}^{2},或者三次方模型:h(x) = \theta _{0} +\theta _{1}x_{1} + \theta _{2}x_{2}^{2}+\theta_{3}x_{3}^{3}。通常需要先观察数据然后再决定准备尝试怎样的模型。

一个房价预测问题:

h_{\theta}(x) = \theta _{0} +\theta _{1} \times frontage + \theta _{2}\times depth

x_{1}=frontage(临街宽度), x_{2}=depth(纵向深度),x=frontage \times depth(占用面积),则 h_{\theta}(x) = \theta _{0} +\theta _{1}x

可以令 x_{2}=x^{2}x_{3}=x^{3},从而将模型转化为线性回归模型。

根据函数图形特性,我们还可以使:

h_{\theta}(x) = \theta _{0} +\theta _{1}(size)+\theta_{2}(size)^{2}

或者:

h_{\theta}(x) = \theta _{0} +\theta _{1}(size)+\theta_{2}\sqrt{size}

注:如果采用多项式回归模型,在运行梯度下降算法前,特征缩放非常有必要。

5.6 正规方程

对某些线性回归问题,还可以用正规方程解决。

正规方程通过求解 \frac{\partial J_{\theta}(j)}{\partial \theta_{j}}=0找出使得代价函数最小的参数.

假设训练集特征矩阵为 X,训练集结果为向量 y,则利用郑正规方程求解出的 \theta=(X^{T}X)^{-1}X^{T}y

梯度下降法与正规方程法的比较:

梯度下降法正规方程法
需要选择学习率\alpha不需要
需要多次迭代一次运算得出
当特征数量n大时也能较好适用特征数量n较大则运算代价大,因为矩阵逆的计算时间复杂度为O(n^{3}),通常来说当n小于10000 时还是可以接受的
适用于各种类型的模型只适用于线性模型,不适合逻辑回归模型等其他模型

5.7  正规方程及不可逆性(可选)

有的矩阵可逆,有的矩阵不可逆。

\theta=(X^{T}X)^{-1}X^{T}y 式子中,要求 (XX^{T})^{-1},如果XX^{T}不可逆该怎么办呢?在Octave里,有两个函数可以求解矩阵的逆,一个被称为pinv(),另一个是inv(),这两者之间的差异是些许计算过程上的,一个是所谓的伪逆,另一个被称为逆。使用pinv() 函数可以展现数学上的过程,这将计算出的值,即便矩阵XX^{T}是不可逆的。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值