本系列是《玩转机器学习教程》一个整理的视频笔记。本小节主要介绍K近邻算法。
K近邻算法
k近邻算法是机器学习中最简单的算法之一,他是入门机器学习中的第一个算法。K近邻算法:
横轴和纵轴分别代表两个特征,蓝色代表恶性肿瘤,红色代表良性肿瘤,有了这些初始信息。
现在来了一个新的数据点。也就是下面绿色的数据点,我们该怎么判断新来的数据点是良性肿瘤还是恶性肿瘤呢?
如果使用K近邻算法,我们需要给定一个K值,K值是一个超参数,由我们根据经验自己指定,此时我们给定k = 3。
之后要做在整个数据点中找到与绿色数据点(想要预测的数据点)最近的3个数据点(因为此时的k = 3),如下图所示:
之后对这些最近的点的label进行统计,选择最近的这些点中相同label最多的数据点,即认为是绿色数据点的label。就本例来说,与绿色的数据点最近的3个数据点的label标签都是恶性肿瘤,因此K近邻认为这个绿色的数据点为恶性肿瘤。
k近邻的本质就是认为,如果两个样本足够的相似,就有更高的概率属于同一个类别,当然此时只看与之相近的一个类别是不靠谱的,所以多看几个样本,也就是k个样本。此时看判断两个样本的相似性,就是看两个样本在特征空间中的距离来描述的。
下面在举一个例子:
与绿色数据点最近的3个数据点,有两个红色数据点和一个蓝色数据点,因此少数服从多数,红色点胜出,因此认为绿色这个新的数据点是红色label标签,也就是良性肿瘤。
从上面也可以看出,K近邻首先能够解决分类问题,当然了K近邻算法也是能够解决回归问题的。
数据准备以及可视化
导入需要包
创建数据
此时创建的是一个假的数据,后面会使用更加真实的数据。
数据的可视化,因为是两个特征,并且label标签为数据点的类别,所以我们使用散点图来可视化数据。
预测新的数据点
K近邻要做的就是假设有了一个新的数据x,我们需要通过k近邻算法知道新的数据点x属于哪一个类别。也就是说,他最有可能是良性肿瘤还是恶性肿瘤。
根据K近邻算法,从图中直观来看,蓝色数据点也就是新的数据点属于红色点也就是恶性肿瘤的概率大一些。接下来就使用K近邻算法来预测这个蓝色数据点类别。
K近邻过程
计算数据点之间相似度
首先需要计算新的数据点与其他数据点之间的相似性是多少,我们使用空间中数据点之间的距离来作为数据点之间的相似性。此时我们使用欧拉距离公式。
找出最近K个点
预测最终结果