斯坦福机器学习笔记三 - 多变量线性回归

斯坦福机器学习笔记三 - 多变量线性回归

多变量

在上节的单变量线性回归中,我们只用到了一种变量,即房子面积作为特征来预测房价。假设函数为
single_feature_hypothesis

single_feature

但是,如果我们有多个特征该怎么办呢?比如我们添加了房子卧室的数量,楼层的数量以及房子的使用年限等特征,这样我们就有了更多的特征来预测房价。
multiple_variables

首先简单介绍下数学标记

  • x(i)j x j ( i ) 表示训练数据中第i个训练样本的第j个特征
  • x(i) x ( i ) 表示训练样本的第i个训练输入(特征)
  • m表示训练样本的数目
  • n表示特征的数目

通过单变量线性回归的假设函数可知,多变量线性回归的假设函数为

hθ(x)=θ0+θ1x1+θ2x2+...+θnxn h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n

为了方便表示,首先定义 x0=1 x 0 = 1 (即 x(i)0 x 0 ( i ) =1), 此时 hθ(x) h θ ( x ) 为:
hθ(x)=θ0x0+θ1x1+θ2x2+...+θnxn h θ ( x ) = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n

再令
θ=θ0θ1θ2...θnIRn+1,x=x0x1x2...xnIRn+1 θ = [ θ 0 θ 1 θ 2 . . . θ n ] ∈ I R n + 1 , x = [ x 0 x 1 x 2 . . . x n ] ∈ I R n + 1

multiple_features_hypothesis_with_matrix

故多变量线性回归的假设函数为
$$

$$

hθ(x)=θ0x0+θ1x1+θ2x2+...+θnxn=[θ0θ1...θn]x0x1...θn=θTx h θ ( x ) = θ 0 x 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n = [ θ 0 θ 1 . . . θ n ] [ x 0 x 1 . . . θ n ] = θ T x

梯度下降

多变量下的梯度下降与单变量下的梯度下降没有区别,只是将对应的偏导数相替换掉即可
gradient_descent

特征处理

特征缩放(Feature Scaling)

如果有多个特征,且多个特征的取值范围相近,则梯度下降就能够很快的收敛。但如果特征的取值范围相差较大,那么梯度下降会很慢。

比如房价预测中,特征房子面积和卧室数目,如图所示,他们的取值范围相差较大,如果画出代价函数 J(θ) J ( θ ) 的轮廓图,可能会是瘦长形的椭圆。梯度下降算法要经过很多次的迭代才能到达最优点。但如果我们对特征进行缩放,使得他们的取值范围相接近,则此时的代价函数如下图右侧所示,会较快的收敛到最优点。通常将特征缩放到[-1,1]范围附近。
feature_scaling

均值归一化(Mean normalization)

在特征缩放中,除了将特征除以最大值以外,还有一种方法叫做均值归一化, 将特征值减去平均值,除以最大值减去最小值

xi=xiμisi,si=max{x0,x1,...,xn}min{x0,x1,...,xn} x i = x i − μ i s i , s i = m a x { x 0 , x 1 , . . . , x n } − m i n { x 0 , x 1 , . . . , x n }

mean__normalization

学习率

我们应该如何知道梯度下降算法是正常工作的呢?梯度下降算法的目的就是找到一个 θ θ 值能够最小化代价函数 J(θ) J ( θ ) , 所以我们可以画出代价函数和迭代次数的关系图来观察梯度下降算法的运行。如图所示,x轴是迭代簇数,y轴是代价函数。如果正常运行的话,代价函数的值应该逐渐下降,类似下图所示。
cost_function_with_iterations

当然我们也可以进行自卸自动的收敛测试,比如如果代价函数迭代后的下降值低于某个阈值 ϵ ϵ (比如 ϵ=103 ϵ = 10 − 3 )就判定收敛。当然选择一个合适的阈值是相当困难的。通常还是使用画图的方法进行收敛判定,而不是自动收敛测试。

总结一下 α α 的选择要求
alpha_choice

特征和多项式回归

