机器学习(无监督篇)
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计算量越大,效率也越低