机器学习与数据挖掘机器学习与数据挖掘机器学习

面试经验(机器学习)

2018-05-18  本文已影响363人  至极L

逻辑回归

范数是衡量某个向量空间(或矩阵)中的每个向量以长度或大小。范数的一般化定义:对实数p>=1, 范数定义如下:



范数公式定义
L1范数:表示某个向量中所有元素绝对值的和。
L2范数: 表示某个向量中所有元素平方和再开根, 也就是欧几里得距离公式。

L1追求的是稀疏,可以理解为变量个数少,L2主要用于处理过拟合问题,让每个权重参数值小?!
L1范数是指向量中各个元素绝对值之和,用于特征选择;

L2范数 是指向量各元素的平方和然后求平方根,用于 防止过拟合,提升模型的泛化能力

L1与L2区别:使用L1可以得到稀疏的权值;用L2可以得到平滑的权值,L2能加速训练?!

如下图:L1就是按绝对值函数的“坡”下降的,而L2是按二次函数的“坡”下降。所以实际上在0附近,L1的下降速度比L2的下降速度要快。所以会非常快得降到0。不过我觉得这里解释的不太中肯,当然了也不知道是不是自己理解的问题。


我们在建模预测 Y|X,并认为 Y|X 服从bernoulli distribution,所以我们只需要知道 P(Y|X);其次我们需要一个线性模型,所以 P(Y|X) = f(wx)。接下来我们就只需要知道 f 是什么就行了。而我们可以通过最大熵原则推出的这个 f,就是sigmoid。

- LR和SVM有什么区别

第一,本质上是其loss function不同。

image.png 逻辑回归的损失函数
image.png 支持向量机的目标函数
不同的loss function代表了不同的假设前提,也就代表了不同的分类原理,也就代表了一切!!!简单来说,​逻辑回归方法基于概率理论,假设样本为1的概率可以用sigmoid函数来表示,然后通过极大似然估计的方法估计出参数的值,具体细节参考 参考2。支持向量机​基于几何间隔最大化原理,认为存在最大几何间隔的分类面为最优分类面,具体细节参考 参考2
第二,支持向量机只考虑局部的边界线附近的点,而逻辑回归考虑全局(远离的点对边界线的确定也起作用)。
当​你读完上面两个网址的内容,深入了解了LR和SVM的原理过后,会发现影响SVM决策面的样本点只有少数的结构支持向量,当在支持向量外添加或减少任何样本点对分类决策面没有任何影响;而在LR中,每个样本点都会影响决策面的结果。
第三,在解决非线性问题时,支持向量机采用核函数的机制,而LR通常不采用核函数的方法。
第四,​线性SVM依赖数据表达的距离测度,所以需要对数据先做normalization,LR不受其影响。
第五,SVM的损失函数就自带正则!!!(损失函数中的1/2||w||^2项),这就是为什么SVM是结构风险最小化算法的原因!!!而LR必须另外在损失函数上添加正则项!!!

有关Liblinear和Libsvm各自的优势可以归纳如下:
1.libsvm用来就解决通用典型的分类问题
2.liblinear主要为大规模数据的线性模型设计

最大释然函数

取log后就成了正则化(不确定没查到)

不是,表示可能性,值越大可能性越大(因为用最大似然函数估计逻辑回归参数,其表示事件发生的最大可能性)

优点:
是求解无约束优化问题简单
缺点:
靠近极小值时收敛速度减慢。
直线搜索时可能会产生一些问题。
可能会“之字形”地下降。

-牛顿法- 原理和适用场景,有什么缺点,如何改进(拟牛顿法)

SVM

题转化为对偶问题求解
具体做法是:(1)将约束融入目标函数中,得到拉格朗日函数;(2)然后对模型参数w和b求偏导,并令之为零;(3)得到w后,将其带入拉格朗日函数中,消去模型参数w和b;(4)这样就得到了原问题的对偶问题,对偶问题和原问题等价,同时对偶问题也是一个凸优化问题,使用SMO算法求解拉格朗日乘子;(5)得到拉格朗日乘子后,进一步可以得到模型参数w和b,也就得到了我们想要的划分超平面。

聚类

(划分法、层次法、基于密度方法、基于网格方法、基于模型方法)

法1:(轮廓系数)在实际应用中,由于Kmean一般作为数据预处理,或者用于辅助分聚类贴标签。所以k一般不会设置很大。可以通过枚举,令k从2到一个固定值如10,在每个k值上重复运行数次kmeans(避免局部最优解),并计算当前k的平均轮廓系数,最后选取轮廓系数最大的值对应的k作为最终的集群数目。
法2:(Calinski-Harabasz准则)


其中SSB是类间方差, ,m为所有点的中心点,mi为某类的中心点;
SSW是类内方差,
(N-k)/(k-1)是复杂度;
比率越大,数据分离度越大.

初始点选择方法:

思想,初始的聚类中心之间相互距离尽可能远.
法1(kmeans++):
1、从输入的数据点集合中随机选择一个点作为第一个聚类中心
2、对于数据集中的每一个点x,计算它与最近聚类中心(指已选择的聚类中心)的距离D(x)
3、选择一个新的数据点作为新的聚类中心,选择的原则是:D(x)较大的点,被选取作为聚类中心的概率较大
4、重复2和3直到k个聚类中心被选出来
5、利用这k个初始的聚类中心来运行标准的k-means算法
从上面的算法描述上可以看到,算法的关键是第3步,如何将D(x)反映到点被选择的概率上,一种算法如下:
1、先从我们的数据库随机挑个随机点当“种子点”
2、对于每个点,我们都计算其和最近的一个“种子点”的距离D(x)并保存在一个数组里,然后把这些距离加起来得到Sum(D(x))。
3、然后,再取一个随机值,用权重的方式来取计算下一个“种子点”。这个算法的实现是,先取一个能落在Sum(D(x))中的随机值Random,然后用Random -= D(x),直到其<=0,此时的点就是下一个“种子点”。
4、重复2和3直到k个聚类中心被选出来
5、利用这k个初始的聚类中心来运行标准的k-means算法

法2:选用层次聚类或Canopy算法进行初始聚类,然后从k个类别中分别随机选取k个点,来作为kmeans的初始聚类中心点

优点:
1、 算法快速、简单;
2、 容易解释
3、 聚类效果中上
4、 适用于高维

缺陷:

1、 对离群点敏感,对噪声点和孤立点很敏感(通过k-centers算法可以解决)
2、 K-means算法中聚类个数k的初始化
3、初始聚类中心的选择,不同的初始点选择可能导致完全不同的聚类结果。

法2:选用层次聚类或Canopy算法进行初始聚类,然后从k个类别中分别随机选取k个点,来作为kmeans的初始聚类中心点

优点:
1、 算法快速、简单;
2、 容易解释
3、 聚类效果中上
4、 适用于高维
缺陷:
1、 对离群点敏感,对噪声点和孤立点很敏感(通过k-centers算法可以解决)
2、 K-means算法中聚类个数k的初始化
3、初始聚类中心的选择,不同的初始点选择可能导致完全不同的聚类结果。
(4)只能发现球状簇。
改进方法

决策树

决策树的学习本质上是从训练集中归纳出一组分类规则,得到与数据集矛盾较小的决策树,同时具有很好的泛化能力。决策树学习的损失函数通常是正则化的极大似然函数,通常采用启发式方法,近似求解这一最优化问题。

过拟合原因:样本噪声数据干扰过大、样本抽取错误、构建时使用样本中太多无关的输入变量
先剪枝:通过提前停止构建而对树“剪枝”,一旦停止,节点就成为树叶。(停止生长的方法:定义高度、达到某个节点实例具有相同的特征向量、定义阈值)

先剪枝方法相对简单,效率高,而且不需要生成整个决策树,适合解决大规模问题。但是何时停止不好确定,阈值不好确定,高阈值可能导致过分简化的树,而低阈值可能使得树的简化太少。
后剪枝:它首先构造完整的决策树,允许过树过度拟合训练数据,然后对那些置信度不够的节点子树用叶子节点来代替。

就是"三个臭皮匠顶个诸葛亮"。将若干个弱分类器(base learner)组合起来,变成一个强分类器。大多数boosting方法都是通过不断改变训练数据的概率(权值)分布,来迭代训练弱学习器的。所以总结而言,boosting需要回答2个问题:。
(1)如何改变训练数据的概率(权值)分布
(2)如何将弱分类器组合起来

让我一步一步地构造决策树,怎么计算信息熵、信息增益、然后C4.5 ID3 CART的区别,还说了一下优缺点

在ID3决策树中,也使用信息增益作为特征选择的方法,在C4.5决策树中,使用信息增益比作为特征选择的方法,在CART中,使用基尼指数作为特征选择的方法

详细讨论了样本采样和bagging的问题
说一下Adaboost,权值更新公式。当弱分类器是LR时,每个样本的的权重是w1,w2...,写出最终的决策公式。

说了一下bagging跟boosting。

深度学习

特征选择

由数据引申到数据不平衡怎么处理(10W正例,1W负例,牛客上有原题)
聊聊SVM,这段说了好久,从基本的线性可分到不可分,相关升维,各种核函数,每个是如何实现升。以及出现了XX问题,分析是样本的原因还是其他原因。针对不同情况,采取什么解决方案较好。
问了很多数据挖掘的基础知识,包括SVM,逻辑回归、EM、K-means等,然后给我很多场景问我遇到这些情况我要怎么来处理数据,怎么进行建模等等,问得很细
解释一下过拟合和欠拟合,有哪些方法防止过拟合。

过拟合

说明L1L2正则的效果与为什么形成这种情况(L1正则稀疏,L2正则平滑,之后说明就是画图说明正则化)
过拟合的解决方法;

上一篇下一篇

猜你喜欢

热点阅读