主要是第一二周内容

机器学习概要

机器学习是什么?

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

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. [编织消息框架][消息服务]jmx

    JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序.设备.系统等植入管理功能的框架,使用的是RMI技术. 比较经典的应用jdk bin目录下 jcons ...

  2. Vue 自定义图片懒加载指令v-lazyload

    Vue是可以自定义指令的,最近学习过程中遇见了一个需要图片懒加载的功能,最后参考了别人的代码和思路自己重新写了一遍.以下将详细介绍如何实现自定义指令v-lazyload. 先看如何使用这个指令: &l ...

  3. [Day02] int, str功能学习

    第二天任务: int的常用功能,参照该篇博客里面列举的常用功能 http://13683137989.blog.51cto.com/9636221/1911393 str的常用功能(重要) ,参照该篇 ...

  4. java 操作FTP

    package comm.ftp; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInput ...

  5. spring、spring mvc、mybatis框架整合基本知识

    学习了一个多月的框架知识了,这两天很想将它整合一下.网上看了很多整合案例,基本都是基于Eclipse的,但现在外面公司基本都在用Intellij IDEA了,所以结合所学知识,自己做了个总结,有不足之 ...

  6. 调用startActivityForResult后,onActivityResult为什么立刻响应

    现象      今天在编写代码的时候,涉及到两个Activity通过Intent来传值的问题.具体描述为:activity A调用startActivityForResult()函数启动Activit ...

  7. 【跑会指南】2017年3-5月IT技术会议大合集

    2016年各类大会让人应接不暇,技术圈儿最不缺的就是各种大会小会,有的纯干货,有的纯广告.作为一名技术开发者,参加了几场大会,你是不是也开始思忖:究竟哪些会议才值得参加?下面活动家为你推荐几场2017 ...

  8. URL Scheme与openURL

    URL Schemes URL Schemes是苹果给出的用来跳转到系统应用或者跳转到别人的应用的一种机制.同时还可以在应用之间传数据. 设置一个URL Schemes:选中App工程->Inf ...

  9. OC的内存管理(一)

    在OC中当一个APP使用的内存超过20M,则系统会向该APP发送 Memory Warning消息,收到此消息后,需要回收一些不需要再继续使用的内存空间,比如回收一些不再使用的对象和变量等,否则程序会 ...

  10. npm 常用命令详解

    本文以Windows平台上做测试,以gulp为示例做教程,出自作者白树,转载请声明出处! 目录 npm是什么 npm install 安装模块 npm uninstall 卸载模块 npm updat ...