主要是第一二周内容

机器学习概要

机器学习是什么?

生活在信息时代的我们,其实时时刻刻都离不开机器学习算法。比如日常使用的搜索引擎就涉及到很多学习算法。

Arthur Samuel 给出第一个定义。他定义机器学习为:在进行特定编程的情况下,给予计算机学习能力的领域。维基百科给出的定义为:

机器学习算法是一类从数据中自动分析获得规律,并利用规律对未知数据进行预测的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。

可见这是一门交叉学科,涉及很多统计方面的知识。

机器学习分类

机器学习可以分成下面几种类别:

  • 监督学习(supervised learning)从给定的训练数据集中学习出一个函数,当新的数据到来时,可以根据这个函数预测结果。
  • 无监督学习(unsupervised learning)与监督学习相比,训练集没有人为标注的结果。
  • 半监督学习(Semi-Supervised Learning)介于监督学习与无监督学习之间。
  • 增强学习(reinforcement learning)通过观察来学习做成如何的动作。每个动作都会对环境有所影响,学习对象根据观察到的周围环境的反馈来做出判断。

主要介绍下前两个类别。监督学习是指从给定“正确答案”的数据集学习一个算法,用来算出新数据的“正确答案”。监督学习主要分为回归问题和分类问题。比如:通过房屋面积来预测房价问题,而房价可以看成是连续值,这就是一个回归问题。回归主要的种类有:线性回归,曲线回归,二元logistic回归,多元logistic回归。而分类问题指的是预测值是离散的,“正确答案”是离散的。比如根据鱼的某些特征判断是哪种鱼,A鱼还是B鱼。

而无监督学习即没有所谓的“正确答案”。常用的无监督学习有聚类(clustering)。

线性回归(Linear Regression)

问题定义

模型参数表示:

  • \( m \) 代表训练集中实例的数量
  • \( x \) 代表特征/输入变量
  • \( y \) 代表目标变量/输出变量
  • \( (x,y)\) 代表训练集中的实例
  • \( (x^{(i)},y^{(i)}) \)代表第i个观察实例
  • \( h \) 代表学习算法的解决方案或函数也成为假设(hypothesis)

模型表示为:

机器学习(指监督学习)即利用学习算法通过训练集来学习到一个假设h,对新的输入x,做出相应的输出预测y。要怎么表示\( h \)呢?当h与输入变量是线性关系时,如:[ {h_\theta } = {\theta _0} + {\theta 1}x ,或者{h\theta } = {\theta _0} + {\theta _1}{x_1} + {\theta 2}{x_2}+......],统一表示为\({H\theta }(x) = {\theta ^T}x\) 。需要这样表示\( h \)的问题即为线性回归问题。

成本函数

接下来需要为模型选定合适的参数 \(\theta\)。我们要选定合适的参数使得我们的模型所预测的结果与训练集实际值的差距最小,即准确程度最高。其中预测值与实际值之间的差距就是建模误差。
定义成本函数(代价函数,cost function)为:

\[J(\theta ) = \frac{1}{{2m}}\sum\limits_{i = 1}^m {{{({h_\theta }({x^{(i)}}) - {y^{(i)}})}^2}} \]

当只有\(\theta \)为二维向量时,我们可以绘制相应的等高线图:

我们的目标就是找出成本函数中的最低点。

梯度下降

梯度下降是求成本函数最小值的一种算法。梯度下降背后的思想是:开始时我们随机选择一个参数的组合( θ0,θ1,...,θn),计算代价函数,然后我们寻找下一个能让代价函数值下降最多的参数组合。
批量梯度下降( batch gradient descent)算法的公式为:
[\theta _j := \theta _j - \alpha \frac{\partial }{\partial \theta _j}J(\theta ) \space \space \space \space \space \space \space \space (for \space \space j=0 \space \space to \space \space j =n) ]
期中\(\alpha \) 是学习率,决定我们在下降方向上迈出的步伐的大小。不断重复批量梯度下降直至收敛。

我们持续这么做直到到到一个局部最小值(local minimum),因为我们并没有尝试完所有的参数组合,所以不能确定我们得到的局部最小值是否便是全局最小值(global minimum),选择不同的初始参数组合,可能会找到不同的局部最小值。

特征缩放

在我们面对多维特征问题的时候,我们要保证这些特征都具有相近的尺度,这将帮助梯度下降算法更快地收敛。
如二维特征问题,进行特征缩放有利于梯度下降。如图:

特征缩放公式为:
[ {x_n} = \frac{{{x_n} - {\mu _n}}}{{{s_n}}} ]

学习率

梯度下降算法的每次迭代受到学习率的影响,如果学习率 α 过小,则达到收敛所需的迭代次数会非常高;如果学习率 α 过大,每次迭代可能不会减小代价函数,可能会越过局部最小值导致无法收敛。
通常选择 α=0.01, 0.03, 0.1, 0.3, 1, 3, 10 中的值。

正则方程

正则方程也是计算成本函数最小值的一种方法。正如高数中所学的,函数的极值点在函数导数为0的位置。即我们可以通过求解[ \frac{\partial }{{\partial {\theta _j}}}J({\theta _j}) = 0 ] 来计算出使得成本函数最小的参数。
最后得出\(\theta = {({X^T}X)^{ - 1}}{X^T}y\).

