数据挖掘笔试面试(11)
【校招面经】机器学习与数据挖掘常见面试题整理 part7
七十、势函数法
from:https://www.cnblogs.com/huadongw/p/4106290.html
势函数主要用于确定分类面,其思想来源于物理。
1 势函数法基本思想
- 假设要划分属于两种类别ω1和ω2的模式样本,这些样本可看成是分布在n维模式空间中的点xk。
- 把属于ω1的点比拟为某种能源点,在点上,电位达到峰值。
- 随着与该点距离的增大,电位分布迅速减小,即把样本xk附近空间x点上的电位分布,看成是一个势函数K(x,xk)。
- 对于属于ω1的样本集群,其附近空间会形成一个"高地",这些样本点所处的位置就是"山头"。
- 同理,用电位的几何分布来看待属于ω2的模式样本,在其附近空间就形成"凹地"。
- 只要在两类电位分布之间选择合适的等高线,就可以认为是模式分类的判别函数。
2. 判别函数的产生
- 模式分类的判别函数可由分布在模式空间中的许多样本向量{xk,k=1,2,⋯且,xk∈ω1∪w2}的势函数产生。
- 任意一个样本所产生的势函数以K(x,xk)表征,则判别函数d(x)可由势函数序列K(x,x1),K(x,x2),⋯来构成,序列中的这些势函数相应于在训练过程中输入机器的训练模式样本x1,x2,⋯。
- 在训练状态,模式样本逐个输入分类器,分类器就连续计算相应的势函数,在第k步迭代时的积累位势决定于在该步前所有的单独势函数的累加。
- 以K(x)表示积累位势函数,若加入的训练样本xk+1是错误分类,则积累函数需要修改,若是正确分类,则不变。
七十一、牛顿法、拟牛顿法
from:https://blog.csdn.net/google19890102/article/details/41087931
1、基本牛顿法的原理
基本牛顿法是一种是用导数的算法,它每一步的迭代方向都是沿着当前点函数值下降的方向。
我们主要集中讨论在一维的情形,对于一个需要求解的优化函数
,求函数的极值的问题可以转化为求导函数
。对函数
进行泰勒展开到二阶,得到
对上式求导并令其为0,则为
即得到
这就是牛顿法的更新公式。
2. 拟牛顿法
DFP算法就是通过迭代更新单位矩阵来构造近似海森矩阵的逆的近似矩阵;与此同时,BFGS算法是通过迭代更新单位矩阵来直接构造近似海森矩阵的近似矩阵。二者存在共同的问题,需要存储近似矩阵
,当N很大时,会消耗巨大的存储空间,不适用于大规模的问题。
为了减少内存开销,LBFGS应运而生,它不再存储构造的近似矩阵,而是存储迭代过程中与之相关的向量序列,每次用到时,重新计算这个近似矩阵。并且,只存储最近的M个向量,做进一步的近似计算,将空间消耗降低到
七十二、函数内积
现规定两函数f(x)与g(x)与区间[a,b],且两函数在该区间上可积且平方可积。则积分
记作函数的内积。函数的内积常记作<f(x),g(x)>。
七十三、WOE和IV
1.IV的用途
IV的全称是Information Value,中文意思是信息价值,或者信息量。
我们在用逻辑回归、决策树等模型方法构建分类模型时,经常需要对自变量进行筛选。比如我们有200个候选自变量,通常情况下,不会直接把200个变量直接放到模型中去进行拟合训练,而是会用一些方法,从这200个自变量中挑选一些出来,放进模型,形成入模变量列表。那么我们怎么去挑选入模变量呢?
挑选入模变量过程是个比较复杂的过程,需要考虑的因素很多,比如:变量的预测能力,变量之间的相关性,变量的简单性(容易生成和使用),变量的强壮性(不容易被绕过),变量在业务上的可解释性(被挑战时可以解释的通)等等。但是,其中最主要和最直接的衡量标准是变量的预测能力。
“变量的预测能力”这个说法很笼统,很主观,非量化,在筛选变量的时候我们总不能说:“我觉得这个变量预测能力很强,所以他要进入模型”吧?我们需要一些具体的量化指标来衡量每自变量的预测能力,并根据这些量化指标的大小,来确定哪些变量进入模型。IV就是这样一种指标,他可以用来衡量自变量的预测能力。类似的指标还有信息增益、基尼系数等等。
2.对IV的直观理解
从直观逻辑上大体可以这样理解“用IV去衡量变量预测能力”这件事情:我们假设在一个分类问题中,目标变量的类别有两类:Y1,Y2。对于一个待预测的个体A,要判断A属于Y1还是Y2,我们是需要一定的信息的,假设这个信息总量是I,而这些所需要的信息,就蕴含在所有的自变量C1,C2,C3,……,Cn中,那么,对于其中的一个变量Ci来说,其蕴含的信息越多,那么它对于判断A属于Y1还是Y2的贡献就越大,Ci的信息价值就越大,Ci的IV就越大,它就越应该进入到入模变量列表中。
3.IV的计算
前面我们从感性角度和逻辑层面对IV进行了解释和描述,那么回到数学层面,对于一个待评估变量,他的IV值究竟如何计算呢?为了介绍IV的计算方法,我们首先需要认识和理解另一个概念——WOE,因为IV的计算是以WOE为基础的。
3.1WOE
WOE的全称是“Weight of Evidence”,即证据权重。WOE是对原始自变量的一种编码形式。
要对一个变量进行WOE编码,需要首先把这个变量进行分组处理(也叫离散化、分箱等等,说的都是一个意思)。分组后,对于第i组,WOE的计算公式如下:
其中,pyi是这个组中响应客户(风险模型中,对应的是违约客户,总之,指的是模型中预测变量取值为“是”或者说1的个体)占所有样本中所有响应客户的比例,pni是这个组中未响应客户占样本中所有未响应客户的比例,#yi是这个组中响应客户的数量,#ni是这个组中未响应客户的数量,#yT是样本中所有响应客户的数量,#nT是样本中所有未响应客户的数量。
从这个公式中我们可以体会到,WOE表示的实际上是“当前分组中响应客户占所有响应客户的比例”和“当前分组中没有响应的客户占所有没有响应的客户的比例”的差异。
对这个公式做一个简单变换,可以得到:
变换以后我们可以看出,WOE也可以这么理解,他表示的是当前这个组中响应的客户和未响应客户的比值,和所有样本中这个比值的差异。这个差异是用这两个比值的比值,再取对数来表示的。WOE越大,这种差异越大,这个分组里的样本响应的可能性就越大,WOE越小,差异越小,这个分组里的样本响应的可能性就越小。
关于WOE编码所表示的意义,大家可以自己再好好体会一下。
3.2 IV的计算公式
有了前面的介绍,我们可以正式给出IV的计算公式。对于一个分组后的变量,第i 组的WOE前面已经介绍过,是这样计算的:
同样,对于分组i,也会有一个对应的IV值,计算公式如下:
有了一个变量各分组的IV值,我们就可以计算整个变量的IV值,方法很简单,就是把各分组的IV相加:
其中,n为变量分组个数。
3.3 用实例介绍IV的计算和使用
下面我们通过一个实例来讲解一下IV的使用方式。
3.3.1 实例
假设我们需要构建一个预测模型,这个模型是为了预测公司的客户集合中的每个客户对于我们的某项营销活动是否能够响应,或者说我们要预测的是客户对我们的这项营销活动响应的可能性有多大。假设我们已经从公司客户列表中随机抽取了100000个客户进行了营销活动测试,收集了这些客户的响应结果,作为我们的建模数据集,其中响应的客户有10000个。另外假设我们也已经提取到了这些客户的一些变量,作为我们模型的候选变量集,这些变量包括以下这些(实际情况中,我们拥有的变量可能比这些多得多,这里列出的变量仅仅是为了说明我们的问题):
- 最近一个月是否有购买;
- 最近一次购买金额;
- 最近一笔购买的商品类别;
- 是否是公司VIP客户;
假设,我们已经对这些变量进行了离散化,统计的结果如下面几张表所示。
(1) 最近一个月是否有过购买:
(2) 最近一次购买金额:
(3) 最近一笔购买的商品类别:
(4) 是否是公司VIP客户:
3.3.2 计算WOE和IV
我们以其中的一个变量“最近一次购买金额”变量为例:
我们把这个变量离散化为了4个分段:<100元,[100,200),[200,500),>=500元。首先,根据WOE计算公式,这四个分段的WOE分别为:
插播一段,从上面的计算结果中我们可以看一下WOE的基本特点:
- 当前分组中,响应的比例越大,WOE值越大;
- 当前分组WOE的正负,由当前分组响应和未响应的比例,与样本整体响应和未响应的比例的大小关系决定,当前分组的比例小于样本整体比例时,WOE为负,当前分组的比例大于整体比例时,WOE为正,当前分组的比例和整体比例相等时,WOE为0。
- WOE的取值范围是全体实数。
我们进一步理解一下WOE,会发现,WOE其实描述了变量当前这个分组,对判断个体是否会响应(或者说属于哪个类)所起到影响方向和大小,当WOE为正时,变量当前取值对判断个体是否会响应起到的正向的影响,当WOE为负时,起到了负向影响。而WOE值的大小,则是这个影响的大小的体现。
好,回到正题,计算完WOE,我们分别计算四个分组的IV值:
再插播一段,从上面IV的计算结果我们可以看出IV的以下特点:
- 对于变量的一个分组,这个分组的响应和未响应的比例与样本整体响应和未响应的比例相差越大,IV值越大,否则,IV值越小;
- 极端情况下,当前分组的响应和未响应的比例和样本整体的响应和未响应的比例相等时,IV值为0;
- IV值的取值范围是[0,+∞),且,当当前分组中只包含响应客户或者未响应客户时,IV = +∞。
OK,再次回到正题。最后,我们计算变量总IV值:
3.3.3 IV值的比较和变量预测能力的排序
我们已经计算了四个变量中其中一个的WOE和IV值。另外三个的计算过程我们不再详细的说明,直接给出IV结果。
- 最近一个月是否有过购买:0.250224725
- 最近一笔购买的商品类别:0.615275563
- 是否是公司VIP客户:1.56550367
前面我们已经计算过,最近一次购买金额的IV为0.49270645
这四个变量IV排序结果是这样的:是否是公司VIP客户 > 最近一笔购买的商品类别 > 最近一次购买金额 > 最近一个月是否有过购买。我们发现“是否是公司VIP客户”是预测能力最高的变量,“最近一个月是否有过购买”是预测能力最低的变量。如果我们需要在这四个变量中去挑选变量,就可以根据IV从高到低去挑选了。
4.关于IV和WOE的进一步思考
4.1 为什么用IV而不是直接用WOE
从上面的内容来看,变量各分组的WOE和IV都隐含着这个分组对目标变量的预测能力这样的意义。那我们为什么不直接用WOE相加或者绝对值相加作为衡量一个变量整体预测能力的指标呢?
并且,从计算公式来看,对于变量的一个分组,IV是WOE乘以这个分组响应占比和未响应占比的差。而一个变量的IV等于各分组IV的和。如果愿意,我们同样也能用WOE构造出一个这样的一个和出来,我们只需要把变量各个分组的WOE和取绝对值再相加,即(取绝对值是因为WOE可正可负,如果不取绝对值,则会把变量的区分度通过正负抵消的方式抵消掉):
那么我们为什么不直接用这个WOE绝对值的加和来衡量一个变量整体预测能力的好坏,而是要用WOE处理后的IV呢。
我们这里给出两个原因。IV和WOE的差别在于IV在WOE基础上乘以的那个
,我们暂且用pyn来代表这个值。
第一个原因,当我们衡量一个变量的预测能力时,我们所使用的指标值不应该是负数,否则,说一个变量的预测能力的指标是-2.3,听起来很别扭。从这个角度讲,乘以pyn这个系数,保证了变量每个分组的结果都是非负数,你可以验证一下,当一个分组的WOE是正数时,pyn也是正数,当一个分组的WOE是负数时,pyn也是负数,而当一个分组的WOE=0时,pyn也是0。
当然,上面的原因不是最主要的,因为其实我们上面提到的
这个指标也可以完全避免负数的出现。
更主要的原因,也就是第二个原因是,乘以pyn后,体现出了变量当前分组中个体的数量占整体个体数量的比例,对变量预测能力的影响。怎么理解这句话呢?我们还是举个例子。
假设我们上面所说的营销响应模型中,还有一个变量A,其取值只有两个:0,1,数据如下:
我们从上表可以看出,当变量A取值1时,其响应比例达到了90%,非常的高,但是我们能否说变量A的预测能力非常强呢?不能。为什么呢?原因就在于,A取1时,响应比例虽然很高,但这个分组的客户数太少了,占的比例太低了。虽然,如果一个客户在A这个变量上取1,那他有90%的响应可能性,但是一个客户变量A取1的可能性本身就非常的低。所以,对于样本整体来说,变量的预测能力并没有那么强。我们分别看一下变量各分组和整体的WOE,IV。
从这个表我们可以看到,变量取1时,响应比达到90%,对应的WOE很高,但对应的IV却很低,原因就在于IV在WOE的前面乘以了一个系数
,而这个系数很好的考虑了这个分组中样本占整体样本的比例,比例越低,这个分组对变量整体预测能力的贡献越低。相反,如果直接用WOE的绝对值加和,会得到一个很高的指标,这是不合理的。
4.2 IV的极端情况以及处理方式
IV依赖WOE,并且IV是一个很好的衡量自变量对目标变量影响程度的指标。但是,使用过程中应该注意一个问题:变量的任何分组中,不应该出现响应数=0或非响应数=0的情况。
原因很简单,当变量一个分组中,响应数=0时,
此时对应的IVi为+∞。
而当变量一个分组中,没有响应的数量 = 0时,
此时的IVi为+∞。
IVi无论等于负无穷还是正无穷,都是没有意义的。
由上述问题我们可以看到,使用IV其实有一个缺点,就是不能自动处理变量的分组中出现响应比例为0或100%的情况。那么,遇到响应比例为0或者100%的情况,我们应该怎么做呢?建议如下:
(1)如果可能,直接把这个分组做成一个规则,作为模型的前置条件或补充条件;
(2)重新对变量进行离散化或分组,使每个分组的响应比例都不为0且不为100%,尤其是当一个分组个体数很小时(比如小于100个),强烈建议这样做,因为本身把一个分组个体数弄得很小就不是太合理。
(3)如果上面两种方法都无法使用,建议人工把该分组的响应数和非响应的数量进行一定的调整。如果响应数原本为0,可以人工调整响应数为1,如果非响应数原本为0,可以人工调整非响应数为1.
七十四、SimRank--基于结构的相似度度量方法学习笔记
from:https://blog.csdn.net/u013527419/article/details/51943785
详见:Glen Jeh 和 Jennifer Widom 的论文SimRank: A Measure of Structural-Context Similarity∗
一、简介
- 目前主要有两大类相似性度量方法:
(1) 基于内容(content-based)的特定领域(domain-specific)度量方法,如匹配文本相似度,计算项集合的重叠区域等;
(2) 基于链接(对象间的关系)的方法,如PageRank、SimRank和PageSim等。最近的研究表明,第二类方法度量出的对象间相似性更加符合人的直觉判断。
- Simrank的基本思想是:如果两个实体相似,那么跟它们相关的实体应该也相似。比如在图一中如果a和c相似,那么A和B应该也相似。
- SimRank的特点:完全基于结构信息,且可以计算图中任意两个节点间的相似度。
图一
二、基本公式
- 在普通的同构网络中:
其中,s(a,b)是节点a和b的相似度Ii(a)Ii(a)表示a的第i个in-neighbor。参数c是个阻尼系数,它的含义可以这么理解:假如I(a)=I(b)={A},按照上式计算出sim(a,b)=c*sim(A,A)=c,很明显,c应该大于0小于1,所以c∈(0,1),论文中c都设为了0.8。还有一种理解是说,两个节点间相隔的节点越多,相似度衰减的越厉害。
- 在二分网络中,如图一所示:
理解:
-
- A和B之间的相似度等于A,B出度间相似度的平均值。
a和b之间的相似度等于a,b入度间相似度的平均值。
-
- 如果A,B分别代表顾客A和顾客B,a,b,c代表三件商品的话。买家A和B的相似度等于他们购买的物品之间相似度的平均值,物品a和b的相似度是购买它们的买家之间相似度的平均值。
三、朴素计算方法(矩阵计算)
利用上面的公式即可进行simrank的编码实现,编程实现部分本文不考虑,如果读者感兴趣可以参考博客http://www.cnblogs.com/zhangchaoyang/articles/4575809.html
四、理解simrank的物理意义(Random Surfer-Pairs Model)
- expected distance,即为两节点间步数的平均值
u为出发点,v为终点且不为中间节点。引入图二帮助理解,如图中所示,从u节点到节点v有2条路径,公式中t即代表路径,例如t=w1–w2–w3–w4,为u到v的一条路径,l(t)代表路径t的长度,即为t中的步数,此处若t=w1–w2–w3–w4,则l(t)为3。p[t]为选择路径t的概率,它的值为1/o(wi)的乘积,出度的倒数的乘积。———sigma(概率*步数)= 两节点间步数的平均值。
图二
- Expected Meeting Distance(EMD)
Note:分别以相同的速度从a,b节点同时出发,x点为终点,即最后在x节点相遇。
**存在路径无限长问题
图三
如在图三(a)中,任意的a,b两点永远不会相遇,路径l(t)无限长,导致相似度无限大。
针对上面的问题:
1)参考pagerank方法,给它一个跳出循环的机会,给一个小概率可以跳到循环外某一随机点上。
2)本文中采用了函数映射的方法,将l(t)映射为指数函数
并且指数函数可以满足题意。两点相遇所需要的平均步数越大,两点间相似度越小,最小为0;两点间相遇需要的步数为0时,即两点为同一点时,两点间相似度最大,值为1。
——所以函数映射以后,引出Expected-f Meeting Distance的概念
- Expected-f Meeting Distance
define s’(a, b), the similarity between a and b in G based on expected-f meeting distance, as
其中,c是(0,1)间的常数。
有了上面的概念以后,我们可以计算:
- Equivalence to SimRank,有了上面这个概念,接下来推导相似迭代形式的s‘(a,b),最后得到实际上:s‘(a,b) = s(a,b),s(a,b)为上面提到的同构网络中的基本公式。推导过程如下,最终可以得
- Theorem. The SimRank score, with parameter C, between two nodes is their expected-f
meeting distance traveling back-edges, for f(z) =
. 两节点间simrank相似度的值即为此两节点间期望-f相遇距离,也就是(随机漫步所有的
可能性)从这两个节点出发到相遇时所需要的步数的平均数。
五、回顾总结:
1)simrank的基本思想和主要特点
2)simrank的基本公式
3)理解Simrank的物理意义Theorem.
七十五、KS指标和GINI指标
from:https://blog.csdn.net/u013421629/article/details/78217498
有效性指标中的区分能力指标:
KS(Kolmogorov-Smirnov):KS用于模型风险区分能力进行评估,
指标衡量的是好坏样本累计分部之间的差值。
好坏样本累计差异越大,KS指标越大,那么模型的风险区分能力越强。
KS的计算步骤如下:
1. 计算每个评分区间的好坏账户数。
2. 计算每个评分区间的累计好账户数占总好账户数比率(good%)和累计坏账户数占总坏账户数比率(bad%)。
3. 计算每个评分区间累计坏账户占比与累计好账户占比差的绝对值(累计good%-累计bad%),然后对这些绝对值取最大值即得此评分卡的K-S值。
·GINI系数:也是用于模型风险区分能力进行评估。
GINI统计值衡量坏账户数在好账户数上的的累积分布与随机分布曲线之间的面积,好账户与坏账户分布之间的差异越大,GINI指标越高,表明模型的风险区分能力越强。
GINI系数的计算步骤如下:
1. 计算每个评分区间的好坏账户数。
2. 计算每个评分区间的累计好账户数占总好账户数比率(累计good%)和累计坏账户数占总坏账户数比率(累计bad%)。
3. 按照累计好账户占比和累计坏账户占比得出下图所示曲线ADC。
4. 计算出图中阴影部分面积,阴影面积占直角三角形ABC面积的百分比,即为GINI系数。