主要内容来自stanford Andrew Ng视频课程的总结。

讲的非常好,还有相应的习题,课程能够在以下站点搜索到。

https://www.coursera.org/
机器学习的目的是在训练数据的基础上得出一个模型,该模型对于给定的输入x。给出对应的输出y。

用公式表示就是:y = h(x)。

注意x表示一维向量,x={x1,x2,x3...}。这里的xi也就是特征(feature),h就是模型。

若输出y是连续值。则是回归预測问题。若y是离散值,则是分类问题。假设给定的训练数据是(输入-输出)对的形式。也就是明白指出某个输入x。其相应的输出是何值,这样的输入有监督学习。若训练数据中仅仅包括x,没有输出y,则是无监督学习。
线性回归:
输入和输出是一次相应关系。直观的说:二维空间中,x和y的关系能够用一条直线表示。在三维空间中,x和y的关系能够用一个平面表示。更高维的以此类推。属于一种预測问题。
公式表演示样例如以下:
二维:h(x) = θ0 + θ1*x1, 这个公式也能够看成 h(x) = θ0*x0 + θ1*x1,当中x0 = 1。
普遍:h(x) = θ*x  (当中θ和x表示一维向量,包括n+1个元素,n就是特征的个数)
当中x表示特征向量(和线性代数里的特征向量不是一个概念)。θ表示特征的系数。
h(x)是依据模型计算出的结果,y是真正的输出。

用J(θ)表示训练模型hθ计算出的结果和实际输出的差异:

J(θ) = 1/2m * sum((hθ(x) - y)^2),当中m是训练集的大小。
注意,J(θ)是关于系数θ的函数,因此公式中的模型用hθ(x)表示。
线性回归问题中的目标就是找到一组θ使,J(θ)取到最小值。那么相应的hθ就是训练出的模型了。
梯度下降:
梯度下降是一种能找到J(θ)最小值的方法。
该方法先随机指定一组系数θ,然后进行迭代。每次迭代通过改变θ的值来减小J(θ),直到J(θ)不再变小,或者达到要求。
改变θ的方法:
依次改变θ中的每一个元素。对于θi,求J(θ)对θi的偏导数J'(θi),再乘上每次改变θ的幅度。
直观理解(不是非常准确):J'(θi)表示在维度θi上的梯度。也就是变化方向。若J'(θi)大于0,则随着θi增大,J(θi)也在增大,因此要减小θi的值。

反之要增大θi的值。

对J(θ)求偏导后,以上公式能够写成:
θi = θi - α/m * sum( (hθ(xi) - yi) * xi )
理论上梯度下降存在局部最小值。可是线性回归的J(θ)是一种类似高斯函数的钟形函数,是存在全局最小值的。
详细的梯度下降法有batch gradient descent 和 随机梯度下降
batch法,就是在每次迭代的过程中用所有m条训练数据求出J(θ)的偏导数,再更新θ。这种结果比較精准,可是每轮迭代就须要m*n次计算。

若迭代T次,那么复杂度就是O(T*m*n)

随即梯度下降法,是在一轮迭代过程中,每遍历一条训练数据,就更新一次θ。

用公式表示就是:

θi = θi - α * (hθ(xi) - yi)*xi
尽管复杂度仍然是O(T*m*n),可是随机法的T比batch法T要小非常多,也就是迭代次数要少非常多。
数据规范化:
不同的特征的范围不同。比方x={x1,x2}。当中x1∈[1,1000],x2∈[1,10]。这样得出的结果误差大,因此须要将数据范围差异减小。

一种方法是求得训练数据中每一个特征的均值mu,再求出标准差sig,将x = (x-mu)/sig,作为训练和预測的值。可是不用处理x0

