十大算法之决策树&随机森林(集成学习)

一、决策树三大算法

决策树构建的基本步骤如下

1.开始讲所有记录看作一个节点
2.遍历每个变量的每一种分割方式,找到最好的分割点
分成两个节点N1和N2
3.对N1和N2分别继续执行2-3步,直到每个节点足够“纯”为止。
[Source]https://www.cnblogs.com/bourneli/archive/2013/03/15/2961568.html

概念回顾

基尼值Gini(D):从数据集D中随机抽取两个样本,起类别标记不一致的概率,故,Gini(D)值越小,数据集D的纯度越高。
参考地址:https://blog.csdn.net/sinat_30353259/article/details/80917362

奥姆剃刀原理
“切勿浪费较多东西去做用较少的东西同样可以做好的事情。 ”后来以一种更为广泛的形式为人们所知,即“如无必要,勿增实体。
在这里插入图片描述

① ID3

缺陷
1.ID3 的算法规则相对简单,可解释性强。同样也存在缺陷,比如我们会发现 ID3 算法倾向于选择取值比较多的属性。这样,如果我们把“编号”作为一个属性(一般情况下不会这么做,这里只是举个例子),那么“编号”将会被选为最优属性 。但实际上“编号”是无关属性的,它对“打篮球”的分类并没有太大作用。
2.ID3 没有剪枝策略,容易过拟合;其他两个都可以剪枝
3.信息增益准则对可取值数目较多的特征有所偏好,类似“编号”的特征其信息增益接近于 1;
4.只能用于处理离散分布的特征;
5.没有考虑缺失值。

集成学习

Bootstrap方法是在总结、归纳前人研究成果的基础上提出一种新的非参数统计方法。Bootstrap是一类非参数Monte Carlo方法,其实质是对观测信息进行再抽样,进而对总体的分布特性进行统计推断。

首先,Bootstrap通过重抽样,可以避免了Cross-Validation造成的样本减少问题,其次,Bootstrap也可以用于创造数据的随机性。比如,我们所熟知的随机森林算法第一步就是从原始训练数据集中,应用bootstrap方法有放回地随机抽取k个新的自助样本集,并由此构建k棵分类回归树。
Bagging流程

采用重抽样方法(有放回抽样)从原始样本中抽取一定数量的样本
根据抽出的样本计算想要得到的统计量T

重复上述N次(一般大于1000),得到N个统计量T
根据这N个统计量,即可计算出统计量的置信区间

Random Forest

Pd.Loc

pandas中的df.loc[]主要是根据DataFrame的行标和列标进行数据的筛选的,如下图红框部分所示:

通过标签!标签!标签!索引

其接受两个参数:行标和列标,当列标省略时,默认获取整行数据。两个参数都可以以字符,切片以及列表的形式传入。

>>> import pandas as pd
>>> import numpy as np
>>> df = pd.read_excel(r'D:/myExcel/1.xlsx', index_col='id')
>>> df
     name  score grade
id                    
a     bog     45     A
c   jiken     67     B
d     bob     23     A
b   jiken     34     B
f    lucy     98     A
e    tidy     75     B
# 指定行标'a'以及'f'行,第二个参数省略,则获取整行
>>> df.loc[['a', 'f']]
    name  score grade
id                   
a    bog     45     A
f   lucy     98     A

# 以切片形式传入,会按照df中的顺序获取
# 此处需要注意,并不是只获取'a', 'b'行
# 在df中'a', 'b'两行中还包含'c', 'd'行
# 会一并获取
>>> df.loc['a':'b']
     name  score grade
id                    
a     bog     45     A
c   jiken     67     B
d     bob     23     A
b   jiken     34     B

# 以切片传入行标,以列表形式传入列标
>>> df.loc['a':'f', ['name','grade']]
     name grade
id             
a     bog     A
c   jiken     B
d     bob     A
b   jiken     B
f    lucy     A

# 单个字符串获取指定数据
>>> df.loc['a' , 'name']
'bog'

# 获取整列数据
>>> df.loc[:, ['name','grade']]
     name grade
id             
a     bog     A
c   jiken     B
d     bob     A
b   jiken     B
f    lucy     A
e    tidy     B

a = np.unique(A)

对于一维数组或者列表,unique函数去除其中重复的元素,并按元素由大到小返回一个新的无元素重复的元组或者列表

在机器学习中ground truth表示有监督学习的训练集的分类准确性,用于证明或者推翻某个假设。有监督的机器学习会对训练数据打标记,试想一下如果训练标记错误,那么将会对测试数据的预测产生影响,因此这里将那些正确打标记的数据成为ground truth。

随机森林调参方法:
https://zhuanlan.zhihu.com/p/139510947

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值