百面机器学习 自学笔记

第一章   特征工程

    ①②③④⑤⑥⑦⑧⑨

1、常用特征归一化

特征归一化

        ①线性函数归一化(Min-Mac Scaling):对原始数据进行线性变换,使结果映射到[0,1]的范围,实现对原始数据的等比缩放。

X_{norm}=\frac{X-X_{min}}{X_{max}-X_{min}}

        ②零均值归一化(Z-Score Normalization):将原始数据映射到均值为0,标准差为1的分布上。

Z=\frac{X-\mu }{\sigma }           均值为 μ,标准差为 σ

归一化:更容易通过梯度下降找到最优解(决策树不适用),因为决策树节点分裂时是数据集D关于特征X的信息增益比

百面机器学习 自学笔记_第1张图片

2、类别型特征(Categorical Feature):有限选项内的取值特征。

序号编码、独热编码、二进制编码

怎么处理?

        ①序号编码(Ordinal Encoding):通常用于处理类别间具有大小关系的数据。

        ②独热编码(One-hot Encoding):通常用于处理类别间不具有大小关系的特征。

                对于类别取值较多的情况下:
                (1)使用稀疏向量来节省空间。在独热编码下,特征向量只有某一维取值为1,其他位置取值均为0。因此可以利用向量的稀疏表示有效地节省空间,并且目前大部分的算法均接受稀疏向量形式的输入。
                (2)配合特征选择来降低维度。高维度特征会带来几方面的问题。一是在K近邻算法中,高维空间下两点之间的距离很难得到有效的衡量;二是在逻辑回归模型中,参数的数量会随着维度的增高而增加,容易引起过拟合问题;三是通常只有部分维度是对分类、预测有帮助,因此可
以考虑配合特征选择来降低维度。

        ③二进制编码(Binary Encoding):采用二进制表示类别,其编码过程分为2步:

                1.使用ID对每个类别进行顺序编码,该过程类似于序号编码。

                2.将类别编码对应的ID用二进制表示

3、高维组合特征的处理

组合特征

        为了提高复杂关系的拟合能力,在特征工程中经常会把一阶离散特征俩俩组合,构成高阶组合特征。百面机器学习 自学笔记_第2张图片

4、组合特征

组合特征

        问题一:怎么有效找到组合特征?

        本节介绍一种基于决策树的特征组合寻找办法。

        以点击预测问题为例,假设原始输入特征包含年龄、性别、用户类型(试用期、付费)、物品类型(护肤、食品等)4个方面的信息,并且根据原始输入和标签(点击/未点击)构造出决策树。于是,每一条从根节点到叶节点的路径都可以看成一种特征组合方式。

 百面机器学习 自学笔记_第3张图片

        问题二:给定原始输入该如何有效地构造决策树呢?

        梯度提升决策树,思想是每次都在之前构建的决策树的残差上构建下一棵决策树。

5、文本表示类型(文本是重要的非结构化数据)

词袋模型、TF-IDF、主题模型、词嵌入模型

        ①词袋模型(Bag of Words):

        最基本的文本表示模型。将每篇文章看成一袋子词(以词为单位切开),并忽略每个词出现的顺序。然后文章就可以看作是一个长向量,向量中的每一维代表一个单词,而该维对应的权重则反映了这个词在原文中的重要程度。常用TF-IDF来计算权重。

        ②N-gram模型(Bag of Words):将连续出现的n个词所组成的词组(N-gram)也作为一个单独的特征放到向量表示中去。

        ③TF-IDF(Term Frequency-Inverse Document Frequency):

        TF-IDF(t,d)=TF(t,d)\times IDF(t)

        TF(t,d)是单词t在文档d中出现的频率,IDF(t)是逆文档频率,用来衡量单词t对表达语义所引起的重要性

  IDF(t)=log(文章总数/(包含单词t的文章总数+1))

        就是一个单词在非常多的文章出现,那么可能是一个比较通用的词汇,对于区分某篇文章特殊语义贡献较小,因此做些惩罚

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

        ⑤词嵌入模型(Word Embedding):一类将词向量化的模型的统称。

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

        由于词嵌入将每个词映射成一个K维的向量,如果一篇文档有N个词,就可以 用一个N×K维的矩阵来表示这篇文档,但是这样的表示过于底层。在实际应用中,如果仅仅把这个矩阵作为原文本的表示特征输入到机器学习模型中,通常很难得到令人满意的结果。因此,还需要在此基础之上加工出更高层的特征。在传统的浅层机器学习模型中,一个好的特征工程往往可以带来算法效果的显著提升。而深度学习模型正好为我们提供了一种自动地进行特征工程的方式,模型中的每个隐层都可以认为对应着不同抽象层次的特征。从这个角度来讲,深度学习模型能够打败浅层模型也就顺理成章了。卷积神经网络和循环神经网络的结构在文本表示中取得了很好的效果,主要是由于它们能够更好地对文本进行建模,抽取出一些高层的语义特征。与全连接的网络结构相比,卷积神经网络和循环神经网络一方面很好地抓住了文本的特性,另一方面又减少了网络中待学习的参数,提高了训练速度,并且降低了过拟合的风险。

