机器学习笔试面试超详细总结(一)

2023-11-14

文章目录


本博客还有多个超详细综述,感兴趣的朋友可以移步:

卷积神经网络:卷积神经网络超详细介绍

目标检测:目标检测超详细介绍

语义分割:语义分割超详细介绍

NMS:让你一文看懂且看全 NMS 及其变体

数据增强:一文看懂计算机视觉中的数据增强

损失函数:分类检测分割中的损失函数和评价指标

Transformer:A Survey of Visual Transformers

机器学习实战系列:决策树

YOLO 系列:v1v2v3v4scaled-v4v5v6v7yolofyoloxyolosyolop


1、判别模型和生成模型

监督学习的任务就是学习一个模型,应用该模型对给定的输入预测相应的输出,这个模型的一般形式为决策函数: f ( X ) f(X) f(X)或者条件概率分布: P ( Y ∣ X ) P(Y|X) P(YX)

监督学习方法又可以分为生成方法(generative approach)和判别方法(discriminative approach),所生成的模型分别为生成模型和判别模型。

生成模型:由数据学习联合概率分布 P ( X , Y ) P(X,Y) P(X,Y),然后求出条件概率分布 P ( Y ∣ X ) P(Y|X) P(YX) 作为预测的模型,即为生成模型:

P ( Y ∣ X ) = P ( X , Y ) P ( X ) P(Y|X)=\frac{P(X,Y)}{P(X)} P(YX)=P(X)P(X,Y)

之所以称为生成方法,是因为模型表示了给定输入 X X X 产生输出 Y Y Y的生成关系。

生成模型常见模型:

  • 朴素贝叶斯(Naive Bayes)
  • 隐马尔科夫模型(HMM)
  • 高斯混合机其他类型混合模型(GMM)
  • 平均单依赖估计(AODE)
  • LDA主题模型
  • 限制玻尔兹曼机(RBM)
  • 贝叶斯网络(Bayesian Networks)
  • 隐含狄利克雷分布(Latent Dirichlet Allocation)。

判别模型:由数据直接学习决策函数 f ( X ) f(X) f(X),或求解条件概率分布 P ( Y ∣ X ) P(Y|X) P(YX)作为预测模型。也可以称为条件模型或概率模型,利用正负例的分类标签,求得判别模型的边缘分布,目标函数直接对应于分类准确率。

判别方法关心的是:给定的输入 X X X ,应该预测什么样的输出 Y Y Y

判别模型常见模型:

  • 线性回归(Linear Regression)
  • 逻辑回归(Logistic Regression)
  • 支持向量机(SVM)
  • 传统神经网络(Traditional Neural Networks)
  • 线性判别分析(Linear Discriminative Analysis)
  • 条件随机场(Conditional Random Field)
  • 集成学习(boosting)
  • 条件随机场(Conditional random fields)

两种方法的不同:

(1)生成方法优点:

  • 生成方法可以还原出联合概率分布$P(X,Y) $,判别方法不能。
  • 生成方法学习收敛速度更快,即当样本容量增加时,学到的模型可以更快的收敛于真实模型。
  • 当存在隐变量时,仍可以用生成方法,但判别方法不能用。
    -生成模型的假设性更强一些,因为通常是从后验分布的角度去思考问题,通常对x的分布做了一些假设
  • 生成模型最大化联合对数似然函数
  • 因为生成模型对于特征的分布都做出了一定的假设(如高斯判别模型假设特征分布满足多元高斯分布),所以如果对于特征的分布估计比较正确的情况下,生成模型的速度更好准确性也更高。
    -生成模型在训练数据的时候对于每一类数据的都是独立估计的(也就是每一类的参数不同),这也就说明如果有新类别加入的情况下,是不需要对原有类别进行重新训练的
    -生成模型有一个大的缺点就是不能对特征进行某些预处理(如特征映射),因为预处理后的数据分布往往有了很大的变化。

(2)判别方法特点:

  • 直接学习条件概率 P ( Y ∣ X ) P(Y|X) P(YX) 或决策函数 f ( X ) f(X) f(X) ,直接预测,往往学习准确率更高
  • 由于直接学习条件概率 P ( Y ∣ X ) P(Y|X) P(YX) 或决策函数$f(X) $,可以对数据进行各种程度上的抽象、定义特征并使用特征,因此可以简化学习问题。
  • 最大化似然函数

由生成模型可以得到判别模型,但由判别模型得不到生成模型。

2、最大概率分词

其基本思想是:一个待切分的汉字串可能包含多种分词结果,将其中概率最大的作为该字串的分词结果。若某候选词在训练语料中未出现,其概率为0,求出概率最大的分词方式就是分词结果。

eg: P ( B ) = P ( 南京 ) ∗ P ( 市长 ) ∗ P ( 江大桥 ) = 0.8 ∗ 0.6 ∗ 0.4 = 0.192 P(B)=P(南京)*P(市长)*P(江大桥)=0.8*0.6*0.4=0.192 P(B)=P(南京)P(市长)P(江大桥)=0.80.60.4=0.192

3、中文分词的基本方法

基于语法规则的方法、基于词典的方法和基于统计的方法。

第一类:基于语法和规则的分词法

其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来进行词性标注,以解决分词歧义现象。因为现有的语法知识、句法规则十分笼统、复杂,基于语法和规则的分词法所能达到的精确度远远还不能令人满意,目前这种分词系统还处在试验阶段。

第二类:基于字符串匹配的分词方法(机械式分词法,即基于词典)

机械分词的原理是将文档中的字符串与词典中的词条进行逐一匹配,如果词典中找到某个字符串,则匹配成功,可以切分,否则不予切分。基于词典的机械分词法,实现简单,实用性强,但机械分词法的最大的缺点就是词典的完备性不能得到保证。据统计,用一个含有70000个词的词典去切分含有15000个词的语料库,仍然有30%以上的词条没有被分出来,也就是说有4500个词没有在词典中登录。

可以进一步分为最大匹配法,最大概率法,最短路径法等。

  • **1. 最大匹配法指:**按照一定顺序选取字符串中的若干个字当做一个词,去词典中查找。

  • **最大匹配法指根据扫描方式可细分为:**正向最大匹配,反向最大匹配,双向最大匹配,最小切分。

  • 2. 最大概率法:是一个待切分的汉字串可能包含多种分词结果,将其中概率最大的那个作为该字串的分词结果。

  • 3. 最短路径法:在词图上选择一条词数最少的路径。

第三类:基于词频统计的方法

基于统计的分词法的基本原理是根据字符串在语料库中出现的统计频率来决定其是否构成词。词是字的组合,相邻的字同时出现的次数越多,就越有可能构成一个词。因此字与字相邻共现的频率或概率能够较好的反映它们成为词的可信度。

举例:HMM(隐马尔科夫模型),MAXENT(最大熵模型),MEMM(最大熵隐马尔科夫模型),CRF(条件随机场)。

4、CRF(条件随机场)的特点

CRF结合了最大熵模型和隐马尔可夫模型的特点,是一种无向图模型,近年来在分词、词性标注和命名实体识别等序列标注任务中取得了很好的效果。条件随机场是一个典型的判别式模型,其联合概率可以写成若干势函数联乘的形式,其中最常用的是线性链条件随机场。

CRF没有HMM那样严格的独立性假设条件,因而可以容纳任意的上下文信息,特征设计灵活。CRF需要训练的参数更多,与MEMM和HMM相比,它存在训练代价大、复杂度高的缺点

  • **HMM:**是对转移概率和表现概率直接建模,统计共现概率

  • **MEMM:**对转移概率和表现概率建立联合概率,统计时统计的是条件概率

  • 容易陷入局部最优,是因为MEMM只在局部做归一化

  • **CRF:**在给定需要标记的观察序列的条件下,计算整个标记序列的联合概率分布,而不是在给定当前状态条件下,定义下一个状态的状态分布

  • 统计了全局概率,在做归一化时,考虑了数据在全局的分布,而不是仅仅在局部归一化,这样就解决了MEMM中的标记偏置的问题

5、隐马尔可夫模型(HMM)时间复杂度及可以使用的数据集

设其观察值空间为

O = { o 1 , o 2 , . . . , o N } O=\{o_1,o_2,...,o_N\} O={o1,o2,...,oN}

状态空间为

S = { s 1 , s 2 , . . . , s K } S=\{s_1,s_2,...,s_K\} S={s1,s2,...,sK}
如果用维特比算法(Viterbi algorithm)进行解码,时间复杂度为$(O(NK^2)) $

可以应用的数据集:只要是和时间序列问题有关的 , 都可以试试HMM

例如:基因序列数据集,电影浏览数据集,股票市场数据集

6、在二分类问题中的评价方案

当测试集的正例和负例数量不均衡时,以下评价方案哪个是相对不合理的(A)

  • A. Accuracy:(TP+TN)/all

  • B. F-value:2·recall·precision/(recall+precision)

  • C. G-mean:sqrt(precision*recall)

  • D. AUC:ROC曲线下面积

在二分类问题中,我们主要关注的是测试集的正样本能否正确分类。

当样本不均衡时,比如样本中负样本数量远远多于正样本,此时如果负样本能够全部正确分类,而正样本只能部分正确分类,那么(TP+TN)可以得到很高的值,也就是Accuracy是个较大的值,但是正样本并没有取得良好的分类效果。因此A选项是不合理的。在样本不均衡时,可以采用BCD选项方法来评价。
(precision=TP/(TP+FP),recall=TP/(TP+FN))

7、决策树特点

决策树(decision tree)是一种基本的分类与回归方法,是一颗依托决策而建立起来的树。

决策树就是用一棵树来表示我们的整个决策过程。这棵树可以是二叉树(比如 CART 只能是二叉树),也可以是多叉树(比如 ID3、C4.5 可以是多叉树或二叉树)。

决策树的三个步骤:特征选择、决策树的生成、决策树的修剪。

分类过程:

从根节点开始,对实例的某一特征进行测试,根据测试结果,将实例分配到其子结点,此时,每个子结点对应着该特征的一个取值,如此递归地对实例进行测试并分配,直到达到叶结点,最后将实例分到叶结点的类中。

根节点包含整个样本集,每个叶结点都对应一个决策结果(注意,不同的叶节点可能对应同一个决策结果),每一个内部节点都对应一次决策过程或者说是一次属性测试。从根节点到每个叶节点的路径对应一个判定测试序列。

图示:

这里写图片描述

  • 决策树学习的目标:根据给定的训练数据集构建一个决策树模型,使它能够对实例进行正确的分类。

  • 决策树学习的本质:从训练集中归纳出一组分类规则,或者说是由训练数据集估计条件概率模型。

  • 决策树学习的损失函数:正则化的极大似然函数

  • 决策树学习的策略:最小化损失函数

  • 决策树学习的目标:在损失函数的意义下,选择最优决策树的问题。

  • 决策树原理和问答猜测结果游戏相似,根据一系列数据,然后给出游戏的答案。

一句话描述决策树:

决策树学习的算法通常是递归的选择最优特征,并根据该特征对训练数据进行分割,使得对各个子数据集有一个最好的分类的过程,这一过程对应着特征空间的划分,也对应着决策树的构建。

决策树的构造过程:

  1. 开始:构建根节点,将所有训练数据都放在根节点,选择一个最优特征,按着这一特征将训练数据集分割成子集,使得各个子集有一个在当前条件下最好的分类。

  2. 如果这些子集已经能够被基本正确分类,那么构建叶节点,并将这些子集分到所对应的叶节点去。

  3. 如果还有子集不能够被正确的分类,那么就对这些子集选择新的最优特征,继续对其进行分割,构建相应的节点,如果递归进行,直至所有训练数据子集被基本正确的分类,或者没有合适的特征为止。

  4. 每个子集都被分到叶节点上,即都有了明确的类,这样就生成了一颗决策树。

特征选择准则:

划分数据集的大原则是:将无序数据变得更加有序,但是各种方法都有各自的优缺点,信息论是量化处理信息的分支科学,在划分数据集前后信息发生的变化称为信息增益,获得信息增益最高的特征就是最好的选择,所以必须先学习如何计算信息增益,集合信息的度量方式称为香农熵,或者简称熵。

熵的介绍

**熵:**如果一个随机变量X的可能取值为X = {x1, x2,…, xk},,其概率分布为P(X = xi) = pi(i = 1,2, …, n),则随机变量X的熵定义为: H ( x ) = − ∑ x p ( x ) l o g p ( x ) H(x)=-\sum_x p(x)logp(x) H(x)=xp(x)logp(x)

负号变换之后变为: H ( x ) = ∑ x p ( x ) l o g 1 p ( x ) H(x)=\sum_x p(x) log\frac{1}{p(x)} H(x)=xp(x)logp(x)1

**联合熵:**两个随机变量X,Y的联合分布,可以形成联合熵,用 H ( X , Y ) H(X,Y) H(X,Y)表示。

**条件熵:**在随机变量X发生的前提下,随机变量 Y Y Y发生所新带来的熵定义为Y的条件熵,用 H ( Y ∣ X ) H(Y|X) H(YX)表示,用来衡量在已知随机变量 X X X的条件下随机变量Y的不确定性。

且有: H ( Y ∣ X ) = H ( X , Y ) – H ( X ) H(Y|X) = H(X,Y) – H(X) H(YX)=H(X,Y)H(X)

相对熵:又称互熵,交叉熵,鉴别信息,Kullback熵,Kullback-Leible散度等。设p(x)、q(x)是X中取值的两个概率分布,则p对q的相对熵是:

这里写图片描述

在一定程度上,相对熵可以度量两个随机变量的“距离”,且有 D ( p ∣ ∣ q ) ≠ D ( q ∣ ∣ p ) D(p||q) ≠D(q||p) D(p∣∣q)=D(q∣∣p)。另外,值得一提的是, D ( p ∣ ∣ q ) D(p||q) D(p∣∣q)是必然大于等于0的。

最大熵:

主要思想:在学习概率模型时,所有可能的模型中熵最大的模型是最好的模型,若概率模型需要满足一些约束,则最大熵原理就是在满足已知约束的条件集合中选择熵最大模型。最大熵原理指出,对一个随机事件的概率分布进行预测时,预测应该满足全部已知的约束,而对未知的情况不要做任何主观假设,在这种情况下,概率分布最均匀,预测的风险最小,因此得到的概率分布的熵是最大的。

熵是随机变量不确定性的度量,不确定性越大,熵值越大;若随机变量退化成定值,熵为0。如果没有外界干扰,随机变量总是趋向于无序,在经过足够时间的稳定演化,它应该能够达到的最大程度的熵。

为了准确的估计随机变量的状态,我们一般习惯性最大化熵,认为在所有可能的概率模型(分布)的集合中,熵最大的模型是最好的模型。换言之,在已知部分知识的前提下,关于未知分布最合理的推断就是符合已知知识最不确定或最随机的推断,其原则是承认已知事物(知识),且对未知事物不做任何假设,没有任何偏见。

例如,投掷一个骰子,如果问"每个面朝上的概率分别是多少",你会说是等概率,即各点出现的概率均为1/6。因为对这个"一无所知"的色子,什么都不确定,而假定它每一个朝上概率均等则是最合理的做法。从投资的角度来看,这是风险最小的做法,而从信息论的角度讲,就是保留了最大的不确定性,也就是说让熵达到最大。

1)信息增益:

在划分数据集之前之后信息发生的变化(也就是熵的变化)称为信息增益,分别计算每个特征值划分数据集获得的信息增益,选择信息增益最高的特征作为划分特征。

熵定义为信息的期望值,如果待分类的事物可能划分在多个类之中,则符号 x i x_i xi的信息定义为:
$ l ( x i ) = − l o g 2 p ( x i ) l(x_i)=-log_2 p(x_i) l(xi)=log2p(xi) $
其中, p ( x i ) p(x_i) p(xi)是选择该分类的概率。

为了计算熵,我们需要计算所有类别所有可能值所包含的信息期望值,熵通过下式得到:
H = − Σ i = 1 n p ( x i ) l o g 2 p ( x i ) H=-\Sigma_{i=1}^n p(x_i)log_2 p(x_i) H=Σi=1np(xi)log2p(xi)
其中,n为分类数目,熵越大,随机变量的不确定性就越大。

当熵中的概率由数据估计(特别是最大似然估计)得到时,所对应的熵称为经验熵(empirical entropy)。什么叫由数据估计?比如有10个数据,一共有两个类别,A类和B类。其中有7个数据属于A类,则该A类的概率即为十分之七。其中有3个数据属于B类,则该B类的概率即为十分之三。浅显的解释就是,这概率是我们根据数据数出来的。我们定义贷款申请样本数据表中的数据为训练数据集D,则训练数据集D的经验熵为H(D),|D|表示其样本容量,及样本个数。设有K个类Ck,k = 1,2,3,···,K,|Ck|为属于类Ck的样本个数,这经验熵公式可以写为:
H ( D ) = − Σ ∣ c k ∣ ∣ D ∣ l o g 2 ∣ c k ∣ ∣ D ∣ H(D)=-\Sigma \frac{|c_k|}{|D|}log_2\frac{|c_k|}{|D|} H(D)=ΣDcklog2Dck

根据此公式计算经验熵H(D),分析贷款申请样本数据表中的数据。最终分类结果只有两类,即放贷和不放贷。根据表中的数据统计可知,在15个数据中,9个数据的结果为放贷,6个数据的结果为不放贷。所以数据集D的经验熵H(D)为:
H ( D ) = − 9 15 l o g 2 9 15 − 6 15 l o g 2 6 15 = 0.971 H(D)=-\frac{9}{15} log_2\frac{9}{15}-\frac{6}{15} log_2\frac{6}{15}=0.971 H(D)=159log2159156log2156=0.971
经过计算可知,数据集D的经验熵H(D)的值为0.971。

在理解信息增益之前,要明确——条件熵

信息增益表示得知特征 X X X的信息而使得类 Y Y Y的信息不确定性减少的程度。

条件熵 H ( Y ∣ X ) H(Y|X) H(YX)表示在已知随机变量 X X X的条件下随机变量 Y Y Y的不确定性,随机变量X给定的条件下随机变量Y的条件熵(conditional entropy) 为 H ( Y ∣ X ) H(Y|X) H(YX),定义为 X X X给定条件下 Y Y Y的条件概率分布的熵对 X X X的数学期望:
H ( Y ∣ X ) = ∑ i = 1 n p i H ( Y ∣ X = x i ) H(Y|X)=\sum_{i=1}^n p_iH(Y|X=x_i) H(YX)=i=1npiH(YX=xi)
其中, p i = P ( X = x i ) p_i=P(X=x_i) pi=P(X=xi)

当熵和条件熵中的概率由数据估计(特别是极大似然估计)得到时,所对应的分别为经验熵和经验条件熵,此时如果有0概率,令 0 l o g 0 = 0 0log0=0 0log0=0

信息增益:

信息增益是相对于特征而言的。所以,特征A对训练数据集D的信息增益 g ( D , A ) g(D,A) g(D,A),定义为集合D的经验熵 H ( D ) H(D) H(D)与特征A给定条件下D的经验条件熵 H ( D ∣ A ) H(D|A) H(DA)之差,即:

g ( D , A ) = H ( D ) − H ( D ∣ A ) g(D,A)=H(D)-H(D|A) g(D,A)=H(D)H(DA)

一般地,熵 H ( D H(D H(D)与条件熵 H ( D ∣ A ) H(D|A) H(DA)之差称为互信息(mutual information)。决策树学习中的信息增益等价于训练数据集中类与特征的互信息。

信息增益值的大小相对于训练数据集而言的,并没有绝对意义,在分类问题困难时,也就是说在训练数据集经验熵大的时候,信息增益值会偏大,反之信息增益值会偏小,使用信息增益比可以对这个问题进行校正,这是特征选择的另一个标准。

信息增益的计算:
这里写图片描述
这里写图片描述

2)信息增益比:

特征 A A A对训练数据集D的信息增益比 g R ( D , A ) g_R(D,A) gR(D,A)定义为其信息增益 g ( D , A ) g(D,A) g(D,A)与训练数据集 D D D的经验熵之比:

g R ( D , A ) = g ( D , A ) H ( D ) g_R(D,A)=\frac{g(D,A)}{H(D)} gR(D,A)=H(D)g(D,A)

决策树的特点:

  • 优点:计算复杂度不高,输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特征数据。
  • 缺点:可能会产生过度匹配的问题

决策树的过拟合:

决策树生成算法递归的产生决策树,直到不能继续下去为止,这样产生的树往往对训练数据的分类很准确,但对未知测试数据的分类却没有那么精确,即会出现过拟合现象。过拟合产生的原因在于在学习时过多的考虑如何提高对训练数据的正确分类,从而构建出过于复杂的决策树,解决方法是考虑决策树的复杂度,对已经生成的树进行简化。

决策树的剪枝:

从已经生成的树上裁掉一些子树或叶节点,并将其根节点或父节点作为新的叶子节点,从而简化分类树模型,防止过拟合,提高泛化性能。

**实现方式:**极小化决策树整体的损失函数或代价函数来实现

剪枝分为预剪枝与后剪枝:

  • 预剪枝:是指在决策树的生成过程中,对每个节点在划分前先进行评估,若当前的划分不能带来泛化性能的提升,则停止划分,并将当前节点标记为叶节点。

  • 后剪枝:是指先从训练集生成一颗完整的决策树,然后自底向上对非叶节点进行考察,若将该节点对应的子树替换为叶节点,能带来泛化性能的提升,则将该子树替换为叶节点。

  • 那么怎么来判断是否带来泛化性能的提升那?最简单的就是留出法,即预留一部分数据作为验证集来进行性能评估。

分别介绍不同类型的决策树:

1) ID3:使用信息增益作为选择特征的准则

  1. 首先是针对当前的集合,计算每个特征的信息增益
  2. 然后选择信息增益最大的特征作为当前节点的决策决策特征
  3. 根据特征不同的类别划分到不同的子节点(比如年龄特征有青年,中年,老年,则划分到3颗子树)
  4. 然后继续对子节点进行递归,直到所有特征都被划分

核心:在决策树的各个结点上应用信息增益来选择特征,递归的构建决策树。ID3相当于用极大似然法进行概率模型的选择

构建方法:从根节点(root node)开始,对结点计算所有可能的特征信息增益,选择信息增益最大的特征作为结点的特征,由该特征的不同取值建立子结点,再对子结点递归的调用此方法,构建决策树,知道所有特征的信息增益均很小,或没有特征可以选择为止。

  • 信息增益=划分前的熵 - 划分后的熵

  • 信息增益越大,则利用属性A划分后的纯度提升越大

  • ID3仅仅适用于二分类问题,仅仅能够处理离散属性

  • 算法生成的决策树是一棵多叉树,分支的数量取决于分裂属性有多少个不同的取值

  • 可以是二叉树或多叉树

算法步骤:
这里写图片描述
这里写图片描述

示例:
这里写图片描述
这里写图片描述
ID3算法(IterativeDichotomiser3迭代二叉树3代)是一个由RossQuinlan发明的用于决策树的算法。可以归纳为以下几点:

  1. 使用所有没有使用的属性并计算与之相关的样本熵值
  2. 选取其中熵值最小的属性
  3. 生成包含该属性的节点
  4. ID3算法生成的是多叉树模型,分支数量取决于分裂属性的不同取值

D3算法对数据的要求:

  • 所有属性必须为离散量;
  • 所有的训练例的所有属性必须有一个明确的值;
  • 相同的因素必须得到相同的结论且训练例必须唯一。

损失函数:

这里写图片描述
2) C4.5:使用信息增益比作为选择特征的准则

  • 信息增益比=信息增益 / 划分前的熵

  • 信息增益相对于信息增益比的一个缺点:信息增益总是偏向于选择取值较多的属性。信息增益比在此基础上增加了一个罚项,解决了这个问题。

  • C4.5克服了ID3仅仅能够处理离散属性的问题,以及信息增益偏向选择取值较多特征的问题,使用信息增益比来选择特征。

  • 可以是二叉树或多叉树

这里写图片描述
3)CART(分类与回归树):使用 Gini 指数作为选择特征的准则

CART与上述两者不同的地方在于,CART生成的树必须是二叉树,也就是无论回归还是分类,无论特征离散还是连续,无论属性取值有多个还是两个,内部节点只能根据属性进行二分。

  • CART作为回归树:使用平方误差最小准则来选择特征并进行划分,也叫最小二乘回归树。

  • CART作为分类树:使用Gini指数最小化准则来选择特征并进行划分

    • Gini 指数表示集合的不确定性,或者是不纯度。基尼指数越大,集合不确定性越高,不纯度也越大。这一点和熵类似。另一种理解基尼指数的思路是,基尼指数是为了最小化误分类的概率。
    • Gini指数和熵的区别:Gini指数计算不需要对数运算,更加高效,且更偏向于连续属性,熵更偏向于离散属性。

分类树:
这里写图片描述

回归树:

这里写图片描述

停止条件:

  1. 直到每个叶子节点都只有一种类型的记录时停止,(这种方式很容易过拟合)

  2. 另一种时当叶子节点的记录树小于一定的阈值或者节点的信息增益小于一定的阈值时停止

关于特征值与目标值:

  1. 特征离散 目标值离散:可以使用ID3,cart

  2. 特征连续 目标值离散:将连续的特征离散化 可以使用ID3,cart

  3. 特征离散 目标值连续

决策树的分类与回归:

  • 分类树 :输出叶子节点中所属类别最多的那一类

  • 回归树 :输出叶子节点中各个样本值的平均值

解决决策树的过拟合:

  1. 剪枝
  • 前置剪枝:在分裂节点的时候设计比较苛刻的条件,如不满足则直接停止分裂(这样干决策树无法到最优,也无法得到比较好的效果)

  • 后置剪枝:在树建立完之后,用单个节点代替子树,节点的分类采用子树中主要的分类(这种方法比较浪费前面的建立过程)

  1. 交叉验证

  2. 随机森林

决策树的优缺点:

  • 优点:

  • 计算量简单,可解释性强,比较适合处理有缺失属性值的样本,能够处理不相关的特征;

这里写图片描述

  • 缺点:

  • 单颗决策树分类能力弱,并且对连续值变量难以处理;

  • 容易过拟合(后续出现了随机森林,减小了过拟合现象);

总结:

决策树算法主要包括三个部分:特征选择、树的生成、树的剪枝。常用算法有 ID3、C4.5、CART。

  • 特征选择:特征选择的目的是选取能够对训练集分类的特征。特征选择的关键是准则:信息增益、信息增益比、Gini 指数;

  • 决策树的生成:通常是利用信息增益最大、信息增益比最大、Gini 指数最小作为特征选择的准则。从根节点开始,递归的生成决策树。相当于是不断选取局部最优特征,或将训练集分割为基本能够正确分类的子集;

  • 决策树的剪枝:决策树的剪枝是为了防止树的过拟合,增强其泛化能力。包括预剪枝和后剪枝。

示例1:

假设我们有一个数据集,在一个深度为 6 的决策树的帮助下,它可以使用 100% 的精确度被训练。则当深度为4时,将有高偏差和低方差。

解析:

如果在这样的数据中利用深度为 4 的决策树进行拟合,这意味着其更有可能与数据欠拟合。因此,在欠拟合的情况下,将获得高偏差和低方差。

示例2:

决策树的父节点和子节点的熵的大小关系是什么?——根据具体情况而定,父节点不一定大于或小于子节点

解析:

假设一个父节点有2正3负样本,进一步分裂情况1:两个叶节点(2正,3负);情况2:两个叶节点(1正1负,1正2负)。分别看下情况1和情况2,分裂前后确实都有信息增益,但是两种情况里不是每一个叶节点都比父节点的熵小。

Boosting和Bagging

(1)随机森林
  随机森林改变了决策树容易过拟合的问题,这主要是由两个操作所优化的:

1)Boostrap从袋内有放回的抽取样本值

2)每次随机抽取一定数量的特征(通常为sqr(n))。
  分类问题:采用Bagging投票的方式选择类别频次最高的
  回归问题:直接取每颗树结果的平均值。

(2)Boosting之AdaBoost

Boosting的本质实际上是一个加法模型,通过改变训练样本权重学习多个分类器并进行一些线性组合。而Adaboost就是加法模型+指数损失函数+前项分布算法。Adaboost就是从弱分类器出发反复训练,在其中不断调整数据权重或者是概率分布,同时提高前一轮被弱分类器误分的样本的权值。最后用分类器进行投票表决(但是分类器的重要性不同)。

(3)Boosting之GBDT

将基分类器变成二叉树,回归用二叉回归树,分类用二叉分类树。和上面的Adaboost相比,回归树的损失函数为平方损失,同样可以用指数损失函数定义分类问题。但是对于一般损失函数怎么计算呢?GBDT(梯度提升决策树)是为了解决一般损失函数的优化问题,方法是用损失函数的负梯度在当前模型的值来模拟回归问题中残差的近似值。

注:由于GBDT很容易出现过拟合的问题,所以推荐的GBDT深度不要超过6,而随机森林可以在15以上。

(4)Xgboost

这个工具主要有以下几个特点:

  • 支持线性分类器

  • 可以自定义损失函数,并且可以用二阶偏导

  • 加入了正则化项:叶节点数、每个叶节点输出score的L2-norm

  • 支持特征抽样

  • 在一定情况下支持并行,只有在建树的阶段才会用到,每个节点可以并行的寻找分裂特征。

GBDT/XGboost

随机森林

8、过拟合

在其它条件不变的前提下,以下哪种做法容易引起机器学习中的过拟合问题(D )

  • A 增加训练集数量
  • B 减少神经网络隐藏层节点数
  • C 删除稀疏的特征
  • D SVM算法中使用高斯核/RBF核代替

机器学习中发生过拟合的主要原因有:

(1)使用过于复杂的模型;
(2)数据噪声较大;
(3)训练数据少。

对应的降低过拟合的方法有:

(1)简化模型假设,或者使用惩罚项限制模型复杂度;
(2)进行数据清洗,减少噪声;
(3)收集更多训练数据。

数据清洗中,处理缺失值的方法有两种:

一、删除法:

  1. 删除观察样本
  2. 删除变量:当某个变量缺失值较多且对研究目标影响不大时,可以将整个变量整体删除
  3. 使用完整原始数据分析:当数据存在较多缺失而其原始数据完整时,可以使用原始数据替代现有数据进行分析
  4. 改变权重:当删除缺失数据会改变数据结构时,通过对完整数据按照不同的权重进行加权,可以降低删除缺失数据带来的偏差

二、查补法:均值插补、回归插补、抽样填补等

高斯核的使用增加了模型复杂度,容易引起过拟合。选择合适的核函数以及软边缘参数C就是训练SVM的重要因素。一般来讲,核函数越复杂,模型越偏向于过拟合;C越大模型越偏向于过拟合,反之则拟合不足。

9、异方差性

如果线性回归模型中的随机误差存在异方差性,那么参数的OLS估计量是(无偏的,非有效的)

由高斯—马尔可夫定理,在给定经典线性回归的假定下,最小二乘估计量是具有最小方差的线性无偏估计量。

根据证明过程可知,随机误差中存在异方差性不会影响其无偏性,而有效性证明中涉及同方差性,即异方差会影响参数OLS估计量的有效性。

10、Fisher线性判别函数/PCA

PCA:

PCA方法是一种简单的线性降维(特征提取)方法,这里不讨论其数学推导。基本步骤如下:

1)计算样本集合X(D维)的均值矢量mu和协方差矩阵sigma;

2)计算sigma的特征值和特征矢量,按特征值降序排列;

3)选择前d个特征矢量构成矩阵E;

4)D维的矢量x可以转换为d维的矢量x’:x’ = ET(x - mu)。

为什么协方差矩阵的特征向量就是k维理想的特征:最大方差理论、最小误差理论来解释

最大方差理论:

信号处理中,认为信号具有较大的方差,噪声具有较小的方差,信噪比就是信号和噪声的方差比,越大越好,所以选择的第一条坐标轴就是覆盖数据最大方差的位置,第二条坐标轴就是垂直于最大第一条轴的方向。所以我们认为最好的选取的k维特征是将n维样本点转化为k维之后,每一维上的样本方差都很大,并且k维新的特征是正交的。

这里写图片描述

最小平方误差理论:
最初学习线性回归,目的是求得一个线性函数,使得其能够最佳拟合样本点,也就是最小化平方误差,来获得最佳线性函数。

PCA方法等价于在原特征空间里建立了一个新坐标系,该坐标系的原点放在均值mu的位置,前d个特征矢量就是其基矢量。由于协方差矩阵sigma为实对称矩阵,并且半正定,那么其特征值都会大于等于零,特征矢量两两正交。所以新坐标系是直角坐标系。也就是说,新坐标系下不同特征之间不相关(但不一定独立)。可以证明,经过降维之后的样本集合的协方差矩阵是对角阵。

对于计算机来说,当协方差矩阵sigma非常大时,直接求其特征值和特征矢量开销很大。这时可以考虑用奇异值分解(SVD)来计算。在进行SVD之前,需要对样本集合预处理,也就是机器学习中所谓的Feature Scaling,使样本集合里的每一维特征的均值为0,方差为1。预处理之后,协方差矩阵sigma即为XTX。而X的奇异值分解,X = UDVT,V的列就是XXT的特征向量,D为对角阵,值为对应特征向量的算数平方根。

PCA方法是无监督的,没有考虑样本的标签。小的特征值只是说明相应维度上样本分布的方差小,并不代表它对分类的作用小。某些极端情况下,PCA舍去的特征可能恰恰包含了对分类极其重要的信息。基于Fisher准则的可分性分析就是使用训练样本的标签来降维,最大程度地保留可分性信息。

PCA理论意义:

将n个特征降维到k个,可以用来做数据压缩,或图像压缩,经过PCA处理后,二维数据投影到一维上可以由以下几种情况:

这里写图片描述
左图的效果好,一方面是投影后方差最大,另一方面是点到直线的距离平方和最小,而且直线过样本点的中心点。

PCA得到的k个坐标轴实际上是k个特征向量,由于协方差矩阵对称,因此k个特征向量正交。PCA所做的变换就是将原始的n维样本点,投影到k个正交的坐标系当中去,丢弃其他维度的信息。

PCA实例:

假设得到2维数据如下,其中每行表示一个样本,x和y表示每个样本的2个特征:
这里写图片描述

1、去掉每列的均值,也就是对所有样本的每个特征分别求均值,去掉
这里写图片描述

2、求特征的协方差矩阵

这里写图片描述
此处只有x和y,求得协方差矩阵:
这里写图片描述
对角线上分别为x和y的方差,非对角线上是协方差,协方差大于0表示其是正相关的。

3、求协方差的特征值和特征向量

这里写图片描述

上面是两个特征值,下面是对应的特征向量,这里的特征向量都归一化为单位向量。

4、将特征值按照从大到小的顺序排序,选择其中最大的k个,然后将其对应的k个特征向量分别作为列向量组成特征向量矩阵。

这里特征值只有两个,选择其中最大的那个,对应的特征向量是 ( − 0.677 , − 0.735 ) T (-0.677,-0.735)^T 0.677,0.735T

5、将样本点投影到选取的特征向量上

假设样例数量为m,特征数量为n,减去均值的样本矩阵为DataAdjust(mn),协方差矩阵为nn,选取的k个特征向量组成的矩阵为EigenVector(n*k),那么投影后的矩阵数据FinalData为:

F i n a l D a t a ( m ∗ n ) = D a t a A d j u s t ( m ∗ n ) × E i g e n V e c t o r ( n ∗ k ) FinalData(m*n)=DataAdjust(m*n) \times EigenVector(n*k) FinalData(mn)=DataAdjust(mn)×EigenVector(nk)

此处得到的结果:

这里写图片描述

PCA特点:无参数限制,不需要人为的设定参数,或根据经验模型对计算进行干预,最后的结果和数据有关,与用户无关,但是这个特点使得PCA无法使用已有的先验知识,是无监督的降维方法。

Fisher线性判别分析FLD(也叫LDA):

我们已知在很多情况下,准确的估计概率密度模型并非易事,在特征空间维数较高和样本数量较少的情况下尤为明显。实际上模式识别的目的是在特征空间中设法找到两类或多类的分类面,估计概率密度函数并不是我们的目的。

前文已经提到,正态分布情况下,贝叶斯决策的最优分类面是线性的或者是二次函数形式的,本文则着重讨论线性情况下的一类判别准则——Fisher判别准则。

Fisher线性判别(Fisher Linear Discrimination,FLD),也称线性判别式分析(Linear Discriminant Analysis, LDA)。FLD是基于样本类别进行整体特征提取的有效方法。它在使用PCA方法进行降维的基础上考虑到训练样本的类间信息。FLD的基本原理就是找到一个最合适的投影轴,使各类样本在该轴上投影之间的距离尽可能远,而每一类内的样本的投影尽可能紧凑,从而使分类效果达到最佳,即在最大化类间距离的同时最小化类内距离。FLD方法在进行图像整体特征提取方面有着广泛的应用。

线性判别简介:

  • 表达式: g ( x ) = w T + w 0 g(x)=w^T+w_0 g(x)=wT+w0其中 x x x d d d维特征向量, w w w称为权向量,决定分类面的方向(对应二维空间的斜率), w 0 w_0 w0是个常数,称为阈权值(对应二维空间的截距): x = [ x 1 , x 2 , . . . , x d ] T , w = [ w 1 , w 2 , . . . , w d ] T x=[x_1,x_2,...,x_d]^T,w=[w_1,w_2,...,w_d]^T x=[x1,x2,...,xd]T,w=[w1,w2,...,wd]T

这里写图片描述

Fisher线性判别函数求解过程:将M维特征矢量投影在一维空间中进行求解

  • Fisher线性判别函数是将多维空间中的特征矢量投影到一条直线上,也就是把维数压缩到一维,使得在投影线上最易于分类。

什么是最易于分类的投影面:

  • 投影后两类相隔尽可能远,而对同一类的样本又尽可能聚集。

Fisher准则函数:

  • 寻找这条最优直线的准则是Fisher准则:两类样本在一维空间的投影满足类内尽可能密集,类间尽可能分开,也就是投影后两类间样本均值之差尽可能大,类内部方差尽可能小,这样就能够使得两类之间尽可能分开,各类的内部又能尽可能聚集。一般而言,对于数据分布近似高斯分布的情况,Fisher线性判别准则能够得到很好的分类效果。

示例1:

PCA和LDA的以下比较哪些是正确的(1,2,3)

  1. LDA和PCA都是线性变换技术
  2. LDA是有监督的,而PCA是无监督的
  3. PCA最大化数据的方差,而LDA最大化不同类之间的分离

示例2:

PCA的f(M)(贡献率)渐近线快速到达1,则PCA是好的(左图),如果第一个特征值较大,且其余的较小,则是正常的PCA,如果所有特征值大致相等,则PCA是不好的(右图)。

这里写图片描述

M是主要分量,D是特征总数。

示例3:

Logistic回归和LDA间的差异(1,2)

  1. 如果类别分离好,逻辑回归的参数估计可能不稳定。
  2. 如果样本量小,并且每个类的特征分布是正常的。在这种情况下,线性判别分析比逻辑回归更稳定。

示例4:

PCA中会考虑哪个偏差:(正交偏移)

这里写图片描述

总是将残差视为垂直偏移,正交偏移在PCA的情况下是有用的。

示例5:

LDA最多产生c-1个判别向量(c为类别)。

PCA是确定性算法,也就是每次运行一次之后,得到的结果相同,而Kmeans不会,每次的结果可能都不同。

11、参数估计算法

  • EM算法: 只有观测序列,无状态序列时来学习模型参数,即Baum-Welch算法
  • 维特比算法: 用动态规划解决HMM(隐马模型)的预测问题,不是参数估计;解决的是给定一个模型和某个特定的输出序列,求最可能产生这个输出的状态序列。如通过海藻变化(输出序列)来观测天气(状态序列),是预测问题,通信中的解码问题。
  • 前向/后向算法:用来算概率,解决的是一个评估问题,即给定一个模型,求某特定观测序列的概率,用于评估该序列最匹配的模型。
  • 极大似然估计:即观测序列和相应的状态序列都存在时的监督学习算法,用来估计参数
  • Baum-Welch算法:解决的是一个模型训练问题,即参数估计,是一种无监督的训练方法,主要通过EM迭代实现;
  • 注意的是在给定观测序列和对应的状态序列估计模型参数,可以利用极大似然法估计。如果给定观测序列,没有对应的状态序列,才用EM,将状态序列看不不可测的隐数据。

12、Naive Bayesian(NB)分类模型,数据重复问题

示例1:

假定某同学使用Naive Bayesian(NB)分类模型时,不小心将训练数据的两个维度搞重复了,那么关于NB的说法中不正确的是(B)?

  • A 模型效果相比无重复特征的情况下精确度会降低(√)

  • B 如果所有特征都被重复一遍,得到的模型预测结果相对于不重复的情况下的模型预测结果一样

  • C 当两列特征高度相关时,无法用两列特征相同时所得到的结论来分析问题(√)

贝叶斯分类的背景:

分类是决策的基础,商业中要根据收集客户的消费特征将客户分类从而精准营销。 金融中你要根据一些交易行为的基本特征将交易者做分类。 从贝叶斯分析的基本思路出发我们可以迅速得到几种分类器。

朴素贝叶斯的特点:

朴素贝叶斯是机器学习中一个质朴而深刻的模型,当你要根据多个特征而非一个特征对数据进行分析时,我们可以假设这些特征相互独立,然后利用概率乘法得到每个类别的概率,然后选择概率最大的那个作为机器的判定。

朴素贝叶斯框架:
这里写图片描述
其中c是类别,A是特征,也就是说求出在已经观测到特征的前提下,该特征属于类别C的概率,但是该概率直接计算比价难以计算,所以求出不同特征情况下对应类别C的概率乘积,在乘以类别C发生的概率。

朴素贝叶斯的介绍:

贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法。

朴素贝叶斯的条件就是每个变量相互独立。在贝叶斯理论系统中,都有一个重要的条件独立性假设:假设所有特征之间相互独立,这样才能将联合概率拆分。

此外,若高度相关的特征在模型中引入两次, 这样增加了这一特征的重要性, 则它的性能因数据包含高度相关的特征而下降。正确做法是评估特征的相关矩阵,并移除那些高度相关的特征。

朴素贝叶斯(naive Bayes)算法是基于贝叶斯定理与特征条件独立假设的分类方法,对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布,然后基于此模型,对给定的输入x,利用贝叶斯定理求出后验概率最大的输出y,朴素贝叶斯法实现简单,学习与预测的效率都很高,是一种常见的方法。但由于该算法以自变量之间的独立(条件特征独立)性和连续变量的正态性假设为前提,就会导致算法精度在某种程度上受影响。

“朴素”的解释:假设各个特征之间相互独立(在贝叶斯分类器上做了简化)

朴素贝叶斯的基础假设:

①每个特征相互独立;
②每个特征的权重(或重要性)都相等,即对结果的影响程度都相同。

朴素贝叶斯具体实现步骤:

这里写图片描述

由于对每个分类目标来说, p ( x 1 , x 2 , . . . , x n ) p(x_1,x_2,...,x_n) p(x1,x2,...,xn)都是一样的,所以可以忽略

朴素贝叶斯的基本思想:

逻辑回归通过拟合曲线(或者学习超平面)实现分类,决策树通过寻找最佳划分特征进而学习样本路径实现分类,支持向量机通过寻找分类超平面进而最大化类别间隔实现类。相比之下,朴素贝叶斯独辟蹊径,通过考虑特征概率来预测分类。

工作流程:

1)准备阶段

确定特征属性,并对每个特征属性进行适当划分,然后由人工对一部分待分类项进行分类,形成训练样本。

2)训练阶段

计算每个类别在训练样本中的出现频率及每个特征属性划分对每个类别的条件概率估计

3)应用阶段

使用分类器进行分类,输入是分类器和待分类样本,输出是样本属于的分类类别

4)属性特征

  • 当特征为离散值的时候,直接统计即可,表示概率统计
  • 当特征为连续值的时候,假定特征符合高斯分布

核心算法:贝叶斯公式

P ( B ∣ A ) = P ( A ∣ B ) P ( B ) P ( A ) P(B|A)=\frac{P(A|B)P(B)}{P(A)} P(BA)=P(A)P(AB)P(B)
相当于 P ( 类别 ∣ 特征 = P ( 特征 ∣ 类别 ) P ( 类别 ) P ( 特征 ) P(类别|特征=\frac{P(特征|类别)P(类别)}{P(特征)} P(类别特征=P(特征)P(特征类别)P(类别)

也就是求得P(B|A)就完成了分类

朴素贝叶斯的优缺点:

朴素贝叶斯推断的一些优点:

  • 生成式模型,通过计算概率来进行分类,可以用来处理多分类问题。
  • 对小规模的数据表现很好,适合多分类任务,适合增量式训练,算法也比较简单。

朴素贝叶斯推断的一些缺点:

  • 对输入数据的表达形式很敏感。
  • 由于朴素贝叶斯的“朴素”特点,所以会带来一些准确率上的损失。
  • 需要计算先验概率,分类决策存在错误率。

13、下列那个方法不可以对文本分类

  • A. Kmeans

  • B. 决策树

  • C. 支持向量机

  • D. KNN

(A)——Kmeans是聚类方法,典型的无监督学习方法。

分类是监督学习方法,BCD都是常见的分类方法。

14、主分量问题

已知一组数据的协方差矩阵P,下面关于主分量说法错误的是(C)

  • A. 主分量分析的最佳准则是对一组数据进行按一组正交基分解, 在只取相同数量分量的条件下,以均方误差计算截尾误差最小

  • B. 在经主分量分解后,协方差矩阵成为对角矩阵

  • C. 主分量分析就是K-L变换(×)

  • D. 主分量是通过求协方差矩阵的特征值得到

解析:

K-L变换:

K-L变换是Karhunen-Loeve变换的简称,是一种特殊的正交变换。它是建立在统计特性基础上的一种变换,有的文献也称其为霍特林(Hotelling)变换,因为他在1933年最先给出将离散信号变换成一串不相关系数的方法。

  • K-L变换特征提取的思想:
  1. 用映射(或变换)的方法把原始特征变换为较少的新特征
  2. 降维
  • K-L变换的突出优点
  1. 可以去相关性,
  2. 是均方误差(Mean Square Error,MSE)意义下的最佳变换
  3. 适用于任意的概率密度函数
  4. 在消除模式特征之间的相关性、突出差异性方面有最优的效果
  • K-L变换的不足:
  1. 对两类问题容易得到较满意的结果,类别越多,效果越差
  2. 需要通过足够多的样本估计样本集的协方差矩阵或其他类型的散布矩阵,当样本数不足时,矩阵的估计会变得十分粗略,变换的优越性也不能充分地显示出来。

PCA:

  • PCA基本思想:

  • 进行特征降维变换,不能完全地表示原有的对象,能量总会有损失

  • 希望找到一种能量最为集中的变换方法使得损失最小

  • 如何选择主成分:

  • 在分析中选择的变量具有不同的量纲,变量水平差异很大,应该选择基于相关系数矩阵的主成分分析

  • 主成分分析的目的是简化变量,一般情况下主成分的个数应该小于原始变量的个数,关于保留的数量,应该权衡主成分个数和保留的信息。

  • PCA的意义:
    试图在力保数据信息丢失最少的原则,对这种多变量的数据进行最佳综合简化,也就是说,对高维变量空间进行降维处理,简化分析过程。

K-L变换和PCA的不同:

K-L变换与PCA变换是不同的概念,PCA的变换矩阵是协方差矩阵,K-L变换的变换矩阵可以有很多种(二阶矩阵、协方差矩阵、总类内离散度矩阵等等)。当K-L变换矩阵为协方差矩阵时,等同于PCA

15、logit 回归和SVM 的对比

Logit回归:

  • Logit回归本质上是一种根据样本对权值进行极大似然估计的方法,而后验概率正比于先验概率和似然函数的乘积。logit仅仅是最大化似然函数,并没有最大化后验概率,更谈不上最小化后验概率。而最小化后验概率是朴素贝叶斯算法要做的。

  • Logit回归的输出就是样本属于正类别的几率,可以计算出概率用于预测事件发生概率的大小

SVM:

  • 目标是找到使得训练数据尽可能分开且分类间隔最大的超平面,属于结构风险最小化,可以有效避免模型过拟合。

  • 可以通过正则化系数控制模型的复杂度,避免过拟合。

联系:

1、LR和SVM都可以处理分类问题,且一般都用于处理线性二分类问题(在改进的情况下可以处理多分类问题)
2、两个方法都可以增加不同的正则化项,如l1、l2等等。所以在很多实验中,两种算法的结果是很接近的。

区别:

1、LR是参数模型,SVM是非参数模型。
2、从目标函数来看,区别在于逻辑回归采用的是logistical loss,SVM采用的是hinge loss,这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。
3、SVM的处理方法是只考虑support vectors,也就是和分类最相关的少数点,去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重。
4、逻辑回归相对来说模型更简单,好理解,特别是大规模线性分类时比较方便。而SVM的理解和优化相对来说复杂一些,SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算。
5、logic 能做的 svm能做,但可能在准确率上有问题,svm能做的logic有的做不了。

16、影响聚类算法结果的主要因素

分类准则、特征选取、模式相似性度量

17、马氏距离和欧式距离的不同

1)欧氏距离:

也称欧几里得度量、欧几里得度量,是一个通常采用的距离定义,它是在m维空间中两个点之间的真实距离。在二维和三维空间中的欧氏距离的就是两点之间的距离。

欧式距离的特点:

  • 优点:平移、正交旋转不变性

  • 缺点:

  • 它将样品的不同属性(即各指标或各变量)之间的差别等同看待,这一点有时不能满足实际要求.

马氏距离(协方差阵为单位阵的欧氏距离的特殊情况):

是由印度统计学家马哈拉诺比斯提出的,表示数据的协方差距离,为两个服从同一分布并且其协方差矩阵为Σ的随机变量与的差异程度:如果协方差矩阵为单位矩阵,那么马氏距离就简化为欧氏距离,如果协方差矩阵为对角阵,则其也可称为正规化的欧氏距离。它是一种有效的计算两个未知样本集的相似度的方法。

  • 优点:

  • 它不受量纲的影响,两点之间的马氏距离与原始数据的测量单位无关

  • 具有平移不变性、旋转不变性、尺度缩放不变性,对一切非奇异变换具有不变性

  • 可以排除变量之间相关性的干扰

  • 缺点:

  • 夸大了变化微小的变量的作用

  • 受协方差矩阵不稳定的影响,马氏距离并不总是能顺利计算出。

考虑了模式的分布

18、统计模式分类问题中,先验概率未知

统计模式分类问题中,先验概率未知使用最小最大损失准则

示例:

统计模式分类问题中,当先验概率未知时,可以使用(A)

  • A. 最小最大损失准则 (√)
  • B. 最小误判概率准则
  • C. 最小损失准则
  • D. N-P判决

解析:

p(wi)表示类别wi出现的先验概率,也就是根据以往经验和分析得到的概率。

  • A. 考虑p(wi)变化的条件下,是风险最小

  • B. 最小误判概率准则, 就是判断p(w1|x)和p(w2|x)哪个大,x为特征向量,w1和w2为两分类,根据贝叶斯公式,需要用到先验知识

  • C. 最小损失准则,在B的基础之上,还要求出p(w1|x)和p(w2|x)的期望损失,因为B需要先验概率,所以C也需要先验概率

  • D. N-P判决,即限定一类错误率条件下使另一类错误率为最小的两类别决策,即在一类错误率固定的条件下,求另一类错误率的极小值的问题,直接计算p(x|w1)和p(x|w2)的比值,不需要用到贝叶斯公式。

19、线性分类器最佳准则

线性分类器有三大类:感知器准则函数、SVM、Fisher准则

而贝叶斯分类器不是线性分类器。

  • 感知准则函数 :准则函数以使错分类样本到分界面距离之和最小为原则。其优点是通过错分类样本提供的信息对分类器函数进行修正,这种准则是人工神经元网络多层感知器的基础。

  • 支持向量机 :基本思想是在两类线性可分条件下,所设计的分类器界面使两类之间的间隔为最大,它的基本出发点是使期望泛化风险尽可能小。(使用核函数可解决非线性问题)

  • Fisher 准则 :更广泛的称呼是线性判别分析(LDA),将所有样本投影到一条远点出发的直线,使得同类样本距离尽可能小,不同类样本距离尽可能大,具体为最大化“广义瑞利商”。

根据两类样本一般类内密集,类间分离的特点,寻找线性分类器最佳的法线向量方向,使两类样本在该方向上的投影满足类内尽可能密集,类间尽可能分开。这种度量通过类内离散矩阵 Sw 和类间离散矩阵 Sb 实现。

20、判断哪个学习方法适应人员分类问题

一监狱人脸识别准入系统用来识别待进入人员的身份,此系统一共包括识别4种不同的人员:狱警,小偷,送餐员,其他。下面哪种学习方法最适合此种应用需求(B):

  • A.二分类问题

  • B.多分类问题(√)

  • C.层次聚类问题

  • D.k-中心点聚类问题

  • E.回归问题

  • F.结构分析问题

  • 二分类:每个分类器只能把样本分为两类。监狱里的样本分别为狱警、小偷、送餐员、其他。二分类肯 定行不通。瓦普尼克95年提出来基础的支持向量机就是个二分类的分类器,这个分类器学习过 程就是解一个基于正负二分类推导而来的一个最优规划问题(对偶问题),要解决多分类问题 就要用决策树把二分类的分类器级联,VC维的概念就是说的这事的复杂度。

  • 层次聚类: 创建一个层次等级以分解给定的数据集。监狱里的对象分别是狱警、小偷、送餐员、或者其 他,他们等级应该是平等的,所以不行。此方法分为自上而下(分解)和自下而上(合并)两种操作方式。

  • K-中心点聚类:挑选实际对象来代表簇,每个簇使用一个代表对象。它是围绕中心点划分的一种规则,所以这里并不合适。

  • 回归分析:处理变量之间具有相关性的一种统计方法,这里的狱警、小偷、送餐员、其他之间并没有什 么直接关系。

  • 结构分析: 结构分析法是在统计分组的基础上,计算各组成部分所占比重,进而分析某一总体现象的内部结构特征、总体的性质、总体内部结构依时间推移而表现出的变化规律性的统计方法。结构分析法的基本表现形式,就是计算结构指标。这里也行不通。

  • 多分类问题: 针对不同的属性训练几个不同的弱分类器,然后将它们集成为一个强分类器。这里狱警、 小偷、送餐员 以及他某某,分别根据他们的特点设定依据,然后进行区分识别。

21、准确率、召回率

对于二类分类问题常用的评价指标是精准度(precision)与召回率(recall)。

通常以关注的类为正类,其他类为负类,分类器在测试数据集上的预测或正确或不正确,4种情况出现的总数分别记作:

  • TP——将正类预测为正类数(真正类)

  • FN——将正类预测为负类数(假负类)

  • FP——将负类预测为正类数(假正类)

  • TN——将负类预测为负类数(假负类)

由此:

精确率和准确率都是关于预测效果的描述,召回率是关于预测样本的描述。

  • 精准率(precision):也叫查准率,定义为预测为正的样本中有多少是真正的正样本: P = T P ( T P + F P ) P = \frac{TP}{(TP + FP)} P=(TP+FP)TP

  • 准确率(accuracy):定义为预测的正 / 负样本有多少是真实的正和负: A = T P + T N 全部样本 A=\frac{TP+TN}{全部样本} A=全部样本TP+TN

  • 召回率(recall):也叫查全率,定义为样本中的正例有多少被预测正确了: R = T P ( T P + F N ) R = \frac{TP}{(TP + FN)} R=(TP+FN)TP

  • F1值定义为: F 1 = 2 P R ( P + R ) F1 = \frac{2 P R }{(P + R)} F1=(P+R)2PR

精准率和召回率和F1取值都在0和1之间,精准率和召回率高,F1值也会高,数值越接近1越高。

问题:如果将分类阈值提高,也就是预测为正的样本样本会减少,会出现什么情况:

  • 召回率分子减小,分母不变,所以召回率会变小或不变
  • 精确率的分子分母同时变化,所以其变化不确定
  • 准确率的变化也不确定

示例:

(假设precision=TP/(TP+FP),recall=TP/(TP+FN)。)在二分类问题中,当测试集的正例和负例数量不均衡时,以下评价方案哪个是相对不合理的(A)

A. Accuracy:(TP+TN)/all (√)
B. F-value:2recallprecision/(recall+precision)
C. G-mean:sqrt(precision*recall)
D. AUC:曲线下面积

解析:

题目提到测试集正例和负例数量不均衡,那么假设正例数量很少占10%,负例数量占大部分90%。
而且算法能正确识别所有负例,但正例只有一半能正确判别。
那么TP=0.05×all,TN=0.9×all,Accuracy=95%。
虽然Accuracy很高,precision是100%,但正例recall只有50%

统计学假设测试中:

  • I 类(Type-1)错误即错误地拒绝了正确的假设,即假正类错误
  • II 类(Type-2)错误通常指错误地接受了错误的假设,即假负类错误

22、SVM的特点及核函数

特点:

  • 加入L2正则项,对噪声样本的容错能力增强,可以最大化分类间隔,使得分类器拥有更强的泛化能力

  • Hinge 损失函数,作用是最小化经验分类错误

  • 分类间隔为2 / ||w||,||w||代表向量的模

  • 当参数C越小时,分类间隔越大,分类错误越多,趋于欠学习

核函数:

SVM核函数:包括线性核函数、多项式核函数、径向基核函数、高斯核函数、幂指数核函数、拉普拉斯核函数、ANOVA核函数、二次有理核函数、多元二次核函数、逆多元二次核函数以及Sigmoid核函数.

核函数的定义并不困难,根据泛函的有关理论,只要一种函数 $K ( x i , x j ) $满足Mercer条件,它就对应某一变换空间的内积,对于判断哪些函数是核函数到目前为止也取得了重要的突破,得到Mercer定理和以下常用的核函数类型:

(1)线性核函数

K ( x , x i ) = x ⋅ x i K(x,x_i)=x\cdot x_i K(x,xi)=xxi

(2)多项式核

K ( x , x i ) = ( ( x ⋅ x i ) + 1 ) ⋅ d K(x,x_i)=((x\cdot x_i)+1)\cdot d K(x,xi)=((xxi)+1)d

(3)径向基核(RBF)/ 高斯核

K ( x , x i ) = e x p ( − ∣ ∣ x − z ∣ ∣ 2 2 δ 2 ) K(x,x_i)=exp(- \frac{||x-z||^2}{2\delta ^2}) K(x,xi)=exp(2δ2∣∣xz2)
Gauss径向基函数则是局部性强的核函数,其外推能力随着参数 σ 的增大而减弱。多项式形式的核函数具有良好的全局性质。局部性较差。

(4)傅里叶核

K ( x , x i ) = 1 − q 22 ( 1 − 2 q ⋅ c o s ( x − x i ) + q 2 ) K(x,x_i)=1-q_{22}(1-2q\cdot cos(x-x_i)+q_2) K(x,xi)=1q22(12qcos(xxi)+q2)

(5)样条核

K ( x , x i ) = B 2 n + ( x − x i ) K(x,x_i)=B2n+(x-x_i) K(x,xi)=B2n+(xxi)

(6)Sigmoid核函数

K ( x , x i ) = t a n h ( k ( x , x i ) − δ ) K(x,x_i)=tanh(k(x,x_i)-\delta) K(x,xi)=tanh(k(x,xi)δ)

采用Sigmoid函数作为核函数时,支持向量机实现的就是一种多层感知器神经网络,应用SVM方法,隐含层节点数目(它确定神经网络的结构)、隐含层节点对输入节点的权值都是在设计(训练)的过程中自动确定的。

支持向量机的理论基础决定了它最终求得的是全局最优值而不是局部最小值,也保证了它对于未知样本的良好泛化能力而不会出现过学习现象。

核函数的选择:

在选取核函数解决实际问题时,通常采用的方法有:

  • 一是利用专家的先验知识预先选定核函数。

  • 二是采用Cross-Validation方法,即在进行核函数选取时,分别试用不同的核函数,归纳误差最小的核函数就是最好的核函数.如针对傅立叶核、RBF核,结合信号处理问题中的函数回归问题,通过仿真实验,对比分析了在相同数据条件下,采用傅立叶核的SVM要比采用RBF核的SVM误差小很多。

  • 三是采用由Smits等人提出的混合核函数方法,该方法较之前两者是目前选取核函数的主流方法,也是关于如何构造核函数的又一开创性的工作.将不同的核函数结合起来后会有更好的特性,这是混合核函数方法的基本思想。

**带核的SVM为什么能分类非线性问题? **

核函数的本质是两个函数的內积,而这个函数在SVM中可以表示成对于输入值的高维映射。注意核并不是直接对应映射,核只不过是一个內积 常用核函数及核函数的条件:

核函数选择的时候应该从线性核开始,而且在特征很多的情况下没有必要选择高斯核,应该从简单到难的选择模型。我们通常说的核函数指的是正定和函数,其充要条件是对于任意的x属于X,要求K对应的Gram矩阵要是半正定矩阵。

RBF核径向基,这类函数取值依赖于特定点间的距离,所以拉普拉斯核其实也是径向基核。

线性核:主要用于线性可分的情况

23、L1/L2正则化

正则化是针对过拟合而提出的,因为在求解模型最优的是一般优化最小的经验风险,现在在该经验风险上加入模型复杂度这一项(正则化项是模型参数向量的范数),并使用一个rate比率来权衡模型复杂度与以往经验风险的权重,如果模型复杂度越高,结构化的经验风险会越大,现在的目标就变为了结构经验风险的最优化,可以防止模型训练过度复杂,有效的降低过拟合的风险。

较有新意的博客

简介:

L1范数: 为x向量各个元素绝对值之和。
L2范数: 为x向量各个元素平方和的1/2次方,L2范数又称Euclidean范数或者Frobenius范数
Lp范数::为x向量各个元素绝对值p次方和的1/p次方.

在支持向量机学习过程中,L1范数实际是一种对于成本函数求解最优的过程,因此,L1范数正则化通过向成本函数中添加L1范数,使得学习得到的结果满足稀疏化,从而方便人类提取特征。

L1范数可以使权值稀疏,方便特征提取。
L2范数可以防止过拟合,提升模型的泛化能力。

详细介绍:

当模型参数过多时,会产生过拟合问题,正则化是通过在经验风险上加一个正则化项,来惩罚过大的参数来防止过拟合。

**正则化是符合奥卡姆剃刀(Occam’s razor)原理的:**在所有可能选择的模型中,能够很好地解释已知数据并且十分简单的才是最好的模型。

过拟合就是参数过多,导致在训练集上过于优秀,丧失了对未知数据集的一般性,为了防止过拟合,可以引入正则项,通过惩罚过大的参数,或者说权重大小变化太快的参数,也就是使得w向量中项的个数最小,所以损失函数和正则项同时最小,最终让两者之和最小。

**L0范数:**向量中非0元素的个数,如果用L0范数来规范化一个参数矩阵的话,就是希望w的大部分元素都是0,也就是希望参数w是稀疏的。但是L0范数难以优化求解,故基本不用。

**L1范数:**向量中各个元素的绝对值之和,也叫“稀疏规则算子(Lasso Regularization)”,去掉一些没用的特征,也就是将这些特征对应的权重置为0,比L0具有更好的优化求解特性,也叫Losso回归。

  • 为什么要让参数稀疏化:

    • 能够实现特征自动选择:一般情况大部分元素都和最终输出y没有很大的关系,或者不提供任何信息,稀疏规则算子就会自动将这些无用的信息的权重置为0,完成特征的自动选择

    • 可解释性:稀疏化后可以使得模型更容易解释,也就是提取出提供信息最多的特征,利于简化分析。

**L2范数:**向量中各个元素平方求和的开方结果,也叫岭回归(ridge regression),用于防止过拟合,提升模型的泛化能力。当参数越小时,说明模型越简单,而模型越简单,越趋于平滑,从而防止过拟合。

使得所有的w尽可能的趋于0但不为0,因为过拟合的时候,拟合函数需要顾忌每一个点,最终形成的拟合函数波动很大, 在某些小区间里,函数值的变化很距离,也就是w非常大,所以,L2正则化就很大程度上抑制了w变化的速率,也就是权重变化太快的趋势。

通过L2范数,我们可以实现了对模型空间的限制,从而在一定程度上避免了过拟合。

L1 / L2的区别:

1)导数不同:

L1是让绝对值最小,导数为1,L2是让平方最小,导数为w,在靠近0附近,L1以均匀速度下降到0,而L2则完全停下来了,说明L1将不重要的特征(或者重量不在一个数量级的特征)剔除掉,L2则是把特征贡献尽量压缩到最小但不为0。

假设我们的预测结果与两个特征相关,L2正则倾向于综合两者的影响,给影响大的特征赋予高的权重;而L1正则倾向于选择影响较大的参数,而舍弃掉影响较小的那个。实际应用中 L2正则表现往往会优于 L1正则,但 L1正则会大大降低我们的计算量。
2)先验分布不同:

先验就是优化的起跑线,有先验的好处就是可以在较小的数据集中有良好的泛化性能,当然这是在先验分布是接近真实分布的情况下得到的了,从信息论的角度看,向系统加入了正确先验这个信息,肯定会提高系统性能。

L1:拉普拉斯分布

对参数引入拉普拉斯先验等价于 L1正则化, 如下图:

这里写图片描述
这里写图片描述

L2:高斯分布

对参数引入高斯正态先验分布相当于L2正则化, 这个大家都熟悉:
这里写图片描述
这里写图片描述

L1先验趋于0本身,L2先验趋于0周围。

总结:

  • L1会趋向于产生少量的特征,而其他的特征都是0,Lasso在特征选择时候非常有用

  • L2会选择更多的特征,这些特征都会接近于0,Ridge就只是一种规则化而已。

示例:

假设你被给到以下数据,你想要在给定的两个类别中使用 logistic 回归模型对它进行分类

这里写图片描述

你正在使用带有 L1 正则化的 logistic 回归,其中 C 是正则化参数,w1 和 w2 是 x1 和 x2 的系数。

这里写图片描述

当你把 C 值从 0 增加至非常大的值时,第一个 w1 成了 0,接着 w2 也成了 0。

解析:通过观察图像我们发现,即使只使用 x2,我们也能高效执行分类。因此一开始 w1 将成 0;当正则化参数不断增加时,w2 也会越来越接近 0。

24、时间序列模型

如何选择最优的模型:

在讲具体模型之前,我们首先需知道什么是最优的模型,有怎样的标准去评价“最优”。通常来讲,akaike information criterion(AIC)和bayesian information criterion(BIC)是评价模型优良的两个指标。这两种评价指标不仅适用于事件序列模型,还广泛广泛运用于其他数学模型中。

AIC = -2 ln(L) + 2 k

BIC = -2 ln(L) + ln(n)*k

让我们来理解AIC的含义,AIC由两部分组成,一部分是对数极大似然函数,另一部分则是参数的个数。极大似然函数是评价模型拟合优劣性的指标,值越大说明拟合的效果越好。然而使用过多的参数可以拟合的很好却会出现过度拟合的情况,这样的模型泛化能力很差,因此加上参数的个数实际上是对极大似然函数进行”惩罚“。选取AIC值最小的模型作为最优模型,实质上是平衡了欠拟合和过拟合。

  • AR模型:线性预测模型,即已知N个数据,可由模型推出第N点前面或后面的数据(设推出P点),所以其本质类似于插值。

AR模型思想很简单,该模型认为通过时间序列过去时点的线性组合加上白噪声即可预测当前时点,它是随机游走的一个简单扩展。

AR模型在金融模型中主要是对金融序列过去的表现进行建模,如交易中的动量与均值回归。

  • MA模型(moving average model):滑动平均模型,其中使用趋势移动平均法建立直线趋势的预测模型。

MA模型和AR大同小异,它并非是历史时序值的线性组合而是历史白噪声的线性组合。与AR最大的不同之处在于,AR模型中历史白噪声的影响是间接影响当前预测值的(通过影响历史时序值)。

在金融模型中,MA常用来刻画冲击效应,例如预期之外的事件。

  • ARMA模型(auto regressive moving average model):自回归滑动平均模型,模型参量法高分辨率谱分析方法之一。这种方法是研究平稳随机过程有理谱的典型方法。它比AR模型法与MA模型法有较精确的谱估计及较优良的谱分辨率性能,但其参数估算比较繁琐。

将AR和MA模型混合可得到ARMA模型,AR§和MA(q)共同组成了ARMA(p,q)。

其建模思想可概括为:逐渐增加模型的阶数,拟合较高阶模型,直到再增加模型的阶数而剩余残差方差不再显著减小为止。

  • GARCH模型:广义ARCH模型,是ARCH模型的拓展,由Bollerslev(1986)发展起来的。它是ARCH模型的推广。GARCH(p,0)模型,相当于ARCH§模型。GARCH模型是一个专门针对金融数据所量体订做的回归模型,除去和普通回归模型相同的之处,GARCH对误差的方差进行了进一步的建模。特别适用于波动性的分析和预测,这样的分析对投资者的决策能起到非常重要的指导性作用,其意义很多时候超过了对数值本身的分析和预测。

关于ARMA、AR、MA模型的功率谱,可以做一 个定性的描述:

由于MA模型是通过一个全零点滤波器产生,当有 零点接近单位圆时,MA谱可能是一个深谷; 类似地,当极点接近单位圆时,AR谱对应的频率 处会是一个尖峰; ARMA谱既有尖峰又有深谷。

25、person系数

要理解Pearson相关系数,首先要理解协方差(Covariance),协方差是一个反映两个随机变量相关程度的指标,如果一个变量跟随着另一个变量同时变大或者变小,那么这两个变量的协方差就是正值,反之相反,公式如下:

这里写图片描述

person系数是衡量向量相似度的一种方法。输出范围为-1到+1, 0代表无相关性,负值为负相关,正值为正相关。

这里写图片描述这里写图片描述

Pearson相关系数是用协方差除以两个变量的标准差得到的,虽然协方差能反映两个随机变量的相关程度(协方差大于0的时候表示两者正相关,小于0的时候表示两者负相关),但是协方差值的大小并不能很好地度量两个随机变量的关联程度,例如,现在二维空间中分布着一些数据,我们想知道数据点坐标X轴和Y轴的相关程度,如果X与Y的相关程度较小但是数据分布的比较离散,这样会导致求出的协方差值较大,用这个值来度量相关程度是不合理的,如下图:

这里写图片描述

为了更好的度量两个随机变量的相关程度,引入了Pearson相关系数,其在协方差的基础上除以了两个随机变量的标准差,容易得出,pearson是一个介于-1和1之间的值,当两个变量的线性关系增强时,相关系数趋于1或-1;当一个变量增大,另一个变量也增大时,表明它们之间是正相关的,相关系数大于0;如果一个变量增大,另一个变量却减小,表明它们之间是负相关的,相关系数小于0;如果相关系数等于0,表明它们之间不存在线性相关关系。《数据挖掘导论》给出了一个很好的图来说明:

这里写图片描述
几种不同的度量方法:

这里写图片描述

皮尔逊相关系数是余弦相似度在维度值缺失情况下的一种改进,其实皮尔逊系数就是cos计算之前,将两个向量都先进行中心化(centered)。

中心化的意思是说, 对每个向量, 我先计算所有元素的平均值avg, 然后向量中每个维度的值都减去这个avg, 得到的这个向量叫做被中心化的向量. 机器学习, 数据挖掘要计算向量余弦相似度的时候, 由于向量经常在某个维度上有数据的缺失, 预处理阶段都要对所有维度的数值进行中心化处理.

示例1:

两个变量的 Pearson 相关性系数为零,但这两个变量的值同样可以相关(√)

Pearson相关系数只能衡量线性相关性,但无法衡量非线性关系。如y=x^2,x和y有很强的非线性关系。

示例2:

当我们构造线性模型时, 我们注意变量间的相关性. 在相关矩阵中搜索相关系数时, 如果我们发现3对变量的相关系数是(Var1 和Var2, Var2和Var3, Var3和Var1)是-0.98, 0.45, 1.23 . 我们可以得出下列结论:

  1. Var1和Var2是非常相关的
  2. 因为Var1和Var2是非常相关的, 我们可以去除其中一个
  3. Var3和Var1的1.23相关系数是不可能的

解析:

相关性系数范围为[-1,1],一般的如果相关系数大于0.7,或小于-0.7,是高相关的。

Var1和Var2相关系数是接近负1, 所以这是多重线性相关, 我们可以考虑去除其中一个。

示例3:

给定三个变量 X,Y,Z。(X, Y)、(Y, Z) 和 (X, Z) 的 Pearson 相关性系数分别为 C1、C2 和 C3。现在 X 的所有值加 2(即 X+2),Y 的全部值减 2(即 Y-2),Z 保持不变。那么运算之后的 (X, Y)、(Y, Z) 和 (X, Z) 相关性系数分别为 D1、D2 和 D3。现在试问 D1、D2、D3 和 C1、C2、C3 之间的关系是什么?

解答:D1 = C1, D2 = C2, D3 = C3

解析:

特征之间的相关性系数不会因为特征加或减去一个数而改变。

协方差和相关性的区别:

相关性是协方差的标准化格式。协方差本身很难做比较。例如:如果我们计算工资($)和年龄(岁)的协方差,因为这两个变量有不同的度量,所以我们会得到不能做比较的不同的协方差。

为了解决这个问题,我们计算相关性来得到一个介于-1和1之间的值,就可以忽略它们各自不同的度量。

示例4:

两个变量的 Pearson 相关性系数为零,但这两个变量的值同样可以相关(√)

Y=X2,请注意他们不仅仅相关联,同时一个还是另一个的函数。尽管如此,他们的相关性系数还是为 0,因为这两个变量的关联是正交的,而相关性系数就是检测这种关联。

26、随机森林数据过拟合

下面哪个/些超参数的增加可能会造成随机森林数据过拟合?

  • A.树的数量

  • B.树的深度 (√)

  • C.学习速率

我们增加树的深度有可能会造成模型过拟合。学习速率并不是随机森林的超参数。增加树的数量可能会造成欠拟合。

随机森林RF:

随机森林是有很多随机得决策树构成,它们之间没有关联。得到RF以后,在预测时分别对每一个决策树进行判断,最后使用Bagging的思想进行结果的输出(也就是投票的思想)

随机森林如何处理缺失值?

  1. (na.roughfix)简单粗暴,对于训练集,同一个class下的数据,如果是分类变量缺失,用众数补上,如果是连续型变量缺失,用中位数补。

  2. rfImpute)这个方法计算量大,至于比方法一好坏?不好判断。先用na.roughfix补上缺失值,然后构建森林并计算proximity matrix,再回头看缺失值,如果是分类变量,则用没有缺失的观测实例的proximity中的权重进行投票。如果是连续型变量,则用proximity矩阵进行加权平均的方法补缺失值。然后迭代4-6次,这个补缺失值的思想和KNN有些类似12。

随机森林如何评估特征重要性?

衡量变量重要性的方法有两种,Decrease GINI 和 Decrease Accuracy:

  1. Decrease GINI: 对于回归问题,直接使用argmax(VarVarLeftVarRight)作为评判标准,即当前节点训练集的方差Var减去左节点的方差VarLeft和右节点的方差VarRight。
  2. Decrease Accuracy:对于一棵树Tb(x),我们用OOB样本可以得到测试误差1;然后随机改变OOB样本的第j列:保持其他列不变,对第j列进行随机的上下置换,得到误差2。至此,我们可以用误差1-误差2来刻画变量j的重要性。基本思想就是,如果一个变量j足够重要,那么改变它会极大的增加测试误差;反之,如果改变它测试误差没有增大,则说明该变量不是那么的重要。

学习过程

  1. 现在有N个训练样本,每个样本的特征为M个,需要建K颗树
  2. 从N个训练样本中有放回的取N个样本作为一组训练集(其余未取到的样本作为预测分类,评估其误差)
  3. 从M个特征中取m个特征左右子集特征(m<
  4. 对采样的数据使用完全分裂的方式来建立决策树,这样的决策树每个节点要么无法分裂,要么所有的样本都指向同一个分类
  5. 重复2的过程K次,即可建立森林

预测过程

  1. 将预测样本输入到K颗树分别进行预测
  2. 如果是分类问题,直接使用投票的方式选择分类频次最高的类别
  3. 如果是回归问题,使用分类之后的均值作为结果

参数问题

  1. 这里的一般取m=sqrt(M)
  2. 关于树的个数K,一般都需要成百上千,但是也有具体的样本有关(比如特征数量)
  3. 树的最大深度,(太深可能可能导致过拟合??)
  4. 节点上的最小样本数、最小信息增益

泛化误差估计

使用oob(out-of-bag)进行泛化误差的估计,将各个树的未采样样本作为预测样本(大约有36.8%),使用已经建立好的森林对各个预测样本进行预测,预测完之后最后统计误分得个数占总预测样本的比率作为RF的oob误分率。

学习算法

  1. ID3算法:处理离散值的量
  2. C45算法:处理连续值的量
  3. Cart算法:离散和连续 两者都合适?

GBDT

GBDT的精髓在于训练的时候都是以上一颗树的残差为目标,这个残差就是上一个树的预测值与真实值的差值。

比如,当前样本年龄是18岁,那么第一颗会去按18岁来训练,但是训练完之后预测的年龄为12岁,差值为6,所以第二颗树的会以6岁来进行训练,假如训练完之后预测出来的结果为6,那么两棵树累加起来就是真实年龄了,但是假如第二颗树预测出来的结果是5,那么剩余的残差1就会交给第三个树去训练。
Boosting的好处就是每一步的参加就是变相了增加了分错instance的权重,而对已经对的instance趋向于0,这样后面的树就可以更加关注错分的instance的训练了

Shrinkage:

Shrinkage认为,每次走一小步逐步逼近的结果要比每次迈一大步逼近结果更加容易避免过拟合。
这里写图片描述

调参:

  1. 树的个数 100~10000
  2. 叶子的深度 3~8
  3. 学习速率 0.01~1
  4. 叶子上最大节点树 20
  5. 训练采样比例 0.5~1
  6. 训练特征采样比例 sqrt(num)

优缺点:

  • 优点:
  1. 精度高
  2. 能处理非线性数据
  3. 能处理多特征类型
  4. 适合低维稠密数据
  • 缺点:
  1. 并行麻烦(因为上下两颗树有联系)
  2. 多分类的时候 复杂度很大

Bagging

  1. 从N样本中有放回的采样N个样本
  2. 对这N个样本在全属性上建立分类器(CART,SVM)
  3. 重复上面的步骤,建立m个分类器
  4. 预测的时候使用投票的方法得到结果

Boosting

boosting在训练的时候会给样本加一个权重,然后使loss function尽量去考虑那些分错类的样本(比如给分错类的样本的权重值加大)

27、不可以用于特征降维的方法有

  • A.主成分分析PCA

  • B.线性判别分析LDA

  • C.深度学习SparseAutoEncoder(√)

  • D.矩阵奇异值分解SVD

特征降维方法主要有:PCA,LLE,Isomap

  • **SVD:**和PCA类似,也可以看成一种降维方法

  • **LDA:**线性判别分析,通过找到一个空间使得类内距离最小类间距离最大,可用于降维

  • AutoEncoder: AutoEncoder的结构与神经网络的隐含层相同,由输入L1,输出 L2组成,中间则是权重连接。Autoencoder通过L2得到输入的重构L3,最小化L3与L1的差别 进行训练得到权重。在这样的权重参数下,得到的L2可以尽可能的保存L1的信息。

  • Autoencoder的输出L2的维度由输出的神经元个数决定。当输出维度大于L1时,则需要在训练目标函数中加入sparse 惩罚项,避免L2直接复制L1(权重全为1)。所以称为sparseAutoencoder( Andrew Ng提出的)。

  • 结论:SparseAutoencoder大多数情况下都是升维的,所以称之为特征降维的方法不准确。

  • **lasso:**通过参数缩减达到降维的目的

  • **小波分析:**有一些变换的操作降低其他干扰,可以看做是降维

  • **拉普拉斯特征映射:**也可以降维

28、马氏距离

马氏距离是基于卡方分布的,度量多元outlier离群点的统计方法。

马氏距离的优缺点:量纲无关,排除变量之间的相关性的干扰。

29、Logistics回归和一般回归分析的区别

对数几率回归(logistics regression)和一般回归分析有什么区别?

  • A. 对数几率回归是设计用来预测事件可能性的(√)

  • B. 对数几率回归可以用来度量模型拟合程度(√)

  • C. 对数几率回归可以用来估计回归系数(√)

  • D. 以上所有

解释:虽然对数几率回归是用来解决分类问题的,但是模型建立好后,就可以根据独立的特征,估计相关的回归系数。就我认为,这只是估计回归系数,不能直接用来做回归模型。

Logistic regression是一种监督式学习算法,因为它使用真假标签进行测试。 测试模型时,监督式学习算法应具有输入变量(x)和目标变量(Y)

神经网络是一种通用逼近器,因此能够实现线性回归算法,所以可以用神经网络算法设计逻辑回归。

示例1:

逻辑回归本身只能解决二分类问题,但可以使用One vs all的方法解决多分类问题。

示例2:

逻辑回归使用最大似然估计来测试逻辑回归的过程。

示例3:

在逻辑回归的输出与目标对比的情况下,哪个评估指标不适用(D):

A. AUC-ROC
B. 准确度
C. Logloss
D. 均方误差

因为逻辑回归是一个分类算法,所以其输出不是实时值,所以均方误差不能用于评估。

示例4:

如下逻辑回归图显示了3种不同学习速率值的代价函数和迭代次数之间的关系
这里写图片描述

注:
1.蓝色的学习率是L1
2.红色的学习率是L2
3.绿色学习率为lL3

则:L1<L2<L3

训练逻辑回归之前,不需要对特征进行标准化。

选择逻辑回归中的one vs all 方法时,需要在n类分类问题中有n个单独的逻辑回归与之相适应,其中每个类的概率由剩余类的概率和来确定。

逻辑回归的输出为(0,1)之间的值,表示概率。

线性回归误差值必须正态分布,但是在Logistic回归的情况下,情况并非如此。

Logistic(x)= Logit_inv(x)

示例5:

Logistic回归分类器是否能对下列数据进行完美分类?(×)

这里写图片描述

注:只可使用X1和X2变量,且只能使用两个二进制值(0,1)。

解析:逻辑回归只能形成线性决策面,而图中的例子并非线性可分的。

示例6:

假设对给定数据应用了Logistic回归模型,并获得了训练精度X和测试精度Y。现在要在同一数据中添加一些新特征,以下哪些是错误的选项。
注:假设剩余参数相同。

A. 训练精度提高
B. 训练准确度提高或保持不变(×)
C. 测试精度提高或保持不变

**解析:**将更多的特征添加到模型中会增加训练精度,因为模型必须考虑更多的数据来适应逻辑回归。但是,如果发现特征显着,则测试精度将会增加。

30、Logistics回归系统介绍

逻辑回归是一个线性的二分类模型,主要是计算在某个样本特征下事件发生的概率,比如根据用户的浏览购买情况作为特征来计算他是否会购买这个商品,LR的最终值是根据一个线性和函数再通过一个sigmoid函数来求得的,该线性和函数是权重与特征值的累加以及加上偏置求出来的,所以训练LR也就是训练线性和函数的各个权重w。

权重w一般使用最大似然法来估计,估计出似然函数的负号极小值就会得到最优w解,通常采用随机梯度下降和拟牛顿法来进行优化。

1、逻辑回归基本原理

逻辑回归假设数据服从伯努利分布,通过极大化似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的。

这里写图片描述
逻辑斯蒂分布的分布函数就是sigmoid曲线

1)逻辑回归的基本假设:假设数据服从伯努利分布

以抛硬币为例,抛中为正面的概率是 p p p,抛中为负面的概率是 1 − p 1-p 1p.在逻辑回归这个模型里面是假设 h θ ( x ) h_\theta\left(x\right ) hθ(x) 为样本为正的概率, 1 − h θ ( x ) 1- h_\theta\left(x\right ) 1hθ(x)为样本为负的概率。那么整个模型可以描述为 h θ ( x ; θ ) = p h_\theta\left(x;\theta \right )=p hθ(x;θ)=p
逻辑回归的第二个假设是假设样本为正的概率是 p ( Y = 1 ∣ x ) = e w ⋅ x 1 + e w ⋅ x p(Y=1|x)=\frac{e^{w\cdot x}}{1+e^{w\cdot x}} p(Y=1∣x)=1+ewxewx
逻辑回归是一种二分类模型,由条件概率分布 P ( Y ∣ X ) P(Y|X) P(YX)表示,形式就是参数化的逻辑斯蒂分布。这里自变量X的取值为实数,因变量Y为0或1,二项LR的条件概率如下,也是逻辑回归的最终形式:
这里写图片描述
也就是说,输出Y=1 的对数几率是由输入x的线性函数表示的模型,这就是 逻辑回归模型。当 w⋅x的值越接近正无穷,P(Y=1|x) 概率值也就越接近1。

2)逻辑回归的损失函数:对数似然函数

设: P ( Y = 1 ∣ x ) = π ( x ) , P ( Y = 0 ∣ x ) = 1 − π ( x ) P(Y=1|x)=π(x),P(Y=0|x)=1−π(x) P(Y=1∣x)=π(x),P(Y=0∣x)=1π(x)

似然函数: L ( w ) = ∏ [ π ( x i ) ] y i [ 1 − π ( x i ) ] 1 − y i L(w)=∏[π(x i )]^{y_i} [1−π(x i )]^{1−y_i} L(w)=[π(xi)]yi[1π(xi)]1yi

对数似然函数:

l n L ( w ) = ∑ [ y i l n π ( x i ) + ( 1 − y i ) l n ( 1 − π ( x i ) ) ] lnL(w)=∑[y_i lnπ(x_ i )+(1−y_i )ln(1−π(x_i ))] lnL(w)=[yil(xi)+(1yi)ln(1π(xi))]

= ∑ [ y i l n π ( x i ) 1 − π ( x i ) + l n ( 1 − π ( x i ) ) ] =∑[y_i ln\frac{π(x_i )}{1−π(x_i )} +ln(1−π(x_i ))] =[yiln1π(xi)π(xi)+ln(1π(xi))]

= ∑ [ y i ( w ⋅ x i ) − l n ( 1 + e w ⋅ x i ) ] =∑[y_i (w⋅x i )−ln(1+e^{w⋅x_i} )] =[yi(wxi)ln(1+ewxi)]

为什么要用最大化似然函数的方法?

损失函数一般有四种,平方损失函数,对数损失函数,0-1损失函数,绝对值损失函数。将极大似然函数取对数以后等同于对数损失函数。

在逻辑回归这个模型下,对数损失函数的训练求解参数的速度是比较快的

实际上,对数似然损失在单个数据点上的定义为:
这里写图片描述
如果取整个数据集上的平均对数似然损失,我们恰好可以得到:
这里写图片描述
也就是:
这里写图片描述
上式即为LR的损失函数,这样就变成了求 m i n ( J ( w ) ) min(J(w)) min(J(w))

即在逻辑回归模型中,我们最大化似然函数和最小化对数似然损失函数实际上是等价的。

w的更新过程为:
这里写图片描述
其中 α \alpha α为步长,直到 J ( w ) J(w) J(w)不能再小就会停止。

3)逻辑回归的求解方法:梯度下降

由于该极大似然函数无法直接求解,我们一般通过对该函数进行梯度下降来不断逼近最优解。

对L(w) 求极大值(也可认为是求J(w) 的最小值),得到w 的估计值。逻辑回归学习中通常采用的方法是梯度下降法 和 牛顿法。

梯度下降法的最大问题就是会陷入局部最优,并且每次在对当前样本计算cost的时候都需要去遍历全部样本才能得到cost值,这样计算速度就会慢很多(虽然在计算的时候可以转为矩阵乘法去更新整个w值)。

所以现在好多框架(mahout)中一般使用随机梯度下降法,它在计算cost的时候只计算当前的代价,最终cost是在全部样本迭代一遍之求和得出,还有他在更新当前的参数w的时候并不是依次遍历样本,而是从所有的样本中随机选择一条进行计算,它方法收敛速度快(一般是使用最大迭代次数),并且还可以避免局部最优,并且还很容易并行(使用参数服务器的方式进行并行)
这里写图片描述

这里SGD可以改进的地方就是使用动态步长

这里写图片描述

其他优化方法:拟牛顿法、BFGS、L-BFGS,优缺点为无需选择学习率、且计算更快,但计算过程很复杂。

4)逻辑回归的目的
该函数的目的便是将数据二分类,并且尽可能正确的将数据二分类。

2、逻辑回归过拟合问题

1)减少feature个数

2)使用L1/L2正则化,且方便起见,用L2正则化的场合较多

  • 添加正则化后的损失函数:
    这里写图片描述
  • 同时w的更新变为:
    这里写图片描述
    注意: w 0 w_0 w0不受影响

3、LR的多分类问题

假设离散型随机变量Y的取值集合为 1 , 2 , . . . , k {1,2,...,k} 1,2,...,k,则多分类的LR为:
这里写图片描述
这里还会输出当前样本属于哪一类的概率,并且概率之和为1。

  • 关于选择softmax还是k个LR的问题
  • 如果类别之间互斥(如音乐只能属于古典乐、摇滚乐、乡村音乐的一种),就用softmax
  • 如果类别之间有联系(如一首歌曲可能是影视原声、也可能包含人声、舞曲等等),此时用k个LR较为合适。

4、逻辑回归和线性回归的比较

虽然逻辑回归能够用于分类,但是其本质是线性回归。

  1. Logistic 回归是在线性回归的实数范围输出的基础上,在特征到结果的映射中加入了一层sigmoid函数(非线性)映射,将值收敛到了0~1范围内(即先把特征进行线性求和,之后使用sigmoid函数来预测结果),其损失函数也从最小二乘函数变为了对数损失函数,以提供最优化所需要的导数(sigmoid函数是softmax函数的二元特例,其导数均为函数值的f*(1-f)形式)。

  2. 线性回归优化目标函数是最小二乘,逻辑回归的优化目标函数是似然函数。

  3. 线性回归是在整数域范围内进行预测,敏感度一致,而逻辑回归的分类范围是将输入线性到[0,1]之间了,逻辑回归就是一种减小预测范围,将预测值限定为[0,1]间的一种回归模型。逻辑回归鲁棒性更好,可以轻松处理0/1分类问题。

  4. LR往往是解决二元0/1分类的问题的,只是它和线性回归耦合的太紧,冠上了回归的名字,若要求多元分类,将sigmoid换为softmax即可。

5、逻辑回归和最大熵模型MaxEnt的关系

逻辑回归跟最大熵模型没有本质区别。逻辑回归是最大熵对应类别为二类时的特殊情况,也就是当逻辑回归类别扩展到多类别时,就是最大熵模型。

指数簇分布的最大熵等价于其指数形式的最大似然。

二项式分布的最大熵解等价于二项式指数形式(sigmoid)的最大似然;

多项式分布的最大熵等价于多项式分布指数形式(softmax)的最大似然。

6、逻辑回归和SVM的联系与区别

联系:

  1. LR和SVM都可以处理分类问题,且一般都用于处理线性二分类问题(在改进的情况下可以处理多分类问题)

  2. 两个方法都可以增加不同的正则化项,如L1、L2等等。所以在很多实验中,两种算法的结果是很接近的。

区别:

  1. LR是参数模型,SVM是非参数模型。

  2. 从目标函数来看,区别在于逻辑回归采用的是似然函数作为损失函数,SVM采用的是hinge loss,这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。

  3. SVM的处理方法是只考虑support vectors,也就是和分类最相关的少数点,去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重。

  4. 逻辑回归相对来说模型更简单,好理解,特别是大规模线性分类时比较方便。而SVM的理解和优化相对来说复杂一些,SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算。

  5. logic 能做的 svm能做,但可能在准确率上有问题,svm能做的logic有的做不了。

7、逻辑回归训练中,如果有很大的特征高度相关,或者说有一个特征重复了100遍,会有怎样的影响

如果在损失函数最终收敛的情况下,其实就算有很多特征高度相关也不会影响分类器的效果。

假设只有一个特征,在不考虑采样的情况下,你现在将它重复100遍。训练以后完以后,数据还是这么多,但是这个特征本身重复了100遍,实质上将原来的特征分成了100份,每一个特征都是原来特征权重值的百分之一。

如果在随机采样的情况下,其实训练收敛完以后,还是可以认为这100个特征和原来那一个特征扮演的效果一样,只是可能中间很多特征的正负相消了。

8、为什么训练的过程当中要将高度相关的特征去掉

  1. 去掉高度相关的特征会让模型的可解释性更好

  2. 可以大大提高训练的速度:如果模型当中有很多特征高度相关的话,就算损失函数本身收敛了,但实际上参数是没有收敛的,这样会拉低训练的速度,且特征多了,本身就会增大训练的时间。

9、逻辑回归的优缺点

  • 优点:实现简单,易于理解,计算代价不高,速度快,存储资源低

  • 缺点:容易欠拟合,分类精度不高,一般只能处理两分类问题,必须借助softmax才能实现多分类问题,且前提是必须线性可分。

10、逻辑回归为什么要对特征进行离散化

在工业界,很少直接将连续值做啥逻辑回归模型的特征输入,而是将连续特征离散化为一系列0、1特征交给逻辑回归模型,优势如下:

  • 离散特征的增加和减少都很容易,易于模型的快速迭代;

  • 稀疏向量内积乘法运算速度快,计算结果方便存储,容易扩展;

  • 离散化后的特征对异常数据有很强的鲁棒性:比如一个特征是年龄>30是1,否则0。如果特征没有离散化,一个异常数据“年龄300岁”会给模型造成很大的干扰;

  • 离散化后可以进行特征交叉,由M+N个变量变为M*N个变量,进一步引入非线性,提升表达能力;

  • 特征离散化后,模型会更稳定,比如如果对用户年龄离散化,20-30作为一个区间,不会因为一个用户年龄长了一岁就变成一个完全不同的人。当然处于区间相邻处的样本会刚好相反,所以怎么划分区间是门学问;

  • 特征离散化以后,起到了简化了逻辑回归模型的作用,降低了模型过拟合的风险。

模型是使用离散特征还是连续特征,其实是一个“海量离散特征+简单模型” 同 “少量连续特征+复杂模型”的权衡。既可以离散化用线性模型,也可以用连续特征加深度学习。就看是喜欢折腾特征还是折腾模型了。通常来说,前者容易,而且可以n个人一起并行做,有成功经验;后者目前看很赞,能走多远还须拭目以待。

31、过拟合只在监督学习中出现,不会在非监督学习中出现

过拟合是监督学习的指标,评估无监督学习方法通过无监督学习的指标,如:可以通过调整兰德系数来评估聚类模型

32、交叉验证

基本思想就是将原始数据(dataset)进行分组,一部分做为训练集来训练模型,另一部分做为测试集来评价模型。

为什么用交叉验证法?

  1. 交叉验证用于评估模型的预测性能,尤其是训练好的模型在新数据上的表现,可以在一定程度上减小过拟合。

  2. 还可以从有限的数据中获取尽可能多的有效信息。

交叉验证如果做模型的选择:(假设要选择SVM的多项式核的阶数)

  1. 利用Training Set在一阶、二阶、三阶模型情况下训练,得到最优参数
  2. 利用验证集来测试不同阶模型的泛化能力,选择最好的阶数。

主要有哪些方法:

  1. 留出法:

这个方法操作简单,只需随机把原始数据分为三组即可。

不过如果只做一次分割,它对训练集、验证集和测试集的样本数比例,还有分割后的数据和原始数据集的分布是否相同等因素比较敏感,不同的划分会得到不同的最优模型,而且分成三个集合后,用于训练的数据更少了。

  1. k-折交叉验证

通过对 k 个不同分组训练的结果进行平均来减少方差,因此模型的性能对数据的划分就不那么敏感。

  • 第一步,不重复抽样将原始数据随机分为 k 份。
  • 第二步,每一次挑选其中 1 份作为测试集,剩余 k-1 份作为训练集用于模型训练。
  • 第三步,重复第二步 k 次,这样每个子集都有一次机会作为测试集,其余机会作为训练集。 在每个训练集上训练后得到一个模型,用这个模型在相应的测试集上测试,计算并保存模型的评估指标,
  • 第四步,计算 k 组测试结果的平均值作为模型精度的估计,并作为当前 k 折交叉验证下模型的性能指标。

数据量小的时候,k 可以设大一点,这样训练集占整体比例就比较大,不过同时训练的模型个数也增多。

数据量大的时候,k 可以设小一点。

k折交叉验证的模型选择,比如选择模型的超参数阶数、学习率、树的深度等

  • 利用同一份超参数,循环利用k-1份数据作为训练数据,训练得到k个模型,利用验证集验证k次,取平均作为该组超参数的模型指标;
  • 选取另一份超参数做同样的训练,得到该超参数的模型指标
  • 选择指标最好的超参数作为模型的最终超参数,对训练集训练,用测试集测试
  1. 留一法
    留一法就是每次只留下一个样本作为测试集,如果有m个样本,则要进行 m 次训练和预测。

这个方法用于训练的数据只比整体数据集少了一个样本,因此最接近原始样本的分布。 但是训练复杂度增加了,因为模型的数量与原始数据样本数量相同, 一般在数据缺乏时使用

  1. Bootstrapping(自助采样法)

即在含有 m 个样本的数据集中,每次随机挑选一个样本,再放回到数据集中,再随机挑选一个样本,这样有放回地进行抽样 m 次,组成了新的数据集作为训练集。

**优点:**训练集的样本总数和原数据集一样都是 m,并且仍有约 1/3 的数据不被训练而可以作为测试集。

**缺点:**是这样产生的训练集的数据分布和原数据集的不一样了,会引入估计偏差。

k-折交叉验证和bias(偏差)、variance(方差)的关系

这里写图片描述

泛化误差可表示为偏差、方差和噪声之和

error = Bias(偏差) + Variance(方差) + noise(噪声)

  • 模型越复杂,bias越小,Variance越大,越容易过拟合;

  • 模型越简单,bias越大,Variance越小,越容易欠拟合

Variance(方差)——形容一个模型的稳定性的

bias(偏差)——形容某一次样本的结果和真实值的偏差

**偏差(bias):**学习算法的期望预测与真实结果(train set)的偏离程度(平均预测值与真实值之差),刻画算法本身的拟合能力;想要在bias上表现好,就要复杂化模型,增加模型的参数,这样就会产生过拟合,过拟合对应于图像的high variance,点很分散,low bias对应就是点都在中心附近,即瞄的准,但是手不一定稳。

如果模型的bias太高,怎么降低:在特征空间中增加特征,bias太高说明模型太简单了,无法准确预测数据, 所以要对模型升维

**方差(variance):**使用同规模的不同训练集进行训练时带来的性能变化(预测值与平均预测值之差的平方的期望),刻画数据扰动带来的影响。要想在variance上表现好,low varience,就要简化模型,减少模型的参数,但这样容易欠拟合(unfitting),欠拟合对应上图是high bias,点偏离中心。low variance对应就是点都打的很集中,但不一定是靶心附近,手很稳,但是瞄的不准。

Variance太高:对模型降维

但是这两者其实是有冲突的,这称为bias-variance trade-off。

给定一个任务,我们可以控制算法的训练程度(如决策树的层数)。

  • 在训练程度较低时,拟合能力较差,因此训练数据的扰动不会让性能有显著变化,此时偏差主导泛化错误率;

  • 在训练程度较高时,拟合能力很强,以至于训练数据自身的一些特性(噪音)都会被拟合,从而产生过拟合问题,训练数据的轻微扰动都会令模型产生很大的变化,此时方差主导泛化错误率。这也是欠拟合和过拟合之间的冲突。

Bias与Variance两者之间的trade-off是机器学习的基本主题之一,机会可以在各种机器模型中发现它的影子。

k-fold validation的目的就是通过对k次validation的误差求平均、观察它们的波动,来尽量避免对某个特定数据集的验证导致的过度拟合。

k-折交叉验证的目标是使用交叉验证得到的误差来估计测试集的误差,而且希望得到的估计较为准确且波动小,也就是有较小的bias(反映平均估计误差与真实误差的偏离)和variance(反映估计误差与真实误差的波动程度),使得估计准确且稳定。

但是现实很难达到,**因为k值较大的时候,使得估计的bias较小,但variance较大,**这取决于训练样本的数量。当训练样本较小时,交叉验证很容易有较高的偏差,但是随着训练样本的增加,这种情况会得到改善。

示例:交叉验证的时间判定

下面的交叉验证方法,当样本是1000时,下面执行时间的顺序,正确的是(2>4>3>1)

  1. 有放回的Bootstrap方法
  2. 留一个测试样本的交叉验证
  3. 5折交叉验证
  4. 重复两次的5折教程验证

解析:

  • Boostrap方法是传统地随机抽样,验证一次的验证方法,只需要训练1次模型,所以时间最少。
  • 留一个测试样本的交叉验证,需要n次训练过程(n是样本个数),这里,要训练1000个模型。
  • 5折交叉验证需要训练5个模型。
  • 重复2次的5折交叉验证,需要训练10个模型。

k-折交叉验证的描述正确的是:(1,2,3)

  1. 增大 K 将导致交叉验证结果时需要更多的时间
  2. 更大的 K 值相比于小 K 值将对交叉验证结构有更高的信心
  3. 如果 K=N,那么其称为留一交叉验证,其中 N 为验证集中的样本数量

解析:

大的k值意味着对过高估计真实预期误差拥有更小的偏差和更多的运行时间(训练的折数将更加接近于整个验证集样本数),并越来越接近极限情况,也就是留一交叉验证。

在选择k值的时候需要考虑k折准确度和方差间的平衡

33、 多重共线性

回归模型中存在多重共线性, 你如何解决这个问题?

× 1 去除这两个共线性变量

√ 2 我们可以先去除一个共线性变量,可以使用相关矩阵去去除相关性高于75%的变量 (有主观成分)

√ 3 计算VIF(方差膨胀因子), 采取相应措施,如果VIF值<=4说明相关性不是很高, VIF值>=10说明相关性较高.

√ 4 为了避免损失信息, 我们可以使用一些正则化方法, 比如, 岭回归和lasso回归

√ 5 也可以在一些变量上加随机噪声, 使得变量之间变得不同, 但是这个方法要小心使用, 可能会影响预测效果。

34、SVM的径向基函数的 g a m m a gamma gamma参数和C参数

一、 g a m m a gamma gamma参数

所谓径向基函数 (Radial Basis Function 简称 RBF), 就是某种沿径向对称的标量函数。

通常定义为空间中任一点x到某一中心点xc之间欧氏距离的单调函数 , 可记作 k(||x-xc||), 其作用往往是局部的 , 即当x远离xc时函数取值很小。

最常用的径向基函数是高斯核函数 ,形式为
k ( ∣ ∣ x − x c ∣ ∣ ) = e x p ( − ∣ ∣ x − x c ∣ ∣ 2 2 ⋅ σ 2 ) = e x p ( − g a m m a ⋅ ∣ ∣ x − x c ∣ ∣ 2 ) k(||x-xc||)=exp (-\frac{ ||x-xc||^2}{2\cdot σ^2} )=exp(-gamma\cdot ||x-xc||^2) k(∣∣xxc∣∣)=exp(2σ2∣∣xxc2)=exp(gamma∣∣xxc2)

所以: g a m m a = 1 2 ⋅ σ 2 gamma=\frac{ 1}{2\cdot σ^2} gamma=2σ21

其中 x c xc xc为核函数中心, g a m m a gamma gamma为函数的宽度参数 , 控制了函数的径向作用范围。

g a m m a gamma gamma:RBF的幅宽,影响每个支持向量对应的高斯函数的作用范围,从而影响泛化性能。

  • g a m m a gamma gamma过大, σ \sigma σ会过小,高斯分布只在很小的范围内起作用,即只用于支持向量样本附近,训练准确率很高,测试准确率很差。所以理论上,如果 σ \sigma σ无穷小,则高斯核可以拟合任何非线性数据,但是很大程度上会发生过拟合。

  • g a m m a gamma gamma过小, σ \sigma σ会过大,平滑效果越大,无法在训练集上取得好的准确率,同时也会影响测试集的准确率。

  • g a m m a gamma gamma越大,支持向量越少,gamma值越小,支持向量越多。支持向量的个数影响训练与预测的速度。

由radial basis: e x p ( − σ ∗ ∣ u − v ∣ 2 ) exp(-\sigma*|u-v|^2) exp(σuv2)可知, σ \sigma σ越小, 模型越简单, 平滑度越好, 分类边界越不容易过拟合。

这里写图片描述

g a m m a 1 < 2 g a m m a < g a m m a 3 gamma1<2gamma<gamma3 gamma1<2gamma<gamma3

二、C参数

C是惩罚系数,即对误差的宽容度。c越高,说明越不能容忍出现误差,容易过拟合。C越小,容易欠拟合。C过大或过小,泛化能力变差。

问题:使用非线性可分的SVM目标函数作为最优化对象,如何保证模型线性可分?

回答:设C=无穷,保证了所有线性不可分都是可以忍受的。

注意:

  • 若使用核函数,一定要对Feature做Feature Scaling(Normalization)

  • 若训练集m太小,但Feature数量n很大,则训练数据不足以拟合复杂的非线性模型,这种情况下只能用linear-kernel(就是f i =x i )不能用高斯核

三、训练完SVM模型后,不是支持向量的样本可以丢弃也可以继续分类

SVM中,真正影响决策边界的是支持向量,其余的无关。

35、如何在大数据集上使用较少的时间训练决策树

A.增加树的深度
B.增加学习率 (learning rate)
√C.减少树的深度
D.减少树的数量

解释:

增加树的深度, 会导致所有节点不断分裂, 直到叶子节点是纯的为止. 所以, 增加深度, 会延长训练时间.

决策树没有学习率参数可以调. (不像集成学习和其它有步长的学习方法)

决策树只有一棵树, 不是随机森林。

示例:

假设我们有一个数据集,在一个深度为 6 的决策树的帮助下,它可以使用 100% 的精确度被训练。现在考虑一下两点,并基于这两点选择正确的选项。
注意:所有其他超参数是相同的,所有其他因子不受影响。

深度为 4 时将有高偏差和低方差。

解析:

如果在这样的数据中你拟合深度为 4 的决策树,这意味着其更有可能与数据欠拟合。因此,在欠拟合的情况下,你将获得高偏差和低方差。

36、那些算法可以利用神经网络去构造

  1. 线性回归:最简单的神经网络, 感知器, 其实就是线性回归的训练
  2. 对数几率回归:我们可以用一层的神经网络构造对数几率回归

KNN不可以: KNN算法不需要训练参数, 而所有神经网络都需要训练参数, 因此神经网络帮不上忙

37、如何有效应对大数据的训练

当样本数过多, 或者特征数过多, 而不能单机完成训练, 可以用小批量样本训练, 或者在线累计式训练, 或者主成分PCA降维方式减少特征数量再进行训练.

38、如何减少数据集中的特征数,即降维

  1. 使用前向特征选择方法
  2. 使用后向特征排除方法
  3. 我们先把所有特征都使用, 去训练一个模型, 得到测试集上的表现. 然后我们去掉一个特征, 再去训练, 用交叉验证看看测试集上的表现. 如果表现比原来还要好, 我们可以去除这个特征.
  4. 查看相关性表, 去除相关性最高的一些特征

39、集成学习的分类和其各自的特点

集成学习(ensemble learning)通过构建并组合多个学习器来完成学习任务。集成学习通过将多个学习器进行结合,常获得比单一学习器显著优越的泛化性能。

根据个体学习器是否是同类型的学习器(由同一个算法生成,比如 C4.5,BP 等),分为同质和异质。同质的个体学习器又叫做基学习器,而异质的个体学习器则直接成为个体学习器。

原则:要获得比单一学习器更好的性能,个体学习器应该好而不同。即个体学习器应该具有一定的准确性,不能差于弱学习器,并且具有多样性,即学习器之间有差异。

根据个体学习器的生成方式,目前集成学习分为两大类:

  • 个体学习器之间存在强依赖关系、必须串行生成的序列化方法。代表是 Boosting;

  • 个体学习器之间不存在强依赖关系、可同时生成的并行化方法。代表是 Bagging 和随机森林(Random Forest)。

一、Bagging

这里写图片描述

前面提到,想要集成算法获得性能的提升,个体学习器应该具有独立性。虽然 “独立” 在现实生活中往往无法做到,但是可以设法让基学习器尽可能的有较大的差异。

Bagging 给出的做法就是对训练集进行采样,产生出若干个不同的子集,再从每个训练子集中训练一个基学习器。由于训练数据不同,我们的基学习器可望具有较大的差异。

Bagging 是并行式集成学习方法的代表,采样方法是自助采样法,用的是有放回的采样。初始训练集中大约有 63.2% 的数据出现在采样集中。

Bagging 在预测输出进行结合时,对于分类问题,采用简单投票法;对于回归问题,采用简单平均法。

Bagging 优点:

  • 高效。Bagging 集成与直接训练基学习器的复杂度同阶;

  • Bagging 能不经修改的适用于多分类、回归任务;

  • 包外估计。使用剩下的样本作为验证集进行包外估计(out-of-bag estimate)。

Bagging主要关注降低方差

二、随机森林 Random Forest

随机森林(Random Forest)是 Bagging 的一个变体。Ramdon Forest 在以决策树为基学习器构建 Bagging 集成的基础上,进一步在决策树的训练过程中引入随机属性选择。

原来决策树从所有属性中,选择最优属性。Ramdom Forest 的每一颗决策树中的每一个节点,先从该节点的属性集中随机选择 K 个属性的子集,然后从这个属性子集中选择最优属性进行划分。

K 控制了随机性的引入程度,是一个重要的超参数。

预测 :

  • 分类:简单投票法;

  • 回归:简单平均法。

优点:

  • 由于每次不再考虑全部的属性,而是一个属性子集,所以相比于 Bagging 计算开销更小,训练效率更高;

  • 由于增加了属性的扰动,随机森林中基学习器的性能降低,使得在随机森林在起始时候性能较差,但是随着基学习器的增多,随机森林通常会收敛于更低的泛化误差,相比于 Bagging;

  • 两个随机性的引入,使得随机森林不容易陷入过拟合,具有很好的抗噪声能力;

  • 对数据的适应能力强,可以处理离散和连续的,无需要规范化;

  • 可以得到变量的重要性, 基于 oob 误分类率和基于 Gini 系数的变化。

缺点:

  • 在噪声较大的时候容易过拟合。

三、AdaBoost

AdaBoost 是 Boosting 的代表,前面我们提到 Boosting 是集成学习中非常重要的一类串行化学习方法。

(1)Boosting

这里写图片描述

Boosting 是指个体学习器之间存在强依赖关系,必须串行序列化生成的集成学习方法。他的思想来源是三个臭皮匠顶个诸葛亮。Boosting 意为提升,意思是希望将每个弱学习器提升为强学习器。

弱学习的特点:

弱学习的是问题的特定部分。所以他们通常不会过拟合,这也就意味着弱学习者通常拥有低方差和高偏差。

工作机制如下:

  • 先从初始训练集中学习一个基学习器;
  • 根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续收到更多关注;
  • 基于调整后的样本分布来训练下一个基学习器;
  • 如此反复,直到基学习器数目达到 T,最终将这 T 个基学习器进行加权结合。

对训练样本分布调整,主要是通过增加误分类样本的权重,降低正确分类样本的权重。

Boosting 关注的主要是降低偏差。(low bias)

(2)AdaBoost原理
这里写图片描述

面临两个问题:

  1. 在每一轮,如何改变训练数据的概率分布或者权值分布。(也可以重采样,但是 AdaBoost 没这么做);
  2. 如何将弱分类器组合成强分类器。

AdaBoost 的做法:

  1. 提高那些被前一轮弱分类器错误分类样本的权值,降低那些被正确分类的样本的权值。这样一来,那些没有得到正确分类的数据,由于其权值的加大而受到后一轮弱分类器的关注;

  2. 采用加权多数表决。具体的,加大分类错误率低的分类器的权值,使其在表决中起较大作用,减少分类误差率大的弱分类器的权值,使其在表决中起较小作用。

弱分类器被线性组合成为一个强分类器。

训练目标:最小化指数损失函数

三部分组成:

(1)分类器权重更新公式;

(2)样本分布(也就是样本权重)更新公式;

(3)加性模型。 最小化指数损失函数。

AdaBoost 优点:

  • 不改变所给的训练数据,而不断改变训练数据的权值分布,使得训练数据在基本分类器的学习中起不同的作用。这是 AdaBoost 的一个特点;

  • 利用基本分类器的加权线性组合构建最终分类器,是 AdaBoost 的另一个特点;

  • AdaBoost 被实践证明是一种很好的防止过拟合的方法,但至今为什么至今没从理论上证明。

AdaBoost 缺点:

  • AdaBoost 只适用于二分类问题。

四、GBDT

GBDT(Gradient Boosting Decision Tree)又叫 MART(Multiple Additive Regression Tree)。是一种迭代的决策树算法。

(1)DT:回归树 Regression Decision Tree

GDBT 中的树全部都是回归树,核心就是累加所有树的结果作为最终结果。只有回归树的结果累加起来才是有意义的,分类的结果加是没有意义的。

GDBT 调整之后可以用于分类问题,但是内部还是回归树。

这部分和决策树中的是一样的,无非就是特征选择。回归树用的是最小化均方误差,分类树是用的是最小化基尼指数(CART)

(2)GB:梯度迭代 Gradient Boosting

首先 Boosting 是一种集成方法。通过对弱分类器的组合得到强分类器,他是串行的,几个弱分类器之间是依次训练的。GBDT 的核心就在于,每一颗树学习的是之前所有树结论和的残差。

Gradient 体现在:无论前面一颗树的 cost function 是什么,是均方差还是均差,只要它以误差作为衡量标准,那么残差向量都是它的全局最优方向,这就是 Gradient。

(3)Shrinkage:缩减

Shrinkage(缩减)是 GBDT 算法的一个重要演进分支,目前大部分的源码都是基于这个版本的。

核心思想在于:Shrinkage 认为每次走一小步来逼近结果的效果,要比每次迈一大步很快逼近结果的方式更容易防止过拟合。

也就是说,它不信任每次学习到的残差,它认为每棵树只学习到了真理的一小部分,累加的时候只累加一小部分,通过多学习几棵树来弥补不足。

具体的做法就是:仍然以残差作为学习目标,但是对于残差学习出来的结果,只累加一小部分(step 残差)逐步逼近目标,step 一般都比较小 0.01-0.001, 导致各个树的残差是渐变而不是陡变的。*

本质上,Shrinkage 为每一颗树设置了一个 weight,累加时要乘以这个 weight,但和 Gradient 没有关系。

这个 weight 就是 step。跟 AdaBoost 一样,Shrinkage 能减少过拟合也是经验证明的,目前还没有理论证明。

(4)GBDT适用范围

  1. GBDT 可以适用于回归问题(线性和非线性),相对于 logistic regression 仅能用于线性回归,GBDT 适用面更广;

  2. GBDT 也可用于二分类问题(设定阈值,大于为正,否则为负)和多分类问题。

当增加最小样本分裂个数,我们可以抵制过拟合,减少训练单个学习器的样本个数,我们可以降低variance

(5)GBDT和随机森林的比较

相同点:

  1. 都是由多棵树组成;
  2. 最终的结果都由多棵树共同决定。

不同点:

  1. 组成随机森林的可以是分类树、回归树;组成 GBDT 只能是回归树;
  2. 组成随机森林的树可以并行生成(Bagging);GBDT 只能串行生成(Boosting);
  3. 对于最终的输出结果而言,随机森林使用多数投票或者简单平均;而 GBDT 则是将所有结果累加起来,或者加权累加起来;
  4. 随机森林对异常值不敏感,GBDT 对异常值非常敏感;
  5. 随机森林对训练集一视同仁权值一样,GBDT 是基于权值的弱分类器的集成;
  6. 随机森林通过减小模型的方差提高性能,GBDT 通过减少模型偏差提高性能。

(6)GBDT相比于决策树有什么优点

泛化性能更好!GBDT 的最大好处在于,每一步的残差计算其实变相的增大了分错样本的权重,而已经分对的样本则都趋向于 0。这样后面就更加专注于那些分错的样本。

40、PCA

示例1:

对于PCA(主成分分析)转化过的特征 , 朴素贝叶斯的”不依赖假设”总是成立, 因为所有主要成分是正交的(×)

解析:首先, “不依赖”和”不相关”是两回事, 其次, 转化过的特征, 也可能是相关的

示例2:

对于PCA说法正确的是 :

√ 1. 我们必须在使用PCA前规范化数据
√ 2. 我们应该选择使得模型有最大variance的主成分
3. 我们应该选择使得模型有最小variance的主成分
√ 4. 我们可以使用PCA在低维度上做数据可视化

解析:

  1. PCA对数据的尺度很敏感,比如单位从km变为cm,这样的数据尺度对PCA最后的结果很有影响,即从不重要的成分变为很重要的成分。
  2. 应该选择使得模型有最大方差的主成分,在这个前提下,主成分越少越好
    这里写图片描述
    上图,最好的主成分选择是30个。
  3. 有时候在低维度上作图是需要PCA降维帮助的

示例3:

为了得到和 SVD 一样的投射(projection),你需要在 PCA 中怎样做?——将数据转换成零均值

解析:当数据有一个 0 均值向量时,PCA 有与 SVD 一样的投射,否则在使用 SVD 之前,你必须将数据均值归 0。

41、监督学习如何使用聚类的方法

  • 我们可以先创建聚类类别, 然后在每个类别上用监督学习分别进行学习
  • 我们可以使用聚类“类别id”作为一个新的特征项(能够有效的总结数据特征), 然后再用监督学习分别进行学习

42、KNN

示例:以下哪个图是KNN算法的训练边界(A)

这里写图片描述

KNN算法肯定不是线性的边界, 所以直的边界就不用考虑了。另外这个算法是看周围最近的k个样本的分类用以确定分类,所以边界一定是坑坑洼洼的。

1)KNN算法简介

给一个训练数据集和一个新的实例,在训练数据集中找出与这个新实例最近的k个训练实例,然后统计最近的k个训练实例中所属类别计数最多的那个类别,就是新实例的类。

2)KNN算法三要素

  • k值的选择

  • 距离的度量

  • 分类决策规则(多数表决规则)

3)k值的选择

  • k值越小,说明模型越复杂,更加容易过拟合

如果选择较小的K值,就相当于用较小的邻域中的训练实例进行预测,“学习”近似误差会减小,只有与输入实例较近或相似的训练实例才会对预测结果起作用,与此同时带来的问题是“学习”的估计误差会增大,换句话说,K值的减小就意味着整体模型变得复杂,容易发生过拟合;

  • k值越大,说明模型越简单,如果k=N的时候就表明无论什么点都是训练集中类别最多的那个类

如果选择较大的K值,就相当于用较大邻域中的训练实例进行预测,其优点是可以减少学习的估计误差,但缺点是学习的近似误差会增大。这时候,与输入实例较远(不相似的)训练实例也会对预测器作用,使预测发生错误,且K值的增大就意味着整体的模型变得简单。

  • K=N,则完全不足取,因为此时无论输入实例是什么,都只是简单的预测它属于在训练实例中最多的累,模型过于简单,忽略了训练实例中大量有用信息。

所以一般k会取一个较小的值,然后用交叉验证来确定
这里所谓的交叉验证就是将样本划分一部分出来为预测样本,比如95%训练,5%预测,然后k分别取1,2,3,4,5之类的,进行预测,计算最后的分类误差,选择误差最小的k

4)KNN的回归

在找到最近的k个实例之后,可以计算这k个实例的平均值作为预测值。或者还可以给这k个实例添加一个权重再求平均值,这个权重与度量距离成反比(越近权重越大)。

5)KNN的优缺点

  • 优点:

  • 思想简单,理论成熟,既可以分类也可以回归

  • 可用于非线性分类

  • 训练时间复杂度为O(n)

  • 准确度高,对数据没有假设,对outlier不敏感

  • 缺点:

  • 计算量大

  • 样本不平衡问题(即有的类别的样本数量很多,优点样本数量很少)

  • 需要大量的内存

在使用k近邻法进行分类时,对新的实例,根据其k个最近邻的训练实例的类别,通过多数表决的方式进行预测。由于k近邻模型的特征空间一般是n维实数向量,所以距离的计算通常采用的是欧式距离。关键的是k值的选取,如果k值太小就意味着整体模型变得复杂,容易发生过拟合,即如果邻近的实例点恰巧是噪声,预测就会出错,极端的情况是k=1,称为最近邻算法,对于待预测点x,与x最近的点决定了x的类别。k值得增大意味着整体的模型变得简单,极端的情况是k=N,那么无论输入实例是什么,都简单地预测它属于训练集中最多的类,这样的模型过于简单。经验是,k值一般去一个比较小的值,通常采取交叉验证的方法来选取最优的k值。

实现k近邻法时,主要考虑的问题是如何对训练数据进行快速k近邻搜索,这点在特征空间的维数大以及训练数据容量大时尤其重要。k近邻法的最简单实现是线性扫描,这时要计算输入实例与每一个训练实例的距离,当训练集很大时,计算非常耗时,这种方法是不可行的。为了提高k近邻搜索的效率,可以考虑使用特殊的结构存储训练数据,以减少计算距离的次数。具体方法有很多,比如kd树方法。

KD树

KD树是一个二叉树,表示对K维空间的一个划分,可以进行快速检索(那KNN计算的时候不需要对全样本进行距离的计算了)

KD树的每个结点表示一个样本,通过旋转样本中的某一维特征,将样本划分到不同的结点中。

k-d树算法可以分为两大部分,一部分是有关k-d树本身这种数据结构建立的算法,另一部分是在建立的k-d树上如何进行最邻近查找的算法。

1)构造KD树

kd树是一种对k维空间中的实例点进行存储以便对其进行快速搜索的树形数据结构。构造KD树相当于不断的用垂直于坐标轴的超平面将k维空间划分为一系列k维超矩形区域,kd树的每一个节点对应于一个k维超矩形区域。k-d树是一个二叉树,每个节点表示一个空间范围。选择划分结点的方法主要有两种:

  • 顺序选择,也就是按照数据的顺序依次在kd树中插入结点

  • 选择划分维数的中位数为划分的结点。在kd树的构建过程中,为了防止出现只有左子树或者只有右子树的情况出现,通常对于每一个节点,选择样本中的中位数作为切分点。这样构建出来的kd树时平衡的(但平衡的kd树不一定是最优的)。

  1. 构造根节点:根节点对应于包含T的k维空间的超矩形区域,选择 x ( 1 ) x^(1) x(1)为坐标轴,以T中所有实例的 x ( 1 ) x^(1) x(1)坐标的中位数为切分点,将根结点对应的超矩形区域切分为两个子区域。切分由通过切分点并与坐标轴x(1)垂直的超平面实现。由根结点生成深度为1的左、右子结点:左子结点对应坐标 x ( 1 ) x^(1) x(1)小于切分点的子区域,右子结点对应于坐标 x ( 1 ) x^(1) x(1)大于切分点的子区域。将落在切分超平面上的实例点保存在根结点。
  2. 重复:对深度为j的结点,选择 x ( l ) x^{(l)} x(l)为切分的坐标轴, l = j m o d ( k ) + 1 l=j mod( k)+1 l=jmod(k)+1,以该结点的区域中所有实例的 x ( l ) x(l) x(l)坐标的中位数为切分点,将该结点对应的超矩形区域切分为两个子区域。

构造kd树的示例:

假设给定一个二维空间数据集:T={(2,3),(5,4),(9,6),(4,7),(8,1),(7,2)},构造一个平衡kd树

根结点对应包含数据集T的矩形,选择x1轴,6个数据的x1轴坐标的中位数为6,选择最接近的7,故根结点选择(7,2),所以以x1=7将空间划分为左右两部分,接着对左边的矩形划分,(2,3),(5,4),(4,7)的x2维的中位数为4,所以以x2=4对左边进行划分,右边(8,1)(9,6)以x2=6进行划分,如此递归,得到空间划分和kd树。

<img src=“https://img-blog.csdn.net/20180801183544770?”,width=50%,alt=“”/>

2)KD树的搜索

  1. 首先从根节点开始递归往下找到包含x的叶子节点,每一层都是找对应的xi
  2. 将这个叶子节点认为是当前的“近似最近点”
  3. 递归向上回退,如果以x圆心,以“近似最近点”为半径的球与根节点的另一半子区域边界相交,则说明另一半子区域中存在与x更近的点,则进入另一个子区域中查找该点并且更新”近似最近点“
  4. 重复3的步骤,直到另一子区域与球体不相交或者退回根节点
  5. 最后更新的”近似最近点“与x真正的最近点

3)KD树进行KNN查找

通过KD树的搜索找到与搜索目标最近的点,这样KNN的搜索就可以被限制在空间的局部区域上了,可以大大增加效率。

4)KD树搜索的复杂度

当实例随机分布的时候,搜索的复杂度为log(N),N为实例的个数,KD树更加适用于实例数量远大于空间维度的KNN搜索,如果实例的空间维度与实例个数差不多时,它的效率基于等于线性扫描。

KNN算法中KD树的应用
kd树介绍

43、对于线性回归要做的假设

示例1:

对于线性回归,我们应该有以下哪些假设

√ 1. 找到离群点很重要, 因为线性回归对离群点很敏感
2. 线性回归要求所有变量必须符合正态分布(正态分布不是必须的. 当然, 如果是正态分布, 训练效果会更好)
3. 线性回归假设数据没有多重线性相关性(有少量的多重线性相关性也是可以的, 但是我们要尽量避免)

示例2:

给线性回归模型添加一个不重要的特征可能会造成?——增加R-square

解析:

在给特征空间添加了一个特征后,不论特征是重要还是不重要,R-square 通常会增加。

原因:

在给特征空间添加了一个特征后,分子会增加一个残差平方项, 分母会增加一个均值差平方项, 前者一般小于后者, 所以不论特征是重要还是不重要,R-square 通常会增加。

R-square定义如下:

这里写图片描述

44、PCA和t-SNE

最出名的降维算法是 PCA 和 t-SNE。将这两个算法分别应用到数据「X」上,并得到数据集「X_projected_PCA」,「X_projected_tSNE」。因为t-SNE算法考虑最近邻点而减少数据维度,所以所降得维「X_projected_tSNE」在最近邻空间能够得到解释,而「X_projected_PCA」不能。

45、判断不同场景使用的分类或回归方法是否正确

示例1:

在以下不同的场景中,使用的分析方法不正确的为(B)

A. 根据商家最近一年的经营及服务数据,用聚类算法判断出天猫商家在各自主营类目下所属的商家层级
× B. 根据商家近几年的成交数据,用聚类算法拟合出用户未来一个月可能的消费金额公式
C. 用关联规则算法分析出购买了汽车坐垫的买家,是否适合推荐汽车脚垫
D. 根据用户最近购买的商品信息,用决策树算法识别出淘宝买家可能是男还是女

解析:

预测消费更合适的算法是用回归模型来做。而不是聚类算法。

示例2:

下列选项中,识别模式与其他不⼀样的是(E)

A. ⽤户年龄分布判断:少年、青年、中年、⽼年
B. 医⽣给病⼈诊断发病类型
C. 投递员分拣信件
D. 消费者类型判断:⾼消费、⼀般消息、低消费
E. 出⾏方式判断:步⾏、骑车、坐车 (属于预测问题,其余都是分类问题)
F. 商家对商品分级

46、k-means

KMeans(C均值)算法的具体步骤:

  1. 适当选择c个类的初始中心;
  2. 在第k次迭代中,对任意一个样本,求其到c个中心的距离,将该样本归到距离最短的中心所在的类;
  3. 利用均值等方法更新该类的中心值;
  4. 对于所有的c个聚类中心,如果利用(2)(3)的迭代法更新后,值保持不变,则迭代结束,否则继续迭代。

需要选择类别数量,但初次选择质心是随机的,最终的聚类中心是不断迭代稳定以后的聚类中心。

优化 kMeans:
使用kd树或者ball tree
将所有的观测实例构建成一颗kd树,之前每个聚类中心都是需要和每个观测点做依次距离计算,现在这些聚类中心根据kd树只需要计算附近的一个局部区域即可

KMeans初始类簇中心点的选取:

k-means++算法选择初始seeds的基本思想就是:初始的聚类中心之间的相互距离要尽可能的远。

  1. 从输入的数据点集合中随机选择一个点作为第一个聚类中心
  2. 对于数据集中的每一个点x,计算它与最近聚类中心(指已选择的聚类中心)的距离D(x)
  3. 选择一个新的数据点作为新的聚类中心,选择的原则是:D(x)较大的点,被选取作为聚类中心的概率较大
  4. 重复2和3直到k个聚类中心被选出来
  5. 利用这k个初始的聚类中心来运行标准的k-means算法

在 k-均值算法中,以下哪个选项可用于获得全局最小?(1,2,3)

1 尝试为不同的质心(centroid)初始化运行算法
2 调整迭代的次数
3 找到集群的最佳数量

47、那些方法可以用于衡量两个词的相关性

  • 互信息
  • 卡方检验
  • 最大似然比

最大熵不能用与衡量,因为最大熵代表了整体分布的信息,通常具有最大熵的分布作为该随机变量的分布,不能体现两个词的相关性。

PCA不能用于文本分类的特征选择方法,因为PCA是特征转换算法,也就是特征抽取,并不是特征选择。

48、分词方法的分类

第一类:基于语法和规则的分词法

其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来进行词性标注,以解决分词歧义现象。因为现有的语法知识、句法规则十分笼统、复杂,基于语法和规则的分词法所能达到的精确度远远还不能令人满意,目前这种分词系统还处在试验阶段。

第二类:基于字符串匹配的分词方法(机械式分词法,即基于词典)

机械分词的原理是将文档中的字符串与词典中的词条进行逐一匹配,如果词典中找到某个字符串,则匹配成功,可以切分,否则不予切分。基于词典的机械分词法,实现简单,实用性强,但机械分词法的最大的缺点就是词典的完备性不能得到保证。据统计,用一个含有70000个词的词典去切分含有15000个词的语料库,仍然有30%以上的词条没有被分出来,也就是说有4500个词没有在词典中登录。

举例:正向最大匹配法(由左到右)、逆向最大匹配法(由右到左)、最少切分(使每一句中切出的词数最少)

第三类:基于词频统计的方法

基于统计的分词法的基本原理是根据字符串在语料库中出现的统计频率来决定其是否构成词。词是字的组合,相邻的字同时出现的次数越多,就越有可能构成一个词。因此字与字相邻共现的频率或概率能够较好的反映它们成为词的可信度。

举例:条件随机场

49、多元共线特征

在下面的图像中,哪一个是多元共线(multi-collinear)特征?(1,2)

这里写图片描述

在图 1中,特征之间有高度正相关,图 2 中特征有高度负相关。所以这两个图的特征是多元共线特征。

50、线性回归的假设

  • 随机误差项是一个期望值为0的随机变量

  • 对于解释变量的所有观测值,随机误差项有相同的方差

  • 解释变量是确定性变量不是随机变量,与随机误差项之间相互独立

  • 随机误差项服从正态分布

不包含该假设:随机误差项彼此相关(×)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习笔试面试超详细总结(一) 的相关文章

随机推荐

  • RPC研究

    深入浅出RPC 深入篇 mindwind 2014 09 22 出处 http mindwind me blog 2014 09 22 深入浅出RPC 深入篇 html 解析 RPC 的本质 深入篇 我们主要围绕 RPC 的功能目标和实现考
  • golang内存分析工具

    pprof https blog csdn net weixin 40486544 article details 108402577 utm medium distribute pc relevant none task blog 2de
  • Unity粒子系统详解

    接下来的图片就是Unity2017 1 0f3 编辑器中的粒子系统模块 了解粒子系统 必须先了解每一个属性都代表了什么 之后才能根据这些原理来调整出自己满意的效果 主面板ParticleSystem Duration 粒子发射周期 如图的意
  • 互联网公司数据产品经理和数据分析师,主要有什么区别?

    数据产品经理和数据分析师 是目前互联网公司的热门职位 它跟数据分析师的职责有重叠的部分 不同的地方是这个职位关注的点是数据分析的产品化 这是普通互联网公司数据产品经理的日常 那数据产品经理跟互联网公司里的产品经理有什么区别呢 在大的互联网公
  • mysql+'@'%_mysql忘记登录的人:命令拒绝用户”@’%’

    跑步秀表示我以具有数据库所有权限的用户身份登录 跑步表状态 导致错误 并且错误不显示我已登录的用户名 就好像对于这个命令 mysql忘记了我是谁 其他select语句工作正常 有人可以解释一下吗怎么修 谢谢 Welcome to the M
  • HUAWEI+Eudemon1000E+防火墙+典型配置案例

    当使用consol口登入Eudemon1000E 防火墙时 如果登入失败退出可能会被锁定 提示 User interface con0 is locked 锁定的时间默认是10分钟 可以通过对con0 配置修改锁定值 设置串口console
  • 解决java.lang.RuntimeException: Can't toast on a thread that has not called Looper.prepare()

    最近在整理Android开发过程中的一些错误 话不多说 直接上错误 错误原因是自己想在网络请求成功后 弹出一个Toast提醒 但由于程序在主线程中创建handler后会创建一个looper对象 而子线程却不会 那什么时候需要looper L
  • 飞桨AI课程干货--带你开启新世界的大门!

    笔者近期体验了免费的 百度深度学习7日打卡第六期 Python小白逆袭大神 训练营 课程每天都有对应的直播 由中科院团队负责教学 每天有对应的作业贯穿其中 带你全程体验百度AI开放平台 AI Studio 飞桨PaddlePaddle Ea
  • SQL视图View的总结和使用

    实际工作当中 数据交互查询返回结果 SQL你是没办法找其他的完美替代的 但有的时候还是会遇到一些很头痛的问题需要视图view来解决 比如以下场景 view日常使用场景 场景一 有的时候 多个表并表条件查询 尤其是好几张表那种一起查询的那种
  • JS 使用正则

    在JS中如何使用正则来校验字符串 1 使用RegExpObject test string 匹配则为true否则为false 声明一个正则对象 var a 0 9 需要注意的是 a不是字符串 而是一个对象 我们可以打印下a的构造函数 没错
  • ESP32-WROVER-E无法正常写入固件

    在之前用模块下载程序都是好的 然后突然就出现了无法下载的现象 打印了他的输出都是 rst 0x10 RTCWDT RTC RESET boot 0x13 SPI FAST FLASH BOOT invalid header 0xffffff
  • 【2023】华为OD机试真题Java-题目0219-查找充电设备组合

    非常典型的动态规划问题 package com company test import java util Arrays public class Main1 public static void main String args int
  • Matlab使用LSTM网络做classification和regression时XTrain的若干种数据结构-part I

    目前看来 Deep learning的两大用途是classification和regression 以LSTM为例 它的优势在于对时序数据 sequence data 强大的处理能力 简单来说 可以用作 1 sequence to labe
  • 浅谈C++

    重载原因 C 中的运算符重载是一种特性 允许程序员定义自定义类类型的运算符操作 通过运算符重载 可以对类对象执行类似于内置类型的操作 例如加法 减法 乘法等 运算符重载通过定义特定的成员函数或非成员函数来实现 成员函数的运算符重载为类的成员
  • 【通过粒子滤波进行地形辅助导航】用于地形辅助导航的粒子滤波器和 PCRB研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 粒子滤波 Particle Filter
  • linux搭建 sftp服务 && sftp自动上传脚本

    1 新建sftp用户组 sftp 用户家目录 groupadd sftp mkdir p sftpdata sftp 2 新建sftp用户 useradd d sftpdata sftp tester m g sftp s sbin nol
  • 安装 Hana Studio

    1 从sap 官网下载下来的安装包是 sar 类型的压缩包 2 需要用专门的解压工具 SAPCAR 3 运行sapcar 工具和安装包放到英文路径下 win r 输入cmd 输入CD SAPCAR保存路径 我的保存在 出现这种 没有打开相应
  • pandas之Series()菜鸟教程

    Pandas数据结构Series 基本概念及创建 一维数组 Serise import numpy as np import pandas as pd import time Series 数据结构 Series 是带有标签的一维数组 可以
  • CUDA安装详细教程

    一 CUDA下载 CUDA官网 二 CUDA具体安装步骤 1 检查电脑的NVIDIA版本 在cmd中输入nvidia smi 注意nvidia smi中的是驱动对应的cuda最高版本 只要此版本大于等于你安装的cuda即可 若命令nvidi
  • 机器学习笔试面试超详细总结(一)

    文章目录 1 判别模型和生成模型 2 最大概率分词 3 中文分词的基本方法 4 CRF 条件随机场 的特点 5 隐马尔可夫模型 HMM 时间复杂度及可以使用的数据集 6 在二分类问题中的评价方案 7 决策树特点 8 过拟合 9 异方差性 1