机器学习实战-4-KNN算法总结
在前两篇文章机器学习实战-2-KNN和机器学习实战-3-基于KNN的约会网站配对实现中结合实际案例详细讲解了KNN算法的知识,主要包含:
- 算法的原理及概述
- 算法的主要步骤
- 图解KNN算法
- 如何建立KNN分类
- 电影分类和约会网站配对案例
还有其他的内容,比如KNN算法中使用的欧式距离涉及到的机器学习中的度量问题、jupyter notebook中如何使用KNN算法等。本文主要是对KNN算法做一个总结。
算法理论
KNN算法 | |
---|---|
功能 | 分类(核心),回归 |
算法类型 | 有监督学习-惰性学习 |
数据输入 | 特征矩阵至少包含k个训练样本,数据标签特征空间中的各个特征的量纲需要统一,如果不统一,需要做归一化处理自定义的的超参数k |
数据输出 | KNN分类:输出的是标签中的某个类别KNN回归:输出的是对象的属性值,该值是距离输入的数据最近的k个训练样本标签的均值 |
算法原理
- 计算已知类别数据集中的点与当前点之间的距离;
- 按照距离递增次序排序;
- 选取与当前点距离最小的
k
个点; - 确定前
k
个点所在类别的出现频率; - 返回前
k
个点所出现频率最高的类别作为当前点的预测分类。
KNN分类器
利用Python创建一个KNN分类器:
1 | import numpy as np |
根据电影分类问题写出的简洁版本:
1 | import pandas as pd |
算法优点
- 简单好用,容易理解,理论成熟。
- 算法既可以用来分类,也可以用来做回归
- 算法既可以用来处理数值型数据(电影类别判断案例),也可以处理离散型数据(海伦约会案例)
- 无数据输入假定,直接对数据进行训练
- 对异常值不敏感
算法缺点
- 计算复杂性高,空间复杂度高,从而导致计算量大
- 如果数值多不适合,计算量过大
- 可解释性差,不能给出数据的内在含义
- 样本不平衡问题:有些类别的样本多,有些类别的样本数量较少
参考资料
1、《机器学习实战》一书
2、李航老师:《统计学习方法》