ML

1 K-means

聚类算法,原始数据不带标签,属于无监督算法的范围

K-means

初始有一团数据,选择2个点作为其质心,计算每个数据点到各个质心的距离,选择距离最近的质心作为数据点的标签,由于有2个质心,现在数据被分为2个部分了,分别计算2个部分的数据得到新的质心;

重复这个过程,直到质心位置不变或者变化范围很小。

难点在于质心数量的选择,和计算距离的方式选择。

2 决策树

2.1 基本概念

1 信息熵
信息熵(information entropy),离散随机事件出现的概率。信息熵被认为是系统有序化程度的度量,一个系统越是有序,信息熵就越低。

对于有K个类别的分类问题来说,假定样本集合D中第 k 类样本所占的比例为pk(k=1,2,…,K),则样本集合D的信息熵定义为:

信息熵

2 信息增益
在决策树的分类问题中,信息增益(information gain)是针对一个特定的分支标准(branching criteria)T,计算原有数据的信息熵与引入该分支标准后的信息熵之差。信息增益的定义如下:

信息增益

其中a是有V个不同取值的离散特征,使用特征a对样本集D进行划分会产生V个分支,Dv表示D中所有在特征a上取值为av的样本,即第v个分支的节点集合。|Dv|/|D|表示分支节点的权重,即分支节点的样本数越多,其影响越大。

参考

2.2 ID3

首先计算出原始数据集的信息熵,然后依次将数据中的每一个特征作为分支标准,并计算其相对于原始数据的信息增益,选择最大信息增益的分支标准来划分数据,因为信息增益越大,区分样本的能力就越强,越具有代表性。重复上述过程从而生成一棵决策树,很显然这是一种自顶向下的贪心策略。

缺陷:属性必须是nominal values,数据集不能包含缺损数据,算法容易产生过拟合

参考

2.3 C4.5

对于离散特征,C4.5算法不直接使用信息增益,而是使用“增益率”(gain ratio)来选择最优的分支标准,增益率的定义如下:

增益率

作为分支标准的属性可取值越多,则IV 的值越大。需要注意的是: 增益率准则对可取值数目较少的属性有所偏好,因此C4.5算法并不是直接选择增益率最大的属性作为分支标准,而是先从候选属性中找出信息增益高于平均水平的属性,再从中选择增益率最高的。

C4.5算法处理连续属性的方法是先把连续属性转换为离散属性再进行处理。虽然本质上属性的取值是连续的,但对于有限的采样数据它是离散的,如果有N条样本,那么我们有N-1种离散化的方法:<=vj的分到左子树,>vj的分到右子树。计算这N-1种情况下最大的信息增益率。在离散属性上只需要计算1次信息增益率,而在连续属性上却需要计算N-1次,计算量是相当大的。通过以下办法可以减少计算量:对于连续属性先按大小进行排序,只有在分类发生改变的地方才需要切开。比如对Temperature进行排序:

C4.5

本来有13种离散化的情况,现在只需计算7种。如果利用增益率来选择连续值属性的分界点,会导致一些副作用。分界点将样本分成两个部分,这两个部分的样本个数之比也会影响增益率。根据增益率公式,我们可以发现,当分界点能够把样本分成数量相等的两个子集时(我们称此时的分界点为等分分界点),增益率的抑制会被最大化,因此等分分界点被过分抑制了。子集样本个数能够影响分界点,显然不合理。因此在决定分界点是还是采用增益这个指标,而选择属性的时候才使用增益率这个指标。

参考

2.4 cart

决策树实现

2.5 tips on pratical use (scikit-learn)

当数据的特征数量很大时,决策树容易发生过拟合。选择合适的样本对特征数量的比值是必要的,一颗树只有很少的样本数而有很大的尺寸空间,是很容易过拟合的。

在喂数据之前对数据进行尺寸减小(PCA,ICA,特征选择),可以让决策树找到更有辨识力的特征。

训练时使用export函数来可视化树。初始时可以将设置max_deep=3,观察树和数据的匹配程度,再增加树深度。

当树增加层数时,记住样本的数量足够填入树两次(原文:Remember that the number of samples required to populate the tree doubles for each additional level the tree grows to)。使用max_deep来控制树的大小以防出现过拟合。

使用min_samples_split或者min_samples_leaf来保证树中每个决定都是多个样本来实现,控制哪些来间隔。非常小的数量意味树是过拟合的,而很大的数量则意味着树没有学习到数据。试着设置min_samples_leaf=5作为初始化。如果取样尺寸变化很大,可以按百分之浮点数来调整这两个参数。min_samples_split可能会创建异常小的叶子,min_samples_leaf可以保证每个叶子有最小的尺寸,避免了低方差(low-variance),过拟合(over-fit)叶子节点,在回归问题下。针对少种类的分类问题,min_samples_leaf=1通常是最好的选择。

在训练之前平衡你的数据集,防止树偏向于占多数的类。平衡类(class balancing)可以通过对不同类取样相同的样本来实现,或者对不同类的数据进行权重归一化(sample_weight)。注意基于权重的修剪条件下,比如min_weight_fraction_leaf,对于占多数类的偏向,要小于没有进行权重修剪的条件,如min_samples_leaf

如果样本设置了权重,比如min_weight_fraction_leaf对样本进行了预修剪,会更易于优化树的结构,保证了叶子节点包含了所有取样权重的一部分。

所有决策树内部使用np.float32的数据格式,如果训练数据不是这种格式,会对数据集进行复制。

如果输入矩阵X是非常稀疏的,建议在fit前执行csc_matrix,在predict前执行csr_matrix,
当大多数样本的特征含有0时,相比使用稠密矩阵,使用稀疏矩阵输入会使训练时间得到量级的变快。

scikit-learn官网

2.6 scikit-learn

1 分类问题 DecisionTreeClassifier

from sklearn.datasets import load_iris
from sklearn import tree
iris = load_iris()
clf = tree.DecisionTreeClassifier()
clf = clf.fit(iris.data, iris.target)

2 回归问题 DecisionTreeRegressor

from sklearn import tree
X = [[0, 0], [2, 2]]
y = [0.5, 2.5]
clf = tree.DecisionTreeRegressor()
clf = clf.fit(X, y)
clf.predict([[1, 1]])

3 可视化 graphviz

a 首先要安装graphviz,windows下载之后要添加到系统变量里

b 在python中安装graphviz ‘pip install graphviz’

import graphviz
dot_data = tree.export_graphviz(clf, out_file=None)
graph = graphviz.Source(dot_data)
graph.render("iris")

3 SVM

理解SVM的三重境界

4 概率图模型

HMM,隐马尔科夫模型
CRF,条件随机场

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值