zoukankan      html  css  js  c++  java
  • Normal Equations

    Normal Equations 的由来

    假设我们有m个样本。特征向量的维度为n。因此,可知样本为{(x(1),y(1)), (x(2),y(2)),... ..., (x(m),y(m))},其中对于每一个样本中的x(i),都有x(i)={x1(i), xn(i),... ...,xn(i)}。令 H(θ)=θ0 + θ1x12x2 +... + θnxn,则有

    若希望H(θ)=Y,则有

    X · θ = Y

    我们先来回忆一下两个概念:单位矩阵 矩阵的逆,看看它们有什么性质。

    (1)单位矩阵E

    AE=EA=A

    (2)矩阵的逆A-1

    要求:A必须为方阵

    性质:AA-1=A-1A=E

    再来看看式子 X · θ = Y

    若想求出θ,那么我们需要做一些转换:

    step1:先把θ左边的矩阵变成一个方阵。通过乘以XT可以实现,则有

    XTX · θ = XTY

    step2:把θ左边的部分变成一个单位矩阵,这样就可以让它消失于无形了……

    (XTX)-1(XTX) · θ = (XTX)-1XTY

    step3:由于(XTX)-1(XTX) = E,因此式子变为

    Eθ = (XTX)-1XTY

    E可以去掉,因此得到

    θ = (XTX)-1XTY

    这就是我们所说的Normal Equation了。

    Normal Equation VS Gradient Descent

    Normal Equation 跟 Gradient Descent(梯度下降)一样,可以用来求权重向量θ。但它与Gradient Descent相比,既有优势也有劣势。

    优势:

    Normal Equation可以不在意x特征的scale。比如,有特征向量X={x1, x2}, 其中x1的range为1~2000,而x2的range为1~4,可以看到它们的范围相差了500倍。如果使用Gradient Descent方法的话,会导致椭圆变得很窄很长,而出现梯度下降困难,甚至无法下降梯度(因为导数乘上步长后可能会冲出椭圆的外面)。但是,如果用Normal Equation方法的话,就不用担心这个问题了。因为它是纯粹的矩阵算法。

    劣势:

    相比于Gradient DescentNormal Equation需要大量的矩阵运算,特别是求矩阵的逆。在矩阵很大的情况下,会大大增加计算复杂性以及对计算机内存容量的要求。

    什么情况下会出现Normal Equation,该如何应对?

    (1)当特征向量的维度过多时(如,m <= n 时)

     解决方法:① 使用regularization方式

         or ②delete一些特征维度

    (2)有redundant features(也称为linearly dependent feature)

    例如, x1= size in feet2

        x2 = size in m2

        feet和m的换算为 1m≈3.28feet所以,x1 ≈ 3.282 * x2, 因此x1和x2是线性相关的(也可以说x1和x2之间有一个是冗余的)

    解决方法:找出冗余的特征维度,删除之。

    练习

    练习的介绍页面见Ng的openclassroom  Exercise: Multivariate Linear Regression

    下载页面上的数据,然后载入matlab中。

    y(i)表示价格,x(i)表示房屋面积和房间数:

    样本数m=47。

    step1:对数据进行预处理

    给每一个x向量,都增加一个x0=1的分量。

    m = 47;
    x=[ones(m,1),ex3x];

    查看x矩阵:

    step2:带入normal equation公式θ = (XTX)-1XTY,求解权重向量。

     y=ex3y;
     theta = inv(x'*x)*x'*y;

    求得θ向量为

    如果我想预计“1650-square-foot house with 3 bedrooms”的价格,那么由X * θ = Y可知:

    price = [1,1650,3]* theta ;

    我们取消matlab中的科学计数法,看看price的价格是多少:

    >> format long g
    >> price

    price =  293081.464334897

    我们在给出的样本中,找一个接近的样本比比看:

    23号样本的房屋面积为1604,房间数也为3,它的价格为

    我们可以尝试画出H(θ)函数的图像看看:

    先分别用min和max函数找出房屋面积(x1)和房间个数(x2)的最大和最小值,有

    x1∈[852,4478]

    x2∈[1,5]

    x1=linspace(852,4478,47);
    x2=linspace(1,5,47);
    [xx1,xx2]=meshgrid(x1,x2);
    h_theta = theta(1)*ones(47,47) + theta(2)*xx1 + theta(3)*xx2;
    surf(xx1,xx2,h_theta);

    可以看到H(θ)为如下平面:

  • 相关阅读:
    CF 142B Tprimes
    CF 231A Team
    poj 2001 Shortest Prefixes ——字典树入门
    hdu 1039 Easier Done Than Said?
    poj 2528 Mayor's posters
    hdu 1061 Rightmost Digit
    poj 2503 Babelfish
    CF271 A. Beautiful Year
    poj 2752
    CF271 B. Prime Matrix
  • 原文地址:https://www.cnblogs.com/elaron/p/3088894.html
Copyright © 2011-2022 走看看