第9章rapidminer-k-means聚类、辨别分析v1

合集下载

K-means聚类分析

K-means聚类分析

K-means聚类分析⼀、原理1. 先确定簇的个数,K2. 假设每个簇都有⼀个中⼼点centroid3. 将每个样本点划分到距离它最近的中⼼点所属的簇中选择K个点做为初始的中⼼点while(1){将所有点分配个K个中⼼点形成K个簇重新计算每个簇的中⼼点if(簇的中⼼点不再改变)break;}⽬标函数:定义为每个样本与其簇中⼼点的距离的平⽅和(theSum of Squared Error, SSE) – µk 表⽰簇Ck 的中⼼点(或其它能代表Ck的点) – 若xn被划分到簇Ck则rnk=1,否则rnk= 0• ⽬标:找到簇的中⼼点µk及簇的划分rnk使得⽬标函数SSE最⼩初始中⼼点通常是随机选取的(收敛后得到的是局部最优解)不同的中⼼点会对聚类结果产⽣不同的影响:1、2、此时你⼀定会有疑问:如何选取"较好的"初始中⼼点?1. 凭经验选取代表点2. 将全部数据随机分成c类,计算每类重⼼座位初始点3. ⽤“密度”法选择代表点4. 将样本随机排序后使⽤前c个点作为代表点5. 从(c-1)聚类划分问题的解中产⽣c聚类划分问题的代表点 结论:若对数据不够了解,可以直接选择2和4⽅法需要预先确定K Q:如何选取K SSE⼀般随着K的增⼤⽽减⼩A:emmm你多尝试⼏次吧,看看哪个合适。

斜率改变最⼤的点⽐如k=2总结:简单的来说,K-means就是假设有K个簇,然后通过上⾯找初始点的⽅法,找到K个初始点,将所有的数据分为K个簇,然后⼀直迭代,在所有的簇⾥⾯找到找到簇的中⼼点µk及簇的划分rnk使得⽬标函数SSE最⼩或者中⼼点不变之后,迭代完成。

成功把数据分为K类。

预告:下⼀篇博⽂讲K-means代码实现。

k-means聚类的基本步骤

k-means聚类的基本步骤

k-means聚类的基本步骤
嘿,朋友们!今天咱来聊聊 k-means 聚类的那些事儿哈。

你想啊,这k-means 聚类就好比是给一堆乱七八糟的东西分类整理。

首先呢,咱得确定要分成几类,这就好比你要决定把你的玩具分成几
堆一样。

这可不是随便定的哦,得根据实际情况好好琢磨琢磨。

然后呢,就像给每个东西找个家一样,随机选几个点作为初始的聚
类中心。

这就好像你先随便找几个地方放那几堆玩具。

接下来,就是把每个数据点都归到离它最近的那个聚类中心所属的
类里。

这就好像你把每个玩具都放到离它最近的那堆里去。

哎呀,是
不是挺形象的呀!
这还不算完呢,等都分好类了,还得重新计算每个类的中心。

这就
好比你重新调整一下那几堆玩具的位置,让它们更整齐。

然后再重复上面的过程,一直到这些聚类中心不再变化啦。

这就像
你反复调整玩具堆,直到你觉得满意为止。

你说这 k-means 聚类是不是挺有趣的呀?就像是在玩一个整理的游戏。

而且它用处可大了去了呢!比如说在数据分析里,能帮我们发现
一些隐藏的模式和规律。

你想想看,如果没有k-means 聚类,那面对一大堆杂乱无章的数据,我们得多头疼呀!但有了它,就好像有了一双神奇的手,能把这些乱
麻一样的数据整理得井井有条。

所以说呀,学会 k-means 聚类的基本步骤可太重要啦!咱可不能小
瞧了它,得好好研究研究,把它用在该用的地方,让它发挥出最大的
作用呀!这难道不是很有意义的事情吗?。

机器学习——KMeans聚类,KMeans原理,参数详解

机器学习——KMeans聚类,KMeans原理,参数详解

机器学习——KMeans聚类,KMeans原理,参数详解0.聚类 聚类就是对⼤量的未知标注的数据集,按数据的内在相似性将数据集划分为多个类别,使类别内的数据相似度较⼤⽽类别间的数据相似度较⼩,聚类属于⽆监督的学习⽅法。

