《百面机器学习》拾贝----第一章:特征工程

>>>前言

人工智能技术正在对社会结构、职场、教育等带来革命性的变化。未来几年是人工智能技术全面普及化的时期,也是该技术的相关人才最为稀缺的时期。

人工智能泛指让机器具有人的智力的技术。这项技术的目的是使机器像人一样感知、思考、做事、解决问题。人工智能是一个宽泛的技术领域,包括自然语言理解、计算机视觉、机器人、逻辑和规划等,它可以被看作计算机专业的子领域,除了和计算机相关,它还和心理学、认知科学、社会学等有不少交叉。

机器学习指计算机通过观察环境,与环境交互,在吸取信息中学习、自我更新和进步。简单地说,大多数机器学习算法可以分成训练(training)和测试(testing)两个步骤,这两个步骤可以重叠进行。训练,一般需要训练数据,就是告诉机器前人的经验,比如什么是猫、什么是狗、看到什么该停车。训练学习的结果,可以认为是机器写的程序或者存储的数据,叫模型(model)。总体上来说,训练包括有监督(supervised learning)和无监督(unsupervised learning)两类。有监督好比有老师告诉你正确答案;无监督仅靠观察自学,机器自己在数据里找模式和特征。深度学习(deep learning)是机器学习的一种方法,它基于神经元网络,适用于音频、视频、语言理解等多个方面。

计算能力和数据的结合,促进、催化了机器学习算法的飞跃成长。

最近这次人工智能浪潮和前两次最基本的不同是它的普遍应用和对普通人生活的影响。也就是说,人工智能离开了学术实验室,真正走进大众的视野。

现代机器学习算法,尤其深度学习类机器学习算法的发展,使机器的行为不再是相对可预测的“程序”或者“逻辑”,而是像“黑盒思考”,有了近乎人类的难以解释的思考能力。

本书强调了实现一个企业里真正实用的算法系统所需要的技能,比如采样、特征工程、模型评估。

无论哪类算法,特征工程、模型评估等基本技能都是很重要的。

这本书的出版目的,是让更多的人联系和掌握机器学习相关的知识,帮助计算机行业人员了解算法工程师需要的实际技能,帮助软件工程师成为出色的数据科学家,帮助公司的管理者了解人工智能系统需要的人才和技能,帮助所有对人工智能和机器学习感兴趣的朋友们走在技术和时代的前沿。

>>>机器学习算法工程师的自我修养

通往机器学习算法工程师的进阶之路是崎岖险阻的。《线性代数》 《统计学习方法》《机器学习》《模式识别》《深度学习》,以及《颈椎病康复指南》,这些书籍将长久地伴随着你的工作生涯。

除了拥有全面、有条理的知识储备,我认为,想成为一名优秀的算法工程师,更重要的是对算法模型有着发自内心的热忱,对研究工作有一种匠心精神。这种匠心精神、直白来讲,可以概括为:发现问题的眼光、解决问题的探索精神,以及对问题究原竟委的执着追求。

将算法研究应用到工作中,与纯粹的学术研究有着一点最大的不同,即需要从用户的角度思考问题。很多时候,你需要明确设计的产品特征、提升的数据指标,是不是能真正迎合用户的需求,这便要求算法工程师能够在多个模型中选择出最合适的那个,然后通过快速迭代达到一个可以走向产品化的结果。这种创新精神和尝试精神便是“匠心”一词在工作中的体现。

扎实的数学基础、完整的算法体系、深入的模型理解,是本书想传达给读者的精华之所在。

有意识将学术前沿与产品形态紧密结合。例如,若是在技能树中专攻马尔可夫模型、主题模型,建立完整的概率图模型和知识网络,并将循环神经网络的理论体系融会贯通,形成自己独到的理解和感悟,便可以在机器翻译、语音聊天助手等自然语言处理的应用场景中驾轻就熟,游刃有余。

