为什么说特征是机器学习系统的原材料?

特征是机器学习系统的原材料,对最终模型的影响是毋庸置疑的。如果数据被很好的表达成了特征,通常线性模型就能达到满意的精度。

那对于特征,我们需要考虑什么呢?

首先要考虑的是,学习算法在一个什么粒度上的特征表示,才有能发挥作用?

特征表示的粒度

就一个图片来说,像素级的特征根本没有价值。

例如下面的摩托车,从像素级别,根本得不到任何信息,其无法进行摩托车和非摩托车的区分。

而如果特征是一个具有结构性(或者说有含义)的时候,比如是否具有车把手(handle),是否具有车轮(wheel),就很容易把摩托车和非摩托车区分,学习算法才能发挥作用。

既然像素级的特征表示方法没有作用,那怎样的表示才有用呢?

1995 年前后,Bruno Olshausen和 David Field 两位学者任职 Cornell University,他们试图同时用生理学和计算机的手段,双管齐下,研究视觉问题。

他们收集了很多黑白风景照片,从这些照片中,提取出400个小碎片,每个照片碎片的尺寸均为 16x16 像素,不妨把这400个碎片标记为 S[i], i = 0,.. 399。

接下来从这些黑白风景照片中,随机提取另一个碎片,尺寸也是 16x16 像素,不妨把这个碎片标记为 T。

他们提出的问题是,如何从这400个碎片中,选取一组碎片,S[k], 通过叠加的办法,合成出一个新的碎片,而这个新的碎片,应当与随机选择的目标碎片 T,尽可能相似,同时,S[k] 的数量尽可能少。用数学的语言来描述,就是:

Sum_k (a[k] * S[k]) --> T,     其中 a[k] 是在叠加碎片 S[k] 时的权重系数。

Sift处理数据

为解决这个问题,Bruno Olshausen和 David Field 发明了一个算法,稀疏编码(Sparse Coding)。

稀疏编码是一个重复迭代的过程,每次迭代分两步:

1)选择一组 S[k],然后调整 a[k],使得Sum_k (a[k] * S[k]) 最接近 T。

2)固定住 a[k],在 400 个碎片中,选择其它更合适的碎片S’[k],替代原先的 S[k],使得Sum_k (a[k] * S’[k]) 最接近 T。

经过几次迭代后,最佳的 S[k] 组合,被遴选出来了。令人惊奇的是,被选中的 S[k],基本上都是照片上不同物体的边缘线,这些线段形状相似,区别在于方向。

Bruno Olshausen和 David Field 的算法结果,与 David Hubel 和Torsten Wiesel 的生理发现,不谋而合!

也就是说,复杂图形,往往由一些基本结构组成。比如下图:一个图可以通过用64种正交的edges(可以理解成正交的基本结构)来线性表示。比如样例的x可以用1-64个edges中的三个按照0.8,0.3,0.5的权重调和而成。而其他基本edge没有贡献,因此均为0 。

需要有多少个特征?

我们知道需要层次的特征构建,由浅入深,但每一层该有多少个特征呢?

任何一种方法,特征越多,给出的参考信息就越多,准确性会得到提升。但特征多意味着计算复杂,探索的空间大,可以用来训练的数据在每个特征上就会稀疏,都会带来各种问题,并不一定特征越多越好。

为什么会有Deep learning(让机器自动学习良好的特征,而免去人工选取过程。还有参考人的分层视觉处理系统),我们得到一个结论就是Deep learning需要多层来获得更抽象的特征表达。

时间: 2024-10-10 06:29:54

为什么说特征是机器学习系统的原材料?的相关文章

TensorFlow【机器学习】:如何正确的掌握Google深度学习框架TensorFlow(第二代分布式机器学习系统)?

本文标签:   机器学习 TensorFlow Google深度学习框架 分布式机器学习 唐源 VGG REST   服务器 自 2015 年底开源到如今更快.更灵活.更方便的 1.0 版本正式发布,由 Google 推出的第二代分布式机器学习系统 TensorFlow一直在为我们带来惊喜,一方面是技术层面持续的迭代演进,从分布式版本.服务框架 TensorFlow Serving.上层封装 TF.Learn 到 Windows 支持.JIT 编译器 XLA.动态计算图框架 Fold 等,以及

斯坦福第十一课:机器学习系统的设计(Machine Learning System Design)

11.1  首先要做什么 11.2  误差分析 11.3  类偏斜的误差度量 11.4  查全率和查准率之间的权衡 11.5  机器学习的数据 11.1  首先要做什么 在接下来的视频中,我将谈到机器学习系统的设计.这些视频将谈及在设计复杂的机器 学习系统时,你将遇到的主要问题.同时我们会试着给出一些关于如何巧妙构建一个复杂的机器学习系统的建议.下面的课程的的数学性可能不是那么强,但是我认为我们将要讲到的 这些东西是非常有用的,可能在构建大型的机器学习系统时,节省大量的时间. 本周以一个垃圾邮件