1.内在相似性的度量 聚类是根据数据的内在的相似性进⾏的,那么我们应该怎么定义数据的内在的相似性呢?⽐较常见的⽅法是根据数据的相似度或者距离来定义的,⽐较常见的有:闵可夫斯基距离/欧式距离 上述距离公式中,当p=2时,就是欧式距离,当p=1时,就是绝对值的和,当p=正⽆穷时,这个距离变成了维度差最⼤的那个值。

杰卡德相似系数 ⼀般是度量集合之间的相似性。

余弦相似度Pearson相似系数 对于n维向量的夹⾓,根据余弦定理,可到: ⼜由相关系数的计算公式,可得: 不难发现,相关系数就是将x,y坐标向量各⾃平移到原点后的夹⾓余弦。

相对熵(K-L距离)2.聚类的基本思想 1.给定⼀个有N个对象的数据集,构造数据的K个簇,k<=n,并且满⾜下列条件: 每⼀个簇⾄少包含⼀个对象。

每⼀个对象属于且仅属于⼀个簇。

将满⾜上述条件的K个簇称作⼀个合理划分。

2.基本思想:对于给定的类别K,⾸先给定初始的划分,通过迭代改变样本和簇的⾪属关系,使得每⼀次改进之后的划分⽅案都较前⼀次好。

3.K-Means算法 K-means算法,也被称为K-平均或K-均值,是⼀种⼴泛使⽤的聚类算法,或者成为其他聚类算法的基础。

假定输⼊样本为S=x1, x2, ......, xm,则算法步骤为: 选择初始的k个类别中⼼,u1, u2, ......, uk。

对于每个样本的xi,将其中标记为距离类别中⼼最近的类别,即: 将每个类别中⼼更新为⾪属该类别的所有样本的均值。

重复后⾯的两步,直到类别中⼼变化⼩于某阈值。

终⽌条件: 迭代次数,簇中⼼变化率,最⼩平⽅误差MSE。

4.K-Means的公式化解释 记K个簇中⼼为u1,u2,......,uk,每个簇的样本数⽬为N1,N2,......,Nk。

K-Means聚类算法-模式识别

K-Means聚类算法-模式识别

K-Means聚类算法-模式识别LTK-Means聚类算法1.算法原理k-means是划分方法中较经典的聚类算法之一。

由于该算法的效率高,所以在对大规模数据进行聚类时被广泛应用。

目前,许多算法均围绕着该算法进行扩展和改进。

k-means算法以k为参数,把n个对象分成k个簇,使簇内具有较高的相似度,而簇间的相似度较低。

k-means算法的处理过程如下:首先,随机地选择k个对象,每个对象初始地代表了一个簇的平均值或中心;对剩余的每个对象,根据其与各簇中心的距离,将它赋给最近的簇;然后重新计算每个簇的平均值。

这个过程不断重复,直到准则函数收敛。

通常,采用平方误差准则,其定义如下:这里E是数据库中所有对象的平方误差的总和,p是空间中的点,mi 是簇Ci的平均值。

该目标函数使生成的簇尽可能紧凑独立,使用的距离度量是欧几里得距离,当然也可以用其他距离度量。

k-means聚类算法的算法流程如下:输入:包含n个对象的数据库和簇的数目k;输出:k个簇,使平方误差准则最小。

步骤:(1) 任意选择k个对象作为初始的簇中心;(2) repeat;(3) 根据簇中对象的平均值,将每个对象(重新)赋予最类似的簇;(4) 更新簇的平均值,即计算每个簇中对象的平均值;(5) 直到不再发生变化。

