面试题 – 机器学习

内容纲要

一、决策树

决策树(Decision Tree)是一种常用的机器学习算法,主要用于分类和回归任务。它是一种基于树形结构的算法,可以直观地表示决策过程。决策树通过递归地选择最佳属性进行划分,将数据集分解为更小的子集,直到所有数据点属于同一类别或满足停止条件。决策树易于理解和实现,同时也适用于处理具有非线性关系的数据。

1.1 决策树的主要组成部分

决策树的主要组成部分包括:

  • 节点(Node):树的每个元素称为节点。节点分为三种类型:

  • 根节点(Root Node):树的起始节点,表示整个数据集。

  • 内部节点(Internal Node):表示一个特征属性的判断条件,用于划分数据集。

  • 叶节点(Leaf Node):表示一个类别(分类任务)或数值(回归任务),表示决策结果。

  • 边(Edge):连接节点的路径,表示满足某个条件的数据流向。

决策树学习算法的关键步骤是特征选择。特征选择的目标是寻找最佳属性来划分数据集,以便生成尽可能纯净的子集。常用的特征选择方法包括信息增益(Information Gain)、信息增益率(Gain Ratio)、基尼指数(Gini Index)等。

1.2 常见的决策树算法

常见的决策树算法包括:

  • ID3:基于信息增益的决策树算法,主要用于处理离散特征和离散标签的分类任务。

  • C4.5:在ID3的基础上改进,引入了信息增益率进行特征选择,支持连续特征和缺失值处理。

  • CART(Classification and Regression Tree):支持分类和回归任务,使用基尼指数进行特征选择,生成的决策树是二叉树。

1.3 决策树的优点

  • 易于理解和解释:决策树模型具有直观的树形结构,易于可视化和理解。
  • 能处理非线性关系:决策树能够捕捉特征之间的非线性关系。
  • 无需预处理:决策树可以处理未经缩放或标准化的原始数据。
  • 支持多输出:决策树能够处理具有多个输出类别的问题。

1.4 决策树的缺点:

  1. 容易过拟合:决策树容易生成过于复杂的模型,导致过拟合。可通过剪枝技术降低过拟合的风险。

  2. 不稳定性:决策树对数据的微小变化非常敏感,可能导致树结构的显著变化。可通过集成方法(如随机森林)提高稳定性。

  3. 优化问题:决策树的学习过程本质上是一个NP完全问题,因此实际算法通常采用贪心策略进行局部最优划分,这可能导致全局最优解无法获得。

  4. 不擅长处理连续特征:决策树在处理连续特征时需要进行离散化,这可能导致信息损失。

1.5 总结

为了克服决策树的一些局限性,可以使用集成方法。随机森林(Random Forest)和梯度提升树(Gradient Boosted Trees)就是基于决策树的集成学习方法。这些方法通过构建多个决策树并组合它们的预测结果来提高模型性能和稳定性。

总之,决策树是一种常用的机器学习算法,适用于分类和回归任务。它的直观性和可解释性使得它在许多实际应用中非常受欢迎。然而,决策树也存在一些缺点,如容易过拟合和不稳定等。为了克服这些问题,可以采用剪枝技术、集成方法等策略。

1.6 参考资料:

二、随机森林算法

随机森林(Random Forest)是一种集成学习方法,主要用于分类和回归任务。它通过构建多个决策树并组合它们的预测结果来提高模型的准确性和稳定性。

2.1 随机森林利用两种随机性

  1. 对数据进行有放回抽样,生成不同的训练集;
  2. 在决策树构建过程中,随机选择特征的子集进行分裂。这些随机性使得随机森林具有较强的泛化能力和鲁棒性。

2.2 随机森林的主要步骤

  1. 对数据集进行有放回抽样(自助抽样,Bootstrap Sampling),生成多个不同的训练集。

  2. 使用每个训练集构建一棵决策树,过程中每次分裂节点时,从所有特征中随机选择一个特征子集,根据最优划分原则(如信息增益、基尼指数等)在这个子集中选择最佳特征进行分裂。

  3. 对于分类任务,每棵决策树得到一个类别预测结果,通过投票机制确定最终类别;对于回归任务,每棵决策树得到一个数值预测结果,通过计算均值或中位数确定最终数值。

