树选手2号:random forest

在前面两天简单介绍了一下decision tree的原理,今天来谈谈如何把树变成一片森林~
Ramdom forest基本上就是采用团结力量大的方式来种很多不同的树,最後再把每棵树预测的结果总和,跟decision tree一样:如果是分类问题就采取多数决,如果是数值预测问题就采用平均数,random forest的好处在於:

  1. 有效解决decision tree overfitting 的问题
  2. 准确率通常比decision tree高
  3. 比较不容易受极端值影响

https://ithelp.ithome.com.tw/upload/images/20210918/20142004LwXLtEGIYT.png

random forest随机在哪里?

bagging

如果我们想要种很多不同的树,但每棵树我们都给他一模一样的training data,那长出来的树都会一样,这样就是白忙一场~ 所以第一个随机的部分就在於:对於每棵树,我都给他不同的training data,抽取的办法有一个专门的词叫做“Bagging”,具体的方法是:我从所有的资料里面抽取n个资料形成一个子样本(放回再抽下一个,所以资料可!以!重!复!),这件事重复做很多次,取决於你想要几棵树就做几次。

小小补充:bagging 的全称叫做“boostrap aggregating”,上面提到的重复抽取样本的方法,就叫“boostrap”,而後续把不同树的预测总结就是aggregate!

feature randomness

另外一个随机的部分就是参数的数量,如果资料总共有10个参数(x1,x2...x10),每棵树也随机给他m个就好,这样的目的也算是在让每棵树都可以专注在小范围的资料子集合,这样的方法就是“feature randomness”。

因为每棵树的参数数量以及资料都比较小,所以种树的效率很高,也因此我们可以很快的就种出一片森林罗!

reference:
https://www.youtube.com/watch?v=cIbj0WuK41w


<<:  [DAY 03]物品拍卖价格查询功能(1/4)

>>:  Day 18:Kotlin 过滤(filter)集合资料用法

Day 22 - SwiftUI开发实作1 (简易计算机)

首先我们创建一个新专案 在这里我们创建一个新专案,并且命名为计算机。 然後选择swiftui,如果跳...

Day 30 - 使用 CDK 创建 Open Unlight 游戏

今天是铁人赛最後一天,我要来跟大家介绍一个游戏 Open Unlight 它是一个在 2019 年...

先做了个toDoList

因为卡关卡了很久,现在才来贴文,我跟随着下面这个教学制作了ToDoList Beginning ou...

表单: 处理物件型资料的画面

以一个这样的表单为例 <UserForm :data="data" @up...

D26. 学习基础C、C++语言

D26. 关於注解 今天想要讲比较轻松的东西就是 【注解】 在未来所写的程序码绝对是几千几万行起跳,...