葫芦娃的葫芦书刷题(一)

特征工程

  1. 什么是特征工程?
    特征工程是对原始数据进行一系列工程处理,将其提炼为特征,作为输入供算法和模型使用.旨在去除原始数据中的杂质和冗余.设计更高效的特征以刻画求解的问题与预测模型之间的关系.

  2. 什么是特征归一化
    特征归一化是对数值型的特征做归一化处理可以将所有的特征都统一到一个大致相同的数值区间内.常用方法有以下两种:
    (1)线性函数归一化

    其中X为原始数据,$X_{max}$,$X_{min}$分别为数据最大值和最小值
    (2)零均值归一化

    其中$\mu$为均值,$\sigma$为标准差

  3. 未归一化会带来什么影响?
    我们可以从梯度下降的实例看出归一化的重要性,如下图
    pic1
    相同学习率,未归一化时,$x_1$的更新速度会大于$x_2$,需要较多的迭代才能找到最优解.而归一化后,等值图呈现为圆形,$x_1,x_2$的更新速度变得更为一致,容易更快的找到最优解.
    由于数据归一化对梯度下降很重要,因此一些通过梯度下降法求解的模型通常就需要归一化.如:线性回归、逻辑回归、支持向量机、神经网络等模型,但对于决策树模型则没有用(因为决策树节点分裂计算的是信息增益这与归一化无关).

  4. 在对数据预处理时如何处理类别特征?
    所谓的类别特征也就是一些离散特征,比如性别(男女),血型(A、B、AB、O)等。显然这些原始数据的形式都是字符串型,对于逻辑回归、支持向量机等模型来说,类别型特征必须经过处理转换成数值型特征才能正确工作,但是决策树等少量模型能直接处理字符串形式的输入.
    常用的处理类别型特征的编码方式:
    (1)序号编码:
    序号编码通常用于处理类别间有大小关系的数据,例如成绩,可以分为低、中、高三档,并且存在”高>中>低”的排序关系.
    (2)独热编码:
    独热编码通常用于处理类别间不具有大小关系的特征.
    (3)二进制编码:
    分为两步,先用序号编码给每个类别赋予一个类别ID,然后将类别ID对应的二进制编码作为结果,最终得到0/1特征向量,且维度少于独热编码,节省了存储空间.

  5. 什么是组合特征如何处理高维组合特征?
    pic2
    往往为了提高复杂关系的拟合能力,在特征工程中会把一阶离散特征两两组合构成高阶组合特征.如上图,为了提高拟合能力,会考虑将年龄北京上海等特征组合成二阶特征.
    以逻辑回归为例,假设数据的特征向量为$X=(x_1,x_2,…,x_k)$,则有,

    其中$$为$x_i和x_j$的组合特征.

  6. 有哪些文本表示模型及各自的优缺点是什么?
    文本是一类非常重要的非结构数据.常用的示模型有:
    (1) 词袋模型
    一般需要对语料库先进行统计.词袋模型往往忽略每个词在文章中出现的先后顺序.就是将整个文本以词为单位切分开,然后每篇文章可以表示成一个长向量,向量中的每一维代表一个单词,而该维对应的权重则反映了这个词在原文中的重要程度.常用TF-IDF来计算权重:

    其中TF表示单词t在文档d中出现的频率,IDF表示是逆文档频率.

    所以从上面可以看出词袋方法对文章的表示是用一个个单个单词堆叠成,并不能反映词组在文章中的含义.
    (2)n-gram模型
    可以将连续出现的n个词组成的词组作为一个单独的特征放到向量表示中,构成N-gram模型.另外,同一个词可能有多种词性变化,却有相似的含义.在实际应用中,会先进行一步stemming处理,将不同词性的单词统一.
    (3)主题模型
    用于从文本库中发现有代表性的主题(得到每个主题上面词的分布特征),并且能够计算出每篇文章的主题分布.
    (4)Word Embedding
    词嵌入是一类将词向量化的模型的统称(注意word2vec是google2013年提出的常用的词嵌入模型库),核心思想是将每个词映射到低维空间上的稠密向量.K维空间的每一维也可以看作是一个隐含的主题,只不过不像主题模型中的主题那样直观.

  7. 图像数据不足时的处理办法
    图像训练数据不足时,说明模型从原始数据中获取的信息比较少,即较少的先验信息.我们可以做的时附加一些先验约束直接作用在模型上,来替代缺少的数据.或是调整似然函数来使后验更精准.
    由此有两类处理方法:
    (1)基于模型的方法:简化模型、添加约束项以缩小假设空间、集成学习、Dropout
    (2)基于数据的方法:主要是数据扩充(Data Augumentation),有时还会采用一些上采样技术如SMOTE,时下流形的GAN也可以用来扩充数据

