一、决策树三大算法
决策树构建的基本步骤如下:
1.开始讲所有记录看作一个节点
2.遍历每个变量的每一种分割方式,找到最好的分割点
分成两个节点N1和N2
3.对N1和N2分别继续执行2-3步,直到每个节点足够“纯”为止。
[Source]
概念回顾
基尼值Gini(D):从数据集D中随机抽取两个样本,起类别标记不一致的概率,故,Gini(D)值越小,数据集D的纯度越高。
参考地址:
奥姆剃刀原理
“切勿浪费较多东西去做用较少的东西同样可以做好的事情。 ”后来以一种更为广泛的形式为人们所知,即“如无必要,勿增实体。
① 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