Spark MLBase分布式机器学习系统入门:以MLlib实现Kmeans聚类算法

1.什么是MLBaseMLBase是Spark生态圈的一部分,专注于机器学习,包含三个组件:MLlib.MLI.ML Optimizer. ML Optimizer: This layer aims to automating the task of ML pipeline construction. The optimizer solves a search problem over feature extractors and ML algorithms included inMLI and

Ng第十一课:机器学习系统的设计(Machine Learning System Design)

11.1  首先要做什么 11.2  误差分析 11.3  类偏斜的误差度量 11.4  查全率和查准率之间的权衡 11.5  机器学习的数据 11.1  首先要做什么 在接下来的视频将谈到机器学习系统的设计.这些视频将谈及在设计复杂的机器学习系统时,将遇到的主要问题.同时会试着给出一些关于如何巧妙构建一个复杂的机器学习系统的建议.下面的课程讲的东西数学性不强,但是非常有用的,可能在构建大型的机器学习系统时,节省大量的时间. 本周以一个垃圾邮件分类器算法为例进行讨论. 为了解决这样一个问题,首先

如何评价Petuum分布式机器学习系统?

机器学习算法和计算机领域的其他算法相比,有自己的一些独特特点, (1)迭代性:模型的更新并非一次完成,需要循环迭代多次: (2)容错性:即使在每个循环中产生一些错误,模型最终的收敛不受影响: (3)参数收敛的非均匀性:模型中有些参数经过几个循环便不再改变,其他参数需要很长时间收敛. 这些特点决定了分布式机器学习系统的设计和其他分布式计算系统(例如Spark)的设计有很大不同. Petuum是一个专门针对机器学习算法特点的分布式平台,而通用的分布式计算系统Spark以数据流应用为主,所以二者的应用

机器学习系统模型调优实战--所有调优技术都附相应的scikit-learn实现

引言 如果你对机器学习算法已经很熟悉了,但是有时候你的模型并没有很好的预测效果或者你想要追求更好地模型性能.那么这篇文章会告诉你一些最实用的技术诊断你的模型出了什么样的问题,并用什么的方法来解决出现的问题,并通过一些有效的方法可以让你的模型具有更好地性能. 介绍数据集 这个数据集有569个样本,它的前两列为唯一的ID号和诊断结果 (M = malignant, B = benign) ,它的3->32列为实数值特征,我不是医学专家,我不太明白具体特征的是什么意思,都是关于细胞的,但是,机器学习的

Spark-ML-02-设计机器学习系统

机器学习在商业系统应该是用的最多了,和传统人工区分开,因为数据集量级太大和复杂度太高,机器可以发现人难以发现的模型,基于模型的方式处理可以避免人的情感偏见.人工也是不可以完全抛开的,比如监督式的学习,靠人工:来标记数据,训练模型.文本标记和文本的情感标识别,还有就是破解验证码时基于CNN大量的训练集要靠人来处理,也是醉了,那是很累啊.模型出来后,可以做成服务整合到其他系统中, 机器学习应用在: 个性化 根据各个因素改变用户的体验和呈现给用户的内容.包含了用户的行为数据和外部因素.推荐也是个性化一

斯坦福大学公开课机器学习:advice for applying machine learning - deciding what to try next(设计机器学习系统时,怎样确定最适合、最正确的方法)

假如我们在开发一个机器学习系统,想试着改进一个机器学习系统的性能,我们应该如何决定接下来应该选择哪条道路? 为了解释这一问题,以预测房价的学习例子.假如我们已经得到学习参数以后,要将我们的假设函数放到一组新的房屋样本上进行测试,这个时候我们会发现在预测房价时,产生了巨大的误差,现在我们的问题是要想改进这个算法接下来应该怎么办? 实际上我们可以想出很多种方法来改进算法的性能,其中一种办法是使用更多的训练样本.具体来讲,通过电话调查.上门调查,获取更多的不同的房屋出售数据.遗憾的是,好多人花费了大量

机器学习系统构建

看了NG视频关于机器学习系统构建的建议,感觉很实用,记录下来作为听课笔记. 首先是机器学习系统构建的流程: NG推荐方法:首先快速实现一个可能并不是很完美的算法系统,进行交叉验证,画出学习曲线去学习算法问题之处,是high bias or high variance 细节看这篇博文介绍:bias和variance在机器学习中应用 最重要一步:错误分析,手工检验算法错误学习的样本,找到算法在什么类型例子上犯错误!然后几种经历在处理这类错误上. 下面以垃圾邮件系统举例: 反垃圾邮件系统发现误分类最多