機(jī)器學(xué)習(xí):K均值算法
一、基礎(chǔ)理論
1. 歐氏距離
想象你在北京,想要知道離上海有多遠(yuǎn),則可以直接計(jì)算這個(gè)城市(兩點(diǎn))間直線的距離,這就是歐氏距離。
在二維平面上,在二維平面上有兩個(gè)點(diǎn)A(x1, y1)和B(x2, y2),歐氏距離為:
圖片
歐氏距離衡量的是兩點(diǎn)間的真實(shí)物理距離,關(guān)注的是位置的絕對(duì)差異。
2. 曼哈頓距離
想象你在曼哈頓,你想從一個(gè)街區(qū)走到另外一個(gè)街區(qū)。你不能走直線,只能沿著街道走,橫著走一條街,再豎著走一條街,所行走的路徑長(zhǎng)度就是曼哈頓距離。
在二維平面上,在二維平面上有兩個(gè)點(diǎn)A(x1, y1)和B(x2, y2),曼哈頓距離就是:
圖片
曼哈頓距離考慮的是在各個(gè)維度上的絕對(duì)差值之和,適用于那些移動(dòng)只能沿坐標(biāo)軸進(jìn)行的情況。
3. 切比雪夫距離
想象你在一個(gè)方格化的城市里,每個(gè)路口都嚴(yán)格地按照東西南北四個(gè)方向排列,就像一個(gè)巨大的棋盤。
你現(xiàn)在在一個(gè)交叉口,想要去往另一個(gè)交叉口,你可以是直行、左轉(zhuǎn)、右轉(zhuǎn)、走對(duì)角線(盡管現(xiàn)實(shí)中不能這么走),但每次只能走一個(gè)街區(qū)。
在所有可能的路線中,街區(qū)數(shù)最大的路線所對(duì)應(yīng)的距離就是切比雪夫距離。
假如在二維平面上有兩個(gè)點(diǎn)A(x1, y1)和B(x2, y2),切比雪夫距離的公式為:
4. 閔可夫斯基距離
假設(shè)我們要比較兩個(gè)點(diǎn)A和B,在n維空間中的坐標(biāo)分別為
圖片
則閔可夫斯基距離的計(jì)算公式是:
圖片
參數(shù)??取不同的值時(shí),則就變成了不同的距離:
- 當(dāng)??=1時(shí),為曼哈頓距離。
- 當(dāng)??=2時(shí),為歐式距離。
- 當(dāng)??趨近于無(wú)窮大時(shí),為切比雪夫距離。
5. 余弦相似度
余弦相似度是一種衡量?jī)蓚€(gè)向量方向相似性的方法。
想象在三維空間有兩個(gè)向量,一個(gè)指向東,另一個(gè)指向東北,這兩個(gè)向量指向角度的接近程度就是余弦相似度。
如果兩個(gè)向量指向完全相同的方向,相似度為1(即它們的夾角為0度);如果指向完全相反,相似度為-1(180度);如果它們垂直,則相似度為0。
余弦相似度的計(jì)算公式:
圖片
兩個(gè)向量的點(diǎn)積除以它們各自的長(zhǎng)度(模)的乘積。
6. 值差異度量
在討論距離計(jì)算時(shí),特征是要直接比較大小的。
對(duì)于連續(xù)數(shù)值可以直接進(jìn)行大小比較,如高度、溫度、成績(jī)等。
而對(duì)于離散特征,又有可以直接比較大小,如教育程度(小學(xué)、中學(xué)、大學(xué))、服裝尺碼(S、M、L、XL)等;還有不可以直接比較大小的,如顏色(紅、綠、藍(lán))、國(guó)籍(中國(guó)、美國(guó)、日本)等。
對(duì)于不可以直接比較大小的離散特征(離散無(wú)序),可以使用值差異度量(Value Difference Metric,VDM)。
VDM的核心思想是離散無(wú)序的數(shù)據(jù)轉(zhuǎn)化為可以量化的差異度量,以進(jìn)行比較和分析。具體步驟為:
(1)權(quán)重分配
A. 頻率倒數(shù)法:
- 計(jì)算頻率:對(duì)于每個(gè)無(wú)序特征,統(tǒng)計(jì)每個(gè)特征值在整個(gè)數(shù)據(jù)集中出現(xiàn)的次數(shù),并計(jì)算出頻率(出現(xiàn)次數(shù)/總樣本數(shù))。
- 計(jì)算權(quán)重:使用頻率的倒數(shù)或其變形來(lái)作為權(quán)重。這是因?yàn)?,頻率較高的屬性值(即較為常見(jiàn)的值)往往提供較少的區(qū)分信息,因此給予較小的權(quán)重;反之,頻率較低的屬性值(罕見(jiàn)值)提供較多區(qū)分信息,應(yīng)給予較高權(quán)重。計(jì)算公式如 wi=1/fi+?,其中 fi 是特征值i的頻率,? 是一個(gè)很小的正數(shù)(如1e-6),用于防止頻率為0時(shí),導(dǎo)致分母為0無(wú)法計(jì)算的問(wèn)題。
B. 信息熵或信息增益。
對(duì)于兩個(gè)具體的值 va 和 vb,它們之間的值差異 D(va,vb) 可以直接根據(jù)它們的權(quán)重 wa 和 wb 計(jì)算。如果 va=vb,則差異為0;如果 va不等于vb,差異通常定義為 ∣wa?wb∣。
如果一個(gè)樣本由多個(gè)無(wú)序特征組成,比如對(duì)象=(特征1,特征2,...,特征??) ,那么可以對(duì)每個(gè)特征應(yīng)用上述差異計(jì)算方法,然后將所有特征的差異值相加或取平均),以獲得兩個(gè)樣本之間的總距離或相似度得分。
假設(shè)有一家電商平臺(tái)想通過(guò)分析顧客的購(gòu)物記錄,來(lái)發(fā)現(xiàn)不同的消費(fèi)群體。顧客數(shù)據(jù)包含以下幾個(gè)無(wú)序特征:
(1)性別:男、女。
(2)地區(qū):北京、上海、廣州、深圳、其他。
(3)商品類別偏好:電子產(chǎn)品、家居用品、服飾、圖書、食品。
VDM計(jì)算的過(guò)程為:
(1)數(shù)據(jù)預(yù)處理與權(quán)重計(jì)算
A. 統(tǒng)計(jì)頻率
- 性別:男(52%),女(48%)
- 地區(qū):北京(25%),上海(29%),廣州(18%),深圳(15%),其他(13%)
- 商品類別偏好:電子產(chǎn)品(30%),家居用品(22%),服飾(25%),圖書(10%),食品(13%)
B. 計(jì)算權(quán)重
- 假設(shè)采用頻率倒數(shù)法,加入一個(gè)微小常數(shù) ?=0.001 。
性別:男(1/0.52 + 0.001)= 1.93, 女(1/0.48 + 0.001)= 2.08。
地區(qū):北京(1/0.25 + 0.001)= 4.04, 上海(1/0.29 + 0.001)= 3.45, 廣州(1/0.18 + 0.001)= 5.59, 深圳(1/0.15 + 0.001)= 6.69, 其他(1/0.13 + 0.001)= 7.69。
商品類別偏好:電子產(chǎn)品(1/0.30 + 0.001)= 3.34, 家居用品(1/0.22 + 0.001)= 4.57, 服飾(1/0.25 + 0.001)= 4.04, 圖書(1/0.10 + 0.001)= 10.01, 食品(1/0.13 + 0.001)= 7.69。
(2)應(yīng)用VDM:利用上面計(jì)算的權(quán)重計(jì)算兩個(gè)顧客間的距離,以進(jìn)行聚類。
- 假設(shè)有兩位顧客A和B,A的屬性為(男,上海,電子產(chǎn)品),B的屬性為(女,北京,圖書)。
- 使用VDM計(jì)算差異:性別差異 = |1.93 - 2.08| = 0.15;地區(qū)差異 = |4.04 - 3.45| = 0.59;商品類別偏好差異 = |3.34 - 10.01| = 6.67。
- 合并差異:總距離 = 0.15 + 0.59 + 6.67 = 7.41。
二、聚類算法
聚類算法是一種無(wú)監(jiān)督學(xué)習(xí)方法,其主要目的是將一組未標(biāo)記的數(shù)據(jù)集分割成多個(gè)子集,稱為簇(Clusters)。也就是聚類算法并不依賴于預(yù)先定義的類別標(biāo)簽,而是通過(guò)分析數(shù)據(jù)本身的特征和結(jié)構(gòu),自動(dòng)發(fā)現(xiàn)數(shù)據(jù)中的隱藏模式或群組。
聚類算法的基本思想是基于相似性度量(如歐氏距離、余弦相似性等)來(lái)量化數(shù)據(jù)點(diǎn)之間的相似度,并利用這些度量來(lái)優(yōu)化某個(gè)目標(biāo)函數(shù),從而實(shí)現(xiàn)數(shù)據(jù)的分組。
聚類算法可以根據(jù)不同的原則和策略進(jìn)行分類,主要有:
(1)劃分聚類(Partitioning Clustering):將數(shù)據(jù)集劃分為預(yù)先指定數(shù)量的簇,每個(gè)數(shù)據(jù)點(diǎn)只能屬于一個(gè)簇。最典型的例子是K-means算法。
(2)層次聚類(Hierarchical Clustering):可以進(jìn)一步細(xì)分為凝聚型(Agglomerative)和分裂型(Divisive)。凝聚型算法從每個(gè)數(shù)據(jù)點(diǎn)作為一個(gè)獨(dú)立的簇開(kāi)始,然后逐步合并最相似的簇,直到滿足某個(gè)終止條件;而分裂型則相反,開(kāi)始時(shí)將所有數(shù)據(jù)視為一個(gè)簇,然后逐漸分裂。常見(jiàn)的算法有AGNES(Agglomerative Nesting)、DIANA(Divisive Analysis)、BIRCH等。
(3)基于密度的聚類(Density-Based Clustering):基于數(shù)據(jù)點(diǎn)的鄰域密度來(lái)確定簇,能夠處理形狀不規(guī)則的簇和含有噪聲的數(shù)據(jù)。DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是最知名的算法之一,它通過(guò)設(shè)置鄰域半徑和最小點(diǎn)數(shù)來(lái)識(shí)別高密度區(qū)域。OPTICS、DENCLUE也是基于密度的算法。
(4)基于網(wǎng)格的聚類(Grid-Based Clustering):將數(shù)據(jù)空間劃分為多個(gè)單元或網(wǎng)格,然后在網(wǎng)格層次上進(jìn)行聚類。STING(Statistical Information Grid-based Clustering)、WaveCluster、CLIQUE(Clustering in Quest)是典型代表,它們適合處理大規(guī)??臻g數(shù)據(jù)庫(kù)。
(5)基于模型的聚類(Model-Based Clustering):假設(shè)數(shù)據(jù)由某些數(shù)學(xué)模型(如高斯分布)生成,并嘗試找到最佳的模型參數(shù)來(lái)描述數(shù)據(jù)。高斯混合模型(GMM, Gaussian Mixture Model)是最常見(jiàn)的例子,它通過(guò)最大似然估計(jì)來(lái)擬合數(shù)據(jù)到多個(gè)高斯分布上。
三、K-means算法
K-means算法是一種將數(shù)據(jù)集劃分為K個(gè)互不相交的子集(簇),使得同一簇內(nèi)的數(shù)據(jù)點(diǎn)彼此相似,而不同簇的數(shù)據(jù)點(diǎn)相異。
K-means(均值)算法的基本操作過(guò)程為:
1. 初始設(shè)置
(1)數(shù)據(jù)集:假設(shè)我們有一個(gè)二維數(shù)據(jù)集,包含以下五個(gè)數(shù)據(jù)點(diǎn):{X(1, 2), Y(2, 1), Z(4, 8), W(5, 9), V(6, 7)}。
(2)初始化質(zhì)心:隨機(jī)選擇兩個(gè)數(shù)據(jù)點(diǎn)作為初始聚類中心(質(zhì)心):C1(2, 3), C2(6, 7)。
2. 執(zhí)行步驟
步驟1: 數(shù)據(jù)點(diǎn)分配
- 對(duì)于數(shù)據(jù)集中的每個(gè)數(shù)據(jù)點(diǎn),計(jì)算到C1和C2的距離。
圖片
- 將每個(gè)數(shù)據(jù)點(diǎn)分配給距離最近的質(zhì)心所在的簇。
假設(shè)結(jié)果為:
C1簇: {X(1, 2), Y(2, 1)}
C2簇: {Z(4, 8), W(5, 9), V(6, 7)}
步驟2: 更新質(zhì)心
圖片
步驟3: 迭代與收斂判斷
- 重復(fù)步驟1和步驟2,直到質(zhì)心的移動(dòng)距離小于某個(gè)預(yù)設(shè)的閾值或達(dá)到預(yù)定的迭代次數(shù)。這一步確保算法收斂于一個(gè)穩(wěn)定的聚類結(jié)果。
需要注意的是:
(1)初始質(zhì)心選擇:K-means算法對(duì)初始質(zhì)心的選擇敏感,不同的初始質(zhì)心可能導(dǎo)致不同的聚類結(jié)果。
(2)簇形狀:K-means假設(shè)簇為凸形狀,可能不適合處理復(fù)雜的數(shù)據(jù)分布,如密度不均或存在異常點(diǎn)的情況。
(3)K值選擇:選擇合適的K值是關(guān)鍵,常用方法有肘部法則(Elbow Method)和輪廓系數(shù)法等。