6、Word2Vec

Word2Vec、隐狄利克雷模型(LDA)、CBOW,Skip-gram

        问题一:  Word2Vec是如何工作的?它和隐狄利克雷模型(LDA)有什么区别与联系

                        CBOW目标是根据上下文出现的词语来预测当前词的生成概率,

                        Skip-gram目标是根据当前的词来预测上下文中各词的生成概率(相反)。

百面机器学习 自学笔记_第4张图片

        CBOW 和 Skip-gram 都可以表示成有输入层(Input)、映射层(Project)和输出层(Output)组成的神经网络。

         ①输入层:每个词由独热编码方式表示,即所有词均表示成一个N维向量,其中N为词汇表中单词的总数。在向量中,每个词都将与之对应的维度置为1,其余维度的值均设为0。

        ②隐含层:K个隐含单元(Hidden Units)的取值可以由N维输入向量以及连接输入和隐含单元之间的N×K维权重矩阵计算得到。在CBOW中,还需要将各个输入词所计算出的隐含单元求和。

        ③输出层:向量的值可以通过隐含层向量(K维),以及连接隐含层和输出层之间的KxN维权重矩阵计算得到。输出层也是一个N维向量,每维与词汇表中的一个单词相对应。

        对输出层向量应用Softmax激活函数,可以计算出每个单词的生成概率。接下来的任务就是训练神经网络的权重,使得语料库中所有单词的整体生成概率最大化。

        由于Softmax激活函数中存在归一化项的缘故,推导出来的迭代公式需要对词汇表中的所有单词进行遍历,使得每次迭代过程非常缓慢,由此产生了Hierarchical Softmax和Negative Sampling两种改进方法,有兴趣的读者可以参考Word2Vec的原论文[3]。训练得到维度为N×K和K×N的两个权重矩阵之后,可以选择其中一个作为N个词的K维向量表示。

        Word2Vec 与 LDA 的区别和联系:首先,LDA是利用文档中单词的共现关系来对单词按主题聚类,也可以理解为对 “文档 - 单词” 矩阵进行分解,得到 “文档 - 主题” 和 “主题 - 单词” 两个概率分布。Word2Vec 其实是对 “上下文-单词” 矩阵进行学习,其中上下文由周围的几个单词组成,由此得到的词向量表示更多地融入了 上下文共现的特征。也就是说,如果两个单词所对应的 Word2Vec向量相似度较高,那么它们很可能经常在同样的上下文中出现。

        主题模型和词嵌入的差异:主题模型通过一定的结构调整可以基于“上下文-单词”矩阵进行主题推理。同样地, 词嵌入方法也可以根据“文档-单词”矩阵学习出词的隐含向量表示。主题模型和词嵌入两类方法最大的不同其实在于模型本身主题模型是一种基于概率图模型的生成式模型,其似然函数可以写成若干条件概率连乘的形式,其中包括需要推测的隐含变量(即主题);而词嵌入模型一般表达为神经网络的形式,似然函数定义在网络的输出之上,需要通过学习网络的权重以得到单词的稠密向量表示。

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