两种方法的对比

Coursera 机器学习笔记(一)的更多相关文章

  1. coursera机器学习笔记-建议,系统设计

    #对coursera上Andrew Ng老师开的机器学习课程的笔记和心得: #注:此笔记是我自己认为本节课里比较重要.难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点: #标记为<补 ...

  2. coursera机器学习笔记-神经网络,学习篇

    #对coursera上Andrew Ng老师开的机器学习课程的笔记和心得: #注:此笔记是我自己认为本节课里比较重要.难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点: #标记为<补 ...

  3. coursera机器学习笔记-神经网络,初识篇

    #对coursera上Andrew Ng老师开的机器学习课程的笔记和心得: #注:此笔记是我自己认为本节课里比较重要.难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点: #标记为<补 ...

  4. coursera机器学习笔记-多元线性回归,normal equation

    #对coursera上Andrew Ng老师开的机器学习课程的笔记和心得: #注:此笔记是我自己认为本节课里比较重要.难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点: #标记为<补 ...

  5. coursera机器学习笔记-机器学习概论,梯度下降法

    #对coursera上Andrew Ng老师开的机器学习课程的笔记和心得: #注:此笔记是我自己认为本节课里比较重要.难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点: #标记为<补 ...

  6. Coursera 机器学习笔记(八)

    主要为第十周内容:大规模机器学习.案例.总结 (一)随机梯度下降法 如果有一个大规模的训练集,普通的批量梯度下降法需要计算整个训练集的误差的平方和,如果学习方法需要迭代20次,这已经是非常大的计算代价 ...

  7. Coursera 机器学习笔记(七)

    主要为第九周内容:异常检测.推荐系统 (一)异常检测(DENSITY ESTIMATION) 核密度估计(kernel density estimation)是在概率论中用来估计未知的密度函数,属于非 ...

  8. Coursera 机器学习笔记(六)

    主要为第八周内容:聚类(Clustering).降维 聚类是非监督学习中的重要的一类算法.相比之前监督学习中的有标签数据,非监督学习中的是无标签数据.非监督学习的任务是对这些无标签数据根据特征找到内在 ...

  9. Coursera 机器学习笔记(四)

    主要为第六周内容机器学习应用建议以及系统设计. 下一步做什么 当训练好一个模型,预测未知数据,发现结果不如人意,该如何提高呢? 1.获得更多的训练实例 2.尝试减少特征的数量 3.尝试获得更多的特征 ...

  10. Coursera 机器学习笔记(三)

    主要为第四周.第五周课程内容:神经网络 神经网络模型引入 之前学习的线性回归还是逻辑回归都有个相同缺点就是:特征太多会导致计算量太大.如100个变量,来构建一个非线性模型.即使只采用两两特征组合,都会 ...

随机推荐

  1. golang环境

    Golang是谷歌开发的一款开源性语言,暂时比较方便的IDE有Inteillj Idea.LiteIDE.Eclipse(Golipse)等,使用起来比较方便的IDE:LiteIDE和Inteillj ...

  2. 基于Prism.Windows的UWP开发备忘

    以前做UWP开发都是使用MvvmLight,主要是简单易上手,同时也写了很多MvvmLight的开发系列文章: UWP开发必备以及常用知识点总结 UWP开发之Mvvmlight实践九:基于MVVM的项 ...

  3. 2017-4-26 winform tab和无边框窗体制作

    TabIndex-----------------------------------确定此控件将占用的Tab键顺序索引 Tabstop-------------------------------指 ...

  4. My First GitHub

    第一次使用github 在https://github.com/注册账号. 登陆之后,首先创建一个仓库(+ new repository),开源(public)的仓库是免费的,私人(private)的 ...

  5. 关于WebGIS开源解决方案的探讨(转载)

    1.背景 公司目前的多数项目采用的是ArcGIS产品+Oracle+WebLogic/Tomcat/APUSIC/WebShpere这样的架构.由于 公司从事的是政府项目,甲方单位普遍均采购有以上产品 ...

  6. 走进javascript——类型

    ECMAScript语言类型对应于使用ECMAScript语言的ECMAScript程序员直接操作的值.ECMAScript语言类型有以下几种Undefined,Null,Boolean,String ...

  7. Java基础之equals方法和"= ="的区别

    ==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符. 如果一个变量指向的数据是对象类型的 ...

  8. druid抛出的异常------javax.management.InstanceAlreadyExistsException引发的一系列探索

    最近项目中有个定时任务的需求,定时检查mysql数据与etcd数据的一致性,具体实现细节就不说了,今天要说的就是实现过程中遇到了druid抛出的异常,以及解决的过程 异常 异常详细信息 五月 05, ...

  9. HttpClient和 HtmlParser实现爬虫

    网络爬虫技术 1       什么叫网络爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不 ...

  10. [js笔记整理]面向对象篇

    一.js面向对象基本概念 对象:内部封装.对外预留接口,一种通用的思想,面向对象分析: 1.特点 (1)抽象 (2)封装 (3)继承:多态继承.多重继承 2.对象组成 (1)属性: 任何对象都可以添加 ...