算法基础

2019-10-05  本文已影响0人  DaiMorph

1、数据量比较大的时候,svm和lr哪个更快?

svm适用于相对稀疏的数据,所以xgb的效果比svm要好。面试官也说嗯,确实树模型适用于稠密数据。
lr快
smo算法每次选一对乘子优化,固定其他乘子,是一个二次规划问题,选择乘子也是启发式算法,这一步也导致了整个凸优化的svm寻解过程了变成了近凸优化,在乘子的选择上由于初始不知道那些是支持向量,所以乘子不好选择(启发式方法选的是违背kkt条件最大的一对点),实际上你还得去训练那些非支持向量的数据,速度提不起来。
svm用都用了,不给整个核函数吗?这又是一步较为耗时的操作。

lr就不同了,同样是凸优化的模型,lr只有一个线性组合和sigmoid,梯度下降时,每个样本训练复杂度也就和样本特征维数有关,复杂度是线性的。最为关键的是,lr可以做到样本的并行和w求解的并行。矩阵运算是可以拆解的,AB看作A对B的行操作,也可以看作B对A的列操作,这样矩阵的运算就可以分解为独立的向量操作,轻松实现并行化。另外,lr也可以对数据进行切分后并行化操作,但主要应该还是梯度下降的并行,lr的实际训练速度要比看起来快很多。

2.lr为什么不用mse

https://blog.csdn.net/liuweiyuxiang/article/details/100812623
lr用mse时求导会出现sigmoid的导数,可能导致模型收敛很慢;使用logloss的时候,不会出现sigmoid的导数

3.梯度角度解释l1

l1梯度向0跑,右边-1左边+1,两边都朝着0收敛,但是l1梯度绝对值一直是1,所以容易收敛到0不动,l2越靠近0梯度绝对值越小,容易到0附近不动。

14 ID3\C4.5等基本树 是二叉树还是多叉树 被切过的特征还会再切吗

离散特征(离散数量>2)是多叉分类,连续是二叉分裂,连续可以在切,离散不可以(当时回答的是可以再切,被提示后意识到不可再切,说了自己的matlab实现,先做集合,遍历特征,保存最大的信息增益位置,然后对特征切分,切分后把这个特征从集合中删掉,所以离散特征切完就不在切了,还好反应过来了,连续性特征可以再切,详情可以去看看别人的ID3树和其他树的源代码)

15 BN是什么?BN论文对BN抑制过拟合的解释:

1、预白化,训练快,sigmoid两端饱和梯度小,BN可以缩放到线性区2、分布学习,NN深了之后每一层分布都会偏移,BN压缩分布使得各层分布趋近于一致3、BN可以看做一定程度的数据扩充,数据做了抖动处理。注意BN的训练过程要记得,当前批次归一化,预测的时候是全部数据,而且BN层有两个超参数要优化)

在训练中,BN的使用使得一个mini-batch中的所有样本都被关联在了一起,因此网络不会从某一个训练样本中生成确定的结果。
这句话什么意思呢?意思就是同样一个样本的输出不再仅仅取决于样本本身,也取决于跟这个样本属于同一个mini-batch的其它样本。同一个样本跟不同的样本组成一个mini-batch,它们的输出是不同的(仅限于训练阶段,在inference阶段是没有这种情况的)。我把这个理解成一种数据增强:同样一个样本在超平面上被拉扯,每次拉扯的方向的大小均有不同。不同于数据增强的是,这种拉扯是贯穿数据流过神经网络的整个过程的,意味着神经网络每一层的输入都被数据增强处理了。

16 GBDT和RF哪个深

RF深。说了boost和bagging的思想。boost使用低方差学习器去拟合偏差,所以XBG和LGB有树深的参数设置,RF是拟合方差,对样本切对特征切,构造多样性样本集合,每棵树甚至不剪枝。

17 XGB特征重要性程度是怎么判断的?

gain 增益 意味着相应的特征对通过对模型中的每个树采取每个特征的贡献而计算出的模型的相对贡献。与其他特征相比,此度量值的较高值意味着它对于生成预测更为重要。
cover覆盖度量 指的是与此功能相关的观测的相对数量。例如,如果您有100个观察值,4个特征和3棵树,并且假设特征1分别用于决策树1,树2和树3中10个,5个和2个观察值的叶结点;那么该度量将计算此功能的覆盖范围为10+5+2 = 17个观测值。这将针对所有决策树结点进行计算,并将17个结点占总的百分比表示所有功能的覆盖指标。
freq 频率(频率) 是表示特定特征在模型树中发生的相对次数的百分比。