迁移学习、生成对抗网络、图像处理、上采样技术、数据扩充

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

        一个模型所能提供的信息一般来源于两个方面:

                一是训练数据中蕴含的信息

                二是在模型的形成过程中(包括构造、学习、推理等),人们提供的先验信息

        当训练数据不足时,说明模型从原始数据中获取的信息比较少,这种情况下要想保证模型的效果,就需要更多先验信息(数据)。先验信息可以作用在模型上,例如让模型采用特定的内在结构、条件假设或添加其他一些约束条件;先验信息也可以直接施加在数据集上,即根据特定的先验假设去调整、变换或扩展训练数据, 让其展现出更多的、更有用的信息,以利于后续模型的训练和学习。

        具体到图像分类任务上,训练数据不足带来的问题主要表现在过拟合方面, 即模型在训练样本上的效果可能不错,但在测试集上的泛化效果不佳。

        

        1.怎么改善?

                ①基于模型,主要是采用降低过拟合风险的措施,包括简化模型(如将非线性模型简化为线性模型)、添加约束项以缩小假设空间(如L1/L2正则项)、集成学习、Dropout超参数等;

                ②基于数据,主要通过数据扩充(Data Augmentation),即根据一些先验知识,在保持特定信息的前提下,对原始数据进行适当变换以达到扩充数据集的效果。

        2.图像分类任务的数据扩充:

                一定程度内的随机旋转、平移、缩放、裁剪、填充、左右翻转等,这些 变换对应着同一个目标在不同角度的观察结果。

                对图像中的像素添加噪声扰动,比如椒盐噪声、高斯白噪声等。

                ③颜色变换。例如,在图像的RGB颜色空间上进行主成分分析,得到3个 主成分的特征向量p1 ,p2 ,p3及其对应的特征值 λ1 ,λ2 ,λ3,然后在每个像素的RGB值上 添加增量[p1 ,p2 ,p3 ]•[α1λ1 ,α2λ2 ,α3λ3 ] T,其中 α1 ,α2 ,α3是均值为0、方差较小的高斯分布随 机数。

                改变图像的亮度、清晰度、对比度、锐度等。

        3.其他方法:

                ①还可以先对图像进行特征提取,然后在图像的特征空间内进行变换,利用一些通用的数据扩充或上采样技术,例如SMOTE(Synthetic Minority Over-sampling Technique)算法。

                ②生成模型也可以合成一些新样本,例如当今非常流行的生成式对抗网络模型。

                ③迁移学习

第二章   模型评估

1、评估指标的局限性

准确率(Accuracy),精确率(precision)、召回率(Recall)、均方根误差(Root Mean Square Error,RMSE)

        问题一:准确率局限性

        准确率是分类问题中最简单也是最直观的评价指标,但存在明显的缺陷。比如,当负样本占99%时,分类器把所有样本都预测为负样本也可以获得99%的准确率。所以,当不同类别的样本比例非常不均衡时,占比大的类别往往成为影响准确率的最主要因素。可以使用更为有效的平均准确率(每个类别下的样本准确率的算术平均)作为模型评估的指标。

        事实上,这是一道比较开放的问题,标准答案其实也不限于指标的选择,即使评估指标选择对了,仍会存在模型过拟合或欠拟合、测试集和训练集划分不合理、线下评估与线上测试的样本 分布存在差异等一系列问题,但评估指标的选择是最容易被发现,也是最可能影响评估结果的因素。

        问题二:精确率与召回率的权衡

        精确率:分类正确的正样本个数占分类器判定为正样本的样本个数的比例。

        召回率:分类正确的正样本个数占真正的正样本个数的比例。

        Precision 值和 Recall 值是既矛盾又统一的两个指标,为了提高 Precision 值,分类器需要尽量在 “更有把握” 时才把样本预测为正样本,但此时往往会因为过于保守而漏掉很多 “没有把握” 的正样本,导致Recall值降低。

        在排序问题中,通常没有一个确定的阈值把得到的结果直接判定为正样本或负样本,而是采用Top N返回结果的Precision值和Recall值来衡量排序模型的性能,即认为模型返回的Top N的结果就是模型判定的正样本,然后计算前N个位置 上的准确率Precision@N和前N个位置上的召回率Recall@N。

        回到问题中来,模型返回的Precision@5的结果非常好,也就是说排序模型Top 5的返回值的质量是很高的。但在实际应用过程中,用户为了找一些冷门的视频, 往往会寻找排在较靠后位置的结果,甚至翻页去查找目标视频。但根据题目描述,用户经常找不到想要的视频,这说明模型没有把相关的视频都找出来呈现给用户。显然,问题出在召回率上。如果相关结果有100个,即使Precision@5达到了100%,Recall@5也仅仅是5%。在模型评估时,我们是否应该同时关注Precision值 和Recall值?进一步而言,是否应该选取不同的Top N的结果进行观察呢?是否应该选取更高阶的评估指标来更全面地反映模型在Precision值和Recall值两方面的表现?

1、

①②③④⑤⑥⑦⑧⑨

①②③④⑤⑥⑦⑧⑨

①②③④⑤⑥⑦⑧⑨

①②③④⑤⑥⑦⑧⑨

①②③④⑤⑥⑦⑧⑨

①②③④⑤⑥⑦⑧⑨

①②③④⑤⑥⑦⑧⑨

①②③④⑤⑥⑦⑧⑨

你可能感兴趣的:(百面机器学习 自学笔记)