距离的惩罚
(1)为何引入: KNN的算法原理中, 之前我们讲解的规则是"一点一票"。
也就是说,对于原始分类模型而言,在选取最近的k个样本点之后,将参考这些点的所属类别,并对其进行简单计数。显然“一点一票”的原则,会使得在计数的过程中这些点对分类目标点的分类影响效力相同。
(2)如何思考: 但我们知道, 实际上每个近邻点距离我们的测试点距离是不同的, 是有远近之分的,那么我们能不能考虑对于越近的点, 就在投票中给予更高的权重, 越远的点, 相对就降低它的权重呢?
(3)延伸思路: 根据这种思路, 我们也可以对KNN算法进行一些变化, 在投票中添加一个距离惩罚因子, 让入选的k个点在最终判别目标点属于某类别过程发挥的作用不相同,即让相对较远的点判别效力更弱,而相对较近的点判别效力更强。这一点也可以减少KNN算法对k取值的敏感度。
以距离作为惩罚因子的优化
引入相关参数:惩罚因子weights,记为w
关于惩罚因子的选取有很多种方法,最常用的就是根据每个最近邻的距离不同对其作加权,加权方法是设置权重 ,该权重计算公式为:
其中:表示测试样本点,表示入选k个近邻点的其中一个。
分母表示入选的某个点到测试点的距离。表示入选的某个点到测试点的距离权重。
注意:
(1) 关于模型的优化方法只是在理论上而言进行优化会提升模型判别效力,但实际应用过程中最终能否发挥作用,本质上还是取决于优化方法和实际数据情况的契合程度。
(2) 如果数据本身存在大量异常值点,则采用距离远近作为惩罚因子则会有较好的效果,反之则不然。
(3) 因此,在实际我们进行模型优化的过程中,是否起到优化效果还是要以最终模型运行结果为准。
请根据学习内容回答以下问题:
我们根据什么来判断是否应该添加距离惩罚因子呢?