成为机器学习算法工程师的道路固然崎岖,却充满着旖旎和壮阔。你需要做的只是,想清自己真正想成为的那个角色。

>>>第一章 特征工程

特征工程,顾名思义,是对原始数据进行一系列工程处理,将其提炼为特征,作为输入供算法和模型使用。从本质上讲,特征工程是一个展现和表示数据的过程。在实际工作中,特征工程旨在去除原始数据中的杂质和冗余,设计更高效的特征以刻画问题与预测模型之间的关系。

01 特征归一化

为了消除数据特征之间的量纲影响,我们需要对特征进行归一化处理,使得不同指标之间具有可比性。

例如,分析一个人的身高和体重对健康的影响,如果使用米(m)和千克(kg)作为单位,那么身高特征会在1.6~1.8m的数值范围内,体重特征会在50~100kg的范围内,分析出来的结果显然会倾向于数值差别比较大的体重特征。想要得到更为准确的结果,就需要进行特征归一化(Normalization)处理,使各指标处于同一数值量级,以便进行分析。

Q:为什么需要对数值类型的特征做归一化?

A:对数值类型的特征做归一化可以将所有的特征都统一到一个大致相同的数值区间内。最常见的方法主要有以下两种。

(1)线性函数归一化。

它对原始数据进行线性线性变换,使结果映射到[0,1]的范围,实现对原始数据的等比缩放。归一化公式如下:

 

其中X为原始数据,X max 、X min 分别为数据最大值和最小值。

(2)零均值归一化。

它会将原始数据映射到均值为0,标准差为1的分布上。具体来说,假设原始特征的均值为

 μ,标准差为σ,那么归一化公式定义为:

 

02 类别型特征

Q:在对数据进行处理时,应该怎样处理类别型特征?

类别型特征原始输入通常是字符串形式,除了决策树等少数模型能直接处理字符串形式的输入,对于逻辑回归、支持向量机等模型来说,类别型特征必须经过处理转换成数值型特征才能正确工作。

A

1、序号编码

通常用于处理类别间具有大小关系的数据。

2、独热编码

通常用于处理类别间不具有大小关系的特征。

对于类别取值较多的情况下使用独热编码需要注意以下问题:

(1)使用稀疏向量来节省空间。因为独热编码下,特征向量只有某一维取值是1,其他位置均为0。

(2)配合特征选择来降低维度。高维度特征会带来几方面的问题。一是在K近邻算法中,高维空间下两点之间的距离很难得到有效的衡量;二是在逻辑回归模型中,参数的数量会随着维度的增高而增加,容易引起过拟合问题;三是通常只有部分维度是对分类、预测有帮助,因此可以考虑配合特征选择来降低维度。

(3)二进制编码

二进制编码主要分为两步,先用序号编码给每个类别赋予一个类别ID,然后将类别ID对应的二进制编码作为结果。

03 高维组合特征的处理

Q:什么是组合特征?如何处理高维组合特征?

A:为了提高复杂关系的拟合能力,在特征工程中经常会把一阶离散特征两两组合,构成高阶组合特征。

04 组合特征

Q:怎样有效的找到组合特征

A:一种基于决策树的特征组合寻找方法。

05 文本表示模型

文本是一类非常重要的非结构化数据,如何表示文本数据一直是机器学习领域的一个重要研究方向。

Q:有哪些文本表示模型?它们各有什么优缺点?

A

1、词袋模型和N-gram模型

2、主题模型

主题模型用于从文本库中发现有代表性的主题(得到每个主题上面词的分布特性),并且能够计算出每篇文章的主题分布。

3、词嵌入与深度学习模型

词嵌入是一类将词向量化的模型的统称,核心思想是将每个词都映射成低微空间(通常K=50~300维)上的一个稠密向量(dense vector)。K维空间的每一维也可以看作一个隐含的主题,只不过不像主题模型中的主题那样直观。

06 Word2Vec

