• Machine Learning


    Multiple Features

    上一章中,hθ(x) = θ0 + θ1x,表示只有一个 feature。现在,有多个 features,所以 hθ(x) = θ0 + θ1x1 + θ2x2 + ... + θjxj。
    为了标记的方便,增加 x= 1

    用向量表示

    这里的 X 表示单行 Xi。如果是表示所有的 hθ(x),就会 X * θ(X 表示所有 x 的值)

    Gradient Descent For Multiple Features 也是同理,扩展到 j 个,就不再赘述。

    Gradient Descent in Practice - Feature Scaling

    逻辑是:确保所有的 features 在同一尺度。尺度理解为相差不超过 10 倍或者百倍。

    Features 的范围越小,总的可能性就越小,计算速度就能加快。

     Dividing by the range

    通过 feature/range 使每个 feature 大概在 [-1, 1] 的范围内

     下题是一个例子:

    Mean normalization

    将值变为接近 0。除了 x0,因为 x的值为 1。

    mu1 是 average value of x1 in trainning sets;

    S是 x1 的范围大小,比如卧室是 [0, 5],那么范围为 5 - 0 = 5。也可以设置成标准差(在练习中就是这个)

    需要将 x0 排除。

    确保 gradient descent 工作正确

    如上图,这个图像是正确的,随着循环次数的增加,J(θ) 主键减小。超过一定循环次数之后,J(θ) 曲线趋于平缓。可以根据图像得出什么时候停止,或者当每次循环,J(θ) 的变化小于 ε 时停止。

    图像上升

    说明 α 取值大了,应该减小。上图的图像另一种观看方式:

    如果 α 足够小,那么能缓慢但完全覆盖。

    如果 α 太大:在每次循环时,可能不会减少从而不能完全覆盖。

    可以由程序来自动选择,后面会提到。

    Features and polynomial regression

    可以使用自定义的 features 而不是完全照搬已存在的 features。比如房子有长宽两个属性,我们可以创建一个新属性--面积。然后,表达式变成

    ,但是这个曲线是先减小后增大的,与实际数据不符(面积越大,总价越高)。所以调整为

    (可以调整表达式直到符合数据为止)。

    Normal equation

    Gradient Descent 随着循环次数增加,逐步逼近最小值。如图:

    Normal equation 是通过方法直接计算出 θ

    导数为 0 时最小

    然后解出 θ0 到 θn

    求解 θ 的方程

    Matrix 概念见 Machine Learning - week 1

    什么时候用 Gradient Descent 或者 Normal Equation

    当 n 较大时,右边的会很慢,因为计算  是 O(n3)

    当 n 小的时候,右边会更快,因为它是直接得出结果,不需要 iterations 或者 feature scaling。

    如果  是 non-invertible?

    1. Redundant features (are not linearly independent).

    E.g. x1 = size in feet2; x2 = size in m2

    2. Too many features(e.g. m <= n)

    比如 m = 10, n = 100,意思是你只有 10 个数据,但有 100 个 features,显然,数据不足以覆盖所有的 features。

    可以删除一些 features(只保留与数据相关的 features)或者使用 regularization。

    习题

    1. 

    不知道如何同时使用两种方法,这两种方法是否是顺序相关的?

    使用 Dividing by the range

    range = max - min = 8836 - 4761 = 4075

    vector / range 后变为 

    1.9438
    1.2721
    2.1683
    1.1683

    对上述使用 mean normalization

    avg = 1.6382

    range =  2.1683 - 1.1683 = 1

    x2(4) = (1.1683 - 1.6382) / 1 = -0.46990 保留两位小数为 -0.47

    5. 

    上面提到了“Features 的范围越小,总的可能性就越小,计算速度就能加快。”(多选题也可以单选)

    Octave Tutorial

    介绍了 Octave 的常用语法。

    Vectorization

    使用 vectorization 会比 for loop 更加高效。

    例子

    更复杂的例子

    怎样把 delta vectorized 还没有理解。整体思想了解了。

    Octave arithmetic operators 有一些不符合你的直觉。

    比如 ^ 与 .^

    X =

     

       1   1   1   1   1   1   1

       1   1   1   1   1   1   1

       1   1   1   1   1   1   1

       1   1   1   1   1   1   1

       1   1   1   1   1   1   1

       1   1   1   1   1   1   1

       1   1   1   1   1   1   1

     

    octave:80> X .^ 2

    ans =

     

       1   1   1   1   1   1   1

       1   1   1   1   1   1   1

       1   1   1   1   1   1   1

       1   1   1   1   1   1   1

       1   1   1   1   1   1   1

       1   1   1   1   1   1   1

       1   1   1   1   1   1   1

     

    octave:81> X ^ 2

    ans =

     

       7   7   7   7   7   7   7

       7   7   7   7   7   7   7

       7   7   7   7   7   7   7

       7   7   7   7   7   7   7

       7   7   7   7   7   7   7

       7   7   7   7   7   7   7

       7   7   7   7   7   7   7

     

  • 相关阅读:
    ArcEngine实现对点、线、面的闪烁(转载)
    好久没写博客了.把这几个月的开发过程做一个总结
    利用暴力反编译的程序处理ArcXML数据遇到的问题小结(纯粹研究目的)
    ArcSde 9.2与Oracle 10g是最佳搭档
    当ArcEngine报事件同时存在于AxMapControl,MapControl时的解决方法(转载)
    写在苏州火炬接力的最后一站
    提问,如何才能触发鼠标事件
    地铁线路图高性能查找算法系统,最短路径查询地铁网络拓扑高效率算法原创附带demo
    二分查找
    .net面试题
  • 原文地址:https://www.cnblogs.com/jay54520/p/7298218.html
Copyright © 2020-2023  润新知