前言
最近在学习数据挖掘,对数据挖掘中的算法比较感兴趣,打算整理分享一下学习情况,顺便利用R来实现一下数据挖掘算法。
数据挖掘里我打算整理的内容有:分类,聚类分析,关联分析,异常检测四大部分。其中分类算法主要介绍:K-近邻算法,决策树算法,朴素贝叶斯算法,支持向量机,神经网络,logistic回归。
写这份学习笔记主要以学校data mining课程的课件为主,会参考一堆的baidu,一堆的google,一堆的blog,一堆的book以及一堆乱七八糟的资料,由于精力有限,恕不能一一列出,如果有认为有侵权行为欢迎与我联系,保证及时删除。
这篇文章是我博客数据挖掘系列的第一篇文章,介绍分类算法中最基本的算法——k近邻算法。
算法一:K-近邻算法
原理及举例
工作原理:我们知道样本集中每一个数据与所属分类的对应关系,输入没有标签的新数据后,将新数据与训练集的数据对应特征进行比较,找出“距离”最近的k(通常k<20)数据,选择这k个数据中出现最多的分类作为新数据的分类。
算法描述:
(1) 计算已知类别数据及中的点与当前点的距离;
(2) 按距离递增次序排序
(3) 选取与当前点距离最小的k个点
(4) 确定前K个点所在类别出现的频率
(5) 返回频率最高的类别作为当前类别的预测
距离计算方法有"euclidean"(欧氏距离),”minkowski”(明科夫斯基距离), "maximum"(切比雪夫距离), "manhattan"(绝对值距离),"canberra"(兰式距离), 或 "minkowski"(马氏距离)等.
分析学的知识告诉我们Rn上范数之间是等价的,所以我们也没必要太过纠结选谁,毕竟范数之间都是可以相互控制的。
这里我们使用最常见欧氏距离作为衡量标准,以鸢尾花数据集为例来说明K-近邻算法:
鸢尾花数据集包含150个数据,测量变量为花瓣,花萼的长度与宽度,分类变量为setosa, versico