谷歌2013年提出的Word2Vec是目前最常用的词嵌入模型之一。Word2Vec实际是一种浅层的神经网络模型,它有两种网络结构,分别是CBOW(Continues  Bag of Words)和Skip-gram。

Q:Word2Vec是怎么工作的?它和LDA有什么区别?

A:CBOW的目标是根据上下文出现的词语来预测当前词的生成概率;而Skip-gram是根据当前词来预测上下文中个各词的生成概率.

 

Word2Vec的两种网络结构

其中w(t)是当前所关注的词,w(t−2)、w(t−1)、w(t+1)、w(t+2)是上下文中出现的词。这里前后滑动窗口大小均设为2。

CBOW和Skip-gram都可以表示成由输入层, 映射层(projection)和输出层组成的神经网络.

 

 

07 图像数据不足时的处理方法

Q: 在图像分类任务中,训练数据不足会带来什么问题?如何缓解数据量不足带来的问题?

A

一个模型所能提供的信息一般来源于两个方面,一是训练数据中蕴含的信息;二是在模型的形成过程中(包括构造、学习、推理等),人们提供的先验信息。当训练数据不足时,说明模型从原始数据中获取的信息比较少,这种情况下要想保证模型的效果,就需要更多先验信息。先验信息可以作用在模型上,例如让模型采用特定的内在结构、条件假设或添加其他一些约束条件;先验信息也可以直接施加在数据集上,即根据特定的先验假设去调整、变换或扩展训练数据,让其展现出更多的、更有用的信息,以利于后续模型的训练和学习。具体到图像分类任务上,训练数据不足带来的问题主要表现在过拟合方面,即模型在训练样本上的效果可能不错,但在测试集上的泛化效果不佳。根据上述讨论,对应的处理方法大致也可以分两类,一是基于模型的方法,主要是采用降低过拟合风险的措施,包括简化模型(如将非线性模型简化为线性模型)、添加约束项以缩小假设空间(如L1/L2正则项)、集成学习、Dropout超参数等;二是基于数据的方法,主要通过数据扩充(Data Augmentation),即根据一些先验知识,在保持特定信息的前提下,对原始数据进行适当变换以达到扩充数据集的效果。具体到图像分类任务中,在保持图像类别不变的前提下,可以对训练集中的每幅图像进行以下变换。
(1)一定程度内的随机旋转、平移、缩放、裁剪、填充、左右翻转等,这些变换对应着同一个目标在不同角度的观察结果。
(2)对图像中的像素添加噪声扰动,比如椒盐噪声、高斯白噪声等。
(3)颜色变换。例如,在图像的RGB颜色空间上进行主成分分析,得到3个主成分的特征向量p 1 ,p 2 ,p 3 及其对应的特征值 λ 1 ,λ 2 ,λ 3 ,然后在每个像素的RGB值上添加增量[p 1 ,p 2 ,p 3 ]•[α 1 λ 1 ,α 2 λ 2 ,α 3 λ 3 ] T ,其中 α 1 ,α 2 ,α 3 是均值为0、方差较小的高斯分布随机数。
(4)改变图像的亮度、清晰度、对比度、锐度等。

除了直接在图像空间进行变换,还可以先对图像进行特征提取,然后在图像的特征空间内进行变换,利用一些通用的数据扩充或上采样技术,例如SMOTE(Synthetic Minority Over-sampling Technique)算法。抛开上述这些启发式的变换方法,使用生成模型也可以合成一些新样本,例如当今非常流行的生成式对抗网络模型。
此外,借助已有的其他模型或数据来进行迁移学习在深度学习中也十分常见。例如,对于大部分图像分类任务,并不需要从头开始训练模型,而是借用一个在大规模数据集上预训练好的通用模型,并在针对目标任务的小数据集上进行微调(fine-tune),这种微调操作就可以看成是一种简单的迁移学习。

 

posted @ 2020-03-11 17:11  Ariel_一只猫的旅行  阅读(383)  评论(0编辑  收藏  举报