当前位置: 首页 > news >正文

搜狐快站绑定未备案的网站域名吗免费商标设计网

搜狐快站绑定未备案的网站域名吗,免费商标设计网,网络优化的手段有哪些,编程开发工具大全今天继续给大家介绍决策树算法#xff0c;决策树本身是一种非常简单直观的机器学习算法#xff0c;用于做分类或回归任务。它就像我们平常做决定时的过程#xff0c;通过逐步排除可能的选项#xff0c;最终得出结论。 A decision tree is a flowchart-like structure used …今天继续给大家介绍决策树算法决策树本身是一种非常简单直观的机器学习算法用于做分类或回归任务。它就像我们平常做决定时的过程通过逐步排除可能的选项最终得出结论。 A decision tree is a flowchart-like structure used to make decisions or predictions. It consists of nodes representing decisions or tests on attributes, branches representing the outcome of these decisions, and leaf nodes representing final outcomes or predictions. 一个典型的决策树的决策过程如下图 从上图可以看到一个树的结构包括 根节点Root Node: 代表决策过程要问的第一个问题。内部节点Internal Nodes: 代表依据特征决策的后续过程每一个节点根据结果有不同的分支。分支Branches: 代表决策的结果通常会指向下一个节点。叶节点Leaf Nodes: 代表最终决策结果叶节点不会出现分支。 可以看出来决策树至少有两个优点一是直观易懂 决策树的结构就像一棵树每个节点代表一个属性测试每条边代表一个测试结果叶子节点代表最终的分类结果。这种结构非常符合人类的思维方式让我们很容易理解模型是如何做出决策的。二是可解释性强 通过观察决策树我们可以清晰地看到哪些特征对分类结果影响最大从而帮助我们更好地理解数据。 理解决策树 决策树有一连串的节点所有的特征属性其实都可以用来划分支这个时候至少有两个问题需要弄明白:选择哪些特征作为节点如何对相应特征进行划分 选择哪个特征作为节点的时候有一个原则就是先用对模型贡献最大的特征来划分节点贡献的评估标准有很多 第一个熵值Entropy:这个熵值是度量数据的不纯度的amount of uncertainty or impurity我们记住熵值越大数据越不纯就好。那么按照熵值的标准我们希望通过节点后形成的分支数据越纯越好对应的就是熵值越小越好。 第二个信息增益Information Gain:这个是数据划分前的熵值和通过节点划分后的平均熵值的差刚刚说了熵值越小越好那么这个差值应该是越大越好也就是信息增益越大越好。 it is calculated by computing the total difference between the entropy before split and average entropy after the split of dataset based on the given attribute values. 第三个的基尼纯度Gini Impurity Gini Index is a metric to measure how often a randomly chosen element would be incorrectly identified. 可以用以上三个标准决定使用哪个特征以及特征使用的先后顺序具体标准总结如图 不同的模型贡献评估标准又形成了不同的算法比如ID3算法就是用信息增益作为贡献标准 选择信息增益最大的属性作为划分属性。C4.5算法用信息增益率CART算法用基尼指数 CART算法采用基尼指数作为划分属性的选择标准。 那么决策树的整个划分过程又是怎么样的呢 我们依然来看个例子想象一下我们想根据天气情况决定是否去打篮球。 我们可以用决策树来表示这个决策过程步骤如下 第一步收集数据首先我们收集了一些历史天气数据以及是否打篮球的包括 第二步选择根节点假设我们是用ID3算法 信息增益最大化原则ID3算法 我们选择能提供最多信息、最能区分不同决策的属性作为根节点。在这个例子中 我们计算每个属性天气、温度、风力、是否下雨的信息增益假设计算结果是“是否下雨”的信息增益最大。所以 我们将“是否下雨”作为根节点。 第三步划分数据集 根据根节点的取值 将数据集分成两个子集下雨和不下雨。 第四步继续划分子集 对于每个子集 我们再次计算每个属性的信息增益选择信息增益最大的属性作为划分属性。假设对于“不下雨”这个子集 “温度”的信息增益最大。那么 我们将“不下雨”这个子集根据“温度”划分成“温度高”和“温度不高”两个子集。对于“下雨”这个子集 由于样本太少或其他原因我们可能直接将其作为叶子节点即“不下篮球”。 就这么一个思考过程决策树就出来了决策树也就相应出来了 所以一个常规的树的生成总结起来就是下面四步 计算每个属性的信息增益、信息增益率或基尼指数。选择增益最大的属性作为划分属性。根据该属性的不同取值将数据集划分成若干个子集。对每个子集递归地重复上述过程直到满足停止条件。 决策树的剪枝 大家也可以想想按照上面决策树的生成流程我一直划分一直划分下去总是可以非常精确的这就会产生过拟合问题为了防止过拟合通常需要对决策树进行剪枝。剪枝的方法主要分为预剪枝和后剪枝。 预剪枝 在树生成过程中提前停止分支生长。比如我们可以设置最大深度、设置节点包含的最小样本数、设置信息增益阈值。后剪枝 先生成一棵完整的树然后自底向上地剪掉一些分支。比如错误率降低剪枝 (Reduced-Error Pruning, REP) *代价复杂度剪枝 (Cost-Complexity Pruning, CCP)都属于后剪枝。 决策树实操 我们依然用iris数据集进行演示上篇讲朴素贝叶斯的文章也是用的这个数据集大家可以对比着看下结果。以Species作为因变量其余变量作为自变量构建决策树代码如下 tree_model- ctree(Species ~ ., iris_train) plot(tree_model) 运行代码得到决策树如图 训练好的模型在验证集中的表现如下 针对连续特征的回归树 刚刚讲的决策树都是针对分类结局的决策树也可以用于连续结局叫做回归树。 比如我现在有数据集结局是年薪连续变量两个预测变量一个是工作年限一个是工作经验HmRun通过数据可以形成一个如下图所示的决策树 那么对于一个工作年限为8年工作经验为10的个体来说模型预测其年薪结果就为577.6 上面过程也有两个问题一个是特征分割的条件标准另一个问题是叶节点的值是如何来的。 选择最佳划分特征和划分点 对于每个特征遍历所有可能的划分点计算划分后的子节点的均方误差或其他指标选择使均方误差最小的特征和划分点作为特征以及对应特征的划分点回归树的叶节点输出的是该节点包含的所有训练样本目标值的平均值或中位数。 When the dependent variable is continuous, its value can be predicted using regression trees. These predict using the average values of ȳ within each subset 看一个回归树的例子我现在有数据如下 我想用数据集中的特征来预测medv: 房价中位数做一个回归树代码如下 fit - rpart(medv ~ ., data Boston, method anova) rpart.plot(fit, type 4, extra 101) 运行代码后输出结果如下 这个是没有剪枝前的模型我们看下模型的效果 predictions - predict(fit, newdata Boston) mse - mean((predictions - Boston$medv)^2) print(mse) 运行后可以得到模型的mse是16.24467我们对模型进行剪枝过后再看变成下图 相应的模型的mse也变成了10.3362。说明剪枝确实提高了拟合效果。 通过上面的叙述相信大家对剪枝带来的直观效果有印象了继续带大家捋捋这个剪枝到底怎么减的。 Pruning剪枝实操 如果回归决策树的分支过多容易造成过拟合。剪枝主要分为两种方法预剪枝和后剪枝。 1. 预剪枝Pre-Pruning 预剪枝是在树的构建过程中进行的。它通过提前停止树的生长来达到剪枝的目的。具体方法包括 限制树的深度max_depth 设置树的最大深度当树达到指定深度时就停止生长。例如设置max_depth3意味着树最多有3层。限制节点包含的最小样本数min_samples_split 规定一个节点如果要分裂至少需要包含多少个样本。如果一个节点包含的样本数少于这个阈值则该节点不再分裂。限制叶节点包含的最小样本数min_samples_leaf 规定一个叶节点至少需要包含多少个样本。如果一个节点分裂后某个子节点包含的样本数少于这个阈值则该分裂不进行。限制叶节点的最小权重总和min_weight_fraction_leaf 与min_samples_leaf类似但使用样本权重的总和而不是样本数。设定分裂的阈值如信息增益、基尼指数的阈值 当分裂带来的增益小于设定的阈值时停止分裂。 举例说明预剪枝假设我们设置min_samples_split10。这意味着只有当一个节点包含至少10个样本时它才会被考虑分裂。如果一个节点只包含8个样本即使它可以被分裂成更“纯”的子节点也不会进行分裂从而避免了树的过度生长。 2. 后剪枝Post-Pruning 后剪枝是先让树完整地生长然后再自底向上地对树进行修剪。它通过删除一些子树或将子树替换为叶节点来简化树的结构。常用的后剪枝方法包括 降低错误剪枝Reduced Error Pruning 将数据集分成训练集和验证集。首先使用训练集构建完整的树然后从底向上遍历每个非叶节点尝试将其子树替换为叶节点。如果替换后在验证集上的错误率降低或保持不变则进行替换否则不进行替换。代价复杂度剪枝Cost-Complexity Pruning 为树的每个非叶节点定义一个代价复杂度因子α它衡量了剪枝带来的误差减少量与剪掉的叶节点数量之间的权衡。通过调整α的值可以得到一系列不同复杂度的树。然后使用交叉验证等方法选择最佳的α值并根据该值对树进行剪枝。 举例说明后剪枝假设我们构建了一棵完整的树其中一个非叶节点A有两个子节点B和C。我们尝试将节点A的子树包括B和C替换为一个叶节点该叶节点的值为B和C包含的所有样本目标值的平均值。如果替换后在验证集上的均方误差降低了则进行替换否则保留原来的子树。 故决策树剪枝的主要思想是防止模型在训练集中出现过拟合现象使模型在测试集中的表现更好。预剪枝的逻辑我们其实很清楚了现在我们以代价复杂度剪枝为例子看看后剪枝到底是如何操作的 首先我们得有一个代价函数如下图 代价函数通常由两部分组成 误差项SSR 反映模型在训练集上的预测误差。 复杂度项 反映决策树的复杂度通常用叶子节点的数量来表示。通过调整这两项的权重α是调节参数可以控制模型的拟合程度和复杂度。 剪枝过程 从底向上遍历决策树的内部节点。对于每个内部节点计算剪枝前后的代价。如果剪枝后代价降低则进行剪枝将该节点及其子树替换为一个叶子节点。叶子节点的类别通常由该子树中样本最多的类别决定。 通常我们会使用交叉验证法求解最佳α取值,α约小决策树越长。不同的α取值将影响我们选择哪种亚决策树的决策。 交叉验证剪枝实操 我们依然是用鸢尾花数据集进行展示如何用交叉验证得到最优cp代价复杂度因子α值从而完成剪枝提高模型的准确度。 下面的代码做了决策树模型绘制cp值与交叉验证误差的关系图。并展示了剪枝前的模型 fit - rpart(Species ~ ., data iris) plotcp(fit) rpart.plot(fit, type 4, extra 101) 代码运行结果如下 接下来进行剪枝并输出剪枝后的模型评估结果 # 使用1-SE规则选择cp值 bestcp - fit$cptable[which.min(fit$cptable[,xerror] fit$cptable[,xstd]), CP] # 剪枝 fit.pruned - prune(fit, cp bestcp) predicted.classes - fit.pruned %% predict(iris,type class) tab_tree - table(predicted.classes, iris$Species) caret::confusionMatrix(tab_tree) 运行代码输出结果如下 可以看到模型整体的正确性变成了96这可确实比前面的算法提升了嘞之前可是只有93哦。
http://www.hkea.cn/news/14504712/