正规方程式:
不管是哪种梯度下降,都要迭代。正规方程式不须要迭代。推到过程须要良好的数学基础,这里仅仅给出结果:
θ = (x'*x)^-1*x'*y
当中x'表示矩阵的装置。x^-1表示矩阵的逆矩阵。

机器学习笔记:线性规划,梯度下降相关推荐

  1. 机器学习笔记:梯度下降

    1 梯度下降介绍 我们首先随机一个点,然后沿着梯度方向的反方向寻找最低点 迭代多次,直到找到局部最优(也有可能是全局最优)[线性回归问题里面,局部最优就是全局最优了] 多个参数同理,分别进行梯度下降 ...

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

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

  3. 机器学习:随机梯度下降(SGD)与梯度下降(GD)的区别与代码实现。

    机器学习:随机梯度下降(SGD)与梯度下降(GD)的区别与代码实现. 梯度下降法(GD) 随即梯度下降(SGD) 代码实现 如果想细致的了解:-> 梯度下降法 梯度下降法(GD) 假设函数fx, ...

  4. 春节充电 | 文科生都能看懂的机器学习教程:梯度下降、线性回归、逻辑回归(附动图解释)...

    来源:新智元 本文约4200字,建议阅读10+分钟. 本文浅显易懂的方式讲解机器学习,力求让没有理科背景的读者都能看懂. [ 导读 ]虽然在Coursera.MIT.UC伯克利上有很多机器学习的课程, ...

  5. 文科生都能看懂的机器学习教程:梯度下降、线性回归、逻辑回归

    来源:新智元 本文约4200字,建议阅读10+分钟. 本文浅显易懂的方式讲解机器学习,力求让没有理科背景的读者都能看懂. [ 导读 ]虽然在Coursera.MIT.UC伯克利上有很多机器学习的课程, ...

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

    线性回归 linear regression 符号定义 notation,仅为本教程中的符号定义. \(m\) 训练集中样本的数量 \(x\) 输入值,features. \(x^{(i)}\),表示 ...

  7. 机器学习笔记:梯度消失

    1 梯度消失 1.1 直观理解 以sigmoid激活函数为例,如果我们使用sigmoid作为激活函数的话,很大的一个input的变化,经过了sigmoid之后的output变化会小很多. 这样经过很多 ...

  8. 语言线性拟合线对称_文科生都能看懂的机器学习教程:梯度下降、线性回归、逻辑回归...

    [新智元导读]虽然在Coursera.MIT.UC伯克利上有很多机器学习的课程,包括吴恩达等专家课程已非常经典,但都是面向有一定理科背景的专业人士.本文试图将机器学习这本深奥的课程,以更加浅显易懂的方 ...

  9. 学习笔记,梯度下降(非向量实现)

    在求解机器学习算法的模型参数,即无约束优化问题时,梯度下降(Gradient Descent)是最常用的方法之一. 一.梯度 在微积分里,对多元函数参数求偏导,把求得的各个参数的偏导数以向量的形式写出 ...

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

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

最新文章

  1. android 根据时间获取时间对应的星期
  2. mysql plsql 循环_PL/SQL for...loop循环语句
  3. 2014 百度之星题解 1002 - Disk Schedule
  4. 简单的UIButton按钮动画效果iOS源码
  5. 桌面程序开发入门(WinForm with C#)
  6. centos 6.5 安装openssl
  7. QEMU 网络虚拟化
  8. c#中BackGroundWorker控件
  9. 【栈】【字符】匹配(jzoj 1612)
  10. Swift学习笔记(10)--枚举
  11. CreateThread与_beginthreadex本质区别
  12. NVIDIA TK1 刷机记录(1)ubuntu 14.04
  13. Python基于WPA/WPA2 密码字典,实现 wifi 密码暴力破解
  14. 操作系统课程设计报告(文件系统)
  15. R7000刷梅林固件一个小结(变砖解决)
  16. crm客户管理软件的精髓
  17. 国内计算机期刊英语版本,国内计算机类期刊 SCI收录:(示例代码)
  18. 架构师必备!看我如何一步一步攻克面试官,详细解说
  19. quick Cocos2dx lua 接anysdk
  20. 源码分析Dubbo监控中心实现原理

热门文章

  1. EGO首次线下活动分享:Facebook研发团队的高效秘诀
  2. oracle数据库----SQL语句的实践(应用实例)
  3. linux下启动jconsole报 java.lang.UnsatisfiedLinkError
  4. 挑战《IT我最大》 Windows 7由你秀 活动的丑恶行径
  5. 调查显示:企业将部署SDN提上议程
  6. 微服务架构的基础框架选择:Spring Cloud还是Dubbo?
  7. JS重复引用也会导致错误
  8. android中Listview的优化技巧
  9. TimerHandler的简单应用
  10. Android TouchEvent 分发流程