lizhengxing 2021-09-07 09:25
k-NN简介
k-NN 是一种监督学习算法,全称 K-Nearest Neighbor,中文称之为 K近邻算法。
k-NN 是一种分类算法。(例如:我们可以用k-NN来预测某人是否有患糖尿病的风险。)
注:k-NN 不是只能用于分类,它也可以用来回归,这一点我将放到后面讲。
k-NN思想
下面我将通过一个小例子,带大家直观了解一下 k-NN 算法是如何工作的:
如图所示,我们想预测蓝色圆点属于哪个类别(即:是红方块?还是绿三角?)
注意:在这个例子中,其实有个前提,即图中的红方块和绿三角不是毫无规律胡乱分布的,它们的分布是有一定内在联系的,只不过我们不知道是一种怎样的联系,所以我们能期望通过 k-NN 这种机器学习算法帮我们找到这种内在的联系。
分析:
首先,预测蓝色圆点所属的类别(是红方块还是绿三角),是典型的分类问题,所以可以选用 k-NN 算法来帮助我们完成这个任务。
然后,k-NN 是一个监督学习算法,我们需要收集训练数据供 k-NN 算法学习,期望它能自动学习到数据中存在的某种内在的联系(或知识)。在这个任务中,我们的训练数据就是图中那些已知的、分布在不同位置上的红方块和绿三角。
最后,当我们拿到一个蓝色圆点,我们知道它所处位置,但不知道它所属的类别。k-NN 要做的是,利用它从训练数据中学习到的某种内在联系(或知识)来推断这个蓝色圆点所属的类别。
k:
k-NN 的 k,就是k个最近的邻居的意思。k-NN 的思想很朴素,当 k-NN 要对一个未知元素类别进行推断时,它会找从训练数据中找出距离这个未知元素最近的 k 个邻居,而这个未知元素所属的类别,将由这 k 个邻居投票决定(少数服从多数)。
如果 k=1(如下图),此时找到蓝圆点的 1 个最近的邻居是绿三角,所以 k-NN 的推断结果是绿三角。
如果 k=3(如下图),此时蓝圆点最近的3个邻居是2个绿三角和1个红方块,所以 k-NN 的推断结果还是绿三角。
如果 k=5(如下图),此时蓝圆点最近的5个邻居是2个绿三角和3个红方块,所以 k-NN 的推断结果是红方块。
如果 k=7(如下图),此时蓝圆点最近的7个邻居是4个绿三角和3个红方块,所以 k-NN 的推断结果又是绿三角。
以上就是 k-NN 算法的工作原理,有没有很简单