聚類的基本問題及兩個常用演算法

weixin_33895657發表於2019-01-25

一、聚類的定義及其兩個基本問題

Data clustering is the task of partitioning a set of objects into groups such that the similarity of objects within each group is higher than that of objects across groups.

To cluster data, we need:

A distance measure (to quantify how similar or dissimilar two objects are)

An algorithm for clustering the data based on the distance measure


1、Distance measure

point and point distance

point and cluster distance:等價於point與cluster center point的距離

cluster and cluster distance:等價於cluster center points的距離

2、The Closest-Pair Problem

找出P中距離最近的兩個點:

6778119-a5c88aaf079ee5f9.png
the closest-pair problem

(1)Brute force algorithm: 時間複雜度為O()

6778119-5de0586fa890bc08.png
SlowClosestPair

(2)Divide and conquer algorithm: 時間複雜度O(n(logn)^2)

FastClosestPair的recurrences:

T(n) = 2T(n/2) + f(n) ,f(n)為ClosestPairStrip時間複雜度O(nlogn)

T(2) = O(1)

6778119-04bd7f3c45607282.png
FastClosestPair

ClosestPairStrip時間複雜度:O(nlogn)

6778119-257e6a2c88290a5a.png
ClosestPairStrip


二、兩種常用聚類演算法

1、Hierarchical Clustering 層次聚類

演算法思想:給定data、目標簇數k

step1:首先把每個點當成一個簇

step2:找到最近的兩個簇,把它們合併成一個簇

step3:重複step2直到只剩下k個簇

6778119-e1170be483111ba3.png
層次聚類

2、K-means Clustering K均值聚類

演算法思想:給定data、目標簇數k、迭代次數q

step1:初始化k個centers(如何初始化?)

step2:把每個點分配到離它最近的center

step3:屬於同一個center的點構成一個cluster

step4:重新計算每個cluster的center

step5:重複step2-4 q次

時間複雜度:O(qkn)

6778119-dc54273a6e3f719c.png
K-means聚類

3、如何選擇一個合適的k?

通常情況下,我們並不知道應該聚成多少類,因此我們會選擇不同的k,比較聚出來的簇的質量,衡量簇的質量用error of a cluster:

6778119-2e29eeb71fe2520d.png
聚類誤差



參考資料:Coursera Algorithmic Thinking, Rice University.

相關文章