2.主要代码主程序:clc;clear;close all;%% 聚类算法测试nSample = [500, 500, 500];% 3维情况dim = 3;coeff = {[-2 0.8; -1 0.9; 2 0.7;], ....[1 0.9; -2 0.7; -2 0.8; ], ...[-2 0.7; 2 0.8; -1 0.9; ], };data = createSample(nSample, dim , coeff);%% 得到训练数据nClass = length(nSample);tlabel = [];tdata = [];for i = 1 : nClasstlabel = [tlabel; i * ones(nSample(i), 1)];tdata = [tdata; data{i}];end%% 调用k-means聚类算法[ label ] = stpKMeans( tdata, nClass);%% 绘图result = cell(1, nClass);index = 0;for i = 1 : nClassindex = find(label(:,1) == i);result{i} = tdata(index, :);endfigure;subplot(1, 2, 1);plot3(data{1}(:, 1), data{1}(:, 2), data{1}(:, 3), '*', ...data{2}(:, 1), data{2}(:, 2), data{2}(:, 3), 'o', ...data{3}(:, 1), data{3}(:, 2), data{3}(:, 3), 'x');title('初始数据');subplot(1, 2, 2);plot3(result{1}(:, 1), result{1}(:, 2), result{1}(:, 3), '*', ... result{2}(:, 1), result{2}(:, 2), result{2}(:, 3), 'o', ...result{3}(:, 1), result{3}(:, 2), result{3}(:, 3), 'x');title('K-Means聚类结果');K-Means核心算法:function [ label ] = stpKMeans( data, k)%% KMeans 聚类算法,参考%/William_Fire/archive/2013/02/09/2909499.html %%% 输入% data 原始数据% k 聚多少个簇%%% 输出% label 按照data数据的顺序,每个样本的簇号的列表[n, dim] = size(data);label = zeros(n, 1);% 任选k个对象作为初始的簇中心seq = stpRandN_K(n, k);nowMeans = data(seq, :);for i = 1 : klabel(seq(i)) = i;enddist = zeros(n, k);while(true)% 计算数据到每个簇的欧几里得距离for i = 1 : ktemp = data;for j = 1 : dim% 先让数据减去第j个特征temp(:, j) = data(:, j) - nowMeans(i, j);end% 点乘后再相加球的距离的平方temp = temp .* temp;dist(:, i) = sum(temp, 2);end% 从k种距离中找出最小的,并计算修改次数(label跟上一次不一样) [~, label2] = min(dist, [], 2);editElem = sum(label(:, 1) ~= label2(:, 1));label = label2;% for i = 1 : n% % 根据均值将当前的每个元素重新分簇% minDist = inf;% index = -1;% % 从当前的k个均值中找到离元素i最近的一个,将其划分到该簇% for j = 1 : k% dist = data(i,:) - nowMeans(j, :);% dist = dot(dist, dist);%% if(dist < minDist)% % 修改最近的距离,并记录测试的簇号% minDist = dist;% index = j;% end% end%% % 判断是该元素是否重新划分了簇% if(index ~= label(i) )% editElem = editElem + 1;% label(i) = index;% end%% endif editElem == 0% 表示本次没有修改,那么跳出循环break;end% 重新分簇后,重新计算均值for i = 1 : k% 计算第k簇的均值[index] = find(label(:, 1) == i );nowMeans(i, :) = mean(data(index, :));endendend从n个元素中随机抽取K个元素的代码:function [ out ] = stpRandN_K(n, k)%% 从1-n中随机选中k个不同的元素data = 1 : n;for i = 1 : kindex = floor( (n-i+1)*rand() ) + i;% 交换i和index上的数据temp = data(index);data(index) = data(i);data(i) = temp;endout = data(1:k);end图片聚类测试代码:close all;clc;clear;rgbdata = imread('data\\g-1.jpg');labdata = stpRgb2Lab(rgbdata);[sm, sn, ~] = size(labdata);sN = sm * sn;nClass = 4;labdata = reshape(labdata, sN, 3);[ label ] = stpKMeans( labdata, nClass);label = reshape(label, sm, sn);figure;subplot(1, 2, 1);imshow(rgbdata);hold on;subplot(1, 2, 2);TX = 1 : sn;TY = 1 : sm;imagesc(TX, TY, label);3.结果分析针对给定的参数K-Means算法三类聚类结果:图1 初始数据和K-Means聚类结果当初始数据给为如下时:K-Means算法三类聚类结果:图2 初始数据和K-Means聚类结果由此可以看到,K-Means算法会把一些偏离中心较远的点分到其它簇内。

