最后一周的知识点还是主要关注于ML和DL的内容
Decision Tree
决策树
决策树是一个预测模型;他代表的是对象属性与对象值之间的一种映射关系。 决策树是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶子节点代表一种分类结果 一种基于if-then-else规则的有监督学习算法,决策树的这些规则通过训练得到。
结构
- 根节点:包含样本全集
- 内部节点:对应特征属性测试
- 叶子节点:代表决策结果, 每一个叶子结点厚实对应一个分类的结果

Feature Selection
特征的选择是要筛选出来分类结果相关性比较高的特征,就是分类能力比较强的,常用的准则是:信息增意
Entropy 熵 表示随机变量的混乱程度,一种不确定性
信息增益(lnformation Gain) 决策树的生成就是使得数据集的下降的过程,那么选择可以使熵下降的速度最快的属性。 信息增益是表示得知特征X的信息使得类Y的信息的不确定性减少的程度。 Gain(D,A)=H(D)−H(D|A)
决策树生成
选择好特征后,就从根节点出发,对节点计算所有特征的信息增益,选择信息增益最大的特征作为节点特征,根据该特征的不同取值建立子节点;对每个子节点使用相同的方式生成新的子节点,直到信息增益很小或者没有特征可以择为止
决策树剪枝
剪枝的目的主要是防止过拟合,主动去掉部分分支降低过拟合风险
- pre-pruning 预剪枝 在构造决策树的过程中,先对每个结点在划分前进行估计,如果当前结点的划分不能带来决策树模型泛化性能的提升,则不对当前结点进行划分并且将当前结点标记为叶结点。 边构造边剪枝
- post-pruning 后剪枝 先把整颗决策树构造完毕,然后自底向上的对非叶结点进行考察,若将该结点对应的子树换为叶结点能够带来泛化性能的提升,则把该子树替换为叶结点。 构造完成后再剪枝
何时停止分裂
- 最小节点数
当节点的数据量小于一个指定的数量时,不继续分裂。两个原因: 一是数据量较少时,再做分裂容易强虽化噪声数据的作用。二是:降低树生长的复杂性。提前结束分裂一定程度上有利于降低过拟合的影响。
- 熵或者基尼值小于阀值
熵和基尼值的大小表示数据的复程度, 当熵或者基尼值过小时,表示数据的纯度比较大,如果熵或者基尼值小于一定程度数,节点停止分裂。
- 决策树的深度达到指定的条件
节点的深度可以理解为节点与决策树跟节点的距离,如根节点的子节点的深度为1,因为这些节点与跟节点的距离为1,子节点的深度要比父节点的深度大1。决策树的深度是所有叶子节点的最大深度,当深度到达指定的上限大小时,停止分裂。
- 所有特征已经使用完毕,不能继续进行分裂
被动式停止分裂的条件,当已经没有可分的属性时,直接将当前节点设置为叶子节点。
Decision tree pros&cons
Pros:
- 简单的理解和解释,树木可以可视化;
- 需要很少的数据准备,其他技术通常需要归一化。
Cons:
- 决策树最大的缺点是采用的贪心算法,总是做出对当前看来最优的选择,而不是从全局出发考虑。
- 如果目标变量是连续性变量,就不适用。
- 决策树缺乏丰富的检测指标和评价体系。
Ensemble Learning 集成学习
对于训练数据集,我们通过训练一系列个体学习器,并通过一定的结合策略将它们组合起来,形成一个强有力的学习器以达到博果众长的目的。

集成学习的优势
降低过拟合风险:通过结合多个模型的预测结果,可以减少单个模型的过拟合风险,提高整体模型的泛化能力。 提高预测准确性:当使用不同的弱分类器进行集成学习时!可以弥补各个模型的缺陷,从而得到更准确的整倾测结果。 增强鲁棒性:集成学习可以减小数据集的随机波动对模型性能的影响,使模型更加急健。 可并行化处理:集成学习中的各个弱分类器可以并行训练和预测,提高了整体模型的计算效率。
Clustering 聚类
- Classification 分类根据文本的特征或属性,划分到已有的别中。也就是说,这些类别是已知的,通过对已知分类的数据进行训练和学习,找到这些不同类的特征,再对未分类的数据进行分类。 监督学习
- Clustering 聚类 压根不知道数据会分为几类,通过聚类分析将数据或者说用户聚合成几个群体,那就是聚类了。聚类不需要对数据进行训练和学习。无监督学习
一个是对数据已知(已经打上标签了)另一个是为止,没有打上标签
划分聚类(Partitioning Clustering)
划分聚类算法会给出一系列属平结构的簇(分开的几个类)它们之间没有任何显式的结构来表明彼此的关联性。比如K-Means/K-Medoids、GaussianMixtureModel(高斯混合模型)、Spectral Clustering(谱聚类)、Centroid-basedClustering等。
层次聚类(Hierarchical Clustering)
层次聚类会输出一个具有层次结构的簇集合,因此能够比划分聚类输出的无结构簇集合提供更丰富的信息。层次聚类可以认为是是嵌套的划分聚类。常见算法有Single-linkage、Complete-linkage、Average-linkage等。
聚类算法
聚类算法的目的是我们追求“簇内差异小,簇外差异大 这个”差异”,由样本点到其所在簇的质心的距离来衡量。时间复杂度:O (tknm),其中,t为迭代次数,k为簇的数目n为样本点数,m为样本点维度。

K-means 先将数据分为K组,随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,将每一个对象分配给距离它最近的聚类中心,聚类中心以及分配给它们的对象就代表一个聚类。即K-Means算法将输入表的某些列作为特征,根据用户指定的相似度计算方式,将原始数据聚成若干类。
Pros:
- 属于无监督学习,无须准备训练集
- 原理简单,实现起来较为容易
- 结果可解释性较好
Cons:
- 聚类数目k是一个输入参数。选择不恰当的k值可能会导致糟糕的聚类结果。这也是为什么要进行特征检查来决定数据集的聚类数目了。
- 可能收敛到局部最小值,在大规模数据集上收敛较慢
- 对于异常点、离群点敏感
K-means++ 假设已经选取了n个初始的聚类中心,在选取第N+1个聚类中心的时候,与当前已知聚类中心较远的点会有更大的概率成为下一个聚类中心。
好的聚类算法,并评估,一般要求类簇具有
- 簇内(intra-cluster)相似度高
- 簇间 (inter-cluster)相似度底
Hierarchal clustering
层次聚类算法

将数据集划分为一层一层的clusters,有点类似决策树,后面一层生成的clusters基于前面一层的结果。层次聚类算法一般分为两类:
Divisive 分裂式层次聚类 又称自顶向下(top-down)的层次聚类,最开始所有的对象均属于一个cluster,每次按一定的准则将某个cluster 划分为多个cluster,如此往复,直至每个对象均是一个cluster。
Divisive 分裂式层次聚类 – top-down

Agglomerative 聚合式层次聚类 又称自底向上 (bottom-up)的层次聚类,每一个对象最开始都是一个cluster,每次按一定的准则将最相近的两个cluster合并生成一个新的cluster,如此往复,直至最终所有的对象都属于一个cluster。
Agglomerative 聚合式层次聚类 -bottom up

Pros:
- 易于实施
- 不需要需要预先决定簇的数量。
Cons:
- 不适合大数据集
- 对异常值敏感
- 初始种子对最终结果有很大影响
- 链接标准和距离度量大多数时候是任意选择的。
树状图能够很直观的看到层次聚类的一种方式

发表回复
要发表评论,您必须先登录。