本文是记录(DataWhale组队学习)集成学习上Task5学习过程中遇到的一些比较重要的概念。个人感觉每个概念都非常重要且涉及内容很多,全部放在一篇文章中既会让文章晦涩难懂,也不便于理解。所以在这篇博文中只是阐述他们的基本概念,后续会抽时间对每个概念分篇逐一详述。
分类中度量模型好坏的指标
TP(True positive):将正类预测为正类数;
TN(True negative):将负类预测为负类数;
FP(False positive):将负类预测为正类数;
FN(False negative):将正类预测为负类数。
混淆矩阵(二分类)
准确率:分类正确的样本数占总样本的比例。
精度:预测为正且分类正确的样本占预测值为正的比例。
召回率:预测为正且分类正确的样本占类别为正的比例。
F1值:是P和R的调和平均,当F1较高时,模型的性能越好。
ROC曲线:横坐标为假正率(FPR),纵坐标为真正率(TPR),曲线下方面积越大越好。
真正率(True Positive Rate , TPR),又称灵敏度。
假正率(False Positive Rate , FPR) :
涵盖二分类、多分类、多标签分类场景下度量指标的介绍:[Machine Learning]分类问题的性能度量方法——二分类、多分类、多标签分类。
结合代码对各种评价指标进行介绍:Python机器学习笔记:常用评估模型指标的用法。
相对而言,图表解释比较丰富:【机器学习】一文读懂分类算法常用评价指标
线性判别分析
基本思想:给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近、异类样例的投影点中心尽可能远离。更简单的概括为一句话,就是“投影后类内方差最小,类间方差最大”。
DataWhale中相应部分出自LDA线性判别分析。
一篇详细解释线性判别分析原理的文章线性判别分析LDA原理总结。一篇和它类似的原理总结Dimensionality Reduction——LDA线性判别分析原理篇,这个作者也写了相应的实践篇Dimensionality Reduction——LDA线性判别分析实现篇。
朴素贝叶斯
思想基础:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。
主要分为三个阶段:
第一阶段——准备工作阶段,这个阶段的任务是为朴素贝叶斯分类做必要的准备,主要工作是根据具体情况确定特征属性,并对每个特征属性进行适当划分,然后由人工对一部分待分类项进行分类,形成训练样本集合。这一阶段的输入是所有待分类数据,输出是特征属性和训练样本。这一阶段是整个朴素贝叶斯分类中唯一需要人工完成的阶段,其质量对整个过程将有重要影响,分类器的质量很大程度上由特征属性、特征属性划分及训练样本质量决定。
第二阶段——分类器训练阶段,这个阶段的任务就是生成分类器,主要工作是计算每个类别在训练样本中的出现频率及每个特征属性划分对每个类别的条件概率估计,并将结果记录。其输入是特征属性和训练样本,输出是分类器。这一阶段是机械性阶段,根据前面讨论的公式可以由程序自动计算完成。
第三阶段——应用阶段。这个阶段的任务是使用分类器对待分类项进行分类,其输入是分类器和待分类项,输出是待分类项与类别的映射关系。这一阶段也是机械性阶段,由程序完成。
优点:
(1) 算法逻辑简单,易于实现
(2)分类过程中时空开销小
缺点:
理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。
在scikit-learn中,根据数据的先验分布,提供了以下多种朴素贝叶斯的方法(出自朴素贝叶斯:基于概率论的分类模型)
- GaussianNB, 基于高斯分布的朴素贝叶斯
- MultinomialNB, 基于多项式分布的朴素贝叶斯
- BernoulliNB,基于二项分布的朴素贝叶斯
- CategoricalNB, 基于离散型的朴素贝叶斯
结合一个实际例子理解朴素贝叶斯:带你理解朴素贝叶斯分类算法。
非常详细的两篇原理解析文章:算法杂货铺——分类算法之朴素贝叶斯分类(Naive Bayesian classification),朴素贝叶斯算法原理小结。
降维
把数据从原本的p维转变为一系列k维的子集(k<<n)。
常用降维方法(出自12种降维方法终极指南(含Python代码)):
缺失值比率:如果数据集的缺失值太多,我们可以用这种方法减少变量数。
低方差滤波:这个方法可以从数据集中识别和删除常量变量,方差小的变量对目标变量影响不大,所以可以放心删去。
高相关滤波:具有高相关性的一对变量会增加数据集中的多重共线性,所以用这种方法删去其中一个是有必要的。
随机森林:这是最常用的降维方法之一,它会明确算出数据集中每个特征的重要性。
前向特征选择和反向特征消除:这两种方法耗时较久,计算成本也都很高,所以只适用于输入变量较少的数据集。
因子分析:这种方法适合数据集中存在高度相关的变量集的情况。
PCA:这是处理线性数据最广泛使用的技术之一。
ICA:我们可以用ICA将数据转换为独立的分量,使用更少的分量来描述数据。
ISOMAP:适合非线性数据处理。
t-SNE:也适合非线性数据处理,相较上一种方法,这种方法的可视化更直接。
UMAP:适用于高维数据,与t-SNE相比,这种方法速度更快。
以下出自四大机器学习降维算法:PCA、LDA、LLE、Laplacian Eigenmaps。
线性
Principal Component Analysis(PCA)是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中表示,并期望在所投影的维度上数据的方差最大,以此使用较少的数据维度,同时保留住较多的原数据点的特性。
Linear Discriminant Analysis (也有叫做Fisher Linear Discriminant)是一种有监督的(supervised)线性降维算法。与PCA保持数据信息不同,LDA是为了使得降维后的数据点尽可能地容易被区分!
假设原始数据表示为X,(m*n矩阵,m是维度,n是sample的数量)
既然是线性的,那么就是希望找到映射向量a, 使得 a‘X后的数据点能够保持以下两种性质:
1、同类的数据点尽可能的接近(within class)
2、不同类的数据点尽可能的分开(between class)
非线性
局部线性嵌入(LLE)算法的主要步骤分为三步:(1)寻找每个样本点的k个近邻点;(2)由每个样本点的近邻点计算出该样本点的局部重建权值矩阵;(3)由该样本点的局部重建权值矩阵和其近邻点计算出该样本点的输出值。
Laplacian Eigenmaps 拉普拉斯特征映射直观思想是希望相互间有关系的点(在图中相连的点)在降维后的空间中尽可能的靠近。
另一篇比较详细的介绍文章:机器学习算法系列之三】简述多种降维算法
有丰富的图可以辅助理解的文章:机器学习:降维技术完整指南。
决策树
运用于分类以及回归的一种树结构。决策树由节点和有向边组成,一般一棵决策树包含一个根节点、若干内部节点和若干叶节点。决策树的决策过程需要从决策树的根节点开始,待测数据与决策树中的特征节点进行比较,并按照比较结果选择选择下一比较分支,直到叶子节点作为最终的决策结果。
面向分类的决策树(分类树):每个决策树最末端的叶子结点出来的是一个分类标签,不是0就是1或者2等类别。分类树使用信息增益或增益比率来划分节点;每个节点样本的类别情况投票决定测试样本的类别。
面向回归的决策树(回归树):回归就是拟合函数一样,输出连续值回归。回归树使用最大均方差划分节点;每个节点样本的均值作为测试样本的回归预测值。
简单理解分类决策树和回归决策树的区别可以看分类树和回归树的区别和决策树与回归树区别到底在哪,这两篇文章都比较简短的介绍了两种决策树的区别。详细版的决策树,包括分类树和回归树的解释可以看决策树(分类树、回归树)。
支持向量机
将向量映射到一个更高维的空间里,在这个空间里建立有一个最大间隔超平面。在分开数据的超平面的两边建有两个互相平行的超平面,分隔超平面使两个平行超平面的距离最大化。
这篇文章支持向量机通俗导论(理解SVM的三层境界)仔细看完,对支持向量机、非线性支持向量机以及他们牵涉到的诸如和函数之类的概念都会有一个比较深刻的理解。
这篇文章学习SVM,这篇文章就够了!(附详细代码)结合代码辅助理解线性非线性支持向量机。
非线性支持向量机
训练数据线性不可分 -> 非线性支持向量机(核技巧):当训练数据线性不可分时,通过使用核技巧(kernel trick)和软间隔最大化,可以学习到一个非线性SVM。
从支持向量机到非线性支持向量机:day7-线性SVM&非线性SVM。
核函数
核函数的价值在于它虽然也是讲特征进行从低维到高维的转换。
线性核(Linear Kernel),多项式核(Polynomial Kernel),RBF 核(Radial Basis Function Kernel),Sigmoid 核(Sigmoid Kernel)。
多项式核和高斯核的代码演示:SVM-支持向量机(二)非线性SVM分类。
各种核函数数学表达式:非线性SVM与核函数。
这篇文章数据挖掘十大算法详解介绍了数据挖掘中的十大算法。
参考资料(文中没有列出的):
DataWhale——team-learning-data-mining/EnsembleLearning/CH2-机器学习基础模型回顾/第二章:机器学习基础.ipynb