k-means聚类方法的原理和步骤

k-means聚类方法的原理和步骤

k-means聚类方法的原理和步骤k-means聚类方法是一种常用的数据聚类算法,它可以将一组数据划分成若干个类别,使得同一类别内的数据相似度较高,不同类别之间的数据相似度较低。

本文将介绍k-means聚类方法的原理和步骤。

k-means聚类方法基于数据的距离度量,具体而言,它通过最小化各个数据点与所属类别中心点之间的距离来达到聚类的目的。

其基本原理可以概括为以下几点:-定义类别中心点:在聚类开始前,需要预先设定聚类的类别数量k。

根据k的数量,在数据集中随机选取k个点作为初始的类别中心点。

-分配数据点到类别:对于每一个数据点,计算其与各个类别中心点之间的距离,并将其分配到距离最近的类别中。

-更新类别中心点:当所有数据点分配完毕后,重新计算每个类别中的数据点的均值,以此获得新的类别中心点。

-重复分配和更新过程:将新的类别中心点作为参考,重新分配数据点和更新类别中心点,直到类别中心点不再变化或达到预设的迭代次数。

按照上述原理,k-means聚类方法的步骤可以分为以下几个阶段:-第一步,随机选择k个类别中心点。

-第二步,计算每个数据点与各个类别中心点之间的距离,并将其分配到距离最近的类别中。

-第三步,重新计算每个类别中数据点的均值,以此获得新的类别中心点。

-第四步,判断新的类别中心点是否与上一次迭代的中心点相同,如果相同,则结束聚类过程;如果不同,则更新类别中心点,返回第二步继续迭代。

-第五步,输出最终的类别划分结果。

需要注意的是,k-means聚类方法对聚类的初始中心点敏感,不同的初始点可能会导致不同的聚类结果。

为了避免陷入局部最优解,通常采用多次随机初始化的方式进行聚类,然后选取最好的结果作为最终的聚类划分。

综上所述,k-means聚类方法是一种常用的数据聚类算法,它通过最小化数据点与类别中心点之间的距离来实现聚类。

按照预设的步骤进行迭代,最终得到稳定的聚类结果。

在实际应用中,还可以根据具体问题进行算法的改进和优化,以满足实际需求。

K-means聚类分析

K-means聚类分析
k 2
i
E 是一个数据集中所有对象的误差平方和,P 是一个对象,mi 是聚类 Ci 的质心, 即 mi
qC i
q
Ci
k‐means 聚类算法的具体步骤如下: ①从数据集中选择 k 个质心 C1,C2,…,Ck 作为初始的聚类中心; ②把每个对象分配到与之最相似的聚合。每个聚合用其中所有对象的均值来 代表, “最相似”就是指距离最小。对于每个点 Vi,找出一个质心 Cj,使它与其 间 的距离 d(Vi,Cj)最小,并把 Vi 分配到第 j 组; ③把所有的点都分配到相应的组之后重新计算每个组的质心 Cj; ④循环执行第②步和第③步,直到数据的划分不再发生变化。 该算法具有很好的可伸缩性,其计算复杂度为 O(nkt),其中,t 是循环的次数。 K‐means 聚类算法的不足之处在于它要多次扫描数据库,此外,它只能找出球形 的 类, 而不能发现任意形状的类。 还有, 初始质心的选择对聚类结果有较大的影响, 该算法对噪声很敏感。
K‐means 聚类分析
主要的聚类算法可以分为以下几种:划分聚类、层次聚类、密度型聚类、网 格型聚类和基于模型的聚类。 划分聚类算法把数据点集分为 k 个划分,每个划分作为一个聚类。它一般从 一个初始划分开始,然后通过重复的控制策略,使某个准则函数最优化,而每个 聚类由其质心来代表(k‐means 算法),或者由该聚类中最靠近中心的一个对象来 代 表(k‐medoids 算法)。 划分聚类算法收敛速度快, 缺点在于它倾向于识别凸形分布 大小相近、密度相近的聚类,不能发现分布形状比较复杂的聚类,它要求类别数 目 k 可以合理地估计,并且初始中心的选择和噪声会对聚类结果产生很大影响。 主要的划分聚类算法有 k‐means,EM,k‐medoids,CLARA,CLARANS 等。 下面主要介绍 K‐means 聚类方法。 k‐means 算法首先随机选择 k 个对象,每个对象代表一个聚类的质心。对于其 余的每一个对象,根据该对象与各聚类质心之间的距离,把它分配到与之最相似 的聚类中。然后,计算每个聚类的新质心。重复上述过程,直到准则函数会聚。 通常采用的准则函数是平方误差准则函数(squared‐error criterion),即 E i 1 pC p m

K-means聚类算法

K-means聚类算法

K-means聚类算法1. 概述K-means聚类算法也称k均值聚类算法,是集简单和经典于⼀⾝的基于距离的聚类算法。

它采⽤距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越⼤。

该算法认为类簇是由距离靠近的对象组成的,因此把得到紧凑且独⽴的簇作为最终⽬标。

2. 算法核⼼思想K-means聚类算法是⼀种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中⼼,然后计算每个对象与各个种⼦聚类中⼼之间的距离,把每个对象分配给距离它最近的聚类中⼼。

聚类中⼼以及分配给它们的对象就代表⼀个聚类。

每分配⼀个样本,聚类的聚类中⼼会根据聚类中现有的对象被重新计算。

这个过程将不断重复直到满⾜某个终⽌条件。

终⽌条件可以是没有(或最⼩数⽬)对象被重新分配给不同的聚类,没有(或最⼩数⽬)聚类中⼼再发⽣变化,误差平⽅和局部最⼩。

3. 算法实现步骤1、⾸先确定⼀个k值,即我们希望将数据集经过聚类得到k个集合。

2、从数据集中随机选择k个数据点作为质⼼。

3、对数据集中每⼀个点,计算其与每⼀个质⼼的距离(如欧式距离),离哪个质⼼近,就划分到那个质⼼所属的集合。

4、把所有数据归好集合后,⼀共有k个集合。

然后重新计算每个集合的质⼼。

5、如果新计算出来的质⼼和原来的质⼼之间的距离⼩于某⼀个设置的阈值(表⽰重新计算的质⼼的位置变化不⼤,趋于稳定,或者说收敛),我们可以认为聚类已经达到期望的结果,算法终⽌。

6、如果新质⼼和原质⼼距离变化很⼤,需要迭代3~5步骤。

4. 算法步骤图解上图a表达了初始的数据集,假设k=2。

在图b中,我们随机选择了两个k类所对应的类别质⼼,即图中的红⾊质⼼和蓝⾊质⼼,然后分别求样本中所有点到这两个质⼼的距离,并标记每个样本的类别为和该样本距离最⼩的质⼼的类别,如图c所⽰,经过计算样本和红⾊质⼼和蓝⾊质⼼的距离,我们得到了所有样本点的第⼀轮迭代后的类别。

此时我们对我们当前标记为红⾊和蓝⾊的点分别求其新的质⼼,如图d所⽰,新的红⾊质⼼和蓝⾊质⼼的位置已经发⽣了变动。

K-means算法原理及功能介绍

K-means算法原理及功能介绍

K-means聚类算法一、K-means聚类原理1.1 聚类算法的原理我们经常接触到的聚类分析,一般都是数值聚类,一种常见的做法是同时提取N 种特征,将它们放在一起组成一个N 维向量,从而得到一个从原始数据集合到N 维向量空间的映射——总是需要显式地或者隐式地完成这样一个过程,然后基于某种规则进行分类,在该规则下,同组分类具有最大的相似性。

聚类属于无监督学习,以往的回归、朴素贝叶斯、SVM等都是有类别标签y 的,也就是说样例中已经给出了样例的分类。

而聚类的样本中却没有给定y,只有特征x,比如假设宇宙中的星星可以表示成三维空间中的点集。

聚类的目的是找到每个样本x潜在的类别y,并将同类别y的样本x放在一起。

比如上面的星星,聚类后结果是一个个星团,星团里面的点相互距离比较近,星团间的星星距离就比较远了。

