Q1: 什么是偏倚(bias)、方差(variable)均衡?
偏倚指的是模型预测值与真实值的差异,是由使用的学习算法的某些错误或过于简单的假设造成的误差。它会导致模型欠拟合,很难有高的预测准确率。
方差指的是不同训练数据训练的模型的预测值之间的差异,它是由于使用的算法模型过于复杂,导致对训练数据的变化十分敏感,这样会导致模型过拟合,使得模型带入了过多的噪音。
任何算法的学习误差都可以分解成偏倚、方差和噪音导致的固定误差。模型越复杂,会降低偏倚增加方差。为了降低整体的误差,我们需要对偏倚方差均衡,使得模型中不会由高偏倚或高方差。
==偏倚就是由于算法或者假设的问题造成的误差,会造成模型的欠拟合;方差就是不同的训练数据造成的预测值间的差异,这是因为算法过于复杂,导致对数据的变化十分敏感,容易过拟合。
==任何算法的学习误差都可以分为偏倚,方差和噪声。模型复杂会降低偏倚增大方差;为了降低整体误差就需要做到偏倚方差均衡。
Q2:监督学习和非监督学习有什么不同?
监督学习需要具有标签(label)的训练数据,比如做分类,你需要先对训练数据做标记,然后才能训练模型将数据分成你说需要的标记类。
而非监督学习则不需要。
==就是原始数据有没有标签的问题
Q3: KNN和k-means聚类由什么不同?
k-Nearest Neighbors 是一种监督学习算法,而k-means 是非监督的。这两种算法看起来很相似,都需要计算样本之间的距离。knn算法需要事先已有标注好的数据,当你需要对未标注的数据进行分类时,统计它附近最近的k个样本,将其划分为样本数最多的类别中。k-means聚类只需要一些未分类的数据点和阀值,算法会逐渐将样本点进行分成族类。
首先KNN是监督的,K-means是无监督的。这就注定了一个是分类,另一个只能是聚类。
KNN就是统计一下距离未知类别样本点的数据,看看这些数据属于哪个类别。
Q4:解释一下ROC曲线的原理
ROC曲线是真正率和假正率在不同的阀值下之间的图形表示关系。通常用作权衡模型的敏感度与模型对一个错误分类报警的概率。
真正率表示:表示正的样本被预测为正占所有正样本的比例。
假正率表示:表示负的样本被预测为正占所有负样本的比例。
(0,0)点表示所有样本都被预测为负,此时阀值很大。
(1,1)点表示所有样本都被预测为正,此时阀值很小。
Q5:定义一下prediction精准率、recall召回率
(准确率是accuracy)
召回率就是Q4中的真正率。
精准率指的是:正样本被预测为正所占所有预测为正样本数的比例
recall:$\frac{TP}{TP+FN} $ precision: T P T P + F P \frac{TP}{TP+FP}TP+FPTP
Q6: 什么是贝叶斯定理,它是如何使用在机器学习中的?
贝叶斯定理会根据一件事发生的先验知识告诉你它后验概率。数学上,它表示为:一个条件样本发生的真正率占真正率和假正率之和的比例,即:
举个例子: 已知某疾病的患病概率为5%,现用某检验方法进行诊断,若患有该病,则有90%的几率检验结果呈阳性。但即使正常人使用该检验方法,也有10%的几率误诊而呈阳性。某人检验结果为阳性,求此人患病的概率。
==这里最好手推一下贝叶斯公式,另外,其原理离不开朴素贝叶斯
贝叶斯定理使一些机器学习算法如:朴素贝叶斯等的理论基础。
Q7:为什么我们要称“朴素“贝叶斯?
因为我们在用到它的时候,有一个很强的假设,现实数据中几乎不会出现的:我们假设特征之间是相互独立,也就是我们计算条件概率时可以简化成它的组件的条件概率乘积。、
==因为它的条件异常苛刻,苛刻到真实中几乎无法实现,那就是特征之间相互独立。
Q8:L1、L2正则之间有什么不同?
L2正则 对应的是加入2范数,使得对权重进行衰减,从而达到惩罚损失函数的目的,防止模型过拟合。保留显著减小损失函数方向上的权重,而对于那些对函数值影响不大的权重使其衰减接近于0。相当于加入一个gaussian prior。
L1正则 对应得失加入1范数,同样可以防止过拟合。它会产生更稀疏的解,即会使得部分权重变为0,达到特征选择的效果。相当于加入了一个laplacean prior。
==首先两者都是为了防止过拟合,L1会产生稀疏解,就是让部分权重为0,完成了特征选择;L2是对特征权重进行衰减,防止模型过拟合,对于那些不重要的,甚至会衰减到0。所以一般用L2不用L1.
Q9:你最喜欢的算法是什么?把它解释一下。
这里我比较想说的是SVM,因为它的数学理论让我觉得很有意思,而且应用广泛,效果不错。先从线性可分讲起,然后是最大间隔原理。什么是支持向量?如何进行常数估计。转化成优化问题,对偶问题,kkt条件,拉格朗日方法求最值等。然后是非线性可分情况,软间隔,进行坐标变化。引入核函数。常见的:多项式核函数、指数核函数、高斯核函数。
Q10:第一类误差和第二类误差有什么区别?
第一类误差指的是假正率,第二类指的是假负率。简单来说,第一类误差意味着假设为真的情况下,作出了拒绝原假设的一种错误推断。第二类误差意味着假设为假的情况下,做出了接受原假设的一种错误判断。
举个例子:第一类误差,你告诉一个男的他怀孕了。第二类误差,你告诉一个已经怀孕的女子,她没怀孕。
==这例子是个什么玩意?第一类就是否定了正确假设,这会是企业少赚点;第二类就是肯定了错误假设,这会使企业亏钱,所以宁愿犯一也不能犯二。
Q11:什么是傅立叶变换?
傅立叶变换指:一个满足某些条件的函数可以表示成三角函数或他们的积分形式的线性组合。
==???
==转化为三角函数和积分形式的一个线性组合(4.21
Q12:概率和似然有什么区别?
概率和似然都是指可能性,但在统计学中,概率和似然有截然不同的用法。概率描述了已知参数时的随机变量的输出结果;似然则用来描述已知随机变量输出结果时,未知参数的可能取值。例如,对于“一枚正反对称的硬币上抛十次”这种事件,我们可以问硬币落地时十次都是正面向上的“概率”是多少;而对于“一枚硬币上抛十次,我们则可以问,这枚硬币正反面对称的“似然”程度是多少。
概率(密度)表达给定θ下样本随机向量X=x的可能性,而似然表达了给定样本X=x下参数θ1(相对于另外的参数θ2)为真实值的可能性。我们总是对随机变量的取值谈概率,而在非贝叶斯统计的角度下,参数是一个实数而非随机变量,所以我们一般不谈一个参数的概率,而说似然。
==上面说的好复杂。。。两个都是估计的意思,概率就是已知总体分布,来估计样本;似然就是已知样本结果,倒推总体的分布参数
例子:
概率:扔下十枚‘匀称’的硬币,问六枚正面的概率。
似然:扔出十枚硬币,出现了六枚正面,问硬币匀称的概率是多少。
Q13:什么是深度学习,它与机器学习算法之间有什么联系?
深度学习是机器学习的一个子领域,它关心的是参照神经学科的理论构建神经网络,使用反向传播对大量未标注或半结构化的数据进行建模。从这个角度看,深度学习可以看成一种非监督学习算法,通过使用神经网络学习数据的表示。
Q14:生成模型与判别模型有什么区别?
生成模型会学习数据的分布;判别模型学习的是不同类型数据之间的区别,不学习数据内部特点。在分类问题上,判别模型会优于生成模型。
判别模型求解的思路是:条件分布------>模型参数后验概率最大------->(似然函数\cdot 参数先验)最大------->最大似然
生成模型的求解思路是:联合分布------->求解类别先验概率和类别条件概率
常见的生成方法有混合高斯模型、朴素贝叶斯法和隐形马尔科夫模型等,常见的判别方法有SVM、LR等
==生成模型会学习数据的分布,求解类别的先验概率和类别条件概率。有混合高斯,朴素贝叶斯,隐马尔可夫之类。
==判别模型就是学习不同数据间的区别。有SVM,LR之类。
Q15:交叉检验如何用在时间序列数据上?
与标准的k-folds 交叉检验不同,数据不是随机分布的,而是具有时序性的。如果模式出现在后期,模型仍然需要选择先前时间的数据,尽管前期对模式无影响。我们可以如下这么做:
fold1:training[1], test[2]
fold2:training[1 2], test[3]
fold3:training[1 2 3], test[4]
fold4:training[1 2 3 4], test[5]
fold5:training[1 2 3 4 5], test[6]
==由于有时间数据,这里就不能用常规的交叉验证
Q16:如何对决策树进行剪枝?
剪枝是决策树发生过拟合后,为了降低模型复杂度,提高模型准确率的一种做法。可以分为自上而下和自下而上两种。常见的方法有:误差降低剪枝(REP)和代价复杂度剪枝(CCP)。
REP简单的来说就是对树的每一个结点进行剪枝,如果剪掉某个结点不会降低模型准确率,那么将其剪掉。这种启发式的做法实际上就是为了最大化准确率。
==剪枝是为了防止过拟合,有误差剪枝和代价剪枝法,前者就是减掉一个节点,如果模型准确度不降就剪掉,降了就撤回。
Q17:模型的精度和模型的性能哪个对你更重要?
许多机器学习的模型会有高的精度,但是预测能力也就是泛化能力较低,如何去理解它们呢?
精度只是模型性能的一部分,有可能是会产生误导的那个。对于具有倾斜的数据集,比如要从大量的金融数据中识别出少量的诈骗数据,一个精度高的模型可能会告诉你没有诈骗,然而这样的模型预测是没有意义的。所以,不要总是把精度当作模型最重要的事。
==精度就是模型在训练集里的预测准确率,性能就是模型在测试集里的预测准确度。
==对于有倾斜的数据集,例如从大量的金融数据集里找到少量的诈骗数据,这样精度就是没有意义的(4.21
Q18:什么是F1数,怎么使用它?
F1数是衡量模型性能的一个指标。它是模型精准率和召回率的加权平均,1表示最好,0表示最差。在分类问题中有时精准率和召回率不会同时都高,那么我们可以使用F1数。
==我记的精准度和召回率的计算公式里,两者的分子都是预测为正的正样本数,分母一个是预测正确,一个是预测为正。两者可能无法同时提高,这是就换F1
Q19:如何处理一个不平衡的数据集?
不平衡的数据集:比如二分类问题中,一类数据有90%,而另一类只有10%。我们可以轻易的得到90%准确率的模型,但是它对第二类的预测值为0。那么我们需要对这样的数据进行处理:
收集更多的数据,使其达到平衡
使用重复采样nz
使用不同的算法
重要的是:你注意到了数据的不平衡导致的问题,以及如何去解决它们。
==采集更多的数据,让其平衡(大概率做不到),使用重复采样。反正不平衡就不能用,例如数据90%为一类,那我分类器直接判定所以的都是一类都能拿到90%的正确率。
Q20:什么时候你应该使用分类而不是回归?
分类会产生离散的数值,使得数据严格的分为不同类。回归会得到连续的值,使你更好的区分独立点之间的区别。当你需要知道你的数据明确的属于那些类时你可以用分类。
Q21:举个例子,说明使用集成学习会很有用。
集成学习通过组合一些基学习算法来优化得到更好的预测性能,通常可以防止模型的过拟合使模型更具有鲁棒性。
你可以列举一些集成学习的例子,如bagging、boosting、stacking等,并且了解他们是如何增加模型预测能力的。
Q22:你如何确保你的模型没有过拟合?
过度拟合的训练数据以及数据携带的噪音,对于测试数据会带来不确定的推测。有如下三种方法避免过拟合:
保持模型尽可能地简单:通过考量较少的变量和参数来减少方差,达到数据中消除部分噪音的效果。
使用交叉检验的手段如:k-folds cross-validation。
使用正则化的技术如:LASSO方法来惩罚模型中可能导致过拟合的参数。
==三个方法,第一,只要你的模型足够简单,那拟合就追不上你,更别提过拟合了。第二交叉验证。第三正则,正则或者dropout在神经网络里去过拟合还是很常用的。
==另外还有第四个,就是残差网络,这个也是可以防过拟合的,深度交叉网络,多头自注意力机制里面都出现过这个。
Q23:如何评估你的机器学习模型的有效性?
首先你需要将数据分成训练集和测试集,或者使用给交叉验证方法分割。然后你需要选择度量模型表现的metrics,如F1数、准确率、混淆矩阵等。更重要的是,根据实际情况你需要理解模型度量的轻微差别,以便于选择正确的度量标准。
Q24:如何评估一个LR model?
Q23的一个子问题。首先你需要知道LR的目标是什么?(分类或预测)然后通过举一些例子来说明。
==直接说一下各类模型的评价指标不好吗?搁着还分两个题
回归:MSE,R方
分类:准确率,召回率,AUC
聚类:SI轮廓系数,CH指标,SSE
Q25:什么是核技巧,有什么用处?
核技巧使用核函数,确保在高维空间不需要明确计算点的坐标,而是计算数据的特征空间中的内积。这使其具有一个很有用的属性:更容易的计算高维空间中点的坐标。许多算法都可以表示称这样的内积形式,使用核技巧可以保证低维数据在高维空间中运用算法进行计算。
==这里应该是专指支持向量机吧
==用来确保在高维空间不需要明确的计算点的坐标,而是计算数据在特征空间中的内积。简单说就是使用核技巧可以保证低维数据在高维空间中进行计算。常用的核函数有高斯核函数,指数核函数和多项式核函数(4.21