• 机器学习-线性回归与梯度下降


    线性回归

    linear regression

    符号定义

    notation,仅为本教程中的符号定义。

    • (m)

      训练集中样本的数量

    • (x)

      输入值,features。

      (x^{(i)}),表示第(i)个样本的features

    • (y)

      输出值,target

      (y^{(i)}),表示第(i)个样本的label

    • ( heta_i)

      parameters,第(i)个模型参数

    • (h_ heta)

      hypothesis(假设),这是一个在早期被用于机器学习的名称算法得到的函数((x)(y)

      (h_ heta(x)= heta_0+ heta_1x)

    ((x,y))代表一个样本,((x^{(i)},y^{(i)}))代表第(i)个样本

    代价函数

    cost function,有很多种。

    符号是(J( heta_1, heta_2))

    • 平方误差函数

      square error function,最小二乘法。

      对于大多数问题,特别是回归问题,平方误差函数都是一个合理的选择。

    梯度下降

    gradient descent,可以用梯度下降法使各种各样的代价函数(J)最小化

    它不仅被用在线性回归上,实际上被广泛地应用于机器学习的众多领域。

    符号定义

    • (:=)

      赋值

    • (=)

      相等

    • (alpha)

      是个数字,叫做学习速率,它控制以多大的幅度更新参数( heta)

    注意

    • 多个( heta)需要同时更新(如果不同时,可能也能得到答案,但就并不是人们所指的梯度下降了,而是其他性质的其它算法),所以应该先计算,最后再同时更新( heta)

    • 在梯度下降法中,当我们接近局部最低点时,梯度下降法会自动采取更小的幅度。

      因为当我们接近局部最低点时,导数会变得越来越小,所以梯度下降将自动采取较小的幅度。

      据上,可知实际上没有必要在接近局部最低点的时候减小(alpha)

    • 梯度下降法求得的可能是局部最优解

      但线性回归的成本函数总是一个凸函数(convex function),凸函数使用梯度下降法求得最小值就是全局最小值。

    “Batch” Gradient Descent

    “Batch”指的是梯度下降的每一步都使用所有的训练样本。

    矩阵和向量

    向量指的是列向量,4维的向量指的就是4行1列的矩阵。

    按照惯例,通常用大写字母表示矩阵,用小写字母表示数字、标量或向量。

    多元线性回归

    符号定义

    • (n)

      特征的数量,形成一个(m)(n)列的矩阵

    特征缩放

    features scaling

    处理不同feature之间的数量级差异,使梯度下降收敛速度更快,否则可能会收敛得很慢

    方法有很多种:

    • (frac{x}{x_{max}})
    • (frac{x-x_{mean}}{x_{max}})
    • (frac{x-x_{mean}}{标准差})
    • (frac{x-x_{mean}}{x_{max}-x_{min}})

    学习率

    学习率(alpha)的选取是十分重要的。

    学习率太小,收敛会很慢;学习率太大,代价函数的值可能不会每步都在减小,或者无法收敛。

    学习率一般都是试出来的。

    可以用自动收敛测试来判断代价函数是否已经收敛;也可以以迭代次数为横轴,代价函数的最小值为纵轴作图,通过观察判断。

    自动收敛测试

    当某步时,代价函数的减小值很小(比如小于(10^{-3}),这个阈值也是不好确定的)时,则认为代价函数已经收敛。

    多项式回归

    基于已有特征构造新的特征(乘积或次方)

    正规方程

    nomal equation

    线性方程组有解的话,使用该方法即可,可以一次性求得最优解,不需使用梯度下降法之类的迭代算法,求得的是解析解。

    正规方程法不需要特征缩放。

    [ heta=(X^TX)^{-1}X^Ty ]

    (X^TX)不可逆的情况很少出现,如果不可逆,就用它的伪逆。

    梯度下降与正规方程对比

    梯度下降 正规方程
    不需要选择学习率 需要选择学习率
    需要多次迭代 不需要迭代
    (n)很大时效果也很好 需要计算矩阵的逆,(n)很大时速度很慢

    作者:@臭咸鱼

    转载请注明出处:https://www.cnblogs.com/chouxianyu/

    欢迎讨论和交流!


  • 相关阅读:
    eclipse中将web项目部署到tomcat
    mysql + Fluently NHibernate + WebAPI + Autofac
    无状态
    mysql备份及还原
    【jmeter】jmeter 常用组件 介绍
    【测试小方法】通过谷歌开发者工具手动修改位置信息
    【jmeter】jmeter 设置线程组 各个字段的概念
    【jmeter】jmete 安装介绍
    【腾讯位置服务web service】腾讯位置服务web service api
    【python】python 的 lambda 函数
  • 原文地址:https://www.cnblogs.com/chouxianyu/p/11574501.html
Copyright © 2020-2023  润新知