主要是第一二周内容

机器学习概要

机器学习是什么?

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

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. meta 整理

    < meta > 元素 概要 标签提供关于HTML文档的元数据.元数据不会显示在页面上,但是对于机器是可读的.它可用于浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他 we ...

  2. 腾讯AlloyTeam正式发布Canvas魔幻线条 - curvejs

    [原文链接] ## 写在前面 curvejs 中文读["克js"],是腾讯AlloyTeam打造的一款魔幻线条框架,让线条成为一名优秀的舞者,让线条们成为优秀的舞团,HTML5 ...

  3. MySQL最常用分组聚合函数

    一.聚合函数(aggregation function)---也就是组函数 在一个行的集合(一组行)上进行操作,对每个组给一个结果. 常用的组函数: AVG([distinct] expr) 求平均值 ...

  4. java映射(map用法)

    主要分两个接口:collection和Map 主要分三类:集合(set).列表(List).映射(Map)1.集合:没有重复对象,没有特定排序方式2.列表:对象按索引位置排序,可以有重复对象3.映射: ...

  5. java写文件读写操作(IO流,字符流)

    package copyfile; import java.io.*; public class copy { public static void main(String[] args) throw ...

  6. 使用charles抓取htpps的方法

    自己整理的步骤做个记录 1.下载证书,官方地址:http://www.charlesproxy.com/ssl.zip 可直接点击链接下载:http://charlesproxy.com/getssl ...

  7. Linux 系统管理06--磁盘管理

    Linux系统管理06——磁盘管理 一.磁盘结构 1.硬盘的物理结构 盘片:硬盘有多个盘片,每个盘片2面 磁头:每面一个磁头 2.硬盘的数据结构 扇区:盘片被分为多个扇形区域,每个扇形区存放512字节 ...

  8. SpringMVC中的session用法及细节记录

    前言 初学SpringMVC,最近在给公司做的系统做登录方面,需要用到session. 在网上找了不少资料,大致提了2点session保存方式: 1.javaWeb工程通用的HttpSession 2 ...

  9. seajs的那些坑

    seajs是what? 先看段代码: var loder = {}; var define = loder.define = function(id,deps,factory){ loader[id] ...

  10. 如何用Ettercap实现“中间人攻击”(附下载链接)

    什么是“中间人攻击”? 中间人攻击(Man-in-the-Middle Attack,简称“MiTM攻击”)是一种“间接”的入侵攻击,这种攻击模式是通过各种技术手段将受入侵者控制的一台计算机虚拟放置在 ...