主要是第一二周内容

机器学习概要

机器学习是什么?

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

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. PHP的laravel框架后台实现数据导出excel的功能

    要想在PHP后台实现excel导入导出功能,一种简单有效的方法就是使用phpexcel插件. 要使用phpexcel插件,首先需要下载composer,这个工具是专门用来管理项目中库之间的依赖关系的. ...

  2. 分布式锁与实现(一)——基于Redis实现

    概述 目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题.分布式的CAP理论告诉我们"任何一个分布式系统都无法同时满足一致性(Consisten ...

  3. CSAcademy Beta Round #3 a-game

    题目连接 a-game 大意:有一个只包含A和B的字符串,两个人分别取这个串的子串,但是每一次取不能与之前取到过的子串有交集,最后谁取到的所有串中A的总数量少的判为胜.如果一样,则为平手. 给出这样的 ...

  4. Eclipse导入Android签名

    本篇主要参照http://blog.csdn.net/wuxy_shenzhen/article/details/20946839 在安装安卓apk时经常会出现类似INSTALL_FAILED_SHA ...

  5. bzoj1013 [JSOI2008]球形空间产生器

    Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧毁 ...

  6. hdu3746 kmp求循环节

    CC always becomes very depressed at the end of this month, he has checked his credit card yesterday, ...

  7. jquery.uploadifive 解决上传限制图片或文件大小

    dotNet疯狂之路No.28  今天很残酷,明天更残酷,后天很美好,但是绝大部分人是死在明天晚上,只有那些真正的英雄才能见到后天的太阳.  We're here to put a dent in t ...

  8. 产品经理学Python:条件控制

    条件控制其实就是if...else...(如果...条件是成立的,就做...:反之,就做...)的使用,其基本结构是: 具体看下面这个例子: def account_login(): # 定义函数 p ...

  9. lightOJ 1258 Making Huge Palindromes(KMP)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1258 就是求逆串和原串的匹配长度 答案就是原串长度的2倍减去匹配长度即可 第一次我将原 ...

  10. [笔记]cin、cout与scanf、printf的效率差异对比分析

    之前上传UVa227 puzzle时,好不容易AC了,但发现自己用时50(ms),而在VJ上看到人家都是40ms.20ms,于是打开一个20ms的代码查看人家强在哪里.但结果研究了半天感觉差不多,于是 ...