机器学习入门系列二(关键词:多变量(非)线性回归,批处理,特征缩放,正规方程)

来源:互联网 发布:seed相似的软件 编辑:程序博客网 时间:2024/05/17 06:57

一、多变量的线性回归

在#机器学习系列一#中,我们讨论了单变量的线性回归,而多变量的线性回归与单变量类似,一致内容就不再赘述了。首先我们来看一个例子,下表是波特兰的房子价格,针对不同的房屋面积和卧室间数。

房屋面积/ft2 卧室/间 价格/美元 房屋面积/ft2 卧室/间 价格/美元 2104 3 399900 1962 4 259900 1600 3 329900 3890 3 573900 2400 3 369000 1100 3 249900 1416 2 232000 1458 3 464500 3000 4 539900 2526 3 469000 1985 4 299900 2200 3 475000 1534 3 314900 2637 3 299900 1427 3 198999 1839 2 349900 1380 3 212000 1000 1 169900 1494 3 242500 2040 4 314900 1940 4 239999 3137 3 579900 2000 3 347000 1811 4 285900 1890 3 329999 1437 3 249900 4478 5 699900 1239 3 229900 1268 3 259900 2132 4 345000 2300 4 449900 4215 4 549000 1320 2 299900 2162 4 287000 1236 3 199900 1664 2 368500 2609 4 499998 2238 3 329900 3031 4 599000 2567 4 314000 1767 3 252900 1200 3 299000 1888 2 255000 852 2 179900 1604 3 242900 1852 4 299900 1203 3 239500

在这里我们先规定一下符号记法:

符号 含义 m 训练样本的个数 n 每个训练样本的特征个数 x 训练样本中的输入变量 y 训练样本中的输出变量 (x(i),y(i))i个训练样本 x(i)ji个训练样本的输入变量的第j个特征 hθ(x) 输入变量x与输出变量y的映射关系

在本例中,训练样本个数m为47;输入变量的特征数n为2,分别为房屋面积和卧室间数;x(i)1为第i个样本的房屋面积,x(i)2为第i个样本的卧室间数,y(i)为第i个样本的房屋价格,例x(1)=[21043]Ty(1)=399900。有了训练样本,下一步我们需要用一种算法得到一个比较好的映射关系hθ(x),当给定房屋面积和卧室间数x时,通过映射关系可以得到一个符合训练样本规律的房屋价格y。由于我们现在讨论的是多变量的线性回归,因此我们假设

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

同单变量线性回归一样,我们定义一个代价函数J(θ0,θ1,θ2)。这样,问题就转化为寻找一组θ0θ1θ2使得J(θ0,θ1,θ2)最小。
J(θ0,θ1,θ2)=12mi=1m(hθ(x(i))y(i))2(2)
应用梯度下降法(详见机器学习系列一)
θ0=θ0αθ0J(θ0,θ1)θ1=θ1αθ1J(θ0,θ1)(3)

经过严格推导可得
θ0=θ0αmi=1m(hθ(x(i))y(i))θ1=θ1αmi=1m(hθ(x(i))y(i))x(i)1θ2=θ2αmi=1m(hθ(x(i))y(i))x(i)2(4)

二、批处理

为了可以用矩阵进行批处理,我们把x增加一个维度x0=1,这样

hθ(x)=θ0x0+θ1x1+θ2x2=[θ0θ1θ2]x0x1x2=θTx(5)

因此式(4)可以写成如下形式
θj=θjαmi=1m(hθ(x(i))y(i))x(i)j(6)

这样的话,输入变量X可以写成如下m×3矩阵形式(7),其中第一列为1,第二列为第一个特征(房屋面积),第三列为第二个特征(卧室间数);输出变量y可以写成m×1矩阵;所求θ可以写成3×1矩阵,即θ=[θ0θ1θ2]T
x(1)Tx(2)Tx(3)Tx(m)T(7)

此时式(2),(6)用matlab编程语言如下,非常简洁明了:

J = 1/(2*m)*(X*theta-y)'*(X*theta-y);theta = theta-alpha/m*(X'*(X*theta-y));

三、特征缩放

由于这是多变量线性回归,还有一个比较棘手的问题,即不同的特征取值范围不一样。在本例中特征1取值范围0~3000,而特征2取值范围0~5,差距悬殊。在处理数据前若没有做特征缩放也就是没有做过标准化,目标函数则无法适当的运作。举例来说,利用两点间的距离计算两点的差异对数据进行分类,若其中一个特征具有非常广的范围,那两点间的差异就会被该特征左右,因此,所有的特征都该被标准化,这样才能大略的使各特征依比例影响距离。在本例中若不进行特征缩放,将会耗费很长很长的时间找到最优解,极端情况下甚至因为各种特征差距太大甚至无法找到。不单单是线性回归,很多情况下我们都要对数据进行预处理即特征缩放,可以说应用范围非常广。
常见的归一化方法有两种:
1. min-max标准化
min-max标准化也称为离差标准化,是利用样本数据的最大值和最小值对原始数据的线性变换。经过处理使结果值映射到[0 - 1]之间,转换函数如下:

x=xminmaxmin(8)

2. Z-score标准化
Z-score标准化利用原始数据的均值和标准差进行数据的标准化。经过处理的数据符合标准正态分布,即均值为0,标准差为1,转化函数为如下:
x=xμσ(9)

本例中,我们采用Z-score标准化,以第一个特征(房屋面积)为例
x1=x1μx1σx1=x1μx1σx1=x12000.68786.2

经过标准化,梯度下降法迭代,我们得到
θ=[8.9598×104139.21078.7380×103]T
当房子面积为1650ft2,卧室间数3时,房屋预测价格为
price=θT116503=293081()

四、正规方程

为了求得最优解θ,我们采取了梯度下降法,下面我们介绍一种方法可以一次性得到最优解,不必进行迭代,所采用的X是式(7)。

θ=(XTX)1XTy(10)
由于推导过程比较困难,我将在后续进行更新。如果XTX可逆,我们可以直接求逆,如果XTX不可逆,我们就用奇异值分解,或者去相关使X的列线性无关(在线性代数中我们可以证明若X线性无关,则XTX可逆)

  • 正则方程优点
    -代码简洁易懂
    -不用选择步长α,不用进行迭代
    -不用进行特征缩放,即不会梯度下降法那样很难得到最优解
  • 正则方程缺点
    -当输入变量特征较多时,XTX太大,进行求逆运算代价太高,此时梯度下降法是一个很好地选择(一般而言当n>104时我们可以着手考虑采取梯度下降法)。

五、多变量非线性回归

若我们要进行非线性回归,所得结果是个圆,即

hθ(x)=θ0+θ1x1+θ2x2+θ3x21+θ4x22(11)
为了把复杂的非线性回归转化为已知的线性回归,不妨令
p1=x1p2=x2p3=x21p4=x22(12)
此时便转化为已知的线性回归
hθ(p)=θ0+θ1p1+θ2p2+θ3p3+θ4p4(13)
注:对于非线性回归,由于有2次项,甚至更高项,如果进行梯度下降法,那么一定要进行特征缩放。

1 0
原创粉丝点击