zoukankan      html  css  js  c++  java
  • regression

    单变量线性回归univariate linear regression

    代价函数square error cost function : (J( heta)=frac{1}{2m}sum_{i=1}^{m} (h_{ heta}(x^{(i)}) - y^{(i)})^2)
    (2m)(2)是为了消去后续求导时的(2)
    其中单变量时 (h_{ heta}(x) = heta_0 + heta_1 x) (h是hypothesis的意思)
    上标(i)是指第i组训练数据

    梯度下降法gradient decent:
    脑补一个三维图像:( heta_0, heta_1,J( heta))
    ( heta_i -= alpha frac{partial}{partial heta_i}h( heta))
    (导为正数时,( heta)应减小;导为负数时,( heta)应增大。 陡的时候快,缓的时候慢)
    随着过程的执行, 可以让(alpha)递减去更好的接近(不过即使(alpha)是定值也能走到局部最优点)
    只要 (alpha)不会过大 (过大时J可能甚至越大,脑补一个人在盆地两边跳来跳去越跳越高)
    无论单变量还是多变量,这种线性回归代价函数一定是bowl shape
    当J经过一次迭代后变化不超过原来的(10^-3)时认为converage(如果是陡完平一段继续陡怎么办?)

    多变量线性回归multivariate linear regression

    (h_{ heta} = heta_0 x_0 + heta_1 x_1 + heta_2 x_2 + cdots + heta_n x_n) 其中(x_0 = 1)
    (J( heta)=frac{1}{2m}sum_{i=1}^{m} (h_{ heta}(x^{(i)}) - y^{(i)})^2)
    ( heta_j) -= (alpha frac{partial}{partial heta_j}h( heta) = alpha frac 1 m sum_{i=1}^m (h_{ heta}(x^{(i)})-y^{(i)})x^{(i)}_j) (展开h,求偏导)
    (x^{(i)}_j)表示第i组训练数据的第j个feature

    (脑补表格:每列一个特征,最左添加一列(x_0=1),最后一列是标准值y,每行一个example)
    (X)(m imes(n+1))矩阵,(Y)(m imes1)列向量
    (theta)((n+1) imes1)列向量,(H)(m imes1)列向量

    H= X * theta
    del = H - Y
    J = 1 / (2*m) * sum(del.^2)
    theta -= alpha / m * (X’ * del)
    

    为便于观察并减少迭代次数,我们需要对特征进行缩放,使其范围不至于过大,也不至于过小
    例如(alphafrac{x-min}{max-min}), (alphafrac{x-mean}{max-min}) 具体情况而定
    注意缩放后,predict时的特征也要对应用同种方式缩放
    注意不要一个for循环过去把(x_0)也改了(另外注意octave是从一开始存的)

    线性回归其他函数设计

    如给定房子的长和宽和房价,特征不应是长和宽两个,而应该是占地面积
    如给定数据点明显不是直线,可以考虑( heta_0 + heta_1 x + heta_2 x^2)之类的,x是同一个feature, 令(x_i)(x^i)转多变量问题
    根号和ln其实长得很像

    正规方程normal equation

    公式:( heta = (X^TX)^{-1}X^TY) (why?)
    其中(X)(m*(n+1)), (Y)(m*1)
    求逆即使是伪逆也能算对
    使用时建议(m>n)
    优势:不必要缩放features,不需要跑多次调整(alpha)
    效率比较:梯度下降(省去重复运算)是(n*m*iter),这个是(n^3+n^2m)
    n大的时候这个方法肯定不行。但一般来说n应该不大?m比较大?

  • 相关阅读:
    PHP中Foreach在引用时的陷阱 j神
    Yii中Session和cookie的用法 j神
    如何解决web大流量、高并发的问题 j神
    PHP无限级分类的递归算法 j神
    关于breadcrumbs j神
    MySQL索引分析和优化 j神
    Yii笔记 j神
    YII中的URL Management j神
    forward与redirect的区别 j神
    网络编程学习笔记
  • 原文地址:https://www.cnblogs.com/acha/p/11028892.html
Copyright © 2011-2022 走看看