线性回归

linear regression

符号定义

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

  • \(m\)

    训练集中样本的数量

  • \(x\)

    输入值,features。

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

  • \(y\)

    输出值,target

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

  • \(\theta_i\)

    parameters,第\(i\)个模型参数

  • \(h_\theta\)

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

    \(h_\theta(x)=\theta_0+\theta_1x\)

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

代价函数

cost function,有很多种。

符号是\(J(\theta_1,\theta_2)\)。

  • 平方误差函数

    square error function,最小二乘法。

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

梯度下降

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

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

符号定义

  • \(:=\)

    赋值

  • \(=\)

    相等

  • \(\alpha\)

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

注意

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

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

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

    据上,可知实际上没有必要在接近局部最低点的时候减小\(\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

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

正规方程法不需要特征缩放。
\[ \theta=(X^TX)^{-1}X^Ty \]
\(X^TX\)不可逆的情况很少出现,如果不可逆,就用它的伪逆。

梯度下降与正规方程对比

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

作者:@臭咸鱼

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

欢迎讨论和交流!


转载于:https://www.cnblogs.com/chouxianyu/p/11574501.html

机器学习-线性回归与梯度下降相关推荐

  1. 机器学习(机器学习+线性回归+代价函数+梯度下降)

    一.什么是机器学习 一个计算机程序据说从经验 E 学习关于 一些任务 T 和一些性能措施 P,如果它在 T 上的性能, 由 P 测量,随着经验 E 的提高, 体验 E 将是 让程序玩成千上万的游戏本身 ...

  2. 机器学习01-定义、线性回归、梯度下降

    目录 一.定义 What is Machine Learning 二.建模 Model Representation 三.一元线性回归 Linear Regression with One Varia ...

  3. 机器学习第4天:线性回归及梯度下降

    文章目录 一.简单线性回归(即一元线性回归) 二.代价函数 数学表达式: 代码实现: 实例说明 三.梯度下降 数学表达式: 具体方法 代码实现: 代价随迭代次数的变化 一.简单线性回归(即一元线性回归 ...

  4. 【机器学习基础】线性回归和梯度下降的初学者教程

    作者 | Lily Chen 编译 | VK 来源 | Towards Data Science 假设我们有一个虚拟的数据集,一对变量,一个母亲和她女儿的身高: 考虑到另一位母亲的身高为63,我们如何 ...

  5. 用懊悔法学习吴恩达机器学习【2】-----线性回归的梯度下降

    以下英文文档皆出自课程配套笔记 课9 代价函数二 这一课时考虑使用两个参数来描述代价函数.此时等价函数是一个碗形,碗底点为最小值,将碗形用等高线表示,等高线中心就是代价函数的最小值.所以距离等高线中心 ...

  6. 吴恩达机器学习(六)线性回归的梯度下降

    文章目录 1.先导知识 2.线性回归的梯度下降 1.先导知识 之前学习的内容: 2.线性回归的梯度下降 我们要做的是将梯度下降法应用到最小化平方差代价函数, 我们解决过的梯度下降问题之一就是它容易陷入 ...

  7. 机器学习(1)之梯度下降(gradient descent)

    机器学习(1)之梯度下降(gradient descent) 题记:最近零碎的时间都在学习Andrew Ng的machine learning,因此就有了这些笔记. 梯度下降是线性回归的一种(Line ...

  8. 为什么回归直线过平均值点_线性回归和梯度下降的初学者教程

    假设有一个虚拟的数据集包含多对变量,即每位母亲和她女儿的身高: 通过这个数据集,我们如何预测另一位身高为63的母亲的女儿的身高? 方法是用线性回归. 首先找到最佳拟合线,然后用这条直线做预测. 线性回 ...

  9. 线性回归随机梯度下降_线性回归的批次梯度与随机梯度下降

    线性回归随机梯度下降 In this article, we will introduce about batch gradient and stochastic gradient descent m ...

最新文章

  1. 解决 WIndows,Linux 以及 MacOS 终端无法使用代理的问题
  2. 软件项目经理怎么做?
  3. AcWing 828. 模拟栈
  4. Kotlin 的优点
  5. SSR端口冲突的解决法法
  6. 卡尔曼滤波器python_特征工程:利用卡尔曼滤波器处理时间序列(快速入门+python实现)...
  7. 不限速度盘下载神器Pandownload作者被抓,大量下载脚本已宣布停更
  8. AntDesign前端分页
  9. 申请计算机助理的英语作文,各位帮我找一篇英文申请信大学英语作文,申请助理..._口译笔译考试_帮考网...
  10. mitmproxy抓https出现502Bad Gateway. unable to get local issuer certificate的解决方法
  11. vCenter资源池
  12. php抛物线函数,通过JS如何实现抛物线运动(详细教程)
  13. android 软件安全与逆向分析(非虫)读书笔记
  14. Android模拟器启动报错:gpu found. vendor id 1002 device id 0x
  15. Screen exposed for less than 1000 ms. Event not sent. time:
  16. 实现基于XDP/eBPF的快速路由转发功能
  17. TensorFlow-SSD测试代码梳理
  18. 【第四节 列表 和字典】
  19. 2.一脚踹进ViT——Attention机制原理及实现
  20. MySQL的四种事务隔离级别

热门文章

  1. Visual Studio 2017 15.8概览
  2. springboot 项目将本地引用打进jar包
  3. 阻塞队列(1)--ArrayBlockingQueue底层实现
  4. android 回调函数二:应用实例
  5. 我们该怎么成为技术尖子生
  6. android对OnTouchListener、OnClickListener等事件响应的研究
  7. IPsec 隧道模式和传输模式下的AH和ESP包封装格式
  8. SPSiteManager 2.3可以下载了
  9. robot向linux发送命令,linux发送手机短信 利用fesion robot
  10. php多文件上传类源码,PHP单文件上传类或多文件上传类源码