1.2 K-means聚类原理假设我们提取到原始数据的集合为(x1, x2, …, x n),并且每个x i为d维的向量(d维向量由原始数据的d个特征组成),K-means聚类的目的就是,在给定分类组数k(k≤n)值的条件下,将原始数据分成k类S = {S1, S2, …,S k},1.3 K-means聚类步骤算法步骤一般如下:1、从D中随机取k个元素,作为k个簇的各自的中心。

2、分别计算剩下的元素到k个簇中心的相异度,将这些元素分别划归到相异度最低的簇。

3、根据聚类结果,重新计算k个簇各自的中心,计算方法是取簇中所有元素各自维度的算术平均数。

4、将D中全部元素按照新的中心重新聚类。

5、重复第4步,直到每个簇的中心基本不再变化。

6、将结果输出。

1.4 K-means聚类简单实例对数据点进行聚类,详细步骤如下所示:首先3 个中心点被随机初始化,所有的数据点都还没有进行聚类,默认全部都标记为红色,如下图所示:然后进入第一次迭代:按照初始的中心点位置为每个数据点着上颜色,重新计算3 个中心点,结果如下图所示:可以看到,由于初始的中心点是随机选的,这样得出来的结果并不是很好,接下来是下一次迭代的结果:可以看到大致形状已经出来了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第9章K-Means 聚类、辨别分析9.1理解聚类分析餐饮企业经常会碰到这样的问题:1)如何通过餐饮客户消费行为的测量,进一步评判餐饮客户的价值和对餐饮客户进行细分,找到有价值的客户群和需关注的客户群2)如何合理对菜品进行分析,以便区分哪些菜品畅销毛利又高,哪些菜品滞销毛利又低餐饮企业遇到的这些问题,可以通过聚类分析解决。

9.1.1常用聚类分析算法与分类不同,聚类分析是在没有给定划分类别的情况下,根据数据相似度进行样本分组的一种方法。

与分类模型需要使用有类标记样本构成的训练数据不同,聚类模型可以建立在无类标记的数据上,是一种非监督的学习算法。

聚类的输入是一组未被标记的样本,聚类根据数据自身的距离或相似度将他们划分为若干组,划分的原则是组内样本最小化而组间(外部)距离最大化,如错误!未找到引用源。

所示。

图9-1 聚类分析建模原理常用聚类方法见错误!未找到引用源。

表9-1常用聚类方法常用聚类算法见错误!未找到引用源。

2。

表9-2常用聚类分析算法9.1.2K-Means聚类算法K-Means算法是典型的基于距离的非层次聚类算法,在最小化误差函数的基础上将数据划分为预定的类数K,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。

1.算法过程1) 从N 个样本数据中随机选取K 个对象作为初始的聚类中心;2) 分别计算每个样本到各个聚类中心的距离,将对象分配到距离最近的聚类中; 3) 所有对象分配完成后,重新计算K 个聚类的中心;4) 与前一次计算得到的K 个聚类中心比较,如果聚类中心发生变化,转2),否则转5);5) 当质心不发生变化时停止并输出聚类结果。

聚类的结果可能依赖于初始聚类中心的随机选择,可能使得结果严重偏离全局最优分类。

实践中,为了得到较好的结果,通常以不同的初始聚类中心,多次运行K-Means 算法。

在所有对象分配完成后,重新计算K 个聚类的中心时,对于连续数据,聚类中心取该簇的均值,但是当样本的某些属性是分类变量时,均值可能无定义,可以使用K-众数方法。

2. 数据类型与相似性的度量 (1) 连续属性对于连续属性,要先对各属性值进行零-均值规范,再进行距离的计算。

K-Means 聚类算法中,一般需要度量样本之间的距离、样本与簇之间的距离以及簇与簇之间的距离。

度量样本之间的相似性最常用的是欧几里得距离、曼哈顿距离和闵可夫斯基距离;样本与簇之间的距离可以用样本到簇中心的距离(,)i d e x ;簇与簇之间的距离可以用簇中心的距离(,)i j d e e 。

