zoukankan      html  css  js  c++  java
  • Normal Equation(正规方程)

    Normal Equation

    Note: [8:00 to 8:44 - The design matrix X (in the bottom right side of the slide) given in the example should have elements x with subscript 1 and superscripts varying from 1 to m because for all m training sets there are only 2 features x0 and x1. 12:56 - The X matrix is m by (n+1) and NOT n by n. ]

    Gradient descent gives one way of minimizing J. Let’s discuss a second way of doing so, this time performing the minimization explicitly and without resorting to an iterative algorithm. In the "Normal Equation" method, we will minimize J by explicitly taking its derivatives with respect to the θj ’s, and setting them to zero. This allows us to find the optimum theta without iteration. The normal equation formula is given below:

    θ=(XTX)1XTy

    There is no need to do feature scaling with the normal equation.

    The following is a comparison of gradient descent and the normal equation:

    Gradient DescentNormal Equation
    Need to choose alpha No need to choose alpha
    Needs many iterations No need to iterate
    O (kn2) O (n3), need to calculate inverse of XTX
    Works well when n is large Slow if n is very large

    With the normal equation, computing the inversion has complexity O(n3). So if we have a very large number of features, the normal equation will be slow. In practice, when n exceeds 10,000 it might be a good time to go from a normal solution to an iterative process.

    Normal Equation Noninvertibility

    When implementing the normal equation in octave we want to use the 'pinv' function rather than 'inv.' The 'pinv' function will give you a value of θ even if XTX is not invertible.

    If XTX is noninvertible, the common causes might be having :

    • Redundant features, where two features are very closely related (i.e. they are linearly dependent)
    • Too many features (e.g. m ≤ n). In this case, delete some features or use "regularization" (to be explained in a later lesson).

    Solutions to the above problems include deleting a feature that is linearly dependent with another or deleting one or more features when there are too many features.

  • 相关阅读:
    .NET 用 Unity 依赖注入——概述注册和解析类型(1)
    .NET 服务器定位模式(Service Locator Pattern)——Common Service Locator
    用什么样的语言就有什么样的公司【转载】
    编程语言和工具比较【翻译】
    .NET 基于任务的异步模式(Task-based Asynchronous Pattern,TAP) async await
    RocketMQ【未完成】
    Dapper
    Java 控制反转和依赖注入模式【翻译】【整理】
    Java 面向切面编程(Aspect Oriented Programming,AOP)
    Groovy 与 Python 的差异【翻译】
  • 原文地址:https://www.cnblogs.com/ne-zha/p/7296425.html
Copyright © 2011-2022 走看看