- 你能解释朴素贝叶斯的基本原理吗?阈值如何设定?
朴素贝叶斯分类是一种十分简单的分类算法,叫它朴素贝叶斯分类是因为这种
方法的思想真的很朴素,朴素贝叶斯的思想基础是这样的:对于给出的待分类
项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分
类项属于哪个类别。 - 你能解释一下 MapReduce 是什么以及他是如何工作的吗?
数据分片和移动计算
MapReduce 采用计算移动到数据端方式,
此方式极大提高数据的运算效率
工作流程:
第一步 Input 输入数据源
第二步 Splitting 分割数据源, 按照行数分割
第三步 Mapping 映射 分发分割后的数据
第四步:shuffing 其进行分组排序 此部分是透明的且不可变动
第五步 Reducing 去重 Reducing 得到 shuffle 结果即是
<K2,V2{1,1,1}>只输出其中一条,图中 Reducing 和自定义合并而非系统本身
操作结果
第六步 Final result 得到最终结果 - 你能解释一下什么是 SVM 吗?
支持向量机,即 supportvector machine ,它可分为线性支持向量机和
非线性支持向量机。在支持向量机的分类模型中,我们首要的目的就是去找
到一个最大边缘超平面(具体的下面将会介绍)。而在最大超平面的两边,有
一对分别平行于最大超平面的平面,要想找到最大超平面,就得找到这样的
两个平面到这个最大边缘超平面的距离最大。 - 如何最好的选择 500 万个搜索查询的代表性样本
评估一个样本的方法不是依据该样本的特征,而是依据其抽取的过程。对
这个过程的评估涉及多个方面,比如:抽样框是否明确,样本规模有多大,样本的
抽取是否严格遵循了概率抽样程序,在具体的实施过程中,有没有未应答现象,应
答率是多少,等 - 什么是 spark,以及工作流程
Spark 是基于内存计算的大数据并行计算框架。Spark 基于内存计算,提
高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,
允许用户将 Spark 部署在大量廉价硬件之上,形成集群。
(1)任何 spark 的应用程序都包含 Driver 代码和 Executor 代码。
Spark 应用程序首先在 Driver 初始化 SparkContext。
(2)SparkContext 初始化完成后,首先根据 Spark 的相关配置,向
Cluster Master 申请所需要的资源,然后在各个 Worker 结点初始化相应的
Executor。Executor 初始化完成后,Driver 将通过对 Spark 应用程序中的
RDD 代码进行解析,生成相应的 RDD graph(RDD 图),该图描述了 RDD
的相关信息及彼此之间的依赖关系。
(3)RDD 图构建完毕后,Driver 将提交给 DAGScheduler 进行解析。
(4)DAGScheduler 将划分的一系列的 Stage(TaskSet),按照 Stage
的先后顺序依次提交给底层的调度器 TaskScheduler 去执行。
(5)TaskScheduler 接收到 DAGScheduler 的 Stage 任务后,将会在
集群环境中构建一个 TaskSetManager 实例来管理 Stage(TaskSet) 的生
命周期。
(6)TaskSetManager 将会把相关的计算代码、数据资源文件等发送到
相应的 Executor 上,并在相应的 Executor 上启动线程池执行。
(7)在 Task 执行的过程中,可能有部分应用程序涉及到 I/O 的输入输
出,在每个 Executor 由相应的 BlockManager 进行管理,相关
BlockManager 的信息将会与 Driver 中的 Block tracker 进行交互和同步。
(8)在 TaskThreads 执行的过程中,如果存在运行错误、或其他影响的
问题导致失败,TaskSetManager 将会默认尝试 3 次,尝试均失败后将上报
TaskScheduler,TaskScheduler 如果解决不了,再上报 DAGScheduler,
DAGScheduler 将根据各个 Worker 结点的运行情况重新提交到别的
Executor 中执行。
(9)TaskThreads 执行完毕后,将把执行的结果反馈给
TaskSetManager,TaskSetManager 反馈给 TaskScheduler,
TaskScheduler 再上报 DAGScheduler,DAGScheduler 将根据是否还存在
待执行的 Stage,将继续循环迭代提交给 TaskScheduler 去执行。
(10)待所有的 Stage 都执行完毕后,将会最终达到应用程序的目标,
或者输出到文件、或者在屏幕显示等,Driver 的本次运行过程结束,等待用户
的其他指令或者关闭。
(11)在用户显式关闭 SparkContext 后,整个运行过程结束,相关的
资源被释放或回收。 - 描述梯度提升的工作原理
以决策树为基函数的提升方法称为提升树,提升树的模型可以表示为决策
树的加法模型,基函数一般是 cart 回归树,GDBT 是属于 boosting 的一员,
与之对应的还有 bagging,对于 bagging 中代表算法有随机森林,boosting
中代表的有 adaboost、xgboost 等,目前数据挖掘用的比较多的还是
boosting。 - 什么是过拟合
过拟合英文叫做 overfitting,是指为了得到一致假设而使假设变得过度严
格称为过拟合.简单来说就是模型对训练数据效果很好,对预测数据效果较差,模
型的泛化能力较弱.
产生过拟合的常见原因 - 建模样本选取有误,如样本数量太少,选样方法错误,样本标签错误
等,导致选取的样本数据不足以代表预定的分类规则; - 样本噪音干扰过大,使得机器将部分噪音认为是特征从而扰乱了预设
的分类规则; - 假设的模型无法合理存在,或者说是假设成立的条件实际并不成立;
- 参数太多,模型复杂度过高;
- 对于决策树模型,如果我们对于其生长没有合理的限制,其自由生长
有可能使节点只包含单纯的事件数据(event)或非事件数据(no event),使其
虽然可以完美匹配(拟合)训练数据,但是无法适应其他数据集。 - 对于神经网络模型:a)对样本数据可能存在分类决策面不唯一,随着
学习的进行,,BP 算法使权值可能收敛过于复杂的决策面;b)权值学习迭代次
数足够多(Overtraining),拟合了训练数据中的噪声和训练样例中没有代表性
的特征。
过拟合的解决方法 - 在神经网络模型中,可使用权值衰减的方法,即每次迭代过程中以某
个小因子降低每个权值。 - 选取合适的停止训练标准,使对机器的训练在合适的程度;.
- 保留验证数据集,对训练成果进行验证;
- 获取额外数据进行交叉验证;
- 正则化,即在进行目标函数或代价函数优化时,在目标函数或代价函
数后面加上一个正则项,一般有 L1 正则与 L2 正则等。 - SVM 和随机森林的优缺点
SVM 的优缺点
优点: - 使用核函数可以向高维空间进行映射
- 使用核函数可以解决非线性的分类
- 分类思想很简单,就是将样本与决策面的间隔最大化
- 分类效果较好
缺点: - 对大规模数据训练比较困难
- 无法直接支持多分类,但是可以使用间接的方法来做
随机森林的优缺点
优点: - 简单,容易实现,计算开销小,并且它在很多现实任务中展现出来
了强大的性能。它相对于 Bagging 能够收敛于更小的泛化误差,且训练效
率要优于 Bagging,被誉为“代表集成学习技术水平的方法” - 它能够处理很高维度(feature 很多)的数据,并且不用做特征选择
- 在训练完后,它能够给出哪些 feature 比较重要
- 在创建随机森林的时候,对 generalization error 使用的是无偏估
计,模型泛化能力强 - 训练速度快,容易做成并行化方法
- 在训练过程中,能够检测到 feature 间的互相影响
- 实现比较简单
- 对于不平衡的数据集来说,它可以平衡误差。
- 如果有很大一部分的特征遗失,仍可以维持准确度。
缺点: - 随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟合
- 对于有不同取值的属性的数据,取值划分较多的属性会对随机森林
产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的。 - 描述二值分类
所谓的二值分类又叫二元分类,其实就是二分类,即指分类结果只有两种值
或两种情况,比如抛硬币只有正面和背面.很多机器学习算法初始都是用来解决
二分类问题的,比如逻辑斯蒂回归,支持向量机等,在二分类问题的基础上,又可推
导到多分类的情况.
二分类问题是分类问题中一个重要的课题。在二分类问题中,通常我们将
两个类别分别称为正类(positive class)和负类(negative class)。其中正
类通常用来表示我们所关心的那个类别,例如在异常检测中,“异常”的样本
是我们所关心的,所以通常我们会把异常样本称为正样本,而正常样本称为负
样本。在评估一个二分类模型的效果时,我们通常会用一个称为混淆矩阵
(confusion matrix)的四格表来表示.
10.什么是交叉验证
交叉验证,英文叫 Cross Validation, 是用来验证机器学习模型是否准确
一种方法
基本思想很简单,就是对数据集进行分组,一部分做为训练集,另一部分
做为测试集, 然后,先用训练集对机器学习模型进行训练,再用测试集来测试
模型,以此来对模型进行评价
交叉验证最常用对方式就是 K-CV,也就是将原始数据集分成 K 组(一般
是均分), 然后,将每个子集数据分别做一次验证集,得到 K 个模型, 再用这
K 个模型最终的验证集的分类准确率的平均数作为此 K-CV 下分类器的性能指
标。K 一般大于等于 2,实际操作时一般从 3 开始取,只有在原始数据集合数
据量小的时候才会尝试取 2。
在 sklearn 中,可以通过 Model selection 里面的 cross validation 来使用次
种功能
11.解释 PCA,PCA 假设,PCA 方程式
主成份分析,简写为 PCA(Principle Component Analysis)。用于提取
矩阵中的最主要成分,剔除冗余数据,同时降低数据纬度。现实世界中的数据
可能是多种因数叠加的结果,如果这些因数是线性叠加,PCA 就可以通过线
性转化,还原这种叠加,找到最原始的数据源。
PCA 假设 - 变量符合高斯分布(正太分布)
- 变量之间的影响是线性的,也就是可以通过线性变化将数据还原成主
要因数 - 协方差最大的元素对应的转换向量越重要
- 转换矩阵是正交的
PCA 的整个推导过程都是遵循上面的四条假设,如果违反了这些假设,
PCA 可能作用不大,甚至有反作用,所以使用 PCA 时需要谨慎。
12.描述数据分析过程
场景分析与算法选择
数据处理
缺失值处理
数据清洗和过滤
特征工程
特征选择
特征缩放
模型训练
处理样本不均衡的问题
构件模型并训练
模型评估与优化
得分 Accuracy=(TP+TN)/(TP+TN+FN+FP)
查准率(精确率)查全率(召回率)
ROC AUC
运行效率
13.说一下逻辑斯蒂,岭回归和 lasso 回归
岭回归和 lasso 回归都是常用对线性回归模型
岭回归主要用于对有共线性的数据进行分析
实质上是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性
以损失部分信息、降低精度为代价获得回归系数更为符合实际、更可
靠的回归方法,对病态数据的拟合要强于最小二乘法。
lasso 回归全称是 Least absolute shrinkage and selection
operator 最小绝对值收缩和选择算子。
lasso 是一种压缩估计。它通过构造一个惩罚函数得到一个较为精炼的模
型,使得它压缩一些系数,同时设定一些系数为零。
14.如何判断一个新样本是否为异常值?
1.可视化方法:通过绘制坐标图的方法可以很快的发现当前的数据到底是不是
离群数据。
2.数据分类法:将原先的正常数据进行二分类机器学习,目标值自己给定,计
算新数据是不是异常值。
3.概率统计法:使用高斯多元求概率,和数据分类的方法类似。
15.什么是偏差-方差的抵消, 怎么权衡
偏差:度量学习算法的期望预测与真实结果的偏离程度,也叫拟合能力。
方差:度量了同样大小的训练集的变动所导致的学习性能的变化,即刻画
了数据扰动造成的影响。
一般来说,偏差与方差是有冲突的,这称为偏差-方差窘境。比如给定学
习任务,假定我们能够控制学习算法的训练程度,则在训练不足时,学习器的
拟合能力不够强,训练数据的扰动不足以使学习器产生显著变化,此时偏差主
导了泛化错误率;随着训练程度的加深,学习器的拟合能力逐渐增强,训练数
据发生的扰动渐渐能被学习器学到,方差逐渐主导了泛化错误率;在训练程度
充分后,学习器的拟合能力已经非常强,训练数据发生的轻微扰动都能导致学
习器发生显著变化,若训练数据自身的,非全局的特性被学习器学到了,则发
生了过拟合。
参数或者线性的机器学习算法一般都会有一个很高的偏差和一个很低的方
差。但是,非参数或者非线性的机器学习算法一般都有一个很低的偏差和一个
很高的方差。所有,我们需要在这两者之间找到一个平衡点,来优化我们的算
法。
比如,KNN 算法有很低的偏差和很高的方差,但是我们可以通过调整 k
的值来改变偏差和方差之间的权衡关系,从而达到一个比较平衡的状态。
因此,我们增加偏差会导致方差的减少,同理,我们增加方差会导致偏差的减
少。但在实践中,我们无法去计算真正的偏差和方差值,因为我们不知道实际
的目标函数。但是,作为一种方法,偏差和方差为我们提供了一种去判断机器
学习算法性能的方法。
16.机器学习算法前,数据清洗的步骤
1.数据预处理:
(1)使用.replace()把一些空字符串(比如' '),特殊符号(比如 ‘?’)都
替换成 np.nan。
(2)计算数据中特征数量数和样本数量,如果某一行或列的空值(nan)
太多建议删除行或列。
(3)观察数据各个特征之间的差异是否比较大,如果是分类的话可以使
用标准化进行数据的规范。
2.特征工程:
(1)如果是字典类型的数据可以转成 one-hot 编码格式(又叫独热码)。
(2)如果是文本信息,可以使用 TFIDF(重要程度)提取文本的分词重要性。
17.如何应对一个不平衡的二分类
在分类问题中如果出现某类样本过多或过少的情况我们称这是一个不平衡
的分类问题。不平衡的样本类别会对模型训练产生较大的影响,为了使样本均
衡化,我们往往有如下方法:
1,过采样 2,欠采样 3,综合采样
过采样技术用来生成较少的样本,使用 SMOTE 算法可以达到上诉目的,
SMOTE 全称是合成少数类过采样技术。该算法使用 knn 思想从含有较少样本
类别的数据中,随机选择一个数据的 k 近邻,然后插值生成新的数据。
欠采样技术用来减少较多的样本,Tomek Links 算法可以达到上述目的,该
算法会使用一些随机特性,从较多类别样本中删除一些样本,使样本达到平衡。
综合采样会综合使用上述两种方法。
18.L1 与 L2 的区别,L1 为啥具有稀疏性
L1 和 L2 范数是防止出现过拟合,降低模型复杂度的两种方法,严格上说只是
Lp 范数在 p 为 1、2 时的特殊情况。L1 即我们平时说的绝对值误差,L2 是我们
平时说的平方误差。两种正则化方法都对模型的参数施加惩罚力度,在优化过程
中降低一些参数的权重,从而达到降低模型复杂度的效果,但是有一些区别。
L2 范数:L2 范数使用平方误差,当某项系数小于 1 以后,惩罚力度会越来越
弱,最终结果会使一些系数趋近于 0 但不会等于 0.我们常用的岭回归使用该方法
L1 范数:L1 范数使用绝对值误差,在某项系数小于 1 后仍会有一致的惩罚效
果,最终会使参数项中的很多为 0。这也是为什么 L1 范数具有稀疏性的原因。
从概率模型上讲,L2 范数假设数据符合高斯分布,L1 范数假设数据符合拉普
拉斯分布,从分布公式上很容易看到两种先验分布对结果产生的影响。
19.欠拟合的解决方法
欠拟合说明训练出的模型和目标数据的分布在形态上具有较大的差异,不能很
好的表达当前的数据特点,具有较大的方差,同时也不具备泛化(预测)能力。
解决欠拟合从以下方面入手:
a)选择正确的模型表示。例如:对于多项式形态分布的数据选择线性模型表达,
就会出现欠拟合。
b)添加更多的特征表达。当前维度的特征无法拟合出数据模型可以考虑添加更
多的特征,或者将数据映射到高维空间(例如 svm 中的核函数)
c)减少正则化参数。正则化参数目的是降低模型的复杂度,防止过拟合,当出
现了欠拟合应该适当降低正则化参数的影响。
20.介绍下深度学习,CNN 中的卷积和池化
CNN 既是卷积神经网络,卷积是一种数学运算,和加减乘除幂运算指数运
算类似,只不过卷积运算稍微复杂一点。CNN 中的卷积操作本质上的作用是,
提取数据中的特征。数据和目标值之间必然存在某种特征,是什么特征呢?假
设数据和目标值之间存在一个函数,在图片识别,语音识别领域,数据很大,
函数必然非常复杂,意味着系数很多,甚至上百万个系数。卷积的作用就是抽
取数据之间的特征,我们计算机运算速度非常快,我们就让计算机使用卷积的
运算一个个试,使用方向传播的原理告诉,计算机,正在测试的系数该调大还
是调小。经过长时间运算后,计算机终于找到了合适的函数,这就是卷积操作
的作用。卷积层可能会有多层,卷积核可能会很大,系数非常多,这么多系
数,这么多特征,我们要关键特征,此时就用到了池化,池化操作跟卷积操作
类似,不同点是,池化操作,从'池子'(相当于系数)中选择最具特征的系数
(比如说最大值),池化操作相当于缩减系数。缩减系数之后,函数复杂度减
小,特征更明显,便于问题的解决。
深度学习模型更复杂,体现在神经网络上,神经网络我们可以简单理解为
一个个简单算法组成的。如何让这复杂的网络进行运算,找到合适的函数呢?
我们使用卷积操作,说白了就是无数次的尝试(反向传播原理),一点点靠近标
准答案。深度学习就是利用计算机庞大的运算能力,解方程的一个过程。方程
过于复杂,我们把它叫做神经网络。
21.TensorFlow 原理,流程图,session 是啥
TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的
开源软件库。数据流图用“结点”(nodes)和“线”(edges)的有向图来描述
数学计算。在编写程序时,我们都是一步一步计算的,每计算完一步就可以得
到一个执行结果。在 TensorFlow 中,首先需要构建一个计算图,然后按照计
算图启动一个会话,在会话中完成变量赋值,计算,得到最终结果等操作。因
此,可以说 TensorFlow 是一个按照计算图设计的逻辑进行计算的编程系统。
TensorFlow 的计算图可以分为两个部分:
构造部分,包含计算流图;
执行部分,通过 session 执行图中的计算。session 是模型会话, 用来
执行构造好的计算图,同时会话拥有和管理程序运行时的所有资源。当计算
完成之后,需要通过关闭会话来帮助系统回收资源。
22.了解算法优化吗?
简单的算法优化,包括修改 sklearn 中已有算法的参数,通过 GridSearchCV
寻找最优参数
常用的优化算法包括梯度下降算法和牛顿法和拟牛顿法等
梯度下降法是最早最简单,也是最为常用的最优化方法。梯度下降法实现
简单,当目标函数是凸函数时,梯度下降法的解是全局解。一般情况下,其解
不保证是全局最优解,梯度下降法的速度也未必是最快的。梯度下降法的优化
思想是用当前位置负梯度方向作为搜索方向,因为该方向为当前位置的最快下
降方向,所以也被称为是”最速下降法“。最速下降法越接近目标值,步长越
小,前进越慢。
牛顿法是一种在实数域和复数域上近似求解方程的方法。方法使用函数 f
(x)的泰勒级数的前面几项来寻找方程 f (x) = 0 的根。牛顿法最大的特点就在
于它的收敛速度很快。
从本质上去看,牛顿法是二阶收敛,梯度下降是一阶收敛,所以牛顿法就更
快。如果更通俗地说的话,比如你想找一条最短的路径走到一个盆地的最底
部,梯度下降法每次只从你当前所处位置选一个坡度最大的方向走一步,牛顿
法在选择方向时,不仅会考虑坡度是否够大,还会考虑你走了一步之后,坡度
是否会变得更大。所以,可以说牛顿法比梯度下降法看得更远一点,能更快地
走到最底部。(牛顿法目光更加长远,所以少走弯路;相对而言,梯度下降法
只考虑了局部的最优,没有全局思想。)
23.梯度下降和随机梯度下降的区别
梯度下降和随机梯度下降之间的关键区别:
1、标准梯度下降是在权值更新前对所有样例汇总误差,而随机梯度下降
的权值是通过考查某个训练样例来更新的。
2、在标准梯度下降中,权值更新的每一步对多个样例求和,需要更多的
计算。
3、标准梯度下降,由于使用真正的梯度,标准梯度下降对于每一次权值
更新经常使用比随机梯度下降大的步长。
4、如果标准误差曲面有多个局部极小值,随机梯度下降有时可能避免陷
入这些局部极小值中。
相关知识:
1、梯度下降法是一个最优化算法,通常也称为最速下降法。最速下降法
是求解无约束优化问题最简单和最古老的方法之一,虽然现在已经不具有
实用性,但是许多有效算法都是以它为基础进行改进和修正而得到的。最
速下降法是用负梯度方向为搜索方向的,最速下降法越接近目标值,步长
越小,前进越慢。
缺点:
(1)靠近极小值时收敛速度减慢。
(2)直线搜索时可能会产生一些问题。
(3)可能会“之字形”地下降。
2、随机并行梯度下降算法,简称 SPGD 算法。作为一种无模型优化算
法,比较适用于控制变量较多,受控系统比较复杂,无法建立准确数学模
型的最优化控制过程。
24.从数学角度和你的个人理解完整推导和讲解 LR
LR 回归(Logistic Regression)
LR 回归,虽然这个算法从名字上来看,是回归算法,但其实际上是一个分类
算法,学术界也叫它 logit regression, maximum-entropy classification
(MaxEnt)或者是 the log-linear classifier。在机器学习算法中,有几十种分类
器,LR 回归是其中最常用的一个。
LR 回归是在线性回归模型的基础上,使用 sigmoid 函数,将线性模型 wTx
的结果压缩到[0,1] 之间,使其拥有概率意义。 其本质仍然是一个线性模型,实
现相对简单。在广告计算和推荐系统中使用频率极高,是 CTR 预估模型的基本算
法。同时,LR 模型也是深度学习的基本组成单元。
LR 回归属于概率性判别式模型,之所谓是概率性模型,是因为 LR 模型是有
概率意义的;之所以是判别式模型,是因为 LR 回归并没有对数据的分布进行建
模,也就是说,LR 模型并不知道数据的具体分布,而是直接将判别函数,或者说
是分类超平面求解了出来。
一般来说,分类算法都是求解 p(Ck|x) ,即对于一个新的样本,计算其条件
概率 p(Ck|x)。这个可以看做是一个后验概率,其计算可以基于贝叶斯公式得到:
p(Ck|x)=p(x|Ck)p(Ck) ,其中 p(x|Ck)是类条件概率密度,p(Ck)是类的概率先验。
使用这种方法的模型,称为是生成模型,即:p(Ck|x)是由 p(x|Ck) 和 p(Ck)生成
的。分类算法所得到的 p(Ck|x) 可以将输入空间划分成许多不相交的区域,这些
区域之间的分隔面被称为判别函数(也称为分类面),有了判别函数,就可以进行分
类了,上面生成模型,最终也是为了得到判别函数。如果直接对判别函数进行求
解,得到判别面,这种方法,就称为判别式法。LR 就属于这种方法。
25.如何对决策树进行剪枝?
决策树是充分考虑了所有的数据点而生成的复杂树,有可能出现过拟合的情
况,决策树越复杂,过拟合的程度会越高。(理论来说,不应该是拟合程度越高,
预测结果越准确嘛?为什么还要避免这种情况?)
考虑极端的情况,如果我们令所有的叶子节点都只含有一个数据点,那么我
们能够保证所有的训练数据都能准确分类,但是很有可能得到高的预测误差,原
因是将训练数据中所有的噪声数据都”准确划分”了,强化了噪声数据的作用。
(形成决策树的目的作出合理的预测,尽可能有效的排除噪声数据干扰,影响正
确预测的判断)
剪枝修剪分裂前后分类误差相差不大的子树,能够降低决策树的复杂度,降
低过拟合出现的概率。(换句话说就是把重负累赘的子树用一个根节点进行替换,
也就是说跟姐的数据意义完全可以代替又该节点衍生出的子树的所有节点的意
义)
既然决定剪枝,那么怎么进行剪枝呢? 两种方案:先剪枝和后剪枝
a,先剪枝说白了就是提前结束决策树的增长,跟上述决策树停止生长的方法一样。
b,后剪枝是指在决策树生长完成之后再进行剪枝的过程。
这里介绍两种后剪枝方案:
方案一:REP—错误消减剪枝
错误消减剪枝是对“基于成本复杂度的剪枝”的一种优化,但是仍然需要
一个单独的测试数据集,不同的是在于这种方法可以直接使用完全诱导树对
测试集中的实例进行分类,对于诱导树(什么是诱导树?)中的非叶子节
树,该策略是用一个叶子节点去代替该子树,判断是否有益,如果剪枝前
后,其错误率下降或者是不变,并且被剪掉的子树不包含具有相同性质的其
他子树(为什么不能包含相同性质的其他子树?欢迎评论!),那么就用这个
叶子节点代替这个叶子树,这个过程将一直持续进行,直至错误率出现上升
的现象。简单点说:该剪枝方法是根据错误率进行剪枝,如果一棵子树修剪
前后错误率没有下降,就可以认为该子树是可以修剪的。REP 剪枝需要用新
的数据集,原因是如果用旧的数据集,不可能出现分裂后的错误率比分裂前
错误率要高的情况。由于使用新的数据集没有参与决策树的构建,能够降低
训练数据的影响,降低过拟合的程度,提高预测的准确率。
方案二:PEP-悲观剪枝法
不需要单独的数据集进行测试,而是通过训练数据集上的额错误分类数量
来估算位置实力上的错误率。
网友评论