对原始数据进行处理,将其提炼为特征
决策树模型无需归一化
什么是组合特征?如何处理高维组合特征?
非组合
组合特征
若用户的数量为m、物品的数量为n,那么需要学习的参数的规模为m×n。在互联网环境下,用户数量和物品数量都可以达到千万量级,几乎无法学习m×n规模的参数。在这种情况下,一种行之有效的方法是将用户和物品分别用k维的低维向量表示(k<
组合特征:高维特征下,简单两两组合还是参数过多/过拟合,如何知道应对哪些特征进行组合呢?
基于决策树的特征组合寻找方法:
从根节点到叶节点就是特征组合的方式:
(1)“年龄<=35”且“性别=女”。
(2)“年龄<=35”且“物品类别=护肤”。
(3)“用户类型=付费”且“物品类型=食品”。
(4)“用户类型=付费”且“年龄<=40”
这样的两个样本就很好的编码为了(1,1,0,0)和(0,0,1,1)
模型信息来源:训练数据信息;模型形成过程中的先验信息
数据不够就多一些先验信息,即根据特定的先验假设去调整、变换或扩展训练数据,让其展现出更多的、更有用的信息,以利于后续模型的训练和学习
训练不足的问题:过拟合
处理方法:模型方面——简化模型,添加约束项,集成学习,Dropout超参数;数据方面——图像扩充
离线评估+在线评估
缺陷:Hulu的奢侈品广告主们希望把广告定向投放给奢侈品用户。Hulu通过第三方的数据管理平台(Data Management Platform,DMP)拿到了一部分奢侈品用户的数据,并以此为训练集和测试集,训练和测试奢侈品用户的分类模型。该模型的分类准确率超过了95%,但在实际广告投放过程中,该模型还是把大部分广告投给了非奢侈品用户,这可能是什么原因造成的?
奢侈品用户只占Hulu全体用户的一小部分,虽然模型的整体分类准确率高,但是不代表对奢侈品用户的分类准确率也很高。在线上投放过程中,我们只会对模型判定的“奢侈品用户”进行投放,因此,对“奢侈品用户”判定的准确率不够高的问题就被放大了。为了解决这个问题,可以使用更为有效的**平均准确率(每个类别下的样本准确率的算术平均)**作为模型评估的指标。
Hulu作为一家流媒体公司,拥有众多的美剧资源,预测每部美剧的流量趋势对于广告投放、用户增长都非常重要。我们希望构建一个回归模型来预测某部美剧的流量趋势,但无论采用哪种回归模型,得到的RMSE指标都非常高。然而事实是,模型在95%的时间区间内的预测误差都小于1%,取得了相当不错的预测结果。那么,造成RMSE指标居高不下的最可能的原因是什么?”
“一般情况下,RMSE能够很好地反映回归模型预测值与真实值的偏离程度。但在实际问题中,如果存在个别偏离程度非常大的离群点(Outlier)时,即使离群点数量非常少,也会让RMSE指标变得很差”
离群点的rmse解决方案
横坐标是FPR,纵坐标是TPR
P是真实的正样本的数量,N是真实的负样本的数量,TP是P个正样本中被分类器预测为正样本的个数,FP是N个负样本中被分类器预测为正样本的个数
摘录来自: 诸葛越. “百面机器学习 算法工程师带你去面试。” Apple Books.
在很多实际问题中,正负样本数量往往很不均衡。比如,计算广告领域经常涉及转化率模型,正样本的数量往往是负样本数量的1/1000甚至1/10000。若选择不同的测试集,P-R曲线的变化就会非常大,而ROC曲线则能够更加稳定地反映模型本身的好坏。所以,ROC曲线的适用场景更多,被广泛用于排序、推荐、广告等领域。但需要注意的是,选择P-R曲线还是ROC曲线是因实际问题而异的,如果研究者希望更多地看到模型在特定数据集上的表现,P-R曲线则能够更直观地反映其性能。
在互联网公司中,A/B 测试是验证新模块、新功能、新产品是否有效,新算法、新模型的效果是否有提升,新设计是否受到用户欢迎,新更改是否影响用户体验的主要测试方法。在机器学习领域中,A/B 测试是验证模型最终效果的主要手段
如何进行线上A/B测试?
进行A/B测试的主要手段是进行用户分桶,即将用户分成实验组和对照组,对实验组的用户施以新模型,对对照组的用户施以旧模型。在分桶的过程中,要注意样本的独立性和采样方式的无偏性,确保同一个用户每次只能分到同一个桶中,在分桶过程中所选取的user_id需要是一个随机数,这样才能保证桶中的样本是无偏的
如何划分实验组和对照组?
问题:H公司的算法工程师们最近针对系统中的“美国用户”研发了一套全新的视频推荐模型A,而目前正在使用的针对全体用户的推荐模型是B。在正式上线之前,工程师们希望通过A/B测试来验证新推荐模型的效果。下面有三种实验组和对照组的划分方法,请指出哪种划分方法是正确的?
(1)根据user_id(user_id完全随机生成)个位数的奇偶性将用户划分为实验组和对照组,对实验组施以推荐模型A,对照组施以推荐模型B;
(2)将user_id个位数为奇数且为美国用户的作为实验组,其余用户为对照组;
(3)将user_id个位数为奇数且为美国用户的作为实验组,user_id个位数为偶数的用户作为对照组
答:“上述3种A/B测试的划分方法都不正确。我们用包含关系图来说明三种划分方法,如图2.4所示。方法1(见图2.4(a))没有区分是否为美国用户,实验组和对照组的实验结果均有稀释;“方法2(见图2.4(b))的实验组选取无误,并将其余所有用户划分为对照组,导致对照组的结果被稀释;方法3(见图2.4(c))的对照组存在偏差。正确的做法是将所有美国用户根据user_id个位数划分为试验组合对照组(见图2.4(d)),分别施以模型A和B,才能够验证模型A的效果。
“在机器学习中,我们通常把样本分为训练集和测试集,训练集用于训练模型,测试集用于评估模型。在样本划分和模型验证的过程中,存在着不同的抽样方法和验证方法”
需要明确超参数搜索算法一般包括哪几个要素。一是目标函数,即算法需要最大化/最小化的目标;二是搜索范围,一般通过上限和下限来确定;三是算法的其他参数,如搜索步长
在空间上线性可分的两类点,分别向SVM分类的超平面上做投影,这些点在超平面上的投影仍然是线性可分的吗?
答:no!“对于任意线性可分的两组点,它们在SVM分类的超平面上的投影都是线性不可分的”
是否存在一组参数使SVM训练误差为0?
答:一个使用高斯核训练的SVM中,试证明若给定训练集中不存在两个点在同一位置,则存在一组参数 α 1 , . . . , α m , b {α1,...,αm,b} α1,...,αm,b以及参数 γ γ γ使得该SVM的训练误差为0。
训练误差为0的SVM分类器一定存在么?
答:存在
加入松弛变量的SVM的训练误差可以为0吗?
使用SMO算法训练的线性分类器并不一定能得到训练误差为0的模型
比较:
(1)ID3倾向于选择取值较多的特征。因为,信息增益反映的是给定条件以后不确定性减少的程度,特征取值越多就意味着确定性更高,也就是条件熵越小,信息增益越大。这是有问题的,比如学号,DNA,ID的增益一定是最优的,但是泛化很弱。
C4.5是优化后的,通过引入信息增益比,一定程度上对取值比较多的特征进行惩罚,避免ID3出现过拟合的特性,提升决策树的泛化能力
(2) ID3只能处理离散变量,其他两个可以处理连续的。
C4.5处理连续型变量时,通过对数据排序之后找到类别不同的分割线作为切分点,根据切分点把连续属性转换为布尔型,从而将连续型变量转换多个取值区间的离散型变量。而对于CART,由于其构建时每次都会对特征进行二值划分,因此可以很好地适用于连续性变量。
(3)从应用角度,ID3和C4.5只能用于分类任务,而CTRA既可以分类也可以回归
(4)从实现细节和优化角度。“C4.5处理连续型变量时,通过对数据排序之后找到类别不同的分割线作为切分点,根据切分点把连续属性转换为布尔型,从而将连续型变量转换多个取值区间的离散型变量。而对于CART,由于其构建时每次都会对特征进行二值划分,因此可以很好地适用于连续性变量。”
如何定义主成分?从这种定义出发,如何设计目标函数使得降维达到提取主成分的目的?针对这个目标函数,如何对PCA问题进行求解?
答:
(1)对样本数据进行中心化处理。
(2)求样本协方差矩阵。
(3)对协方差矩阵进行特征值分解,将特征值从大到小排列。
(4)取特征值前d大对应的特征向量ω1,ω2,…,ωd,通过以下映射将n维样本映射到d
相比于PCA,LDA可以作为一种有监督的降维算法。在PCA中,算法没有考虑数据的标签(类别),只是把原数据映射到一些方差比较大的方向上而已
根据PCA算法,数据应该映射到方差最大的那个方向,亦即y轴方向。但是,C1,C2两个不同类别的数据就会完全混合在一起,很难区分开。所以,使用PCA算法进行降维后再进行分类的效果会非常差。但是,如果使用LDA算法,数据会映射到x轴方向
最大化的目标对应了一个矩阵的特征值,于是LDA降维变成了一个求矩阵特征向量的问题,投影方向就是特征值对应的特征向量
Fisher LDA相比PCA更善于对有类别信息的数据进行降维处理,但它对数据的分布做了一些很强的假设,例如,每个类数据都是高斯分布、各个类的协方差相等。尽管这些假设在实际中并不一定完全满足,但LDA已被证明是非常有效的一种降维方法。主要是因为线性模型对于噪声的鲁棒性比较好,但由于模型简单,表达能力有一定局限性,我们可以通过引入核函数扩展LDA方法以处理分布较为复杂的数据
数据聚类 and 特征变量关联
选择K个点作为初始质心(随机产生或者从D中选取)
repeat
将每个点分配到最近的质心,形成K个簇
重新计算每个簇的质心
until 簇不发生变化或达到最大迭代次数
由于代价函数(SSE)是非凸函数,所以在运用Kmeans算法时,不能保证收敛到一个全局的最优解,我们得到的一般是一个局部的最优解。
因此,为了取得比较好的效果,我们一般会多跑几次算法(用不同的初始质心),得到多个局部最优解,比较它们的SSE,选取SSE最小的那个。
k均值算法的优缺点是什么?
缺点:
(1)受初值和离群点的影响每次的结果不稳定
(2)结果通常不是全局最优而是局部最优解
(3)无法很好地解决数据簇分布差别比较大的情况(比如一类是另一类样本数量的100倍)
(4)不太适用于离散分类
优点:
对于大数据集,K均值聚类算法相对是可伸缩和高效的,它的计算复杂度是O(NKt)接近于线性,其中N是数据对象的数目,K是聚类的簇数,t是迭代的轮数。尽管算法经常以局部最优结束,但一般情况下达到的局部最优已经可以满足聚类的需求
k均值算法如何调优
(1)数据归一化和离群点处理
(2)合理选择K值
可以尝试不同的K值,并将不同K值所对应的损失函数画成折线,横轴为K的取值,纵轴为误差平方和所定义的损失函数。找这个拐点(K=3)
(3)采用核函数
传统的欧式距离度量方式,使得K均值算法本质上假设了各个数据簇的数据具有一样的先验概率,并呈现球形或者高维球形分布,这种分布在实际生活中并不常见。面对非凸的数据分布形状时,可能需要引入核函数来优化,这时算法又称为核K均值算法,是核聚类方法的一种[6]。核聚类方法的主要思想是通过一个非线性映射,将输入空间中的数据点映射到高位的特征空间中,并在新的特征空间中进行聚类。非线性映射增加了数据点线性可分的概率,从而在经典的聚类算法失效的情况下,通过引入核函数可以达到更为准确的聚类结果
针对k均值算法的缺点,有哪些改进的模型?
-ISODATA算法参数有哪些?
ISODATA算法是一个比较常见的算法,其缺点是需要指定的参数比较多,不仅仅需要一个参考的聚类数量Ko,还需要制定3个阈值。下面介绍ISODATA算法的各个输入参数
(1)预期的聚类中心数目Ko。在ISODATA运行过程中聚类中心数可以变化,Ko是一个用户指定的参考值,该算法的聚类中心数目变动范围也由其决定。具体地,最终输出的聚类中心数目常见范围是从Ko的一半,到两倍Ko。
(2)每个类所要求的最少样本数目Nmin。如果分裂后会导致某个子类别所包含样本数目小于该阈值,就不会对该类别进行分裂操作。
(3)最大方差Sigma。用于控制某个类别中样本的分散程度。当样本的分散程度超过这个阈值时,且分裂后满足(1),进行分裂操作。
(4)两个聚类中心之间所允许最小距离Dmin。如果两个类靠得非常近(即这两“个类别对应聚类中心之间的距离非常小),小于该阈值时,则对这两个类进行合并操作。
也是一种常见的聚类算法,与K均值算法类似,同样使用了EM算法进行迭代计算”,高斯混合模型假设每个簇的数据都是符合高斯分布(又叫正态分布)的,当前数据呈现的分布就是各个簇的高斯分布叠加在一起的结果。
用多个高斯分布函数的线形组合来对数据分布进行拟合。理论上,高斯混合模型可以拟合出任意类型的分布
通常我们并不能直接得到高斯混合模型的参数,而是观察到了一系列数据点,给出一个类别的数量K后,希望求得最佳的K个高斯分模型。因此,高斯混合模型的计算,便成了最佳的均值 μ μ μ,方差 Σ Σ Σ、权重 π π π的寻找,这类问题通常通过最大似然估计来求解,得到非常复杂的凸函数,目标函数是和的对数,难以展开和求偏导
在这种情况下,可以用上一节已经介绍过的EM算法框架来求解该优化问题。EM算法是在最大化目标函数时,先固定一个变量使整体函数变为凸优化函数,求导得到最值,然后利用最优参数更新被固定的变量,进入下一个循环
高斯混合模型与K均值算法的相同点是,它们都是可用于聚类的算法;都需要指定K值;都是使用EM算法来求解;都往往只能收敛于局部最优。而它相比于K均值算法的优点是,可以给出一个样本属于某类的概率是多少;不仅仅可以用于聚类,还可以用于概率密度的估计;并且可以用于生成新的样本点
SOM是无监督学习方法中一类重要方法,可以用作聚类、高维可视化、数据压缩、特征提取等多种用途