用p 个属性来表示n 个样本的数据矩阵如下:1111p n n p x x x x ⎡⎤⎢⎥⎢⎥⎢⎥⎣⎦L M O M L 欧几里得距离(,)d i j = (9-1)曼哈顿距离1122(,)||+||++||i j i j ip jp d i j x x x x x x =---L (9-2)闵可夫斯基距离(,)d i j = (9-3)q 为正整数,=1q 时即为曼哈顿距离;=2q 时即为欧几里得距离。

(2) 文档数据对于文档数据使用余弦相似性度量,先将文档数据整理成文档—词矩阵格式,如错误!未找到引用源。

表9-3 文档—词矩阵两个文档之间的相似度的计算公式为:(,)cos(,)||||i jd i j i j i j r r r r ⋅== (9-4)3. 目标函数使用误差平方和SSE 作为度量聚类质量的目标函数,对于两种不同的聚类结果,选择误差平方和较小的分类结果。

连续属性的SSE 计算公式为:21(,)iKi i x E SSE dist e x =∈=∑∑ (9-5)文档数据的SSE 计算公式为:21cos(,)iKii x E SSE e x =∈=∑∑ (9-6)簇i E 的聚类中心i e 计算公式为:1ii x E ie x n ∈=∑ (9-7)表9-4 符号表下面结合具体案例来实现本节开始提出问题。

部分餐饮客户的消费行为特征数据如错误!未找到引用源。

根据这些数据将客户分类成不同客户群,并评价这些客户群的价值。

表9-5消费行为特征数据采用K-Means聚类算法,设定聚类个数K为3,距离函数默认为欧氏距离。

执行K-Means聚类算法输出的结果见错误!未找到引用源。

表9-6聚类算法输出结果以下是绘制的不同客户分群的概率密度函数图,通过这些图能直观地比较不同客户群的价值。

图9-2分群1的概率密度函数图图9-3分群2的概率密度函数图图9-4分群3的概率密度函数图客户价值分析:分群1特点:R主要集中在10~30天之间;消费次数集中在5~30次;消费金额在1600~2000。

分群2特点:R分布在20~45天之间;消费次数集中在5~25次;消费金额在800~1600。

分群3特点:R分布在30~60天之间;消费次数集中在1~10次;消费金额在200~800。

对比分析:分群1时间间隔较短,消费次数多,而且消费金额较大,是高消费高价值人群。

分群2的时间间隔、消费次数和消费金额处于中等水平。

分群3的时间间隔较长,消费次数和消费金额处于较低水平,是价值较低的客户群体。

9.1.3 聚类分析算法评价聚类分析仅根据样本数据本身将样本分组。

其目标是,组内的对象相互之间是相似的(相关的),而不同组中的对象是不同的(不相关的)。

组内的相似性越大,组间差别越大,聚类效果就越好。

(1) purity 评价法purity 方法是极为简单的一种聚类评价方法,只需计算正确聚类数占总数的比例:1(,)max ||k i ik purity X Y x y n =⋂∑ (9-8)其中,()12,,,k x x x x =K 是聚类的集合。

k x 表示第k 个聚类的集合。

()12,,,k y y y y =K 表示需要被聚类的集合,i y 表示第i 个聚类对象。

n 表示被聚类集合对象的总数。

(2) RI 评价法实际上这是一种用排列组合原理来对聚类进行评价的手段,RI 评价公式如下:R WRI R M D W+=+++ (9-10)其中R 是指被聚在一类的两个对象被正确分类了,W 是指不应该被聚在一类的两个对象被正确分开了,M 指不应该放在一类的对象被错误的放在了一类,D 指不应该分开的对象被错误的分开了。

(3) F 值评价法这是基于上述RI 方法衍生出的一个方法,F 评价公式如下:22(1)prF p rααα+=+ (9-11)其中R p R M =+,Rr R D=+。

实际上RI 方法就是把准确率p 和召回率r 看得同等重要,事实上有时候我们可能需要某一特性更多一点,这时候就适合使用F 值方法。

实例1—利用K-Means 聚类确定患冠心病的高风险人群背景和概要说明Sonia 在一家主要健康保险公司担任项目总监。

最近她一直在阅读医学刊物和其他文章,并发现好多文章都在强调体重、性别和胆固醇对患冠心病的影响。

她阅读的研究文件一次又一次地确认这三个变量之间存在关联。

尽管人们无法在自己的性别方面下功夫,但无疑可以通过选择合理的生活方式来改变胆固醇水平和体重。

于是她开始提议公司为健康保险客户提供体重和胆固醇管理项目。

在考虑她的工作在哪里开展可能最为有效时,她希望了解是否存在发生高体重和高胆固醇风险最高的自然群体,如果存在,这些群体之间的自然分界线在哪里。

业务理解Sonia 的目标是确定由公司提供保险服务且因体重和/或高胆固醇患冠心病的风险非常高的人员,并试图联络这些人员。

她了解患冠心病风险较低的人员,即体重和胆固醇水平较低的人员不太可能会参加她提供的项目。

她还了解可能存在高体重和低胆固醇、高体重和高胆固醇,以及低体重和高胆固醇的保单持有人。

她还认识到可能会有许多人介于它们之间。

为了实现目标,她需要在数以千计的保单持有人中搜索具有类似特征的群体,并制定相关且对这些不同的群体有吸引力的项目和沟通方式。

数据理解使用该保险公司的索赔数据库,Sonia 提取了547 个随机挑选的人员的三个属性,即受保人最近的体检表上记录的体重(单位:磅)、最近一次验血时测得的胆固醇水平,以及性别。

和在许多数据集中的典型做法一样,性别属性使用0 来表示女性,并使用 1 来表示男性。

我们将使用从Sonia 公司的数据库中提取的这些样本数据构建聚类模型,以便帮助Sonia 了解公司的客户(即健康保险保单持有人)根据体重、性别和胆固醇水平进行分组的情况。

我们应切记在构建模型时,均值尤其容易受到极端离群点的不当影响,因此在使用K 均值聚类数据挖掘方法时查看是否存在不一致的数据至关重要。

数据准备将“.K-Means聚类.csv”数据集导入到RapidMiner 数据存储库中,保存为//LocalRepository/data/K-Means聚类。

我们可以看到先前定义的三个属性有547 个观察项。

我们可以看到三个属性中的每个属性的平均值,以及对应的标准差和范围,如图。

其中没有看起来不一致的值(切记前面关于使用标准差查找统计离群点的备注)。

由于没有缺失的值要处理,因此数据看起来非常干净,并可直接进行挖掘。

图数据基本信息操作步骤第一步:对数据进行聚类将数据拖拽到操作视图界面,检索“k-Means”操作符并将其与数据进行连接,然后与输出端口连接,点击运行,我们可以看到如图运行结果,在参数设置如图中,我们可以设计聚成的k的类数,以及“max runs”最大循环迭代的次数。

图k-Means聚类参数设置第二步:结果集过滤将“Filter Examples”结果集过滤操作符拖进操作界面,如图,在参数设置中,选择类别等于类别0,如图。

图操作符流程视图图结果集过滤参数设置第三步:输出结果点击运行,我们可以看到如图的输出结果图筛选类别后的输出结果这样我们的主人公,就可以根据显示输出的结果,来重点关注疾病的高发人群,从而有针对性的进行服务。

实例2—利用判别分析技术分类运动员专攻项目背景和概要说明Gill 运营着一个体育学院,旨在帮助高中年纪的运动员最大限度地发挥其在体育方面的潜力。

对于学院的男生,他侧重于四个主要体育项目,即橄榄球、篮球、棒球和曲棍球。

他发现虽然许多高中运动员在念高中时都喜欢参加多种体育项目,但随着他们开始考虑在大学时从事的体育项目,他们将倾向于专攻某一项。

通过多年来与运动员之间的合作,Gill 整理了一个内容非常广泛的数据集。

现在他想知道他是否可以使用先前部分客户的以往成绩,为即将到来的高中运动员预测主攻的体育项目。

最终,他希望可以就每个运动员可能最应选择专攻哪个体育项目,向他们提供建议。

通过评估每个运动员在一系列测试中的成绩,Gill 希望我们可以帮助他确定每个运动员在哪个体育项目方面资质最高。

判别分析的含义判别分析(Discriminant Analysis,简称DA)技术是由费舍(R.A.Fisher)于1936年提出的。

相关文档
最新文档