加权优化法在机器学习中应用广泛,本文介绍一种以距离作为惩罚因子的加权优化思路。
以距离作为惩罚因子的优化
KNN模型用最近邻点距离的远近来修正未知的分类,“一点一票” 的规则是KNN模型优化的一个重要步骤。
对于原始分类模型而言,在选取最近的k个元素之后,将参考这些点的所属类别,并对其进行简单计数,计数过程中,这些点“一点一票”,每个点对分类目标点的分类影响效力相同。
但这是不公平的:就算是最近邻的k个点,每个点和分类目标点的距离仍然有远近之别,而近的点往往和目标分类点有更大的可能性属于同一类别(该假设也是KNN分类模型的基本假设)。
因此,我们可以选择合适的惩罚因子,让入选的k个点在最终判别目标点属于某类别过程发挥的作用不相同,即:让相对较远的点判别效力更弱,而相对较近的点判别效力更强。这一点也可以减少KNN算法对k取值的敏感度。
重要参数:weights
关于惩罚因子的选取有很多种方法,最常用的就是根据每个最近邻?i与目标点之间距离的不同对其作加权,加权方法为设置?i的权重,该权重计算公式为:
需要注意的是,关于模型的优化方法只是在理论上而言,进行优化会提升模型的判别效力,但实际应用过程中最终能否发挥作用,本质上还是取决于优化方法和实际数据情况的契合程度:如果数据本身存在大量异常值点,则采用距离远近作为惩罚因子则会有较好的效果,反之则不然。
因此,模型优化过程中,是否起到优化效果还是要以最终模型运行结果为准。
在sklearn中,可以通过参数weights来判别是否可以用距离作为惩罚因子。