您的位置:首页 > 其它

2015-09-24

2015-09-24 22:38 183 查看
---------------------------------------------------------------------------------------------------转载-----------------------------------------------------------------------------------------------------------------------------

2015-09-24

特征提取和特征选择:

1. 特征选择 V.S 特征提取
特征提取和特征选择都是从原始特征中找出最有效(同类样本的不变性、不同样本的鉴别性、对噪声的鲁棒性)的特征。两个是降维(DimensionalityReduction)的两种方法,针对于the curseof dimensionality(维灾难),都可以达到降维的目的。

特征提取:将原始特征转换为一组具有明显物理意义(Gabor、几何特征[角点、不变量]、纹理[LBP HOG])或者统计意义或核的特征。Creating a subset of new features by combinations of the existingfeatures.也就是说,特征提取后的新特征是原来特征的一个子集。

特征选择:从特征集合中挑选一组最具统计意义的特征,达到降维的目的。Choosing a subset of all the features(the ones more informative)也就是说,特征选择后的特征是原来特征的一个子集。

两者作用:

1 减少数据存储和输入数据带宽

2 减少冗余

3 低纬上分类性往往会提高

4 能发现更有意义的潜在的变量,帮助对数据产生更深入的了解

2. PCA V.S LDA
主成分分析(Principle Components Analysis ,PCA)和线性评判分析(LinearDiscriminant Analysis,LDA)是特征抽取的两种主要经典方法。

对于特征抽取,有两种类别:

(1)Signalrepresentation(信号表示): The goal of the feature extraction mapping is to represent the samples accurately in a low-dimensional space. 也就是说,特征抽取后的特征要能够精确地表示样本信息,使得信息丢失很小。对应的方法是PCA.

(2)Signalclassification(信号分类): The goal of the feature extraction mapping is toenhance the class-discriminatory information ina low-dimensional space. 也就是说,特征抽取后的特征,要使得分类后的准确率很高,不能比原来特征进行分类的准确率低。对与线性来说,对应的方法是LDA . 非线性这里暂时不考虑。

可见, PCA和LDA两种方法的目标不一样,因此导致他们的方法也不一样。PCA得到的投影空间是协方差矩阵的特征向量,而LDA则是通过求得一个变换W,使得变换之后的新均值之差最大、方差最大(也就是最大化类间距离和最小化类内距离),变换W就是特征的投影方向。

浅谈机器学习

1. 机器学习的定义

从广义上来说,机器学习是一种能够赋予机器学习的能力,以此让它完成直接编程无法完成的功能的方法。但从实践的意义上来说,机器学习是一种通过利用数据,训练出模型,然后使用模型预测的一种方法。

机器学习中的“训练”与“预测”过程可以对应到人类的“归纳和推测”的过程。通过这样的对应,我们可以发现,机器学习的思想并不复杂,仅仅是对人类在生活中学习成长的一个模拟。由于机器学习不是基于编程形成的结果,因此它的处理过程并不是因果的逻辑,而是通过归纳思想得出的相关性结论。

l 模式识别

模式识别=机器学习。两者的主要区别在于前者是从工业界发展起来的概念,后者则主要源自计算机学科。在著名的《Pattern Recognition And Machine Learning》这本书中,ChristopherM. Bishop在开头是这样说的“模式识别源自工业界,而机器学习来自于计算机学科。不过,它们中的活动可以被视为同一个领域的两个方面,同时在过去的10年间,它们都有了长足的发展”。

l 数据挖掘

数据挖掘=机器学习+数据库。这几年数据挖掘的概念实在是太耳熟能详。几乎等同于炒作。但凡说数据挖掘都会吹嘘数据挖掘如何如何,例如从数据中挖出金子,以及将废弃的数据转化为价值等等。但是,我尽管可能会挖出金子,但我也可能挖的是“石头”啊。这个说法的意思是,数据挖掘仅仅是一种思考方式,告诉我们应该尝试从数据中挖掘出知识,但不是每个数据都能挖掘出金子的,所以不要神话它。一个系统绝对不会因为上了一个数据挖掘模块就变得无所不能(这是IBM最喜欢吹嘘的),恰恰相反,一个拥有数据挖掘思维的人员才是关键,而且他还必须对数据有深刻的认识,这样才可能从数据中导出模式指引业务的改善。大部分数据挖掘中的算法是机器学习的算法在数据库中的优化。

l 统计学习

统计学习近似等于机器学习。统计学习是个与机器学习高度重叠的学科。因为机器学习中的大多数方法来自统计学,甚至可以认为,统计学的发展促进机器学习的繁荣昌盛。例如著名的支持向量机算法,就是源自统计学科。但是在某种程度上两者是有分别的,这个分别在于:统计学习者重点关注的是统计模型的发展与优化,偏数学,而机器学习者更关注的是能够解决问题,偏实践,因此机器学习研究者会重点研究学习算法在计算机上执行的效率与准确性的提升。

l 计算机视觉

计算机视觉=图像处理+机器学习。图像处理技术用于将图像处理为适合进入机器学习模型中的输入,机器学习则负责从图像中识别出相关的模式。计算机视觉相关的应用非常的多,例如百度识图、手写字符识别、车牌识别等等应用。这个领域是应用前景非常火热的,同时也是研究的热门方向。随着机器学习的新领域深度学习的发展,大大促进了计算机图像识别的效果,因此未来计算机视觉界的发展前景不可估量。

l 语音识别

语音识别=语音处理+机器学习。语音识别就是音频处理技术与机器学习的结合。语音识别技术一般不会单独使用,一般会结合自然语言处理的相关技术。目前的相关应用有苹果的语音助手siri等。

l 自然语言处理

自然语言处理=文本处理+机器学习。自然语言处理技术主要是让机器理解人类的语言的一门领域。在自然语言处理技术中,大量使用了编译原理相关的技术,例如词法分析,语法分析等等,除此之外,在理解这个层面,则使用了语义理解,机器学习等技术。作为唯一由人类自身创造的符号,自然语言处理一直是机器学习界不断研究的方向。按照百度机器学习专家余凯的说法“听与看,说白了就是阿猫和阿狗都会的,而只有语言才是人类独有的”。如何利用机器学习技术进行自然语言的的深度理解,一直是工业和学术界关注的焦点。

可以看出机器学习在众多领域的外延和应用。机器学习技术的发展促使了很多智能领域的进步,改善着我们的生活。

2.机器学习的子类–深度学习

近来,机器学习的发展产生了一个新的方向,即“深度学习”。

虽然深度学习这四字听起来颇为高大上,但其理念却非常简单,就是传统的神经网络发展到了多隐藏层的情况。

在上文介绍过,自从90年代以后,神经网络已经消寂了一段时间。但是BP算法的发明人Geoffrey Hinton一直没有放弃对神经网络的研究。由于神经网络在隐藏层扩大到两个以上,其训练速度就会非常慢,因此实用性一直低于支持向量机。2006年,Geoffrey
Hinton在科学杂志《Science》上发表了一篇文章,论证了两个观点:

1.多隐层的神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻画,从而有利于可视化或分类;

2.深度神经网络在训练上的难度,可以通过“逐层初始化”来有效克服。

通过这样的发现,不仅解决了神经网络在计算上的难度,同时也说明了深层神经网络在学习上的优异性。从此,神经网络重新成为了机器学习界中的主流强大学习技术。同时,具有多个隐藏层的神经网络被称为深度神经网络,基于深度神经网络的学习研究称之为深度学习。

由于深度学习的重要性质,在各方面都取得极大的关注,按照时间轴排序,有以下四个标志性事件值得一说:

2012年6月,《纽约时报》披露了Google Brain项目,这个项目是由Andrew
Ng和Map-Reduce发明人Jeff Dean共同主导,用16000个CPU
Core的并行计算平台训练一种称为“深层神经网络”的机器学习模型,在语音识别和图像识别等领域获得了巨大的成功。Andrew Ng就是文章开始所介绍的机器学习的大牛(图1中右者)。

2012年11月,微软在中国天津的一次活动上公开演示了一个全自动的同声传译系统,讲演者用英文演讲,后台的计算机一气呵成自动完成语音识别、英中机器翻译,以及中文语音合成,效果非常流畅,其中支撑的关键技术是深度学习;

2013年1月,在百度的年会上,创始人兼CEO李彦宏高调宣布要成立百度研究院,其中第一个重点方向就是深度学习,并为此而成立深度学习研究院(IDL)。

2013年4月,《麻省理工学院技术评论》杂志将深度学习列为2013年十大突破性技术(Breakthrough
Technology)之首。

2. 机器学习应用—大数据

说完机器学习的方法,下面要谈一谈机器学习的应用了。无疑,在2010年以前,机器学习的应用在某些特定领域发挥了巨大的作用,如车牌识别,网络攻击防范,手写字符识别等等。但是,从2010年以后,随着大数据概念的兴起,机器学习大量的应用都与大数据高度耦合,几乎可以认为大数据是机器学习应用的最佳场景。

譬如,但凡你能找到的介绍大数据魔力的文章,都会说大数据如何准确准确预测到了某些事。例如经典的Google利用大数据预测了H1N1在美国某小镇的爆发。

这些实在太神奇了,那么究竟是什么原因导致大数据具有这些魔力的呢?简单来说,就是机器学习技术。正是基于机器学习技术的应用,数据才能发挥其魔力。

大数据的核心是利用数据的价值,机器学习是利用数据价值的关键技术,对于大数据而言,机器学习是不可或缺的。相反,对于机器学习而言,越多的数据会越可能提升模型的精确性,同时,复杂的机器学习算法的计算时间也迫切需要分布式计算与内存计算这样的关键技术。因此,机器学习的兴盛也离不开大数据的帮助。大数据与机器学习两者是互相促进,相依相存的关系。

机器学习与大数据紧密联系。但是,必须清醒的认识到,大数据并不等同于机器学习,同理,机器学习也不等同于大数据。大数据中包含有分布式计算,内存数据库,多维分析等等多种技术。单从分析方法来看,大数据也包含以下四种分析方法:

1.大数据,小分析:即数据仓库领域的OLAP分析思路,也就是多维分析思想。

2.大数据,大分析:这个代表的就是数据挖掘与机器学习分析法。

3.流式分析:这个主要指的是事件驱动架构。

4.查询分析:经典代表是NoSQL数据库。

也就是说,机器学习仅仅是大数据分析中的一种而已。尽管机器学习的一些结果具有很大的魔力,在某种场合下是大数据价值最好的说明。但这并不代表机器学习是大数据下的唯一的分析方法。

机器学习与大数据的结合产生了巨大的价值。基于机器学习技术的发展,数据能够“预测”。对人类而言,积累的经验越丰富,阅历也广泛,对未来的判断越准确。例如常说的“经验丰富”的人比“初出茅庐”的小伙子更有工作上的优势,就在于经验丰富的人获得的规律比他人更准确。而在机器学习领域,根据著名的一个实验,有效的证实了机器学习界一个理论:即机器学习模型的数据越多,机器学习的预测的效率就越好。见下图:

通过这张图可以看出,各种不同算法在输入的数据量达到一定级数后,都有相近的高准确度。于是诞生了机器学习界的名言:成功的机器学习应用不是拥有最好的算法,而是拥有最多的数据!

在大数据的时代,有好多优势促使机器学习能够应用更广泛。例如随着物联网和移动设备的发展,我们拥有的数据越来越多,种类也包括图片、文本、视频等非结构化数据,这使得机器学习模型可以获得越来越多的数据。同时大数据技术中的分布式计算Map-Reduce使得机器学习的速度越来越快,可以更方便的使用。种种优势使得在大数据时代,机器学习的优势可以得到最佳的发挥。

3. 机器学习的父类—人工智能

人工智能是机器学习的父类。深度学习是机器学习的子类。如果把三者的关系用图来表明的话,则是下图:

总结起来,人工智能的发展经历了如下若干阶段,从早期的逻辑推理,到中期的专家系统,这些科技进步确实使我们离机器的智能有点接近了,但还有一大段距离。直到机器学习诞生以后,人工智能界终于感觉找对了方向。基于机器学习的图像识别和语音识别在某些垂直领域达到了跟人相媲美的程度。机器学习使人类第一次如此接近人工智能的梦想。

事实上,如果我们把人工智能相关的技术以及其他业界的技术做一个对比,可以发现机器学习在人工智能中的重要地位不是没有理由的。

人类区别于其他物体,植物、动物的最主要的区别,作者认为是“智慧”。而智慧的最佳体现是什么?

计算能力么,应该不是,心算速度快的人我们一般称之为天才。

是反应能力么,也不是,反应快的人我们称之为灵敏。

是记忆能力么,也不是,记忆好的人我们一般称之为过目不忘。

是推理能力么,这样的人我也许会称他智力很高,类似“福尔摩斯”,但不会称他拥有智慧。

是知识能力么,这样的人我们称之为博闻广,也不会称他拥有智慧。

想想看我们一般形容谁有大智慧?圣人,诸如庄子,老子等。智慧是对生活的感悟,是对人生的积淀与思考,这与我们机器学习的思想何其相似?通过经验获取规律,指导人生与未来。没有经验就没有智慧。

泛化能力

机器学习的目的是利用训练数据及训练出机器学习的模型,然后将该模型应用到测试数据集中。在整个过程中。我们对测试数据集是一无所知的,这是前提。所以该模型对未知数据的预测能力便称为泛化能力(Generation ability),这是机器学习成功与否的一个很重要的指标。同时,预测误差便成为评价学习方法的泛化能力的指标。

过拟合问题

1.定义:过拟合是指学习时选择的模型包含的参数过多,以至于出现这一模型对已知数据预测很好,但是对未知数据预测得很差的情况

2.对过拟合的理解

一种理解过拟合的方式是将泛化误差分解为偏置bias和方差variance:

其中,noise为常数。偏置度量了学习器倾向于一直学习相同错误的程度;方差则度量了学习器倾向于忽略真实信号,学习随机事物的程序。其实,在我的理解中,这里很像演化计算中的那些启发式算法的更新公式,如何协调好这两个因素是算法成功的关键。

3.过拟合的例子

如上图,在1000个样本以下时,Bayes方法的准确性要比决策树高,尽管正确的模型是基于规则的,直到数量超过了1000,决策树的准确性才能高于Bayes,这也说明:一个强错误假设比那些弱正确假设更好,因为后者需要更多的数据才能避免过拟合。

4.避免过拟合的方法

交叉验证、正则化

5.过拟合与数据噪声的关系

有人认为过拟合是因为数据中的噪声引起的,实际上过拟合并不仅仅是因为数据的噪声引起的,当然,在有噪声的数据中会加剧过拟合的可能性。

维数灾难

1. 维数灾难的概念

维数灾难由贝尔曼提出,主要描述的一个现象是:很多算法在低维空间表现很好,但是在高维空间中就变得无法正确计算。在机器学习中,这样的问题变得更加普遍,随着样本维度(即特征数目)的增长,正确泛化的难度会以指数级增加。这里原因是同等规模的训练集只能覆盖越来越少的输入空间。

2. 典型的例子

以K-近邻这样的基于相似度的算法为例,基于相似度的推理在高维空间不再有效。分为两种情况:

有2个与预测相关的特征,增加98个不相关的特征,这样,这98个特征就会淹没掉2个相关特征,最终导致K-NN是随机预测

这100个都是相关的特征,这时所有的样本表现出来的是都是相似的

3. 带来的问题以及其解决办法

有人认为在机器学习问题中,特征越多越好,其实这就会引起维数灾难的问题。“blessingof non-uniformity”在一定程度上抵消了维数灾难。

在大多数应用中,样本在空间中并非均匀分布,而是集中在一个低维流形上面或者附近。以手写体识别为例:每一个像素点为一个特征,这样为什么有效?

是因为数字图片的空间要远小于整个可能的空间,学习器可以隐式地充分利用这个有效的更低位空间,也可以显示地进行降维。

特征工程

1. 特征的难点

应用机器学习的过程是相对较为简单的过程,然而,如果考虑到对数据的收集、整合、清洗和预处理,那么整个过程就显得不会那么简单,因为在整个数据的处理过程中,针对不同的数据,处理的方法是不尽相同的,这里面就会牵涉到很多的领域知识(domain-specific)。对这些领域知识的理解是能否处理好这些数据的关键。

2. 如何处理特征工程问题

