binglu’s blog
← 返回文章
机器学习

机器学习(无监督篇)

冰露3 分钟

K-means

k个簇

初始化k个点,随机初始化,基于这两个点 算其他点是蓝的还是红的

算距离,比如到x,x2趋势,距离越小越相似,做一个便利 所有点都算,大量迭代,离红的近就是红的,离蓝的近就是蓝的

效果不好–更像 质心随机不准,所有红点重新计算质心,算中心值,同样也算蓝色质心,质心重新进行遍历,原来第一次红色的点,离蓝色质心近,就更新为蓝色质心,看谁小就划分谁的簇

然后继续进一步更新,直到样本点都不再发生变化了,就基本结束了。

优点:简单,快速,适合常规数据集

缺点:参数k值难确定 通常设多组 看效果

复杂度与样本呈线性关系 每次更样本都要和质心计算,每次都线性计算 涉及几千万样本 计算复杂度就深

很难发现任意形状的簇 难以覆盖比较奇怪形状(环绕),不普遍的簇

每一次差异都比较大,初值会对结果产生很大影响

DBSCAN算法

基于密度来进行计算的方法

定义半径(自己设定)核心点的周围最少有x个点(x个点自己设定)

定义簇的边界‘随机从一个核心点出发,然后把它所有附近核心点都加入到这个簇中,然后处理非核心点,非核心点只能添加到第一个簇中,不能使用它进行扩展

同样策略构建第二个簇,先把核心点加入,再处理非核心点,剩下的非核心点就是离群点,不属于任意一个簇

KNN

什么是knn,物以类聚,人以群分,knn的基础思想非常简单,要判断新数据类别,就看他的邻居都是谁,knn中的k指的是k个邻居,k=3就是通过离得最近的三个样本点,

来判断新数据的类别,大小和颜色是数据特征,苹果和梨是数据的标签,计算距离的时候既可以使用两点之间的直线距离,也就是欧氏距离,也可以使用坐标轴距离的绝对值的和,

也就是曼哈顿距离,对knn来说,k的取值非常重要,k的值太小,容易受到个例影响,k的值太大,又容易受到较远距离的特殊数据影响,k的取值受问题自身和k的大小

决定,很多时候要反复尝试。

可以做什么?根据植物长度宽度来判断类别,可以将文本分词,统计词频等处理后判断文章的类型,电商视频网站可找到类似的用户,依据他们选择推荐给你他们喜欢的商品

缺点:它流程是先计算新样本和所有样本点之间的距离,按由近及远的方式排列,再按k值确定分类,所以数据越多,knn计算量越大,效率也越低