1. 程式人生 > >聚類:對聚類效能的評價

聚類:對聚類效能的評價

一、前言

對於有監督的學習方法,我們可以找到許多評價指標,但是要評價無監督演算法的質量,相對來說比較少有提及,正好最近在做一個相關的工作,稍微整理一下。

二、方法

下述提及方法均以k-means演算法為基礎, 不同聚類方法有不同的評價指標,這裡說說k-means常用的兩種方法

1、肘部法則–Elbow Method

我們知道k-means是以最小化樣本與質點平方誤差作為目標函式,將每個簇的質點與簇內樣本點的平方距離誤差和稱為畸變程度(distortions),那麼,對於一個簇,它的畸變程度越低,代表簇內成員越緊密,畸變程度越高,代表簇內結構越鬆散。
畸變程度會隨著類別的增加而降低,但對於有一定區分度的資料,在達到某個臨界點時畸變程度會得到極大改善,之後緩慢下降,這個臨界點就可以考慮為聚類效能較好的點。
基於這個指標,我們可以重複訓練多個k-means模型,選取不同的k值,來得到相對合適的聚類類別,
這裡寫圖片描述


如上圖所示,在k=2時,畸變程度得到大幅改善,可以考慮選取k=2作為聚類數量,附簡單程式碼:

from sklearn.cluster import KMeans
model = KMeans(n_clusters=k)
model.fit(vector_points)
md = model.inertia_ / vector_points.shape[0]

2、輪廓係數–Silhouette Coefficient

對於一個聚類任務,我們希望得到的簇中,簇內儘量緊密,簇間儘量遠離,輪廓係數便是類的密集與分散程度的評價指標,公式表達如下:

s=bama
x(a,b)

其中a代表同簇樣本到彼此間距離的均值,b代表樣本到除自身所在簇外的最近簇的樣本的均值,s取值在[-1, 1]之間。
如果s接近1,代表樣本所在簇合理,若s接近-1代表s更應該分到其他簇中。
同樣,利用上述指標,訓練多個模型,對比選取合適的聚類類別:
這裡寫圖片描述
如上圖, 當k=3時,輪廓係數最大,代表此時聚類的效果相對合理,簡單程式碼如下:
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
model = KMeans(n_clusters=k)
model.fit(vector_points)
s = silhouette_score(vector_points, model.labels_)

三、其他

歐式距離與餘弦距離

疑問:歐式距離與餘弦距離都是常見的距離度量方法,那麼這兩個距離各有什麼特點與應用場景呢?
從兩者公式上來看,歐式距離衡量的是空間中各點的絕對距離特徵,與各個點所在空間位置直接相關;而餘弦距離更多衡量的是一種方向上的差異,根據餘弦角度的大小判斷。
由上述兩者的衡量區別,可以相應的聯想其應用場景,歐式距離應該用在注重個體數值特徵的差異的場景中,但同時因為其度量當時易受數值量級影響,使用前應考慮標準化;
餘弦距離更多體現方向上的差異,對數值不敏感,可以考慮的應用場景比如通過使用者評分來區分使用者興趣的相似度與差異度,假設存在A使用者對某兩個物品評分(3,3),B使用者對某個兩個物品評價(5,5),我們可以發現使用者對物品的認知是一致的,但是歐式距離可能會有很大的差異。

相關推薦

效能評價

一、前言 對於有監督的學習方法,我們可以找到許多評價指標,但是要評價無監督演算法的質量,相對來說比較少有提及,正好最近在做一個相關的工作,稍微整理一下。 二、方法 下述提及方法均以k-means演算法為基礎, 不同聚類方法有不同的評價指標,這裡說說k-

層次、基於劃分的(k-means)、基於密度的、基於模型的

oca 基本思想 初始化 methods 根據 範圍 下使用 對象 適用於 一、層次聚類 1、層次聚類的原理及分類 1)層次法(Hierarchicalmethods)先計算樣本之間的距離。每次將距離最近的點合並到同一個類。然後,再計算類與類之間的距離,將距離最近的類合

oracle中使用impdp數據泵導入數據提示“ORA-31684型已經存在”錯誤的解決

fun 創建用戶 spa ide pos 錯誤 markdown ber dmp 轉載請註明出處:http://blog.csdn.net/dongdong9223/article/details/47448751 本文出自【我是幹勾魚的博客

遊戲開發經驗談(二)全球服遊戲的設計與實現

bbr tro 機房 產品 sql 服務器 通過 簡單 自己實現 上篇文章《遊戲開發經驗談(一):遊戲架構裏隱藏的五個坑及其應對方案》,我們主要講解了遊戲架構設計當中隱藏的一些坑及其應對方案,錯過的小夥伴可以點擊鏈接回溯之前的內容。本期內容,將會重點介紹對戰類全球服遊戲的設