相关文章:

  • 个人网站空间价格vps设置网站访问用户权限
  • 网页设计与网站建设文档vps网站目录显示灰色的
  • 电器企业网站建设黄骅市在哪里
  • 体育类网站模板可拖动网站
  • 网站设计培训班询北京物流网站建设
  • 整站网站优化运营wordpress 产品模块
  • 网站建设普票页面设计免费
  • 餐饮o2o 网站建设做公司网站的模板下载
  • 商城网站设计服务刷推广链接
  • 网站建设非功能需求产品网络推广的方法
  • 安防公司网站模板平面电商网站建设
  • 最新网站开发软件主机托管公司
  • 国外 做励志视频的网站网站推广策划方案大数据
  • 公司网站建设存在问题深圳苏州企业网站建设服务商
  • 百度统计搜索词为什么有与网站不相关的词百度开户流程
  • 什么系统做网站最安全做特产的网站的分析
  • 如何让自己网站排名提高营销网课
  • 做网站的app网版制作厂家
  • 丽水网站建设企业wordpress加目录
  • 淘宝网站怎么做的好重庆工商学校官网
  • 联想企业网站建设的思路网站开发不用框架
  • 安徽鲁班建设集团网站公司注册如何网上核名
  • 网站上做百度广告赚钱么html5加入wordpress
  • 建设网站协议iis 网站301重定向
  • 建站资源免费聊天室网站开发
  • 淘宝网站是哪个公司做的科技布沙发好还是布艺沙发好
  • 网站模板广告去除公司网址备案能用多少网站
  • 网站登录密码忘记了怎么办网站代码如何优化
  • 基于阿里云的电商网站建设移动互联网开发研究方向
  • 织梦做有网站有后台 能下载备份所有代码文件么东台建设网站