2.3 随机森林的优点

  1. 准确性高:随机森林通过集成多个决策树的预测结果,降低了模型的方差,通常具有较高的准确性。
  2. 鲁棒性强:随机森林对数据噪声和异常值不敏感,具有较强的泛化能力。
  3. 并行计算:随机森林中的决策树可以独立并行构建,这使得随机森林在大数据集上具有较好的扩展性。
  4. 自动处理特征选择和交互:随机森林在构建过程中会自动进行特征选择,并且能够捕捉特征之间的交互关系。
  5. 易于实现:随机森林算法相对简单,易于实现和调优。

2.4 随机森林的缺点

  1. 模型解释性较差:虽然单棵决策树具有较好的解释性,但随机森林作为多棵决策树的集成模型,整体解释性较差。
  2. 预测速度较慢:随机森林中包含多棵决策树,虽然在训练阶段可以进行并行计算,但在预测阶段需要汇总所有决策树的预测结果,这可能导致预测速度较慢,尤其是在大型随机森林中。
  3. 可能过拟合:尽管随机森林具有较强的泛化能力,但在某些情况下,例如噪声较大或者树的数量和深度过大时,仍然可能出现过拟合现象。

2.5 总结

尽管随机森林存在一些缺点,但它在许多实际应用中表现出色,成为机器学习领域的重要算法之一。为了获得更好的性能,可以通过调整参数,例如树的数量、树的最大深度、特征子集的大小等来优化随机森林模型。在实践中,随机森林通常作为基准模型与其他算法进行比较,以评估所选方法的有效性。

2.6 参考资料

三、逻辑回归

逻辑回归(Logistic Regression)是一种广泛应用于分类任务的统计学和机器学习方法,尤其适用于二分类问题。尽管名字中包含“回归”,但逻辑回归实际上是一种线性分类器。它基于线性回归模型,通过引入逻辑函数(通常是Sigmoid函数)将线性回归的输出转换为概率值,从而实现分类。

3.1 逻辑回归的主要思想

逻辑回归的主要思想是使用Sigmoid函数(或其他逻辑函数)将线性模型的输出转换为介于0和1之间的概率值。Sigmoid函数的定义如下:

sigmoid(x) = 1 / (1 + exp(-x))

逻辑回归模型可以表示为:

P(y=1|x) = sigmoid(w^T * x + b)

其中,P(y=1|x)表示给定输入特征x时,类别y=1的概率;w是权重向量;b是偏置项;w^T * x表示w和x的内积。

模型训练的目标是找到最佳的权重向量w和偏置项b,使得模型对训练数据的预测概率与真实类别尽可能接近。为了实现这一目标,我们通常使用极大似然估计(Maximum Likelihood Estimation,MLE)方法。通过优化损失函数(如交叉熵损失),我们可以找到最佳参数。损失函数可以使用梯度下降法或其他优化算法进行求解。

3.2 逻辑回归的优点

  • 简单易于实现:逻辑回归模型简单直观,容易理解和实现。
  • 计算效率高:逻辑回归的计算复杂度相对较低,适合处理大规模数据。
  • 输出概率:逻辑回归可以输出预测类别的概率,这在某些场景中非常有用。
  • 可解释性:逻辑回归的参数可以直接与特征关联,有利于理解特征对结果的影响。

3.3 逻辑回归的缺点:

  • 线性边界:逻辑回归假设数据具有线性可分性,对于非线性关系的数据表现较差。
  • 对异常值敏感:逻辑回归模型对异常值和噪声较为敏感,可能影响模型性能。
  • 仅适用于分类任务:逻辑回归主要用于解决分类问题,无法直接应用于回归任务。

3.4 改善逻辑回归在非线性数据上的性能策略

尽管逻辑回归在处理非线性数据时可能存在局限性,但它仍然是许多实际问题的有效解决方案。为了改善逻辑回归在非线性数据上的性能,可以采用一些策略,例如:

  1. 特征工程:通过引入新特征、交互项或多项式特征,可以帮助模型捕捉特征之间的非线性关系。
  2. 正则化:为了防止模型过拟合,可以在损失函数中引入正则化项(如L1或L2正则化)。这有助于提高模型的泛化能力。
  3. 集成方法:将逻辑回归与其他模型(如决策树、支持向量机等)结合,使用集成方法(如Bagging、Boosting或Stacking)提高模型的性能。

3.5 总结

在实践中,逻辑回归通常作为基线模型与其他更复杂的模型进行比较。尽管逻辑回归具有一定的局限性,但它在许多场景中依然表现出色,尤其是在特征与目标之间存在线性关系的问题中。此外,逻辑回归的简单性和计算效率使其成为大规模数据集和实时预测应用的理想选择。

四、SVM

支持向量机(Support Vector Machine,简称SVM)是一种监督学习算法,主要用于分类和回归任务。SVM最初是为二分类问题设计的,但随后扩展到多分类和回归问题。SVM的核心思想是在特征空间中找到一个最优超平面,使得不同类别之间的间隔(即边距)最大化,从而实现良好的分类性能。

4.1 SVM的主要概念和组件

  • 最优超平面:在特征空间中,一个超平面可以表示为线性方程的形式。对于二维空间,超平面是一条直线;对于三维空间,超平面是一个平面;对于更高维度的空间,超平面是一个超平面。SVM试图找到一个最优的超平面,使得正负样本之间的间隔最大。

  • 间隔(Margin):间隔是指一个样本到超平面的距离。SVM试图找到一个最大化间隔的超平面,以提高模型的泛化能力。

  • 支持向量:支持向量是指距离超平面最近的样本点。这些点直接影响着超平面的位置和方向。只有支持向量的改变才会导致最优超平面的变化。

  • 核函数(Kernel):SVM可以通过使用核函数将非线性可分问题转换为线性可分问题。核函数可以将数据映射到更高维的特征空间,使得在新的特征空间中找到一个线性可分的超平面。常用的核函数包括线性核、多项式核、径向基函数(Radial Basis Function,简称RBF)核和Sigmoid核等。

4.2 SVM的优点

  • 高准确性:SVM通常具有较高的分类准确性,特别是在中小规模数据集上表现良好。
  • 可处理非线性问题:通过使用核函数,SVM可以处理非线性可分问题。
  • 可解释性强:支持向量的概念有助于解释模型的决策边界。
  • 泛化能力强:最大间隔原则使得SVM具有较强的泛化能力,降低了过拟合的风险。

4.3 SVM的缺点

  1. 计算复杂度高:SVM的训练过程涉及二次规划问题,计算复杂度较高,尤其在大规模数据集上训练速度较慢。
  2. 对参数敏感:SVM的性能受到核函数选择和参数设置(如正则化参数C和RBF核参数γ)的影响,参数调整可能会导致很大的性能差异。因此,需要进行参数调优以获得最佳性能。
  3. 不直接提供概率估计:SVM的原始形式不直接提供概率估计,尽管可以通过一些技巧(如Platt缩放)来获得概率估计,但这会增加计算复杂度。
  4. 可解释性较差:虽然支持向量的概念有助于解释决策边界,但当使用非线性核函数时,SVM的决策过程可能难以理解和解释。

4.4 改善SVM的性能的策略

尽管SVM具有一定的局限性,但它在许多实际问题中表现出色。为了改善SVM的性能,可以采用以下策略:

  • 特征缩放:将特征缩放到相同的范围(例如[0,1]或[-1,1])可以提高SVM的性能,尤其是在使用RBF核或其他非线性核函数时。
  • 参数调优:使用网格搜索、随机搜索或贝叶斯优化等方法对SVM的参数进行调优,以找到最佳参数组合。
  • 数据降维:在训练SVM之前,可以使用主成分分析(PCA)或其他降维方法减少特征的数量,从而降低计算复杂度。
  • 在实践中,SVM通常与其他机器学习算法(如逻辑回归、决策树、随机森林等)进行比较,以评估所选方法的有效性。在某些场景中,SVM可能成为最佳选择,特别是在小型或中型数据集上,或者在特征与目标之间存在复杂关系的问题中。