此外,不属于上述两种类型的就是迁移学习方法,这在深度学习中很常见.

模型评估

  1. 评估指标的局限性
    分类问题、排序问题、回归问题往往需要用不同的指标进行评估。许多指标都比较片面的反映模型的一部分性能.如果不能合理地运用评估指标,不仅不能发现模型本身的问题,而且会得出错误的结论
    准确率的局限性:
    当负样本占99%时,分类器把所有样本都预测为负样本,也可以获得99%的正确率.不同类别的样本比例非常不均衡时,占比大的类别往往称为影响准确率的最主要因素.

  2. 精确率与召回率的权衡
    搜索排序模型返回的Top5的精确率非常高,但在实际使用过程中,用户还是经常找不到想要的视频,特别是一些比较冷门的剧集.
    首先要明确 精确率和召回率 的概念:
    精确率是指分类正确的正样本个数占分类器判定为正样本的样本个数的比例.召回率是指分类正确的正样本个数占真正的正样本个数的比例
    在排序问题中,通常没有一个确定的阈值把得到的结果直接判定为正样本或负样本,而是采用Top N返回结果的Precision值和Recall值来衡量排序模型的性能,即认定模型返回的Top N的结果为模型判定的正样本,计算前N个位置上的准确率Precision@N和前N个位置上的召回率Recall@N.
    为了提高Precision值,分类器需要尽量在”更有把握时”,将样本预测为正样本.(不要什么都判为正例),但此时往往会过于保守而漏掉一些”没有把握”的正样本呢,导致Recall值的降低.
    P-R曲线——横坐标为R,纵坐标为P.对于一个排序模型来说,其P-R曲线上的一个点代表着,在某一阈值下,模型将大于该阈值的结果判定为正样本,小于该阈值的结果判定为负样本,此时返回结果对应的召回率和精确率.整条P-R曲线是通过将阈值从高到低移动而生成的.
    如何通过P-R曲线来评判两个模型的好坏?
    用F1 score:

    此外ROC曲线也能反映一个排序模型的性能好坏

  3. 平方根误差的”意外”
    RMSE经常被用来衡量回归模型的好坏. 但是有一个问题,无论哪种回归模型,得到的RMSE都指标非常高.显然这会导致RMSE这个指标失效.

    RMSE能很好地反映回归模型预测值和真实值的偏离程度.若存在个别偏离程度非常大的离群点,即使离群点个数非常少,也会让RMSE指标变得很差.
    比如模型在95%的时间区间内的预测误差都小于1%,这说明在大部分时间区间内,模型的预测效果都是非常优秀的.然而,RMSE却一直很差,这很可能是其他的5%时间区间内存在非常严重的离群点.
    针对该问题的解决方案:
    (1)认定离群点为”噪声点”,在数据预处理阶段把这些点过滤掉
    (2)如果不认为这些离群点是噪声点,就需要进一步提高模型的预测能力
    (3)可以找一个更合适的指标评估该模型.关于评估指标,其实是存在比RMSE的鲁棒性更好的指标,比如平均绝对百分比误差(MAPE):

    将误差归一化,降低了个别离群点带来的绝对误差的影响.

  4. 什么是ROC曲线
    二值分类器是机器学习中最常见的也是最广泛的分类器.评价二值分类器的指标很多,比如Precision、recall、F1 Score、P-R曲线等.
    ROC曲线的横坐标为假阳性率(FPR),纵坐标为真阳性率(TPR)

    其中P是真实地正样本数目,N是真实的负样本的数量.
    如何生成ROC曲线?有点像前面的P-R曲线,这里通过对”截断点”的移动来生成曲线上的一组关键点(截断点也就是区分正负样本的阈值).
    曲线从(0,0)坐标开始,最终会终结于(1,1)点.

  5. 如何计算AUC
    AUC就是指ROC曲线下的面积大小,该值能过够量化地反映基于ROC曲线衡量出的模型性能

  6. ROC曲线相比P-R曲线有什么特点?
    相比P-R曲线,ROC曲线有一个特点,当正负样本的分布发生变化时,ROC曲线的形状能够基本保持不变,而P-R曲线的形状会发生剧烈变化
    ROC能够尽量降低不同测试集带来的干扰,客观地衡量模型本身的性能,更能反映模型好坏,被广泛用于排序、推荐、广告等领域.如果研究者希望更多地看到模型在特定数据集上的表现,P-R曲线则能够更直观地反映其性能.

  7. A/B测试的陷阱
    在机器学习领域A/B测试是验证模型最终效果的主要手段.
    对模型进行过充分的离线评估之后,为什么还要进行在线A/B测试?
    需要进行在线A/B测试的原因:
    (1)离线评估无法消除模型过拟合的影响,因此得出的离线评估结果无法完全替代线上评估结果
    (2)离线评估无法完全还原线上的工程环境.一般来讲,离线评估往往不会考虑线上环境的延迟、数据丢失、标签数据丢失等情况
    (3)线上系统某些商业指标在离线评估中无法计算.
    如何进行线上A/B测试?
    进行A/B测试的主要手段是进行用户分桶,即将用户分成实验组和对照组,对实验组用户施以新模型,对对照组用户施以旧模型.在分通过程中,要注意样本的独立性和采样方式的 无偏性,确保同一个用户每次只能分到同一个桶中,在分桶过程中所选取得user_id需要是一个随机数,这样才能保证桶中得样本是无偏的。

  1. 模型评估有哪些验证方法?
    (1)Holdout检验:将样本按照70%,30%分别分为训练集和验证集,可以用ROC曲线、计算精确率和召回率等指标来评估模型性能.Holdout检验的缺点就是最后评估指标与原始分组有很大关系.
    (2)交叉验证:由于Holdout随机性太大,太依赖于刚一开始的原始分组,所以提出了交叉验证.i)k-fold将全部样本分成k个大小相等的样本子集,依次遍历这k个子集,每次把当前子集作为验证集,其余所有子集作为训练集.进行模型的训练和评估.最后把k次评估指标的平均值作为最终的评估指标.ii)留一验证每次留下一个样本作为验证集,其余都是训练集,可以看成特殊的k-fold。
    (3)自助法:不用给定超参数,已知有n个样本的样本集.对其进行n次有放回的随机抽样,得到大小为n的训练集.n次采样过程中,有的样本会被重复采样,有的样本没有被抽出过,将没有抽出过的样本作为验证集,进行模型验证

  2. 超参数有哪些调优方法?
    (1)网格搜索:通过查找搜索范围内的所有的点来确定最优值.如果采用较大的搜索范围以及较小的步长,网格搜索有很大的概率找打全局最优值.
    (2)随机搜索:在搜索范围中随机选取样本点.
    (3)贝叶斯优化算法:网格搜索和随机搜索在测试一个新点时,会忽略前一个点的信息;而贝叶斯优化算法则充分利用了之前的信息.贝叶斯优化算法通过对目标函数形状进行学习,找到使目标函数向全局最优值提升的参数.

  3. 说出几种降低过拟合和欠拟合风险的方法

  • 降低”过拟合”风险的方法:
    (1)从数据入手,获得更多的训练数据.
    (2)降低模型复杂度.在数据较少时,模型过于复杂使产生过拟合的主要因素,适当降低模型复杂度可以避免模型拟合过多的采样噪声.
    (3)正则化方法.给模型的参数加上一定的正则约束,比如将权值的大小加入到损失函数中.如L2正则化
    (4)集成学习方法.集成学习是把多个模型集成在一起,来降低单一模型的过拟合风险
  • 降低”欠拟合”风险的方法:
    (1)添加新特征;当特征不足或者现有特征与样本标签的相关性不强时,模型容易出现欠拟合.通过挖掘”上下文特征””ID类特征””组合特征”等新的特征,往往能够取得更好效果。在深度学习潮流中,有很多模型可以帮助完成特征工程,如因子分解机、梯度提升决策树、Deep-crossing等都可以成为丰富特征的方法
    (2)增加模型复杂度
    (3)减小正则化系数
-------------本文结束感谢您的阅读-------------