18 XGB很容易理解它的回归和二分类,如何理解多分类呢?

谈笑中度过,一开始回答的label encode ,用onehot+softmax,但是每棵树如何是拟合softmax前一步呢。这个我确实不知道,面试官提示我说三分类,构造100棵树还是300棵,我就意识到了,回答原以为是100棵。
面试官说构造三百棵树,拟合三分类,再softmax。
(onehot之后,输入标签是一个向量,对向量中每一个预测点集成一群树)

19 造等概率1-10,分析调用1-7的次数期望

7进制,调用两次产生0-48,然后截掉40和40以上的再//4+1

`def` `rand7()`

`def` `rand10():`

`x ``=` `7``*``(rand7()``-``1``)``+``rand7()``-``1`

`while` `x>``=``40``:`

`x ``=` `7``*``(rand7()``-``1``)``+``rand7()``-``1`

`return` `1``+``x``/``/``4`

期望不好算,是个数等比列求和,然后我就口算的近似值2.5n

20 如何衡量用户对搜索结果的满意程度?**

TCP连接计时,根据场景过滤计时噪声,比如视频场景用视频长度的百分位计时,秒退的有效性等等。

如何解决新搜索结果的推送?
新搜索结果肯定历史推送为0,没有任何参考,但我们不知道他质量怎么样。于是把他随机推送一小部分用户,在推广。再推广时注意刷点击率现象,过滤一下。

21 BN、Dropout

(Dropout可以作为训练深度神经网络的一种trick供选择。在每个训练批次中,通过忽略一半的特征检测器(让一半的隐层节点值为0,当然这个“一半”是超参数,自己设),可以明显地减少过拟合现象。这种方式可以减少特征检测器(隐层节点)间的相互作用,检测器相互作用是指某些检测器依赖其他检测器才能发挥作用。
Dropout说的简单一点就是:我们在前向传播的时候,让某个神经元的激活值以一定的概率p停止工作,这样可以使模型泛化性更强,因为它不会太依赖某些局部的特征。
其实就是个Bagging策略,构造子网组合。

Dropout为什么预防过拟合?
从bagging的角度答的,NN是偏差小方差大的学习器,适合用bagging,构造子网络在预测的时候组合,相当于构造了学习的多样性,实现了bagging。

22 为什么不用先用LR呀

用LR做做二分类,做做stack还挺好的,但LR总感觉表达能力不够,特征比较粗的话效果可能一般。
(后来觉得LR还挺厉害的,详情可以见总结的一些基础机器学习知识那里,LR可解释性、速度都很快,还是凸优化,用来衡量特征做得好不好还是可以的)

23 连续性特征也能交叉啊为什么不交叉**

离散化就是数据分桶,我这里按百分位分桶,百分位分桶比较均匀,百分位是数据排序的百分位,而不是区间的百分位。
连续性特征交叉,连续性特征映射成离散特征后,可以和连续性特征一起送到嵌入层里。

25 L1、L2不同?L1为什么能稀疏?

从数学分布讲了,一个是拉普拉斯分布 一个是高斯分布;讲了图解为什么L1能稀疏,一个圈一个菱形,容易交在轴上。工程上讲了,L1的近似求导,区间内0区间外优化。然后L2是直接求导比较简单。

26 哪些学习器是凸优的呀?

LR sigmoid logloss 凸优 。线性回归,最小二乘凸优。SVM凸优。NN肯定不凸优,因为往往收敛到鞍点。PCA无数学解,但是利用特征值去做反而得到最优解。
(注意sigmoid+平方损失不是凸优化)

27 特征重要性怎么做,例如特征组合和删除

特征组合用onehot、交叉、EMBEDING。组合的话要看实际分布,讲了自己构造过的一个和标签有线性关系的组合,说自己用的是遍历的方法,用两两数学关系构造新特征,看和标签的线性关系。

28 这个Embedding映射了隐向量,你觉得是CNN交叉好呢 还是隐向量好呢

我的回答偏向于场景,编码领域内的一个特点:只有局部相关,时不变。所以用CNN,做全局相关的Embedding反而不好。推荐里面特征离散化后稀疏,而且特征间本身可能具有高阶交互信息,所以映射成隐向量效果会较好,如果是推荐,我建议用隐向量而不是CNN,其实这是由场景决定的,是数据的特点决定选用什么学习器,使用什么网络。(我还介绍了图像为什么ResNet更好,但是编码里我的两层极限调参网络性能超过了残差网络,其实都是场景决定的)

33 视频二分类,算精准率,召回率,准确率。**

[准确率(accuracy),精确率(Precision),召回率(Recall)和综合评价指标(F1-Measure)
召回率太重要了,因为这种我们可以虚警但是不能漏警(猜猜检测的啥),所以精确率不高可以接受。

如何提高精准率呢?

调分类阈值+大,但是召回率降低就回退。

如果不改动现有模型呢?

我说一般我会用二分类trick,但是这种不知道在二分类行不行,应该不行吧,不如人工查。

面试官反馈说人工肯定要查的,(我已经意识到自己的上一句话不妥了,但是现在是对方的回合),面试官说了人工查的重要性和必要性,然后说这一步提高精准率就是为了减少人力,然人从大量分类错的样本解放出来,可以用二分类,对分错的样本和负样本再二分类。我表示同意,说这个Trick不错。面试说,对啊,不就是个Trick么。

36 svm的为什么要 转化为对偶问题求解

主要是降低问题的复杂度,设想f(x,y)有两个变量,拉个朗日函数L=f(x,y)-p*h(x,y)有三个变量,你求偏导数要之后,要求解一个三元(可能是高次)方程,问题比较复杂,转化为对偶问题后,你只需要求解一个二元方程,和一个一元方程,使复杂问题简单化。
svm的目标函数是求解一个凸优化问题,在凸优化中,kkt点,局部极小点,全局极小点三者等价

核函数怎么选

核技巧我们知道,其目的是希望通过将输入空间内线性不可分的数据映射到一个高纬的特征空间内使得数据在特征空间内是可分的
线性核,主要用于线性可分的情况
多项式核函数可以实现将低维的输入空间映射到高纬的特征空间,但是多项式核函数的参数多,当多项式的阶数比较高的时候,核矩阵的元素值将趋于无穷大或者无穷小,计算复杂度会大到无法计算。
高斯径向基函数是一种局部性强的核函数,其可以将一个样本映射到一个更高维的空间内,该核函数是应用最广的一个,无论大样本还是小样本都有比较好的性能,而且其相对于多项式核函数参数要少,因此大多数情况下在不知道用什么核函数的时候,优先使用高斯核函数。
在选用核函数的时候,如果我们对我们的数据有一定的先验知识,就利用先验来选择符合数据分布的核函数;如果不知道的话,通常使用交叉验证的方法,来试用不同的核函数,误差最下的即为效果最好的核函数,或者也可以将多个核函数结合起来,形成混合核函数。在吴恩达的课上,也曾经给出过一系列的选择核函数的方法:
如果特征的数量大到和样本数量差不多,则选用LR或者线性核的SVM;
如果特征的数量小,样本的数量正常,则选用SVM+高斯核函数;
如果特征的数量小,而样本的数量很大,则需要手工添加一些特征从而变成第一种情况

核函数映射到高维空间,那么计算量会不会显著增大?

不会,核心计算还是在低维空间算内积

SVM跟AdaBoost有什么联系

都是分类
SVM仅取决于支持向量,那么AdaBoost呢?AdaBoost更关注之前被分错的样本,所以它们的共同点在于都不是一视同仁的看待所有样本。

PCA推导

SVD 主要作用

A=UΣV^T F范数下的最优近似

特征选择方法

特征是否发散:如果一个特征不发散,例如方差接近于0,也就是说样本在这个特征上基本上没有差异,这个特征对于样本的区分并没有什么用。
方差选择法
  使用方差选择法,先要计算各个特征的方差,然后根据阈值,选择方差大于阈值的特征
相关系数法
  使用相关系数法,先要计算各个特征对目标值的相关系数以及相关系数person相关系数
卡方检验
  经典的卡方检验是检验定性自变量对定性因变量的相关性,这个统计量的含义简而言之就是自变量对因变量的相关性
互信息法
  经典的互信息也是评价定性自变量对定性因变量的相关性的
树模型输出特征重要性

特征共线性问题

产生原因:
(1)没有足够多的样本数据
(2)选取的样本之间本身就客观存在共线性关系
(3)其他因素导致:数据采集所采用的方法,模型的设定,一个过度决定的模型

LR共线性:

LR模型中特征的共线性不会影响模型的最优解,但是会影响系数的稳定性。
所以LR模型中特征的共线性不会影响模型的最优解,但是会使得系数不稳定,从而解释性变差。

为什么要删除共线性特征

特征权重的绝对值可以用来衡量特征的重要性吗

不一定,首先特征可能没有归一化,系数收到量级的影响,(1米=1cm * 100)
其次,特征间可能存在共线性,导致特征系数不稳定,可解释性差。

为什么特征离散化

下面答案有些不是LR进行离散化特有的原因,而是离散化本身比较general的原因
离散特征可以one-hot, 而稀疏向量内积运算速度快,结果易存储
离散后数据鲁棒性强,不会因为数据发生一点小的变动而表现出完全不同的性质,使模型更稳定
离散后可以进行特征交叉,引入非线性特征
增强模型的表达能力,离散化后,原来的一个特征变成N个特征,加大了模型的拟合能力
特征离散后相当于简化了特征,一定程度上减轻了过拟合

最小二乘法

最小二乘使所有点到曲线的方差最小.利用最小二乘对扫描线上的所有数据点进行拟合,得到一条样条曲线,然后逐点计算每一个点Pi到样条曲线的欧拉距离ei(即点到曲线的最短距离),ε是距离的阈值,事先给定,如果ei≥ε,则将该点判断为噪点.
该方法最重要的事先拟合样条曲线。
确定曲线类型的方法:根据已知数据点类型初步确定曲线类型,经验观察初步尝试拟合函数类型.
曲线类型选择:直线,二次曲线,三次曲线,对数函数拟合,幂函数拟合,直至方差最小。
直线:f(X1) = aX1 + b;
二次曲线:f(X1) = aX12 + bX1 + c;
对数函数:f(X1) = a + b log(X1);
幂函数: f(X1) = aX1b


image.png

生成式与判别式

生成式模型学习到的是数据的联合概率分布P(X, Y),进而根据联合概率分布与边缘分布的关系求出条件概率分布.朴素贝叶斯法、隐马尔科夫模型、混合高斯模型
判别式模型是根据数据直接学习出一个决策函数f(X)或是一个条件概率分布P(Y/X)。判别方法关心的是对给定的输入X,应该预测什么样的输出Y。
典型的判别式模型:
KNN,感知机,决策树,逻辑回归,最大熵模型,SVM,提升方法,条件随机场,神经网络

KNN算法模型的复杂度主要是体现在哪儿?什么情况下会造成过拟合?

k临近算法的模型复杂度体现在k值上;k值较小容易造成过拟合,k值较大容易造成欠拟合。
KNN时间复杂度O(N*k)k为特征数目
时间复杂度优化,使用kdtree,KD树的特性适合使用欧氏距离。

KDTree
基本思想是,若A点距离B点非常远,B点距离C点非常近, 可知A点与C点很遥远,不需要明确计算它们的距离。 通过这样的方式,近邻搜索的计算成本可以降低为O[DNlog(N)]或更低。 这是对于暴力搜索在大样本数N中表现的显著改善。KD 树的构造非常快,对于低维度 (D<20) 近邻搜索也非常快, 当D增长到很大时,效率变低: 这就是所谓的 “维度灾难” 的一种体现。
KD 树是一个二叉树结构,它沿着数据轴递归地划分参数空间,将其划分为嵌入数据点的嵌套的各向异性区域。 KD 树的构造非常快:因为只需沿数据轴执行分区, 无需计算D-dimensional 距离。 一旦构建完成, 查询点的最近邻距离计算复杂度仅为O[log(N)]。 虽然 KD 树的方法对于低维度 (D<20) 近邻搜索非常快, 当D增长到很大时, 效率变低。

KNN做回归

取平均值,中位数,最大值

SVM和神经网络

线性SVM的计算部分和一个单层神经网络一样,就是一个矩阵乘积
处理非线性数据,SVM和神经网络走了两条不同的道路:神经网络通过多个隐层的方法来实现非线性的函数,有一些理论支持(比如说带隐层的神经网络可以模拟任何函数),但是目前而言还不是非常完备;SVM则采用了kernel trick的方法,这个在理论上面比较完备(RKHS,简单地说就是一个泛函的线性空间)。两者各有好坏,神经网络最近的好处是网络设计可以很灵活,但是老被人说跳大神;SVM的理论的确漂亮,但是kernel设计不是那么容易

SVM会过拟合吗

由于SVM是一个凸优化问题,所以求得的解一定是全局最优而不是局部最优。
在完全线性可分的数据集下,支持向量机没有过拟合问题,因为它的解是唯一的。而在非线性可分的情况下,虽然SVM的目标函数自带正则项,但是由于允许误分类的存在引入了核函数,SVM仍会有过拟合的问题:
实际中应用的SVM模型都是核函数+软间隔的支持向量机,那么,有以下原因导致SVM过拟合:
1)选择的核函数过于powerful
2)要求的间隔过大,即在软间隔支持向量机中C的参数过大时,表示比较重视间隔,坚持要数据完全分离,当C趋于无穷大时,相当于硬间隔SVM

  1. 异常点(通过松弛变量的svm可以解决这个)

L1L2为什么可以防止过拟合

给参数先验分布降低模型能力
L2正则引入高斯先验,会让w变小
L1正则引入拉普拉斯先验,拉普拉斯先验使参数为0的可能性极大。当w为正时,更新后的w变小。当w为负时,更新后的w变大——因此它的效果就是让w往0靠,使网络中的权重尽可能为0

MSE 交叉熵公式

MSE
交叉熵

用一些特征判断用户会不会点击某商品,用cart好还是c4.5好

考虑到类别不平衡和连续值的特征,用cart会比较好

LR和SVM区别

同:
第一,LR和SVM都是分类算法。
第二,如果不考虑核函数,LR和SVM都是线性分类算法,也就是说他们的分类决策面都是线性的。
第三,LR和SVM都是监督学习算法。
第四,LR和SVM都是判别模型。

异:
LR是参数模型,SVM是非参数模型
第一,本质上是其loss function不同
交叉熵损失和hinge损失
不同的loss function代表了不同的假设前提,也就代表了不同的分类原理,也就代表了一切!!!简单来说,​逻辑回归极大似然估计的方法估计出参数的值;支持向量机​基于几何间隔最大化原理
第二,支持向量机只考虑局部的边界线附近的点,而逻辑回归考虑全局(远离的点对边界线的确定也起作用)。
影响SVM决策面的样本点只有少数的结构支持向量,当在支持向量外添加或减少任何样本点对分类决策面没有任何影响;而在LR中,每个样本点都会影响决策面的结果。线性SVM不直接依赖于数据分布,分类平面不受一类点影响;LR则受所有数据点的影响,如果数据不同类别strongly unbalance,一般需要先对数据做balancing。​
第三,在解决非线性问题时,支持向量机采用核函数的机制,而LR通常不采用核函数的方法。
​这个问题理解起来非常简单。分类模型的结果就是计算决策面,模型训练的过程就是决策面的计算过程。在计算决策面时,SVM算法里只有少数几个代表支持向量的样本参与了计算,也就是只有少数几个样本需要参与核计算(即kernal machine解的系数是稀疏的)。然而,LR算法里,每个样本点都必须参与决策面的计算过程,也就是说,假设我们在LR里也运用核函数的原理,那么每个样本点都必须参与核计算,这带来的计算复杂度是相当高的。所以,在具体应用时,LR很少运用核函数机制。​
第四,​线性SVM依赖数据表达的距离测度,所以需要对数据先做normalization,LR不受其影响。
第五,SVM的损失函数就自带正则!!!(损失函数中的1/2||w||^2项),这就是为什么SVM是结构风险最小化算法的原因!!!而LR必须另外在损失函数上添加正则项!!!**
以前一直不理解为什么SVM叫做结构风险最小化算法,所谓结构风险最小化,意思就是在训练误差和模型复杂度之间寻求平衡,防止过拟合,从而达到真实误差的最小化。未达到结构风险最小化的目的,最常用的方法就是添加正则项。

什么时候用svm

如果特征的数量大到和样本数量差不多,则选用LR或者线性核的SVM;
如果特征的数量小,样本的数量正常,则选用SVM+高斯核函数;
如果特征的数量小,而样本的数量很大,则需要手工添加一些特征从而变成第一种情况

stacking和blending区别

stacking是一种分层模型集成框架。以两层为例,第一层由多个基学习器组成,其输入为原始训练集,第二层的模型则是以第一层基学习器的输出作为特征加入训练集进行再训练,从而得到完整的stacking模型。


image

以5折划分为例,我们将原始训练集分为5折,分别记为fold1、fold2、fold3、fold4和fold5。此时我们使用fold2-fold5的数据来训练基模型1,并对fold1进行预测,该预测值即作为基模型1对fold1生成的元特征;同样地,使用fold1、fold3-fold5的数据来训练基模型1,并对fold2进行预测,该预测值即作为基模型1对fold2生成的元特征;以此类推,得到基模型1对整个原始训练集生成的元特征。同样地,对其他基模型也采用相同的方法生成元特征,从而构成用于第二层模型(下记为元模型,meta model)训练的完整元特征集。对于测试集,我们可以在每次基模型训练好时预测,再将预测值做均值处理;也可以将基模型拟合全部的训练集之后再对测试集进行预测。
需要注意的是,在生成第二层特征的时候,各个基模型要采用相同的Kfold,这样得到的元特征的每一折(对应于之前的K折划分)都将不会泄露进该折数据的目标值信息 ,从而尽可能的降低过拟合的风险。虽然如此,实际上我们得到的元特征还是存在一定程度上的信息泄露,比如我们在预测第二折的时候,是利用了第一折的目标值信息用于训练基模型的,也就是说第一折的目标值信息杂糅在对第二折进行预测的基模型里。但是,实践中,这种程度的信息泄露所造成的过拟合程度很小。

Blending与Stacking大致相同,只是Blending的主要区别在于训练集不是通过K-Fold的CV策略来获得预测值从而生成第二阶段模型的特征,而是建立一个Holdout集,例如10%的训练数据,第二阶段的stacker模型就基于第一阶段模型对这10%训练数据的预测值进行拟合。说白了,就是把Stacking流程中的K-Fold CV 改成 HoldOut CV。
Blending的优点在于:
1.比stacking简单(因为不用进行k次的交叉验证来获得stacker feature)
2.避开了一个信息泄露问题:generlizers和stacker使用了不一样的数据集

为什么有的模型需要归一化,有的不需要?

1)归一化后加快了梯度下降求最优解的速度;
2)归一化有可能提高精度。
概率模型(树形模型)不需要归一化,因为它们不关心变量的值,而是关心变量的分布和变量之间的条件概率,如决策树、RF。而像Adaboost、SVM、LR(带正则项)、Knn、KMeans之类的最优化问题就需要归一化。基于距离的都需要归一化

常见损失函数

1 01损失
2 绝对值损失
3 平方损失
4 对数损失 经典的对数损失函数包括entropy和softmax
5 指数损失
6 合页损失 主要用在svm中

常见优化算法

SGD BGD moumentum adgrad adam

recall precision

precision:表征分类器的分类效果(查准效果)
recall:表征某个类的召回(查全)效果
f1值:即用来衡量precision和recall的值,它是这个两个值的调和均值 f1=p*r/(p+r)

xgboost为什么用泰勒展开,是有放回选择特征吗

实际上使用二阶泰勒展开是为了xgboost能够【自定义loss function】,任何损失函数只要二阶可导即能【复用】陈大佬所做的关于最小二乘法的任何推导
XGBoost利用梯度优化模型算法, 样本是不放回的,想象一个样本连续重复抽出,梯度来回踏步,这显然不利于收敛。

贝叶斯公式,实际如何计算,如何解决精度问题。

降维有哪些(LDA和PCA),说一下PCA的原理,PCA和LDA的区别

PCA为非监督降维,LDA为有监督降维
PCA希望投影后的数据方差尽可能的大(最大可分性),因为其假设方差越多,则所包含的信息越多;而LDA则希望投影后相同类别的组内方差小,而组间方差大。LDA能合理运用标签信息,使得投影后的维度具有判别性,不同类别的数据尽可能的分开。

支撑向量越多越好还是越少越好

比如在二维特征空间,一般需要3个支持向量确定分割面
结论:在n维特征中,线性svm一般会产生n+1个支持向量
可认为,如果训练出来的svm有d+1个支持向量,则使用核会将数据映射到d维空间,使其线性可分。
更高的维度意味着更高的复杂度,所以支持向量越多意味模型越复杂,有过拟合风险。
性能一致的情况下,更少的支持向量可能是更好的,但是不绝对,可以做cross validation验证

基学习器,为什么gbdt用的是树,我提到了CART树,面试官问可以用别的树吗,这个我不知道……还有gbdt可以用线性的基学习器吗?为什么xgboost可以用线性的基学习器?

GBDT不能用线性的,关键点在于没有L1、L2正则项,可以与lasso回归与岭回归结合。xgboost可以,因为它是有正则项的。
传统GBDT以CART作为基分类器,xgboost还支持线性分类器,这个时候xgboost相当于带L1和L2正则化项的逻辑斯蒂回归(分类问题)或者线性回归(回归问题)

树模型做回归

决策树每个叶节点依照训练数据表现的概率倾向决定了其最终的预测类别;而回归树的叶节点却是一个个具体的值,从预测值连续这个意义上严格来讲,回归树不能称为回归算法。因为回归树的叶节点返回的是一团训练数据的均值,而不是具体的连续的值。

kd树

embedding好处

降低维度减少计算
特征交叉提升表达能力
在 embedding 空间中查找最近邻,这可以很好的用于根据用户的兴趣来进行推荐。
作为监督性学习任务的输入。
用于可视化不同离散变量之间的关系。

为什么用embedding不用onehot

在深度神经网络中你如果直接接入 onehot,那么你需要训练的参数维度也是爆炸式增长
onehot稀疏,可能会导致梯度消失

决策树回归和分类不同

分类树:id3,c4.5,cart
回归树用平方误差和最小。遍历所有特征的所有取值,找到某个特征的某个取值,使得预测误差的平方和最小。这其实并不容易,所以很多的算法采取的是贪心算法。由于目标函数是凸函数,可以采用关于梯度的算法,以此来提高效率,当然这也损失了精确度。

激活函数比较

RF的属性采样时有放回还是不放回

样本属性的随机无放回的抽样

lightgbm对缺失值的处理方法;

lightGBM通过默认方式处理缺失值,可以通过设置use_missing = false 来使其无效。
lightGBM通过默认的方式用NA(NaN)去表示缺失值,可以通过设置zero_as_missing = true 将其变为0

kmeans的K值确定方法

https://www.biaodianfu.com/k-means-choose-k.html

给定一个矩阵,在矩阵中选取一行,求取某一行某个数附近的5个数的值,需要用哪种数据结构

KD树

KD树的实现描述

依次取各个坐标轴,循环取,作为切分平面
取数据的中点作为切分点

logistic为什么用sigmoid函数

伯努利分布属于指数分布族,满足广义线性模型,推出sigmoid函数
https://blog.csdn.net/baidu_15238925/article/details/81291247

贝叶斯公式的先验和后验概率

image

P(y|x)是后验概率,一般是我们求解的目标。
P(x|y)是条件概率,又叫似然概率,一般是通过历史数据统计得到。一般不把它叫做先验概率,但从定义上也符合先验定义。
P(y) 是先验概率,一般都是人主观给出的。贝叶斯中的先验概率一般特指它。
P(x)其实也是先验概率,只是在贝叶斯的很多应用中不重要(因为只要最大后验不求绝对值),需要时往往用全概率公式计算得到。

ID3算法复杂度,怎么优化

m样本个数,n特征数目,p特征取值
复杂度mnp

决策树怎么处理缺失值

gbdt中为什么有时候用梯度来代替残差计算

残差是loss为mse时求导的特殊情况,都是基于梯度的,只不过均方差求导之后变残差了。也可以直接最小化这个loss,但是梯度可以让我们最小化更多更复杂的loss

对于特征值缺失的情况,用lr和rf来预测缺失值,哪种方法更好

9.svm smo算法讲解一下、
DBSCAN的计算原理,如何确定噪声点

xgboost怎么处理缺失值

xgboost可以自动学习出缺失值特征分裂的方向,初始的时候给了一个默认的分裂方向

上一篇下一篇

猜你喜欢

热点阅读