五、朴素贝叶斯

https://zh.wikipedia.org/wiki/朴素贝叶斯分类器

朴素贝叶斯分类器(英语:Naive Bayes classifier,台湾称为单纯贝氏分类器),在机器学习中是一系列以假设特征之间强(朴素)独立下运用贝叶斯定理为基础的简单概率分类器。

朴素贝叶斯自1950年代已广泛研究,在1960年代初就以另外一个名称引入到文本信息检索界中,:488 并仍然是文本分类的一种热门(基准)方法,文本分类是以词频为特征判断文件所属类别或其他(如垃圾邮件、合法性、体育或政治等等)的问题。通过适当的预处理,它可以与这个领域更先进的方法(包括支持向量机)相竞争。 它在自动医疗诊断中也有应用。

朴素贝叶斯分类器是高度可扩展的,因此需要数量与学习问题中的变量(特征/预测器)成线性关系的参数。最大似然训练可以通过评估一个封闭形式的表达式来完成,:718 只需花费线性时间,而不需要其他很多类型的分类器所使用的费时的迭代逼近。

在统计学和计算机科学文献中,朴素贝叶斯模型有各种名称,包括简单贝叶斯和独立贝叶斯。 所有这些名称都参考了贝叶斯定理在该分类器的决策规则中的使用,但朴素贝叶斯不(一定)用到贝叶斯方法; 《Russell和Norvig》提到“‘朴素贝叶斯’有时被称为贝叶斯分类器,这个马虎的使用促使真正的贝叶斯论者称之为傻瓜贝叶斯模型。”

六、K 最近邻算法

https://zh.wikipedia.org/wiki/K-近邻算法

在模式识别领域中,最近邻居法(KNN算法,又译K-近邻算法)是一种用于分类和回归的非参数统计方法。在这两种情况下,输入包含特征空间中的k个最接近的训练样本。

在k-NN分类中,输出是一个分类族群。一个对象的分类是由其邻居的“多数表决”确定的,k个最近邻居(k为正整数,通常较小)中最常见的分类决定了赋予该对象的类别。若k = 1,则该对象的类别直接由最近的一个节点赋予。

在k-NN回归中,输出是该对象的属性值。该值是其k个最近邻居的值的平均值。
最近邻居法采用向量空间模型来分类,概念为相同类别的案例,彼此的相似度高,而可以借由计算与已知类别案例之相似度,来评估未知类别案例可能的分类。

K-NN是一种基于实例的学习,或者是局部近似和将所有计算推迟到分类之后的惰性学习。k-近邻算法是所有的机器学习算法中最简单的之一。

无论是分类还是回归,衡量邻居的权重都非常有用,使较近邻居的权重比较远邻居的权重大。例如,一种常见的加权方案是给每个邻居权重赋值为1/ d,其中d是到邻居的距离。

邻居都取自一组已经正确分类(在回归的情况下,指属性值正确)的对象。虽然没要求明确的训练步骤,但这也可以当作是此算法的一个训练样本集。

k-近邻算法的缺点是对数据的局部结构非常敏感。

K-均值算法也是流行的机器学习技术,其名称和k-近邻算法相近,但两者没有关系。数据标准化可以大大提高该算法的准确性

七、K 均值算法

https://zh.wikipedia.org/wiki/K-平均算法

k-均值算法(英文:k-means clustering)源于信号处理中的一种向量量化方法,现在则更多地作为一种聚类分析方法流行于数据挖掘领域。k-均值聚类的目的是:把n个点(可以是样本的一次观察或一个实例)划分到k个聚类中,使得每个点都属于离他最近的均值(此即聚类中心)对应的聚类,以之作为聚类的标准。这个问题将归结为一个把数据空间划分为Voronoi cells的问题。

这个问题在计算上是NP困难的,不过存在高效的启发式算法。一般情况下,都使用效率比较高的启发式算法,它们能够快速收敛于一个局部最优解。这些算法通常类似于通过迭代优化方法处理高斯混合分布的最大期望算法(EM算法)。而且,它们都使用聚类中心来为数据建模;然而k-均值聚类倾向于在可比较的空间范围内寻找聚类,期望-最大化技术却允许聚类有不同的形状。

