分类算法2_使用
几种常用分类算法
监督模型
-
逻辑回归
回归任务是结果为连续型变量的任务,logistics regression是用来做分类任务的,为什么叫回归呢?首先看一下用来做回归任务的线性回归
-
线性回归
其方程
,
被称为模型参数,
称为截距,
~
为系数。和之前接触到的
是同样的性质。可以用矩阵表示:
核心是找出模型的参数
,得到预测函数
来映射输入的样本特征矩阵
和预测值之间的线性关系。
-
方程
可以输出一组连续的预测值,完成预测连续形变量的任务,但对于离散型变量的预测如何预测呢?
通过引入联系函数,将
变换为
,并且令
的值分布在(0,1)之间,且当
接近0时样本类别为类别0,当
接近1时的样本类别为类别1,这样就的到一个分类模型。
-
-
逻辑回归的联系函数是Sigmoid函数:
将线性回归模型的输出作为逻辑回归联系函数的输入可得逻辑回归模型的方程:
下图为y=g(z)的几何图像:image
由上图可知,对于
情况,规定为一个分类;
情况,规定为另一个分类。逻辑回归分类模型的分类边界为
, 即
,如图表示在两个特征情况下的边界:

基本的思路是如上所述,那么如何找到更好的参数
-
损失函数,该函数表示预测的输出
与训练数据类别
之间的偏差:
综合考虑所有训练数据的“损失”,将求和或者求平均,表示所有训练数据预测值与实际类别的偏差。记为
:
表示第
个样本的真实类别,
为预测的输出,
为样本总数。
-
函数的值越小表示预测函数越准确,随意求解使得损失函数
取得最小值的参数
,可以得到最优的结果,得到最佳的决策边界。
-
KNN
K-Nearest Neighbors
就是在训练集中数据和标签已知的情况下,输入测试数据,将测试数据的特征与训练集中对应的特征进行相互比较,找到训练集中与之最为相似的前K个数据,则该测试数据对应的类别就是K个数据中出现次数最多的那个分类,其算法的描述为:
1)计算测试数据与各个训练数据之间的距离;
欧式距离
,曼哈顿距离
2)按照距离的递增关系进行排序;
3)选取距离最小的K个点;
4)确定前K个点所在类别的出现频率;
5)返回前K个点中出现频率最高的类别作为测试数据的预测分类。
-
SVM
无监督模型
- K-means

上图以K为2,样本集为M来描述K-means算法,算法执行步骤如下:
-
选取K个点做为初始聚集的簇心(随机,也可选非样本点)。
-
分别计算每个样本点到 K个簇核心的距离(这里的距离一般取欧氏距离或余弦距离),找到离该点最近的簇核心,将它归属到对应的簇。
-
所有点都归属到簇之后, M个点就分为了 K个簇。之后重新计算每个簇的重心(平均距离中心),将其定为新的“簇核心”。
-
反复迭代 2 - 3 步骤,直到达到某个中止条件。
注:常用的中止条件有迭代次数、最小平方误差MSE、簇中心点变化率
-
不同模型在相同数据集下的对比
- 数据集设置:100条数据,类别为两类,数据特征(维度)为两个。数据分布如图:

- 使用逻辑回归算法得到决策线,并对测试样本进行预测,得到预测结果:

- 使用svm画出决策边界,并进行相同的预测:

- 不知道类别情况下,假设样本类别为2,3,4类情况下对同样的数据集利用K-means算法进行聚类,得到结果:

程序