layout: post
title: 数据挖掘经典算法之k-means
date: 2016-2-1
categories: blog
tags: [数据分析算法]
description: 数据挖掘经典算法之k-means。
数据掘经典算法 k-means
常见定义
聚类:
按照事物间的相似性进行区分和分类的过程,是无监督的分类(没有预定义的类编号)。
数据挖掘常用的方法有分类、回归分析、聚类、关联规则、神经网络方法、Web 数据挖掘等。
k-means属于聚类算法中经典的一种。
聚类的典型应用就是,在顾客群中寻找有共同个性的顾客。类似购买相机后会立刻购买同品牌的胶卷。
功能:
- 做为一个独立的工具来获得数据的分布情况
- 作为其他算法(如特征和分类)的预处理步骤
k-means:
K-means算法是硬聚类算法,是典型的基于原型的目标函数聚类方法的代表,它是数据点到原型的某种距离作为优化的目标函数,利用函数求极值的方法得到迭代运算的调整规则。K-means算法以欧式距离作为相似度测度,它是求对应某一初始聚类中心向量V最优分类,使得评价指标J最小。算法采用误差平方和准则函数作为聚类准则函数.
过程分析
基于划分的聚类算法:
- 基本思想,为N个数据创建k个分割,每个分割代表一个聚类。
- 每个组必须包含一个对象,每一个对象必须属于一个组。
- 采用分割法进行聚类,首先要给定分割的数目并创建一个初始分割。然后通过一个优化函数,应用迭代的重定位技术,尝试通过对象在分割间的移动改进分割。
简单k-means算法
- 任意选择k个数据对象作为初始的聚类中心;
- 对以下过程进行迭代:
(a)计算数据集中其余各数据对象到这些聚类中心的距离,然后按照距离最近的原则,把各数据对象分到相应的类中;
(b)计算各个聚类新的重心,即求新形成的类中所有数据对象的平均值 - 重复过程(a)、(b),直到目标函数(标准方差的和)不再发生变化。
k-means聚类过程:
选取作为初始聚类中心的对象不用时,会对聚类结果产生很大的影响。
不同初始中心的结果
初始点的选取
因为初始点的选取会对结果产生极大影响,所以通常在k-means使用以前会有一个初始点选取的算法作为预处理。这里暂且不展开讨论。
对随机数据进行模拟聚类
- 随机生成一组数据存入表中作为待处理数据
- 去出待处理数据进行聚类
- 算法运行完成后将结果存入结果表中
Oracle中数据分析预处理常用脚本
!暂时未进行编辑
源程序
Github-k-means-Oracle-sqlplus
流程图
表结构
运行结果