算法思想:KNN是指K Nearest Neighbors,临近算法,是指K个最近的邻居的意思。
算法流程:
计算预测值和所有训练样本的距离值
对距离值进行排序
取出前K个距离
统计前K个距离对应的标签数量
预测值的标签就是数量最多的标签
距离计算:
可以计算欧式距离或者曼哈顿距离,根据实际问题情况进行选择
K值的选择:
选择合适的距离很重要,随着K值的增大,错误率先下降后上升,最后无限大的时候就相当于求样本中数量最多的标签,没有意义
算法特点:
是一种非参的(模型不会对数据做出任何假设,和线性回归算法相反)、惰性(不需要对数据进行训练)的算法模型
算法优点:
简单易用
训练快
预测效果好
对异常值不敏感
算法缺点:
对内存要求较高
K-means算法
算法思想:根据给定的n个数据对象的数据集,构建k个数据对象的数据集,构建K个划分聚类的方法,是一种非监督学习的方法。
算法流程:
随机选取k个数据对象,每个数据对象代表一个聚类中心
对剩下的每个对象,计算和聚类中心的距离,赋给最相似的聚类
重新计算每个聚类的平均值作为新的聚类中心
不断重复上述过程
算法优点:
简单,容易理解
处理大数据集的时候,具有较好的伸缩性
数据近似高斯分布时效果很好
复杂度低
算法缺点:
K值的选取对算法效果有较大影响
对初始的聚类中心选取依赖
对异常值敏感
不合适多分类任务
不适合数据集分散的任务
算法优化:
数据预处理:去除离群点或者噪声数据
合理选择K值
采用核函数:将空间中的数据点映射到高位的特征空间,在这里再进行聚类