[哔哩哔哩视频地址](http://www.bilibili.com/video/av9559261/)
机器学习的定义
Arthur Samuel:
机器学习是一个领域,并在没有明确训练的情况下,教给计算机学习的能力。
他编写了一个跳棋程序,不断与该程序对决,让程序自己学习到什么是好的布局
Tom Mitchell:
计算机从经验E中学习任务T,用度量P来衡量性能。条件是它由P定义的关于T的性能随着经验E而提高。对于跳棋程序,E是计算机与自己玩几次,T是玩跳棋的任务,P是与新对手对手玩跳棋的赢的概率
各种不同类型的学习算法,主要有两类(比较常用):监督学习和非监督学习
监督学习:我们教计算机如何做事情
非监督学习:计算机自己学习
授之以鱼,不如授之以渔
监督学习
给定一个关于房价和房面积的数据集,机器对其进行学习,达到可预测房价的水平。
将这些数据以X轴为房面积,Y轴为房价,展示到坐标系中,用一条连续的线尽可能的拟合所有数据点。根据坐标系中的这条线可以对新房的售价进行预测,这类问题也称为回归问题。
回归问题是预测连续的输出值,例如房价。
给定一个关于肿瘤大小和肿瘤诊断结果(良性或恶性)的数据集,机器对其进行学习,能否估计出肿瘤是良性的还是恶性的。专业的讲,这是一个分类问题。
分类问题是设法预测离散的输出值,0或者1,恶性或良性,也可能有更多不同的类型的肿瘤。
O代表良性,X代表恶性,将这些肿瘤数据映射到坐标系中,会形成一堆O,一堆X。用一条线分割两类数据。通过判断新的病例在哪一堆,来预测肿瘤品质(恶性or良性)。
非监督学习
在监督学习中的每一个数据样本,都给出了所对应的结果,例如肿瘤是良性的还是恶性的。在非监督学习中,不会给出数据样本的结果,需要计算机自动对这些数据集进行分类。你可以想象在坐标系中,得到一堆堆的小数据集合(聚类),这就是所谓的聚类算法
google新闻所做的就是搜索成千上万的新闻,然后自动将他们按照主题聚合在一起,因此同一个主题的新闻被显示在一起。聚类算法和无监督学习也可以被用于许多其他的问题。
- 组织大型计算机集群,并找出那些计算机在一起效率会更高,就让它们在一起
- 社交网络分析,如果可以得知哪些朋友你用email联系的最多,哪些用fackbook联系的多,是否可以自动识别哪些是要好的朋友组,哪些只是网友。
- 市场分割应用,许多公司都有庞大的客户信息数据库,能否找出不同的市场分割,并自动把客户分到不同的细分市场去,从而有利于我在不同的细分市场进行更有效的销售。我们现在有这些客户数据,但我们并不知道有哪些细分市场,而且对于数据中的每个客户我们也不能预选知道谁改属于哪个细分市场。必须让算法自己在数据中发现这一切。
- 天文数据分析,通过这些聚类算法,我们发现了许多惊人的,有趣的,以及实用的关于星系如何诞生的理论
所有这些都是无监督学习的例子。聚类算法只是无监督学习中的一种。这里说另外一种,鸡尾酒会算法。有一个A和B同时讲话的音频,输入该算法,算法自动找出不同的声音类别,分离A和B的声音。后续的课程中会使用Octave作为开发环境,事实上在硅谷很多机器学习算法都会先用Octave 写一个程序原型,学习算法的速度很快,许多在c,c++需要多行代码才可以实现的,这里只需要一行。程序原型敲定以后,再迁移的其他开发环境,会使效率大大提高。
鸡尾酒会问题在octave只需要这样一个代码(现在没必要弄懂)
[W,s,v] = svd((repmat(sum(x.*x,1), size(x, 1),1).*x))*x);
例如svd奇异指分解,就是解线性方程的一个惯例,它被内置载Octave软件中,如果你试图在C++,java中实现,需要写N多行代码,并且还要连接许多相关库,如果出错了需要一堆调整,在Octave中就快速了许多
网友评论