当选择了合适的特征后,学习算法的效果是非常有效的。并且多项式回归使得我们能够使用线性回归的方法来拟合非常复杂的函数,甚至是非线性函数。

比如房价预测,我们选取房子的临街宽度和垂直宽度作为特征,假设函数为

h(θ)=θ0+θ1frontage+θ2depth h ( θ ) = θ 0 + θ 1 ∗ f r o n t a g e + θ 2 ∗ d e p t h

但是,当然我们运用线性回归时,不一定直接用这些特征,可能房价和面积有关呢,所以特征选取为 size=frontagedepth s i z e = f r o n t a g e ∗ d e p t h , 假设函数变为
h(θ)=θ0+θ1size h ( θ ) = θ 0 + θ 1 ∗ s i z e

通过特征的选择,可能会获得更好的模型
polynomial_regression_house_price_predict

与选择特征的想法密切相关的概念被称为多项式回归(Polynomial regression),比方说有一个关于房屋价格的数据集,为了拟合它,可能会有多个模型。比如第一个模型为二次函数模型,因为直线不能很好的拟合数据,但你发现二次函数是一个抛物线,最终会房价降下来,但实际并不会降。
polynomial_regression_house_price_predict_square

所以转而使用三次函数模型,因为三次函数最后不会下降。但是我们应该如何将模型与数据拟合呢?如图所示,我们将房屋面积作为第一个特征,面积的平方作为第二个特征,面积的三次方作为第三个特征。当然如果这样设置特征后,特征的归一化就非常重要了。

当然,还有其他的模型以供选择,比如平方根模型,如图所示
polynomial_regression_house_price_predict_square_root

正规方程(Normal Equation)

正规方程

对于某些线性回归问题,正规方程是一种求解参数 θ θ 最优值更好的方法。到目前为止,我们一直用梯度下降,也就是说为了最小化代价函数 J(θ) J ( θ ) ,我们使用梯度下降算法来进行多次迭代使得代价函数收敛到全局最优值。但正规方程可以让我们一次性求解 θ θ 的最优值。

如图所示,假设代价函数为 J(θ)=aθ2+bθ+c J ( θ ) = a θ 2 + b θ + c θ θ 为实数,如何得到最优值的?学过微积分的都知道,只要领导数为0即可。
polynomial_regression_normal_equation

当然,上例中的 θ θ 是一直实数,而我们感兴趣的确是 θ θ n+1维向量,并且J为该向量的函数的情况。我们该如何最小化代价函数J?其实只要我们求每个 θ θ 的偏导数,然后把他们全部置为0,这样就能够得到最小化代价函数的 θ θ 向量值,但是你可能会发现最后得出的值会非常复杂,接下来就实现一种求最优值的向量化方法。

为了首先正规方程法,首先在训练集加一列对应额外特征的 x0 x 0 ,值为1.接下来用所有特征变量构建矩阵 X X , 再将输出值放入向量y中,最后通过公式 θ=(XTX)1XTy θ = ( X T X ) − 1 X T y ,就可以得到 θ θ 值。
polynomial_regression_normal_equation_example

通用形式
polynomial_regression_normal_equation_general

在Octave中,可以下面的命令计算

pinv(x'*x)*x'*y

这就是正规方程,并且正规方程不需要归一化特征。

梯度下降与正规方程

正规方程的优点这么多,那么是否会有去缺点呢?下图为梯度下降与正规方程的优缺点对比。

梯度下降正规方程
需要选择学习率 α α 不需要选择学习率 α α
需要多次迭代不许迭代
O(kn2) O ( k n 2 ) O(n3) O ( n 3 ) , 需要计算 XTX X T X 的逆矩阵
即使n很大也能正常工作如果n非常大,计算非常慢

gradient_descent_normal_equation

正规方程的不可逆

如果 XTX X T X 不可逆时,可能的原因有

  • 冗余特征。可能有特征非常相似,比如线性相关
  • 特征太多。(eg. m <= n)。这种情况下,可以删除一些特征或者使用正则化(Regularization)
  • polynomial_regression_normal_equation_noninvertibility
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值