分類(Multi-label classification)效能評價之巨集平均(macro-average)與微平均(micro-average)

通常,我們在評價classifier的效能時使用的是accuracy 考慮在多類分類的背景下 accuracy = (分類正確的樣本個數) / (分類的所有樣本個數) 這樣做其實看上去也挺不錯的,不過可能會出現一個很嚴重的問題:例如某一個不透明的袋子裡面裝了1000臺手

繼承-父有帶參構造

#include <iostream> class A { int a; public: A(int a) { std::cout<<"父類構造\n"; } ~A() { std::cout<<"父類析構\n"; } }; class B

公有繼承中派生StudentPerson成員的訪問

題目內容:已知基類Person的定義如下:class Person{ char Name[20];char Sex;int Age;public:void Register(char *name, int age, char sex) ;void ShowMe();};請通過

派生成員的訪問許可權和派生物件成員的訪問許可權

派生類在類內只可能訪問基類的public和protected成員 派生類物件和基類物件只能訪問自個類的public成員 基類成員在繼承後在派生類中的許可權:                

派生成員的訪問

作用域分辨符:就是::用來限定要訪問的成員所在的類的名稱;表示式是:基類名::成員名;            //資料成員基類名::成員名(引數表)//成員函式加入作用域分辨符可以防止同名覆蓋,也可以保證訪問不出現二義性;(避免二義性,記憶體中只有一份拷貝,用到虛基類)例子:

機器學習實戰---讀書筆記 第10章 利用K均值演算法未標註資料分組---1

#!/usr/bin/env python # encoding: utf-8 import os from matplotlib import pyplot as plt from numpy import * ''' 讀書筆記之--<<機器學習實戰>>--第10章_

Tensorflow例項1人工資料集的K均值

2.6.7 例1–對人工資料集的K均值聚類 import tensorflow as tf import numpy as np import time import matplotlib.pyplot as plt import matplotlib from sklearn

sklearn實戰文件進行分析(KMeans演算法)

%matplotlib inline import matplotlib.pyplot as plt import numpy as np from time import time from sklearn.datasets import load_fi

Python機器學習(1)KMeans

ima mea arr src ont array imp rom open Python進行KMeans聚類是比較簡單的,首先需要import numpy,從sklearn.cluster中import KMeans模塊: import numpy as np f

推導 end 常用 nal poi 但是 blog 正是 四個步驟 http://www.cnblogs.com/fengyan/archive/2012/06/21/2553999.html 譜聚類 給你博客園上若幹個博客,讓你將它們分成K類,你會怎樣做

SLS機器學習介紹(02)時序建模

文章系列連結 SLS機器學習介紹(01):時序統計建模 SLS機器學習介紹(02):時序聚類建模 SLS機器學習介紹(03):時序異常檢測建模 SLS機器學習介紹(04):規則模式挖掘 前言 第一篇文章SLS機器學習介紹(01):時序統計建模上週更新完,一下子炸出了很多潛伏的業

K-measn 雜談

0、K-means演算法,也稱 K-平均或 K-均值演算法,是 MacQueen於1967年首次提出的,它是一種應用最廣泛的硬聚類演算法。 1、在 k-means 聚類模型中,相似度函式是關係到聚類效果好壞的關鍵因素。 2、聚類是模式識別和計算機視覺中的經典概念,其目的是將一個集

ML之Clustering之普演算法演算法的相關論文、主要思路、關鍵步驟、程式碼實現等相關配圖之詳細攻略

ML之Clustering之普聚類演算法:普聚類演算法的相關論文、主要思路、關鍵步驟、程式碼實現等相關配圖之詳細攻略   普聚類演算法的相關論文 1、論文推薦 Clustering by fast search and find of density peak.

K-means-時發現異常

11月4日和5日,BigML加入哈馬德濱哈利法大學的卡達計算研究所(QCRI),將機器學習學校帶到卡達的多哈!我們很高興有機會與QCRI合作。 在會議期間,Sanjay Chawla博士討論了他的異常聚類演算法,k-means-。我們認為使用我們的特定領域語言實現機器學習工作流程WhizzML的變體來實

在Spark SQL人類資料實現K-Means,並中心格式化輸出

簡介 本篇博文對UCI提供的 Machine-Learning-Databases 資料集進行資料分析,並通過K-Means模型實現聚類,最後格式化輸出聚類中心點。 本文主要包括以下內容: 通過VectorAssembler來將多列資料合成一列features

目錄空間演算法及時空演算法

1.在本例項中,如果想將程式碼直接執行需注意以下幾點: Python版本3.X(本人使用的是Python 3.6) numpy版本 1.13.3(其他版本未實驗) scipy版本 0.19.1(其他版本未實驗) matplotlib版本 2.1.0(其他版本