k-均值聚类与k-近邻之间没有任何关系(后者是另一流行的机器学习技术)。

八、Adaboost 算法

https://zh.wikipedia.org/wiki/AdaBoost

AdaBoost为英文"Adaptive Boosting"(自适应增强)的缩写,是一种机器学习方法,由约阿夫·弗罗因德和罗伯特·沙皮尔提出。AdaBoost方法的自适应在于:前一个分类器分错的样本会被用来训练下一个分类器。AdaBoost方法对于噪声数据和异常数据很敏感。但在一些问题中,AdaBoost方法相对于大多数其它学习算法而言,不会很容易出现过拟合现象。AdaBoost方法中使用的分类器可能很弱(比如出现很大错误率),但只要它的分类效果比随机好一点(比如两类问题分类错误率略小于0.5),就能够改善最终得到的模型。而错误率高于随机分类器的弱分类器也是有用的,因为在最终得到的多个分类器的线性组合中,可以给它们赋予负系数,同样也能提升分类效果。

AdaBoost方法是一种迭代算法,在每一轮中加入一个新的弱分类器,直到达到某个预定的足够小的错误率。每一个训练样本都被赋予一个权重,表明它被某个分类器选入训练集的概率。如果某个样本点已经被准确地分类,那么在构造下一个训练集中,它被选中的概率就被降低;相反,如果某个样本点没有被准确地分类,那么它的权重就得到提高。通过这样的方式,AdaBoost方法能“聚焦于”那些较难分(更富信息)的样本上。在具体实现上,最初令每个样本的权重都相等,对于第k次迭代操作,我们就根据这些权重来选取样本点,进而训练分类器Ck。然后就根据这个分类器,来提高被它分错的的样本的权重,并降低被正确分类的样本权重。然后,权重更新过的样本集被用于训练下一个分类器Ck。整个训练过程如此迭代地进行下去。

九、神经网络

9.1 人工神经网络

https://zh.wikipedia.org/wiki/人工神经网络
人工神经网络(英语:Artificial Neural Network,ANN),简称神经网络(Neural Network,NN)或类神经网络,在机器学习和认知科学领域,是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。神经网络由大量的人工神经元联结进行计算。大多数情况下人工神经网络能在外界信息的基础上改变内部结构,是一种自适应系统,通俗地讲就是具备学习功能。现代神经网络是一种非线性统计性数据建模工具,神经网络通常是通过一个基于数学统计学类型的学习方法(Learning Method)得以优化,所以也是数学统计学方法的一种实际应用,通过统计学的标准数学方法我们能够得到大量的可以用函数来表达的局部结构空间,另一方面在人工智能学的人工感知领域,我们通过数学统计学的应用可以来做人工感知方面的决定问题(也就是说通过统计学的方法,人工神经网络能够类似人一样具有简单的决定能力和简单的判断能力),这种方法比起正式的逻辑学推理演算更具有优势。

和其他机器学习方法一样,神经网络已经被用于解决各种各样的问题,例如机器视觉和语音识别。这些问题都是很难被传统基于规则的编程所解决的。

9.2 卷积神经网络

https://zh.wikipedia.org/wiki/卷积神经网络

卷积神经网络(英语:Convolutional Neural Network,缩写:CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。

卷积神经网络由一个或多个卷积层和顶端的全连通层(对应经典的神经网络)组成,同时也包括关联权重和池化层(pooling layer)。这一结构使得卷积神经网络能够利用输入数据的二维结构。与其他深度学习结构相比,卷积神经网络在图像和语音识别方面能够给出更好的结果。这一模型也可以使用反向传播算法进行训练。相比较其他深度、前馈神经网络,卷积神经网络需要考量的参数更少,使之成为一种颇具吸引力的深度学习结构。

卷积神经网络的灵感来自于动物视觉皮层组织的神经连接方式。单个神经元只对有限区域内的刺激作出反应,不同神经元的感知区域相互重叠从而覆盖整个视野。

十、马尔可夫

Leave a Comment

您的电子邮箱地址不会被公开。 必填项已用*标注

close
arrow_upward