机器学习理解(四)

来源:互联网 发布:sql replace用法 编辑:程序博客网 时间:2024/06/04 18:57

5.KNN分类---有监督学习
KNN即K近邻分类,它的基本思想就是找到与待分类样本最近的K个样本,在这K个样本中,哪个类别所包含的样本数最多,则待分类样本就属于哪一类
基本步骤:
1.分别求得待分类样本与训练样本的距离;距离的求法有欧式距离,马氏距离等,且分类样本是用向量进行表示的,分类样本的属性个数即为向量的维度
2.对距离进行排序;
3.选取距离值最小的K个样本;
4.K个样本进行投票决定待分类样本的类别,即在这K个样本中,哪个类别所包含的样本数最多,则待分类样本就属于哪一类
对于样本不均衡的情况,即某些类样本数较多,某些类样本数较少,可以在计算距离时加上权值,样本数较少的类别权值大,这样小类的正确率不会过低


优点:思想简单;理论成熟;准确度较高;
缺点:计算量大,需要扫描整个数据库,当数据量非常大时,对内存就会有较高的要求;K值的选取与分类结果会有较大的关系,因此要选择合适的K值


参考博客:

http://www.cnblogs.com/fengfenggirl/archive/2013/05/27/knn.html


下面再简单地概述下不同类型的距离公式
机器学习算法中常用距离来表示两个向量之间的相似性,距离有如下几种:假设两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)
1.欧式距离

2.曼哈顿距离
,距离为两个向量在不同维度下的绝对值之差的和
3.切比雪夫距离
,距离为两个向量在不同维度下最大的绝对值之差
4.马氏距离
,涉及到向量的转置,其实和矩阵转置类似
5.夹角余弦距离

6.杰卡德距离:两个集合A和B的交集元素在A,B的并集中所占的比例,称为两个集合的杰卡德相似系数,用符号J(A,B)表示,适用条件每一维都只有二值,而且是非对称二元变量,即每一个取值的重要性程度不一样

7.相关距离(用的较少,我自己也不是很懂)

6.KMeans聚类---无监督学习
KMeans聚类算法是聚类算法中比较常用且经典的算法,聚类即根据事件的相似特征,将其聚集在一起形成一个单独的类,它不像分类那样事先已经明确好了类别,因此聚类属于无监督学习,KMeans属于基于划分的聚类算法,其基本步骤为:
1.随机选取k个初始中心点;
2.计算每个数据点到k个初始中心点的距离,将数据点与离其最近的中心点划分到一类;
3.划分完所有的数据点后,重新计算各个类中的中心点,中心点为该类所有的数据点在各个维度上的平均值;
4.不断迭代,直至中心点不再改变或者达到迭代次数;

优点:算法简单,快速;
缺点:需要重复扫描数据库;要求事先给出k值,因此k值选取不当,会对结果产生误差;对初值敏感;


改进:在选取k个初始中心点上进行改进
1.求出每个数据点的密度:设定d1值,计算其余数据点到自身的距离,若距离小于d1,就把这个数据点当做是在自己密度范围内,密度+1
2.选取密度最大的数据点作为第一个初始中心点
3.设定d2值,选取其余的到第一个初始中心点的距离大于d2的数据点,再从这些数据点中选取密度值最大的数据点作为第二个初始中心点
4.重复上述步骤
这样可以避免初始中心点过于密集


参考博客:

http://www.cnblogs.com/fengfenggirl/p/k-means.html
类似的算法还有自底向上的层次聚类算法:cure算法

未完待续。。。


0 0