|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924 |
- {
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# k-Means"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "\n",
- "根据训练样本中是否包含标签信息,机器学习可以分为 **监督学习** 和 **无监督学习**。`聚类算法`是典型的无监督学习,其训练的样本中值包含`样本的特征`,**不包含样本的标签信息**。在聚类算法中,利用样本的特征,将具有相似特征空间分布的样本划分到同一类别中。\n",
- "\n",
- "\n",
- ""
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 1. 方法\n",
- "\n",
- "由于具有出色的速度和良好的可扩展性,K-Means聚类算法最经典的聚类方法。***k-Means算法是一个重复移动类中心点(重心,centroids)的过程***:\n",
- "* 移动中心点到其包含成员的平均位置;\n",
- "* 然后重新划分其内部成员。\n",
- "\n",
- "`k`是算法中的超参数,表示类的数量;k-Means可以自动分配样本到不同的类,但是不能决定究竟要分几个类。`k`必须是一个比训练集样本数小的正整数。有时,类的数量是由问题内容指定的。例如,一个鞋厂有三种新款式,它想知道每种新款式都有哪些潜在客户,于是它调研客户,然后从数据里找出三类。也有一些问题没有指定聚类的数量,最优的聚类数量是不确定的。\n",
- "\n",
- "k-Means的参数是类的重心位置和其内部观测值的位置。与广义线性模型和决策树类似,k-Means参数的最优解也是以代价函数最小化为目标。k-Means代价函数公式如下:\n",
- "$$\n",
- "J = \\sum_{k=1}^{K} \\sum_{i \\in C_k} | x_i - u_k|^2\n",
- "$$\n",
- "\n",
- "$u_k$是第$k$个类的重心位置,定义为:\n",
- "$$\n",
- "u_k = \\frac{1}{|C_k|} \\sum_{i \\in C_k} x_i\n",
- "$$\n",
- "\n",
- "\n",
- "成本函数是各个类畸变程度(distortions)之和。每个类的畸变程度等于该类重心与其内部成员位置距离的平方和。若类内部的成员彼此间越紧凑则类的畸变程度越小,反之,若类内部的成员彼此间越分散则类的畸变程度越大。"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 2. 算法\n",
- "求解成本函数最小化的参数就是一个重复配置每个类包含的观测值,并不断移动类重心的过程。\n",
- "\n",
- "输入:$T=\\{ x_1, x_2, ..., x_N\\}$,其中$x_i \\in R_n$,i=1,2...N\n",
- "\n",
- "输出:聚类集合$C_k$, 聚类中心$u_k$, 其中k=1,2,...K\n",
- "\n",
- "1. 初始化类的重心$u_k$,可以随机选择样本作为聚类中心\n",
- "2. 每次迭代的时候,把所有样本分配到离它们最近的类,即更新聚类集合$C_k$\n",
- "3. 然后把重心移动到该类全部成员位置的平均值那里,即更新$u_k$\n",
- "4. 若达到最大迭代步数,或两次迭代差小于设定的阈值则算法结束,否则重复步骤2\n",
- "\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 3. 计算过程演示"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<Figure size 432x288 with 1 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "%matplotlib inline\n",
- "import matplotlib.pyplot as plt\n",
- "import numpy as np\n",
- "\n",
- "X0 = np.array([7, 5, 7, 3, 4, 1, 0, 2, 8, 6, 5, 3])\n",
- "X1 = np.array([5, 7, 7, 3, 6, 4, 0, 2, 7, 8, 5, 7])\n",
- "plt.figure()\n",
- "plt.axis([-1, 9, -1, 9])\n",
- "plt.grid(True)\n",
- "plt.plot(X0, X1, 'k.');"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "假设K-Means初始化时,将第一个类的重心设置在第5个样本,第二个类的重心设置在第11个样本.那么我们可以把每个实例与两个重心的距离都计算出来,将其分配到最近的类里面。计算结果如下表所示:\n",
- "\n",
- "\n",
- "新的重心位置和初始聚类结果如下图所示。第一类用X表示,第二类用点表示。重心位置用稍大的点突出显示。\n",
- "\n",
- "\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<Figure size 432x288 with 1 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "C1 = [1, 4, 5, 9, 11]\n",
- "C2 = list(set(range(12)) - set(C1))\n",
- "X0C1, X1C1 = X0[C1], X1[C1]\n",
- "X0C2, X1C2 = X0[C2], X1[C2]\n",
- "plt.figure()\n",
- "plt.title('1st iteration results')\n",
- "plt.axis([-1, 9, -1, 9])\n",
- "plt.grid(True)\n",
- "plt.plot(X0C1, X1C1, 'rx')\n",
- "plt.plot(X0C2, X1C2, 'g.')\n",
- "plt.plot(4,6,'rx',ms=12.0)\n",
- "plt.plot(5,5,'g.',ms=12.0);"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "现在我们重新计算两个类的重心,把重心移动到新位置,并重新计算各个样本与新重心的距离,并根据距离远近为样本重新归类。结果如下表所示:\n",
- "\n",
- "\n",
- "\n",
- "画图结果如下:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<Figure size 432x288 with 1 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "C1 = [1, 2, 4, 8, 9, 11]\n",
- "C2 = list(set(range(12)) - set(C1))\n",
- "X0C1, X1C1 = X0[C1], X1[C1]\n",
- "X0C2, X1C2 = X0[C2], X1[C2]\n",
- "plt.figure()\n",
- "plt.title('2nd iteration results')\n",
- "plt.axis([-1, 9, -1, 9])\n",
- "plt.grid(True)\n",
- "plt.plot(X0C1, X1C1, 'rx')\n",
- "plt.plot(X0C2, X1C2, 'g.')\n",
- "plt.plot(3.8,6.4,'rx',ms=12.0)\n",
- "plt.plot(4.57,4.14,'g.',ms=12.0);"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "我们再重复一次上面的做法,把重心移动到新位置,并重新计算各个样本与新重心的距离,并根据距离远近为样本重新归类。结果如下表所示:\n",
- "\n",
- "\n",
- "画图结果如下:\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<Figure size 432x288 with 1 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "C1 = [0, 1, 2, 4, 8, 9, 10, 11]\n",
- "C2 = list(set(range(12)) - set(C1))\n",
- "X0C1, X1C1 = X0[C1], X1[C1]\n",
- "X0C2, X1C2 = X0[C2], X1[C2]\n",
- "plt.figure()\n",
- "plt.title('3rd iteration results')\n",
- "plt.axis([-1, 9, -1, 9])\n",
- "plt.grid(True)\n",
- "plt.plot(X0C1, X1C1, 'rx')\n",
- "plt.plot(X0C2, X1C2, 'g.')\n",
- "plt.plot(5.5,7.0,'rx',ms=12.0)\n",
- "plt.plot(2.2,2.8,'g.',ms=12.0);"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "再重复上面的方法就会发现类的重心不变了,k-Means会在条件满足的时候停止重复聚类过程。通常,条件是前后两次迭代的成本函数值的差达到了限定值,或者是前后两次迭代的重心位置变化达到了限定值。如果这些停止条件足够小,k-Means就能找到最优解。不过这个最优解不一定是全局最优解。\n",
- "\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 4. Program"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<matplotlib.figure.Figure at 0x7f9a42914e80>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# This line configures matplotlib to show figures embedded in the notebook, \n",
- "# instead of opening a new window for each figure. More about that later. \n",
- "# If you are using an old version of IPython, try using '%pylab inline' instead.\n",
- "%matplotlib inline\n",
- "\n",
- "# import librarys\n",
- "import numpy as np\n",
- "from sklearn.datasets import make_blobs\n",
- "import matplotlib.pyplot as plt\n",
- "import random\n",
- "\n",
- "# 生成数据\n",
- "centers = [(7, 0), (0, 0), (5, 5)]\n",
- "n_samples = 500\n",
- "\n",
- "X, y = make_blobs(n_samples=n_samples, n_features=2, \n",
- " cluster_std=1.0, centers=centers, \n",
- " shuffle=True, random_state=42)\n",
- "\n",
- "# 画出数据\n",
- "plt.figure(figsize=(15, 9))\n",
- "\n",
- "marksamples = ['or', 'ob', 'og', 'ok', '^r', '^b', '<g'] # 样本图形标记\n",
- "for i in range(len(X)):\n",
- " markindex = y[i]\n",
- " plt.plot(X[i, 0], X[i, 1], marksamples[markindex], markersize=10)\n",
- " \n",
- "plt.savefig(\"fig-res/k-means_data.pdf\")\n",
- "plt.show()\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {
- "collapsed": true
- },
- "outputs": [],
- "source": [
- "# k-means\n",
- "\n",
- "def calc_distance(v1, v2):\n",
- " \"\"\"\n",
- " 计算两个向量的距离\n",
- " \n",
- " v1 - 特征1\n",
- " v2 - 特征2\n",
- " \"\"\"\n",
- " return np.sum(np.square(v1-v2))\n",
- "\n",
- "def rand_cluster_cents(X, k):\n",
- " \"\"\"\n",
- " 初始化聚类中心:通过在区间范围随机产生的值作为新的中心点\n",
- " \n",
- " X - 数据样本\n",
- " k - 聚类个数\n",
- " \"\"\"\n",
- "\n",
- " # 样本数\n",
- " n=np.shape(X)[0]\n",
- " \n",
- " # 生成随机下标列表\n",
- " dataIndex=list(range(n))\n",
- " random.shuffle(dataIndex)\n",
- " centroidsIndex = dataIndex[:k]\n",
- " \n",
- " # 返回随机的聚类中心\n",
- " return X[centroidsIndex, :]\n",
- "\n",
- "def kmeans(X, k):\n",
- " \"\"\"\n",
- " kMeans算法\n",
- " \n",
- " X - 数据样本\n",
- " k - 聚类个数\n",
- " \"\"\"\n",
- " # 样本总数\n",
- " n = np.shape(X)[0]\n",
- " \n",
- " # 分配样本到最近的簇:存[簇序号,距离的平方] (n行 x 2列)\n",
- " clusterAssment = np.zeros((n, 2))\n",
- "\n",
- " # step1: 通过随机产生的样本点初始化聚类中心\n",
- " centroids = rand_cluster_cents(X, k)\n",
- " print('最初的中心=', centroids)\n",
- "\n",
- " iterN = 0\n",
- " \n",
- " while True: \n",
- " clusterChanged = False\n",
- " \n",
- " # step2:分配到最近的聚类中心对应的簇中\n",
- " for i in range(n):\n",
- " minDist = np.inf;\n",
- " minIndex = -1\n",
- " for j in range(k):\n",
- " # 计算第i个样本到第j个中心点的距离\n",
- " distJI = calc_distance(centroids[j, :], X[i, :])\n",
- " if distJI < minDist:\n",
- " minDist = distJI\n",
- " minIndex = j\n",
- " \n",
- " # 样本上次分配结果跟本次不一样,标志位clusterChanged置True\n",
- " if clusterAssment[i, 0] != minIndex:\n",
- " clusterChanged = True\n",
- " clusterAssment[i, :] = minIndex, minDist ** 2 # 分配样本到最近的簇\n",
- " \n",
- " iterN += 1\n",
- " sse = sum(clusterAssment[:, 1])\n",
- " print('the SSE of %d' % iterN + 'th iteration is %f' % sse)\n",
- " \n",
- " # step3:更新聚类中心\n",
- " for cent in range(k): # 样本分配结束后,重新计算聚类中心\n",
- " ptsInClust = X[clusterAssment[:, 0] == cent, :]\n",
- " centroids[cent, :] = np.mean(ptsInClust, axis=0)\n",
- " \n",
- " # 如果聚类重心没有发生改变,则退出迭代\n",
- " if not clusterChanged:\n",
- " break\n",
- " \n",
- " return centroids, clusterAssment\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "最初的中心= [[-0.47103831 0.23204994]\n",
- " [ 7.49671415 -0.1382643 ]\n",
- " [ 4.96044485 5.6815007 ]]\n",
- "the SSE of 1th iteration is 4705.401208\n",
- "the SSE of 2th iteration is 3502.239035\n"
- ]
- }
- ],
- "source": [
- "# 进行k-means聚类\n",
- "k = 3 # 用户定义聚类数\n",
- "mycentroids, clusterAssment = kmeans(X, k)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<matplotlib.figure.Figure at 0x7f9a4282e9e8>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<matplotlib.figure.Figure at 0x7f9a40d8bb70>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "def datashow(dataSet, k, centroids, clusterAssment, fnFig=None): # 二维空间显示聚类结果\n",
- " from matplotlib import pyplot as plt\n",
- " num, dim = np.shape(dataSet) # 样本数num ,维数dim\n",
- "\n",
- " if dim != 2:\n",
- " print('sorry,the dimension of your dataset is not 2!')\n",
- " return 1\n",
- " marksamples = ['or', 'ob', 'og', 'ok', '^r', '^b', '<g'] # 样本图形标记\n",
- " if k > len(marksamples):\n",
- " print('sorry,your k is too large,please add length of the marksample!')\n",
- " return 1\n",
- " # 绘所有样本\n",
- " for i in range(num):\n",
- " markindex = int(clusterAssment[i, 0]) # 矩阵形式转为int值, 簇序号\n",
- " # 特征维对应坐标轴x,y;样本图形标记及大小\n",
- " plt.plot(dataSet[i, 0], dataSet[i, 1], marksamples[markindex], markersize=6)\n",
- "\n",
- " # 绘中心点\n",
- " markcentroids = ['o', '*', '^'] # 聚类中心图形标记\n",
- " label = ['0', '1', '2']\n",
- " c = ['yellow', 'pink', 'red']\n",
- " for i in range(k):\n",
- " plt.plot(centroids[i, 0], centroids[i, 1], markcentroids[i], markersize=15, label=label[i], c=c[i])\n",
- " #plt.legend(loc='upper left') #图例\n",
- " plt.xlabel('feature 1')\n",
- " plt.ylabel('feature 2')\n",
- "\n",
- " plt.title('k-means cluster result') # 标题\n",
- " if fnFig != None: plt.savefig(fnFig)\n",
- " plt.show()\n",
- " \n",
- " \n",
- "# 画出实际图像\n",
- "def trgartshow(dataSet, k, labels, fnFig=None):\n",
- " from matplotlib import pyplot as plt\n",
- "\n",
- " num, dim = np.shape(dataSet)\n",
- " label = ['0', '1', '2']\n",
- " marksamples = ['ob', 'or', 'og', 'ok', '^r', '^b', '<g']\n",
- " # 通过循环的方式,完成分组散点图的绘制\n",
- " for i in range(num):\n",
- " plt.plot(dataSet[i, 0], dataSet[i, 1], marksamples[int(labels[i])], markersize=6)\n",
- "\n",
- " \n",
- " # 添加轴标签和标题\n",
- " plt.xlabel('feature 1')\n",
- " plt.ylabel('feature 2')\n",
- " plt.title('true result') # 标题\n",
- "\n",
- " # 显示图形\n",
- " if fnFig != None: plt.savefig(fnFig)\n",
- " plt.show()\n",
- " # label=labels.iat[i,0]\n",
- " \n",
- "# 绘图显示\n",
- "datashow(X, k, mycentroids, clusterAssment, \"fig-res/k-means_predict.pdf\")\n",
- "trgartshow(X, 3, y, \"fig-res/k-means_groundtruth.pdf\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 5. 利用sklearn进行聚类\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 12,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "<Figure size 432x288 with 0 Axes>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<Figure size 288x288 with 1 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "from sklearn.datasets import load_digits\n",
- "import matplotlib.pyplot as plt \n",
- "from sklearn.cluster import KMeans\n",
- "\n",
- "# load digital data\n",
- "digits, dig_label = load_digits(return_X_y=True)\n",
- "\n",
- "# draw one digital\n",
- "plt.gray() \n",
- "plt.matshow(digits[0].reshape([8, 8])) \n",
- "plt.show() \n",
- "\n",
- "# calculate train/test data number\n",
- "N = len(digits)\n",
- "N_train = int(N*0.8)\n",
- "N_test = N - N_train\n",
- "\n",
- "# split train/test data\n",
- "x_train = digits[:N_train, :]\n",
- "y_train = dig_label[:N_train]\n",
- "x_test = digits[N_train:, :]\n",
- "y_test = dig_label[N_train:]\n",
- "\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 13,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<Figure size 432x288 with 10 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "# do kmeans\n",
- "kmeans = KMeans(n_clusters=10, random_state=0).fit(x_train)\n",
- "\n",
- "# kmeans.labels_ - output label\n",
- "# kmeans.cluster_centers_ - cluster centers\n",
- "\n",
- "# draw cluster centers\n",
- "fig, axes = plt.subplots(nrows=1, ncols=10)\n",
- "for i in range(10):\n",
- " img = kmeans.cluster_centers_[i].reshape(8, 8)\n",
- " axes[i].imshow(img)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 6. 深入思考\n",
- "\n",
- "1. 如何计算聚类的精度?\n",
- "2. 如何匹配聚类的类别和真实类别?\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 7. 评估聚类性能\n",
- "\n",
- "### 7.1 方法1 - ARI\n",
- "\n",
- "如果被用来评估的数据本身带有正确的类别信息,则利用Adjusted Rand Index(ARI)对聚类结果进行评估,ARI与分类问题中计算准确性的方法类似,兼顾了类簇无法和分类标记一一对应的问题。\n",
- "\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 14,
- "metadata": {
- "scrolled": true
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "ari_train = 0.687021\n"
- ]
- }
- ],
- "source": [
- "from sklearn.metrics import adjusted_rand_score\n",
- "\n",
- "ari_train = adjusted_rand_score(y_train, kmeans.labels_)\n",
- "print(\"ari_train = %f\" % ari_train)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "contingency表的定义:\n",
- "\n",
- "\n",
- "其中$X$为真实类别,$Y$为聚类的簇\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "#### 7.1.1 RI\n",
- "为了方便理解ARI,先讨论一下RI,也就是rand index,是ARI的基础方法。\n",
- "\n",
- "假如有两类,那么针对这两类的的RI评价指标为:\n",
- "\n",
- "$$\n",
- "R = \\frac{a + b}{a+b+c+d}\n",
- "$$\n",
- "\n",
- "a,b,c,d分别代表的含义为:\n",
- "* a : 应该在一类,最后聚类到一类的数量,\n",
- "* b : 不应该在一类,最后聚类结果也没把他们聚类在一起的数量。\n",
- "* c和d那么就是应该在一起而被分开的和不应该在一起而被迫在一起的。毕竟强扭的瓜不甜,c和d固然是错误的。\n",
- "\n",
- "所以从R的表达式中可以看出,a和b是对的,这样能够保证R在0到1之间,而且,聚类越准确,指标越接近于1.\n",
- "\n",
- "这里有一个关键性的问题,就是什么叫数量?怎么去计算?准确的说,是配对的数量。比如说a是应该在一起而真的幸福的在一起了的数量,这显然就应该像人类一样按照小夫妻数量计算,但是我们的样本可不管一夫一妻制,任意选两个就是一个配对,所以,就是 $n(n-1)/2$ 这样来计算,也就是组合数,n个当中选两个的选法。同时我们看到,分母其实是所有配对的总和,所以,我们最后可以写成这样:\n",
- "\n",
- "$$\n",
- "R = \\frac{a + b}{a+b+c+d} = \\frac{a + b}{\\binom{n}{2}}\n",
- "$$"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "#### 7.1.2 ARI\n",
- "\n",
- "有了先前RI的感性理解之后,接下来解释一下ARI。\n",
- "\n",
- "RI有一个缺点,就是惩罚力度不够,换句话说,大家普遍得分比较高,没什么区分度,遍地80分。这样的话,往往是考试的制度不合适,于是就诞生出了ARI,这个指标相对于RI就很有区分度了。\n",
- "\n",
- "$$\n",
- "ARI = \\frac{Index - ExpctedIndex}{MaxIndex - ExpectedIndex}\n",
- "$$\n",
- "\n",
- "具体的公式是:\n",
- "$$\n",
- "ARI = \\frac{ \\sum_{ij} \\binom{n_{ij}}{2} - \\left[ \\sum_i \\binom{a_i}{2} \\sum_j \\binom{b_j}{2} \\right] / \\binom{n}{2} }{ \\frac{1}{2} \\left[ \\sum_i \\binom{a_i}{2} + \\sum_j \\binom{b_j}{2} \\right] - \\left[ \\sum_i \\binom{a_i}{2} \\sum_j \\binom{b_j}{2} \\right] / \\binom{n}{2} }\n",
- "$$\n",
- "\n",
- "ARI取值范围为[-1,1],值越大越好,反映两种划分的重叠程度,使用该度量指标需要数据本身有类别标记。\n",
- "\n",
- "* $ \\sum_{ij} \\binom{n_{ij}}{2}$ : $n_{ij}$代表的是聚类之后在$i$类,应该在$j$类的样本数量,很显然,这一求和,就是RI中的a,应该在一起而真的在一起的数量。\n",
- "\n",
- "* $\\frac{1}{2} \\left[ \\sum_i \\binom{a_i}{2} + \\sum_j \\binom{b_j}{2} \\right]$ : 是如果聚类是完全对的,那么就应该是$a$, $b$的所有组合可能之和,所以在表达式里面叫做MaxIndex。\n",
- "\n",
- "* $\\left[ \\sum_i \\binom{a_i}{2} \\sum_j \\binom{b_j}{2} \\right] / \\binom{n}{2}$ 是a的期望\n",
- "$$\n",
- "E(\\sum_{ij} \\binom{n_{ij}}{2}) = \\sum_i \\binom{n_i}{2} \\sum_j \\binom{n_j}{2} / \\binom{n}{2}\n",
- "$$\n",
- "\n",
- "假设配对矩阵是这样的,共有n(n-1)/2个配对方法。在行方向计算出可能取到的配对数,在列方向计算可能取到的配对数,相乘以后,除以总的配对数,这就是a的期望了。"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "\n",
- "\n",
- "* [ARI聚类效果评价指标](https://blog.csdn.net/qtlyx/article/details/52678895)\n",
- "* [ARI reference](https://davetang.org/muse/2017/09/21/adjusted-rand-index/)\n",
- "* [聚类性能评估-ARI(调兰德指数)](https://zhuanlan.zhihu.com/p/145856959)\n"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "\n",
- "### 7.2 方法2 - 轮廓系数\n",
- "如果被用来评估的数据没有所属类别,则使用轮廓系数(Silhouette Coefficient)来度量聚类结果的质量,评估聚类的效果。**轮廓系数同时兼顾了聚类的凝聚度和分离度,取值范围是[-1,1],轮廓系数越大,表示聚类效果越好。** \n",
- "\n",
- "轮廓系数的具体计算步骤: \n",
- "1. 对于已聚类数据中第i个样本$x_i$,计算$x_i$与其同一类簇内的所有其他样本距离的平均值,记作$a_i$,用于量化簇内的凝聚度 \n",
- "2. 选取$x_i$外的一个簇$b$,计算$x_i$与簇$b$中所有样本的平均距离,遍历所有其他簇,找到最近的这个平均距离,记作$b_i$,用于量化簇之间分离度 \n",
- "3. 对于样本$x_i$,轮廓系数为$sc_i = \\frac{b_i−a_i}{max(b_i,a_i)}$ \n",
- "4. 最后,对所有样本集合$\\mathbf{X}$求出平均值,即为当前聚类结果的整体轮廓系数。"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<matplotlib.figure.Figure at 0x7f497ea9f860>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<matplotlib.figure.Figure at 0x7f497c161f60>"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "import numpy as np\n",
- "from sklearn.cluster import KMeans\n",
- "from sklearn.metrics import silhouette_score\n",
- "import matplotlib.pyplot as plt\n",
- "\n",
- "plt.rcParams['figure.figsize']=(10,10)\n",
- "plt.subplot(3,2,1)\n",
- "\n",
- "x1=np.array([1,2,3,1,5,6,5,5,6,7,8,9,7,9]) #初始化原始数据\n",
- "x2=np.array([1,3,2,2,8,6,7,6,7,1,2,1,1,3])\n",
- "X=np.array(list(zip(x1,x2))).reshape(len(x1),2)\n",
- "\n",
- "plt.xlim([0,10])\n",
- "plt.ylim([0,10])\n",
- "plt.title('Instances')\n",
- "plt.scatter(x1,x2)\n",
- "\n",
- "colors=['b','g','r','c','m','y','k','b']\n",
- "markers=['o','s','D','v','^','p','*','+']\n",
- "\n",
- "clusters=[2,3,4,5,8]\n",
- "subplot_counter=1\n",
- "sc_scores=[]\n",
- "for t in clusters:\n",
- " subplot_counter +=1\n",
- " plt.subplot(3,2,subplot_counter)\n",
- " kmeans_model=KMeans(n_clusters=t).fit(X) #KMeans建模\n",
- "\n",
- " for i,l in enumerate(kmeans_model.labels_):\n",
- " plt.plot(x1[i],x2[i],color=colors[l],marker=markers[l],ls='None')\n",
- "\n",
- " plt.xlim([0,10])\n",
- " plt.ylim([0,10])\n",
- "\n",
- " sc_score=silhouette_score(X,kmeans_model.labels_,metric='euclidean') #计算轮廓系数\n",
- " sc_scores.append(sc_score)\n",
- "\n",
- " plt.title('k=%s,silhouette coefficient=%0.03f'%(t,sc_score))\n",
- "\n",
- "plt.figure()\n",
- "plt.plot(clusters,sc_scores,'*-') #绘制类簇数量与对应轮廓系数关系\n",
- "plt.xlabel('Number of Clusters')\n",
- "plt.ylabel('Silhouette Coefficient Score')\n",
- "plt.savefig('fig-res/k-means_silhouette_coef.pdf')\n",
- "plt.show() "
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 8. 如何确定K\n",
- "\n",
- "利用“肘部观察法”可以粗略地估计相对合理的聚类个数。K-means模型最终期望*所有数据点到其所属的类簇距离的平方和趋于稳定,所以可以通过观察这个值随着K的走势来找出最佳的类簇数量。理想条件下,这个折线在不断下降并且趋于平缓的过程中会有斜率的拐点,这表示从这个拐点对应的K值开始,类簇中心的增加不会过于破坏数据聚类的结构*。\n",
- "\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 17,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<Figure size 432x288 with 1 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "%matplotlib inline\n",
- "import numpy as np\n",
- "from sklearn.cluster import KMeans\n",
- "from scipy.spatial.distance import cdist\n",
- "import matplotlib.pyplot as plt\n",
- "\n",
- "cluster1=np.random.uniform(0.5,1.5,(2,10))\n",
- "cluster2=np.random.uniform(5.5,6.5,(2,10))\n",
- "cluster3=np.random.uniform(3,4,(2,10))\n",
- "\n",
- "X=np.hstack((cluster1,cluster2,cluster3)).T\n",
- "plt.scatter(X[:,0],X[:,1])\n",
- "plt.xlabel('x1')\n",
- "plt.ylabel('x2')\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 18,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "<Figure size 432x288 with 1 Axes>"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
- "source": [
- "K=range(1,10)\n",
- "meandistortions=[]\n",
- "\n",
- "for k in K:\n",
- " kmeans=KMeans(n_clusters=k)\n",
- " kmeans.fit(X)\n",
- " meandistortions.append(\\\n",
- " sum(np.min(cdist(X,kmeans.cluster_centers_,'euclidean'),axis=1))/X.shape[0])\n",
- "\n",
- "plt.plot(K,meandistortions,'bx-')\n",
- "plt.xlabel('k')\n",
- "plt.ylabel('Average Dispersion')\n",
- "plt.title('Selecting k with the Elbow Method')\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "从上图可见,类簇数量从1降到2再降到3的过程,更改K值让整体聚类结构有很大改变,这意味着新的聚类数量让算法有更大的收敛空间,这样的K值不能反映真实的类簇数量。而当K=3以后再增大K,平均距离的下降速度显著变缓慢,这意味着进一步增加K值不再会有利于算法的收敛,同时也暗示着K=3是相对最佳的类簇数量。"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## 参考资料\n",
- "* [机器学习聚类算法之K-Means](https://www.biaodianfu.com/k-means.html)"
- ]
- }
- ],
- "metadata": {
- "jupytext_formats": "ipynb,py",
- "kernelspec": {
- "display_name": "Python 3",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.5.4"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
- }
|