每一个特征独立地看也许与分类无关,但是组合起来也许就是相关的。如果所要处理的特征很多,那么寻找合适的特征将会成为费时费力地事,而且,还很容易导致模型的过拟合。在上面提及的文章中有一些方法,可以应用到特征的选择中。

数据—多多益善

1. 提高机器学习准确性的两种方法:

设计一个更好的学习算法

获得更多的数据

2. 更多地数据出现的问题

经验上讲:More data beats a cleverer algorithm. 但是,这样就出现一个问题,更多地数据我们可以学习到更复杂的分类器。但是在实践中,要学习到这样复杂的分类器需要更多的时间,所以在很多情况下,我们依旧选择简单的分类器。这时,就需要一些快速的学习算法。例如一些分布式的计算。

3. 机器学习的分类以及工作机制

其实无论简单的学习算法还是复杂的学习算法,他们的工作机制都是类似的:所有的学习器都是将临界样例归类到同一类别中;所不同的是每个分类器对这样的“临界”的定义是不一样的。如下图所示:无论什么样的算法,都能学出这样的分类边界,只是在刻画分类边界的时候是复杂的,还是不复杂的,这样的情况就有很多。

4. 分类器可以分为两类:

参数学习算法,如:线性分类器、LR

非参数学习算法,如决策树

首先,在参数学习算法中,其参数是固定的。但是这样的模型存在一个问题就是,当数据超过一定的数量之后,这样的学习算法就不能再从中获益。如下图,朴素贝叶斯在最后的阶段,提升的效果已经很不明显。

第二种是非参数学习算法,如果有足够的数据,理论上是可以学习任何的函数,如C4.5算法。但是实际中是无法做到的,有这样的一些因素:

一些优化算法会陷入局部最优

计算复杂性的限制

维数灾难中讲,再多的数据也不会够

5. 总结

在选择机器学习算法的过程中,首先还是应该选择简单的学习算法。当然,想要提升学习的准确性,从基本的学习算法中得到的设计灵感与方法。

多模型的融合

与其在一个算法上花大工夫,结果却发现,将算法进行融合,会表现得更好,而且只需花费很少的精力。

三种集成模式

l Bagging(最简单)采用方法是:通过重(chong,重新)采样随机产生若干个不同的子训练集,然后在每个集合上训练一个分类器,最终用投票的方式将结果合并。

l Boosting采用的方法:每个训练样例都有一个权重,并且权重会不断变化,每次训练新分类器的时候都集中在那些分类器之前倾向于分错的样例上。

l Stacking采用的方法是:每个单独的分类器的输出作为更高层分类器的输入,更高层分类器可以判断如何更好地合并这些来自低层的输出。

Bagging 与Boosting的比较:

Bagging采用重复采样,每个个体分类器所采用的训练样本都是从训练集中按等概率抽取的,因此Bagging的各子训练集能够更好的覆盖训练样本空间,从而有着良好的稳定性。

Boosting注重分类错误的样本,将个体子训练集分类错误的训练样本的权重提高,降低分类正确的样本权重,并依据修改后的样本权重来生成新的训练样本空间并用来训练下一个个体分类器。然而,由于Boosting算法可能会将噪声样本或者分类边界样本的权重过分累积,因此Boosting很不稳定,但是其在通常情况下,其泛化能力是比较理想的集成算法之一。

------------------------------------------------------------------------------------------------------原创--------------------------------------------------------------------------------------------------------------------------

今日完成:

1. 今天看的东西比较认真,主要是看了两篇微信长文,一个讲机器学习整体的介绍,一个讲其应用,讨论了很多点,也对以前不够明白的东西进行了梳理和清洗。

2. 看了下subspace feature selection,也知道主要是PCA、LDA(只针对线性的),觉得没什么做下去的前景,果断不做,不过对自己的方向也有了一定的清晰,大概知道自己的方向,至少后面要做并行,要去加速。

明日完成:

1. 明晚准备回去了,不知道还有没有时间做这些,但是也是要表示清楚,CNN原理一定要搞清楚,总觉得自己未来的方向脱离不了CNN DNN并且做并行做加速,所以一定明天要把CNN的代码跑通。

2. 看一些关于增强学习的东西,也给了自己一点动力去做下去,也许我是可以做下去的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: