算法笔试总结

【1】信息增益和信息增益率的区别

       用信息增益作为评判划分属性的方法其实是有一定的缺陷的,信息增益准则对那些属性的取值比较多的属性有所偏好,也就是说,采用信息增益作为判定方法,会倾向于去选择属性取值比较多的属性。那么,选择取值多的属性为什么就不好了呢?举个比较极端的例子,如果将身份证号作为一个属性,增益率准则对属性取值较少的时候会有偏好,为了解决这个问题,C4.5并不是直接选择增益率最大的属性作为划分属性,而是之前先通过一遍筛选,先把信息增益低于平均水平的属性剔除掉,之后从剩下的属性中选择信息增益率最高的,这样的话,相当于两方面都得到了兼顾。 

信息增益和基尼不纯度的区别
基尼不纯度:这个样本被选中的概率乘以它被分错的概率。将来自集合中的某种结果随机应用于集合中某一数据项的预期误差率
熵:代表集合的无序程度。 
熵和基尼不纯度之间的主要区别在于,熵达到峰值的过程要相对慢一些。因此,熵对于混乱集合的判罚要更重一些。

【2】凸优化中KKT条件的物理意义是什么
KKT条件是指在满足一些条件时,一个非线性问题能有最优化解法的一个充要条件,这是一个广义化拉格朗日乘数的成果。 
一般,如果一个最优化问题: 
这里写图片描述

【3】设f是定义域为实数的函数,如果对于所有的实数x。如果对于所有的实数x,f^{''}(x)\geqslant 0,那么f是凸函数。当x是向量时,如果其hessian矩阵H是半正定的,那么f是凸函数。如果只大于0,不等于0,那么称f是严格凸函数。

  Jensen不等式表述如下:

  如果f是凸函数,X是随机变量,那么E\left [ f(x) \right ]\geq f\left [ E(X) \right ],特别地,如果f是严格凸函数,当且仅当X是常量时,上式取等号。Jensen 不等式的意义是:函数的期望大于等于期望的函数:

MLEæ大似ç¶ä¼°è®¡åEMæ大ææç®æ³

【1】

(1)梯度下降法容易陷入局部极小,EM算法是一种迭代算法,用于含有隐变量的概率参数模型的最大似然估计,但是和梯度下降一样,容易陷入局部最优。

(2)K-means不是全局收敛的,如果是全局收敛的,每次聚类的结果会相同。k-means的时间复杂度为O\left ( NKT \right ),N-样本个数,K-聚类类数,T-迭代次数。

(3)L1正则可以使少数权值较大,多数权值为0,得到稀疏的权值;L2正则会使权值都趋近于0但非零,得到平滑的权值;

(4)在AdaBoost算法中,被错分的样本的权重更新比例的公式相同;

(5)Boosting和Bagging都是组合多个分类器投票的方法,但Boosting是根据单个分类器的正确率决定其权重,Bagging是可简单地设置所有分类器权重相同;

(6)SVR中核函数宽度小欠拟合,宽度大容易过拟合;

(7)生成式模型

  • 判别式分析
  • 朴素贝叶斯
  • K近邻(KNN)
  • 混合高斯模型
  • 隐马尔科夫模型(HMM)
  • 贝叶斯网络
  • Sigmoid Belief Networks
  • 马尔科夫随机场(Markov Random Fields)
  • 深度信念网络(DBN)

判别式模型

  • 线性回归(Linear Regression)
  • 逻辑斯蒂回归(Logistic Regression)
  • 神经网络(NN)
  • 支持向量机(SVM)
  • 高斯过程(Gaussian Process)
  • 条件随机场(CRF)
  • CART(Classification and Regression Tree)

(8)无约束最优化算法:最速梯度法,牛顿法,共轭梯度法,拟牛顿法(包括DFP,BFGS,L-BFGS)。

SMO算法可以高效的求解SVM的对偶问题,这个问题有约束条件,,其中n是样本的数量,是拉格朗日乘子。

(9)KNN(K-Nearest Neighbor)工作原理(有标签):存在一个样本数据集合,也称为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类对应的关系。输入没有标签的数据后,将新数据中的每个特征与样本集中数据对应的特征进行比较,提取出样本集中特征最相似数据(最近邻)的分类标签。一般来说,我们只选择样本数据集中前k个最相似的数据,这就是k近邻算法中k的出处,通常k是不大于20的整数。最后选择k个最相似数据中出现次数最多的分类作为新数据的分类。

  说明:KNN没有显示的训练过程,它是“懒惰学习”的代表,它在训练阶段只是把数据保存下来,训练时间开销为0,等收到测试样本后进行处理。

       优点:精度高,对异常值不敏感、无数据输入假定

  缺点:计算复杂度高、空间复杂度高

(10)感知器可以解决线性可分的问题,但当样本线性不可分时,感知器算法不会收敛。

(11)判断循环队列已满:\left ( rear+1 \right )\%QueueSize==font

           队列长度:\left ( rear-font+QueueSize \right )\%QueueSize

【4】查准率(precision)和查全率(recall)

真实情况 预测结果
正例 反例
正例 TP FN
反例 FP TN

查准率(precision):\frac{TP}{TP+FP}

查全率(recall):\frac{TP}{TP+FN}

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

          A.  Accuracy:(TP+TN)/all       

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

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

          D.  AUC:ROC曲线下面积

          解析:对于分类器,主要的评价指标有precision,recall,F-score,以及ROC曲线等。 在二分类问题中,我们主要关注的是测试集的正样本能否正确分类。当样本不均衡时,比如样本中负样本数量远远多于正样本,此时如果负样本能够全部正确分类,而正样本只能部分正确分类,那么(TP+TN)可以得到很高的值,也就是Accuracy是个较大的值,但是正样本并没有取得良好的分类效果。因此A选项是不合理的。在样本不均衡时,可以采用BCD选项方法来评价。

【5】ROC曲线和AUC

         ROC曲线的横坐标是假正例率:FPR=\frac{FP}{FP+TN}

         ROC曲线的横坐标是真正例率:TPR=\frac{TP}{TP+FN}

         ROC曲线面积为AUC。

【6】过拟合

         防止过拟合:决策树模型剪枝、SVM松弛变量、L1/L2正则化、dropout、early stoping

         从数据预处理角度思考: 扩增训练数据集、平衡不同类别数据集、降维 等

【6】序列标注模型:

HMM—— 隐马尔科夫模型,HMM模型是对转移概率和表现概率直接建模,统计共现概率。

三种模型:1⃣️概率计算:给定模型参数\lambda =\left ( A,B,\pi \right )和观测序列O,计算在模型\lambda观测序列O出现 => 前向后向算法;

                 2⃣️学习\lambda =\left ( A,B,\pi \right ):Bauch-Welch(EM);

                 3⃣️预测问题:求最可能出现的状态序列:viterbi算法。

每个时刻有K个隐状态,每个状态需要遍历K个数才能得到,此时时间复杂度为O(K2),而最终有T个时刻,所以时间复杂度为。时间复杂度与观察值序列和状态空间有关,与观察值空间无关。

MEMM—— 最大熵隐马尔科夫模型,MEMM模型是对转移概率和表现概率建立联合概率,统计时统计的是条件概率。

CRF—— 条件随机场模型,CRF是在给定需要标记的观察序列的条件下,计算整个标记序列的联合概率分布,而不是在给定当前状态条件下,定义下一个状态的状态分布。

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

例题1:下列哪个不属于CRF模型对于HMM和MEMM模型的优势( )

A特征灵活     B速度快       C可容纳较多上下文信息        D全局最优

例题2:以下哪种模型不适合序列标注问题

A.Recurrent Neural Network

B. Conditional Random Field

C.Convolution Neural Network

D.Hidden Markov model

【7】深度学习

以下哪些主要用于无监督的深度学习网络

A.Restricted Boltzmann Machines   B.AutoEncoder   C.Deep Belief Networks   D.Recurrent Neural Network

【8】熵相关:

机器学习中能够用于指导特征选择的指标:信息增益、信息增益率、基尼系数、信息熵。

数据集D的信息熵:H(D)=-\sum_{k=1}^{K}\frac{\left | C_{k} \right |}{D}\log _{2}\frac{\left | C_{k} \right |}{D}

特征A的信息熵:H(D,A)=-\sum_{i=1}^{n}\frac{\left | D_{i} \right |}{D}H(D_{i})

特征A的信息增益:g(D,A)=H(D)-H(D,A)

特征A的信息增益率:g_{R}(D,A)=\frac{g(D,A)}{H_{A}(D)},   H_{A}(D)=-\sum_{i=1}^{n}\frac{|D_{i}|}{|D|}\log _{2}\frac{|D_{i}|}{|D|}

数据集D的基尼系数: gini(D)=1-\sum_{k=1}^{K}(\frac{C_{k}}{D})^{2}

特征A的基尼指数:gini(D,A)=\frac{\left | D_{1} \right |}{D}gini(D_{1})+\frac{\left | D_{2} \right |}{D}gini(D_{2})

CART中选择基尼指数越小的特征作为分割特征。

【9】树相关:

一颗高度为n 的平衡二叉树,其最少节点数为F(n)=F(n-1)+F(n-2)+1,F(1)=1,F(2)=2.

性质:

        二叉树第i层最多有2^{i-1}个节点;

        深度为k的二叉树至多有2^{k}-1个节点;

        二叉树 叶子结点数 = 度为2的节点数+1;

        具有n个节点的完全二叉树深度为\left \lfloor \log_{2}n \right \rfloor+1

【9】统计分词:中文分词的基本方法可以分为基于语法规则的方法、基于词典的方法和基于统计的方法。

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

       在基于词典的方法中,可以进一步分为最大匹配法,最大概率法,最短路径法等。最大匹配法指的是按照一定顺序选取字符串中的若干个字当做一个词,去词典中查找。根据扫描方式可细分为:正向最大匹配,反向最大匹配,双向最大匹配,最小切分。最大概率法指的是一个待切分的汉字串可能包含多种分词结果,将其中概率最大的那个作为该字串的分词结果。最短路径法指的是在词图上选择一条词数最少的路径。

       基于统计的分词法的基本原理是根据字符串在语料库中出现的统计频率来决定其是否构成词。词是字的组合,相邻的字同时出现的次数越多, 就越有可能构成一个词。因此字与字相邻共现的频率或概率能够较好的反映它们成为词的可信度。常用的方法有HMM(隐马尔科夫模型),MAXENT(最大熵模型),MEMM(最大熵隐马尔科夫模型),CRF(条件随机场)。 本题中,基于统计的方法为条件随机场。ABC三个选项为基于词典的方法。

(1)基于统计的分词方法为( )

A正向量最大匹配法          B逆向量最大匹配法          C最少切分          D条件随机场

【10】排序相关:

  平均复杂度 最好复杂度 最坏复杂度 辅助空间 稳定性 备注
冒泡排序 O\left ( n^{2} \right ) O\left ( n \right ) O\left ( n^{2} \right ) O\left ( 1 \right ) 稳定 对于长度较短的序列,效果更好
简单选择排序 O\left ( n^{2} \right ) O\left ( n^{2} \right ) O\left ( n^{2} \right ) O\left ( 1 \right ) 不稳定 对于长度较短的序列,效果更好
直接插入排序 O\left ( n^{2} \right ) O\left ( n \right ) O\left ( n^{2} \right ) O\left ( 1 \right ) 稳定 当大部分有序,适用
希尔排序 O\left ( n\lg n \right )O\left ( n^{2} \right ) O\left ( n^{1.3} \right ) O\left ( n^{2} \right ) O\left ( 1 \right ) 不稳定  
堆排序 O\left ( n\lg n \right ) O\left ( n\lg n \right ) O\left ( n\lg n \right ) O\left ( 1 \right ) 不稳定 堆是完全二叉树,topN用小顶堆,lowN用大顶堆
归并排序 O\left ( n\lg n \right ) O\left ( n\lg n \right ) O\left ( n\lg n \right ) O\left ( n \right ) 稳定 n大好,n个元素k路归并排序次数S=logk(m)
快速排序 O\left ( n\lg n \right ) O\left ( n\lg n \right ) O\left ( n^{2} \right ) O\left ( 1 \right ) 不稳定 n大好

选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。

【11】神经网络相关:

           神经网络的激活函数有:sigmoid, tanh,ReLU以及ReLU变体(Leaky-ReLU/P-ReLU/R-ReLU),softmax。

           神经网络的损失函数有:均方损失,交叉熵损失和对数似然损失。

           sigmoid函数用在二分类下,softmax函数用在多分类下,它们都是将输出转化为0到1之间的概率。

           交叉熵用在二分类下,对数似然损失用在多分类下。

【12】降维

以下哪些算法可以用来降维?

A.Latent Dirichlet Allocation  B.Word2Vec  C.Principal component analysis   D.AutoEncoder

 Latent Dirichlet Allocation把文档投影到了“topic”空间,可以理解为降维

 word2vec 是它在给定的语料库上训练一个模型,输出出现在语料库上中单词的向量(word embedding)表示,NLP中传统的词表示方法是把每个单词表示成dim(词汇量大小)维的稀疏向量,这个稀疏向量只有一个维度(该单词的index)上是1,其余全是0,单词之间孤立,word embedding则是把单词的表示降维到n维的稠密向量,n<<dim。

D. 自编码也很好理解,隐藏层的神经元数目少于输入就可以看做降维和压缩

【12】其他

(1)当用户使用稀疏特征进行训练时,对于离散特征缺省值应该如何处理效果较好?

         A. 直接删除该特征      B. 对缺省值付给一个全新值来标记      C. 当零处理直接忽略       D. 使用平均值代替  

(2)以下哪些方法不可以直接来对文本分类?

       A.Kmeans(聚类方法)     B.决策树      C.支持向量机       D.KNN

猜你喜欢

转载自blog.csdn.net/meng984611383/article/details/82285548