您现在的位置:鸢尾 > 鸢尾功效 > > 机器学习K近邻KNN

机器学习K近邻KNN

2024/5/30 来源:不详

市场营销求职招聘交流QQ群 http://www.dashoubi.org.cn/e/wap/show.php?classid=3&id=268429

K近邻KNN(k-nearestneighbor)是一种简单易懂的机器学习算法,其原理是找出挨着自己最近的K个邻居,并且根据邻居的类别来确定自己的类别情况。比如K为5个,即找出挨着自己最近的5个邻居,5个邻居中有4个是‘富人’,那么自己也会被标签为‘富人’。此处涉及几个点,一是距离如何计算,二是K值如何选择,三是如何归类。接下来案例部分将具体进行说明。

除此之外,K近邻KNN模型与Kmeans有些类似,二者目的都是分类,但Kmeans是事先不知道数据如何分类,KNN事先已经知道如何分类,二者有时候可以匹配着使用,比如先使用kmeans得到聚类类别,然后使用KNN模型分析聚类效果情况等。

1背景

K近邻模型依旧经典的‘鸢尾花分类数据集’进行案例演示,其数据集为个样本,包括4个特征属性(4个自变量X),标签为鸢尾花卉类别,其分为个类别分别是刚毛鸢尾花、变色鸢尾花和弗吉尼亚鸢尾花(下称A、B、C三类)。

2理论

K近邻KNN模型的原理上示意如下图:

比如红色点,挨着其最近的5个点(K=5时)如上图,如果该5个点中多数均为A类,那么红色点就归为A类。需要注意的是,通常情况下K值为奇数,因为如果为偶数比如为6,那么个为A类个为B类,此时不好划分点的类别。

上述中关于挨的最近的距离,如何进行衡量呢?距离的计算方式非常多,比如欧式距离、曼哈顿距离等,通常情况下使用欧式距离,其计算公式如下:

比如有两行数据分别列(即个X,个特征项),两行数据分别是(1,2,)和(,4,5),那么欧式距离d=.。

另外关于K值的选择上,通常建议K介于~20之间,且一般为奇数值,SPSSAU默认为5,如果说K值太大,容易出现‘过拟合’现象即结果看着很好但事实上不好;如果K值过小,容易出现拟合现象很糟糕(欠拟合)现象。实际使用时,可考虑分别设置不同的K值,然后对模型的优劣进行汇总和对比。

关于归类问题,上述比如K=5,挨的最近5个点中有个(超过一半)为A类,那么该点就分为A类,此种分类方式为‘等比投票权’,即5个点的权重完全一致。但我们知道,挨的最近的5个点,其实都能计算出距离值,是否可根据距离值大小来加权判断呢?比如使用距离值的倒数,即1/距离值作为权重,如果距离值越大,权重就越小,并且综合计算来评估类别划分,此种方式叫‘距离反比投票权法’。关于类别划分参数,其叫‘样本投票权重’。

关于K近邻KNN模型时,通常涉及到以下参数值,如下:

邻近样本个数K值,一般为奇数,并且常介于~20之间,可设置不同的K值来对比不同模型的优劣。样本投票权重,默认是‘等比投票权’,可选为‘距离反比投票权’,建议K值较小时可考虑使用‘距离反比投票权’法。距离计算方法上,默认是欧式距离,可选曼哈顿距离,通常使用欧式距离即可。邻近搜索方法上,一种是全局搜索,比如个样本,某个点分别先计算出该点离另外个样本的距离,然后找出其中最小的K个,此种方式简单易懂,但是计算费资源,因而延伸出KD树和ball树两种优化算法。默认情况下系统会自动结合数据情况选择邻近搜索方法,研究者也可自行选择。

操作

本例子操作如下:

训练集比例默认选择为:0.8即80%(*0.8=个样本)进行训练K近邻KNN模型,余下20%即0个样本(测试数据)用于模型的验证。需要注意的是,多数情况下,会首先对数据进行标准化处理,处理方式一般使用为正态标准化,此处理目的是让数据保持一致性量纲。当然也可使用其它的量纲方式,比如区间化,归一化等。

接着对参数设置如下:

邻近样本个数K值默认为5,样本投票权重方式为‘等比投票权’,邻近搜索方法自动让系统选择,距离计算方式为‘欧氏距离’法。

4SPSSAU输出结果

SPSSAU共输出5项结果,依次为基本信息汇总,训练集或测试集模型评估结果,测试集结果混淆矩阵,模型汇总表和模型代码,如下说明:

上述表格中,基本信息汇总表格展示因变量Y的分类数据分布情况,接着展示训练集和测试集效果情况,并且单独提供测试集数据混淆判断矩阵,进一步分析测试数据的正确效果等,模型汇总表格展示整体模型参数情况,并且提供sklean进行KNN模型构建的核心代码。

5文字分析

上表格中分别针对训练集和测试集,提供四个评估指标,分别是精确率、召回率、f1-scrore、准确率,以及平均指标和样本量指标等,如下表格说明:

一般来说,f1-score指标值最适合,因为其综合精确率和召回率两个指标,并且可查看其平均值(综合)指标,本案例为0.97,并且测试数据的表现上为0.94,意味着评估效果好,当前的KNN模型(基于K值为5时)表现良好。当然也可以更新K值个数,比如设置为7,重新运行结果并且对比选择最优模型。事实上当前设置K=7时,训练集的f1-scroe由0.97上升到0.98有点提升,但这并不重要,因为当K值更大时,理论上模型就会变的更好,反倒训练集时太好了反倒有‘过拟合’现象,因而应该更多

转载请注明:
http://www.3g-city.net/gjyzz/7168.html
  • 上一篇文章:

  • 下一篇文章:
  • 网站首页 版权信息 发布优势 合作伙伴 隐私保护 服务条款 网站地图 网站简介

    温馨提示:本站信息不能作为诊断和医疗依据
    版权所有2014-2024 冀ICP备19027023号-6
    今天是: