机器学习分类的本质
机器学习分类的本质
引入
机器学习中,基本的任务可以分为三类:分类、回归和聚类。
分类和回归的区别在于,分类的输出是离散的,而回归的输出是连续的。聚类的任务是将数据集中的样本分成若干个类别,每个类别称为一个簇,簇内的样本相似度较高,而簇间的样本相似度较低。其中,分类和回归的任务是有监督学习,而聚类的任务是无监督学习。
分类问题
本次主要介绍分类问题,它属于监督学习的范畴。
分类的本质是学习一个分类函数,将输入空间映射到输出空间,即:,其中,是输入空间,是输出空间。
一般来说,输入空间是由特征向量构成的,即:,输出空间是离散的,即:,其中,是类别标签。
特征向量是由特征构成的,就是对样本的描述,是样本的某个属性。
这里面就可以构建给出两个特征向量:
(5.1,3.5,1.4,0.2)、(4.9,3,1.4,0.2)
特征的选择对分类的性能有很大的影响,特征的选择应该具有以下几个特点:
特征应该能够很好地区分不同类别的样本。
特征应该具有可解释性,即:特征应该能够很好地解释样本的类别。
特征应该具有鲁棒性。(泛化能力)
特征应该具有可扩展性,能够很好地扩展到新的样本。
特征应该具有可计算性。
特征应该具有低维性。
输出空间是离散的,即:,其中,是类别标签。
在我接触的的深度学习分类中,一般将输出空间定义为独热编码(One-Hot Encoding)的形式,即:,其中,表示类别,表示类别,以此类推。
独热编码是一种常用的编码方式,它将离散的类别标签转换为离散的向量,其中,向量的维度等于类别的个数,向量的值等于类别的索引。独热编码的好处是,它能够很好地表示类别之间的关系,而且它的值是离散的,不会产生类别之间的大小关系。
通常机器学习中输出的结果一般不是只有0和1,而是在0~1之间的小数,这个小数表示样本属于某个类别的概率,即:,其中,是类别标签,是特征向量。
分类的方法
分类的方法主要分为两类:生成方法和判别方法。
生成方法
生成方法是通过学习联合概率分布来进行分类的,即:,其中,是后验概率,是先验概率,是联合概率分布。
朴素贝叶斯
朴素贝叶斯是一种生成方法,它假设特征之间相互独立,即:,其中,是特征向量的第个特征。
例子:假设有一个数据集,其中,每个样本有两个特征,分别是和,它们的取值都是离散的,分别是和,类别标签是,那么,朴素贝叶斯的联合概率分布可以表示为:,其中,和可以通过统计样本的频率来计算,可以通过统计样本的频率来计算。
朴素贝叶斯的优点是:它的学习和预测的效率都很高,而且它的结果具有很好的解释性。
朴素贝叶斯的缺点是:它的假设过于简单,导致它的泛化能力不够强。
高斯贝叶斯
高斯贝叶斯是一种生成方法,它假设特征的条件概率服从高斯分布,即:,其中,是均值,是方差。然后,利用贝叶斯公式,计算后验概率,从而进行分类。
例子:假设有一个数据集,其中,每个样本有两个特征,分别是和,它们的取值都是连续的,那么,高斯判别分析的条件概率可以表示为:,其中,和可以通过统计样本的均值和方差来计算。
高斯判别分析的优点是:它的假设比较合理,而且它的泛化能力比较强。
高斯判别分析的缺点是:它的计算量比较大,而且它的结果具有一定的误差。
伯努利贝叶斯
伯努利贝叶斯是一种生成方法,它假设特征的条件概率服从伯努利分布,即:,其中,是概率。然后,利用贝叶斯公式,计算后验概率,从而进行分类。
!大同小异!!
朴素贝叶斯、高斯贝叶斯和伯努利贝叶斯都是生成方法,它们的区别在于它们对条件概率的分布的假设不同,朴素贝叶斯假设条件概率服从多项式分布,高斯贝叶斯假设条件概率服从高斯分布,伯努利贝叶斯假设条件概率服从伯努利分布。
判别方法
判别方法是通过学习决策函数或者条件概率分布来进行分类的,即:或者。
K近邻
K近邻是一种判别方法,它的思想是:如果一个样本的近邻中大多数样本属于某个类别,那么该样本也属于该类别。K近邻的K是一个超参数,它决定了近邻的个数。K近邻的算法如下:
- 计算测试样本与训练样本的距离:
d = sqrt((x1-x2)^2 + (y1-y2)^2)
(欧几里得距离,也可能使用其他距离:曼哈顿距离、切比雪夫距离等)
曼哈顿距离: d = |x1-x2| + |y1-y2|
,切比雪夫距离: d = max(|x1-x2|, |y1-y2|)
选取距离最近的K个训练样本:
d1, d2, ..., dk
统计K个训练样本中各个类别的数量:
c1, c2, ..., ck
选取数量最多的类别作为测试样本的类别
决策树
决策树是一种判别方法,它的思想是:通过一系列的问题,将样本分到不同的类别中。决策树的算法如下:
选择一个特征,将样本分成不同的类别 : ,则为左子树,否则为右子树
对每个类别,重复步骤1,直到所有的样本都被正确地分类 : ,则为左子树,否则为右子树
反复寻找,简化决策树
例子:假设有一个数据集,其中,每个样本有两个特征,分别是和,它们的取值都是连续的,那么,决策树可以表示为:,则为左子树,否则为右子树,其中,可以通过决策树的算法计算得到。同理,对于左子树,可以继续选择一个特征,将样本分成不同的类别,直到所有的样本都被正确地分类。
随机森林
随机森林是一种集成方法,它的思想是:通过多棵决策树,将样本分到不同的类别中。随机森林的算法如下:
从样本集中随机选择k个样本,作为训练样本
从特征集中随机选择m个特征,作为训练特征
通过决策树的算法,训练一棵决策树
重复1-3步骤,训练多棵决策树
对于新的样本,通过多棵决策树进行分类,选择票数最多的类别作为测试样本的类别
支持向量机
支持向量机是一种判别方法,它的思想是:找到一个超平面,使得它能够将不同类别的样本分开,而且它离两个类别的样本都有一定的距离。支持向量机的算法如下:
选择一个核函数,将样本映射到高维空间: 核函数:线性函数、多项式函数、高斯核函数等
在高维空间中找到一个超平面,使得它能够将不同类别的样本分开,而且它离两个类别的样本都有一定的距离:
将超平面映射回原始空间:
利用超平面对新的样本进行分类: ,则为正类,否则为负类
例子:假设有一个数据集,其中,每个样本有两个特征,分别是和,它们的取值都是连续的,那么,支持向量机的超平面可以表示为:,其中,和可以通过支持向量机的算法计算得到,可以通过统计样本的均值和方差来计算。大于0的样本属于正类,小于0的样本属于负类。
神经网络
神经网络是一种判别方法,它的思想是:通过多层的神经元,将样本分到不同的类别中。神经网络的算法如下:
初始化神经网络的权重和偏置:
w
和b
通过前向传播计算每个神经元的输出:
z = w * x + b
和a = sigmoid(z)
,其中x
是输入,a
是输出通过反向传播计算每个神经元的梯度:
dw
和db
通过梯度下降更新神经网络的权重和偏置:
w = w - lr * dw
和b = b - lr * db
重复2-4步骤,直到收敛:
loss = -y * log(a) - (1 - y) * log(1 - a)
(二元交叉熵的损失函数,BCCE)
例子:假设有一个数据集,其中,每个样本有两个特征,分别是和,它们的取值都是连续的,那么,神经网络的输出可以表示为:,其中,和可以通过神经网络的算法计算得到,可以通过统计样本的均值和方差来计算。大于0.5的样本属于正类,小于0.5的样本属于负类。
判别方法的共同点
判别方法的共同点是:它们都是通过一些参数,将样本分到不同的类别中。例如:k近邻通过选择k个最近的样本,将样本分到不同的类别中;决策树通过选择特征,将样本分到不同的类别中;随机森林通过选择特征和样本,将样本分到不同的类别中;支持向量机通过选择超平面,将样本分到不同的类别中;神经网络通过选择权重和偏置,将样本分到不同的类别中。