Select Language

AI社区

数据要素产业

形而上的机器学习

12-05 23:51 TAG: 机器学习 数据挖掘 大数据

Part 1: 机器学习的前世今生.

既然说机器学习,就从什么机器学习开始,相对而言,机器学习是一个比较泛的概念

初看的话,会觉得机器学习和人工智能,数据挖掘讲的东西很像,实际他们之间的关系可以概括为:

  • 机器学习是人工智能的一个子方向
  • 机器学习是数据挖掘的一种实现方式

 

举个简单的例子,给一些苹果和香蕉,人会通过特征的判断做区分,并且记忆这些特征,下次来了一个新的苹果或者香蕉的时候,就可以判断是香蕉还是苹果了

作为任意一个算法或者说用程序执行的数学问题,总需要一些输入,一些输出

对于机器学习而言,输入就是特征所构成向量的向量,或者说是一个矩阵

如果只有一个特征,输入就是一个向量了,当然,向量是一个弱化的矩阵概念,统一称作矩阵

• 目前机器学习的核心技术是基于矩阵的优化技术

  • 输入:矩阵 – 待学习的信息
  • 输出:模型 – 总结出的规则

因此,目前主流的机器学习技术就可以形式化为

•输入:特征矩阵 X、标注向量 y

  • X 是特征矩阵,不包括“样本名称”和“样本 标注”
  • y 是标注向量,即“样本标注”那列

•输出:模型向量 w

•期望:X·w 尽可能接近 y

多种优化算法可以解 w,区别在于如何定义 “尽可能接近”

举个例子来说,要计算广告的CTR

这个例子中

目标是要根据已知的auc特征,猜测这个目标广告是否会被点击

例子中特征只有两个,query关键词和“是否飘红”,判断结果是是否点击

好了,现在问题和输入输出都有了,具体解决这个问题,就可以选用相关的算法了

前面定义里面有这么一个隐含的关键点:X w 尽可能接近 y

如何定义这个“接近”,思路不同,算法就不同

比如对于LR (Logistic Regression)和SVM(Support Vector Machine)是不同的,作为样例,可以按照下图理解

数学形式表示,就是

具体算法细节不是这里讨论的重点,在这两个算法中,“接近”的定义不同

学术的讲,就是“优化目标不同”

无论是否相同,我们都至少可以选一个优化目标了

有了优化目标,下面要做的就是如何求解这个优化目标了

一般现在用的思路主要是

L-BFGS,CDN,SGD这一些

把上面这一些要素放在一起,就有了完整的一个机器学习问题

Part 2: 如果你要用机器学习的方法去解决问题

就需要注意三个方面的优化了:

算法,数据,特征

我们下面分开来说

算法,就是优化目标 + 优化算法

从优化目标的角度,工业界往往没有那个资源或者实力去研究新的算法,大多是在使用已有算法或者在已有算法的基础上做扩展

从优化算法的角度,主要是三点:

  • 更小的计算代价
  • 更快的收敛
  • 更好的并行

这三点也比较好理解,对于一个工程问题,计算代价小,机器就可以做别的事情,更快的收敛,就可以更好的把结果投入使用,更好的并行,就可以用现有的大数据框架解决问题

训练数据,就是尽可能和实际同分布的数据 + 尽可能充分的数据

机器学习算法中,由于期望的往往是总的误差最小,所以很可能讲数据量小的类目判别错误

如果样本数据和实际数据分布差异大的话,对于实际的算法效果一般都不好

充分的数据,这个就好解释了,数据越充分,训练就越充分,就好比考试前做的练习越多,一般效果越好

特征,就是尽可能包含足够多的需要识别对象的信息

一个简单的例子,如果只有一个特征,对于水果的判断往往偏颇,就会造成下面的结果

随着特征的增多,训练就会准确

往往对于一个工程问题来说,特征是决定最多的方面

一个算法方面的优化,可能只是优化了2~3%的效果,但是特征可能就是50~60%了,一个工程项目七八成的精力往往都是画在特征选取上的,比如百度CTR预测,特征数据目前就是100亿级别的。

最后来说一点关于deep learning 的东西

Deep learning和目前的机器学习算法(Shallow Learning)最大的区别在于特征层数

目前的机器学习算法主要是一层的,就是从特征直接推断是结果;

而Deep Learning和人类的处理问题的结果更接近,是由特征推断出一些中间层的结果,进而推断出最终结果的;

比如视觉是由一些点,进而判断出一些边,进而判断出一些形状,然后才是整体的物体的。

之前大量使用Shallow learning 主要是因为 Shallow Learning有很好的数学特征

  • 解空间是凸函数
  • 凸函数有大量的求解方法

凸函数优化可以参考

**Convex Optimization

**http://book.douban.com/subject/1888111/

**http://www.stanford.edu/~boyd/cvxbook/

而Deep Learning则容易找到局部最优解,而非全局最优解

Deep Learning解法可以参考

G. Hinton et al., A Fast Learning Algorithm for Deep Belief Nets. Neural Computation, 2006.

也可以看Andrew NG最近的课程

这里有最新的中文翻译

http://deeplearning.stanford.edu/wiki/index.php/UFLDL教程

本文整理自@戴文渊 机器学习简介 讲座