日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python机器学习---2.聚类算法理论部分

發(fā)布時(shí)間:2023/12/15 python 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python机器学习---2.聚类算法理论部分 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 1.聚類分析
    • 1.1 無監(jiān)督學(xué)習(xí)與聚類算法
      • 1.1.1.旨在理解數(shù)據(jù)自然結(jié)構(gòu)的聚類
      • 1.1.2 用于數(shù)據(jù)處理的聚類
    • 1.2 核心概念
      • 1.2.1 聚類分析
      • 1.2.2 簇
    • 1.3 基于原型的聚類技術(shù): K-Means
      • 1.3.1 基于原型的簇
      • 1.3.2. K-Means基本定義
      • 1.3.3 算法執(zhí)行細(xì)節(jié)
        • 距離衡量方法
        • 文本距離
      • 1.3.4 誤差平方和SSE (Sum of the Squared Error, SSE)
      • 1.3.5 聚類目標(biāo)函數(shù)和質(zhì)心計(jì)算方法

1.聚類分析

1.1 無監(jiān)督學(xué)習(xí)與聚類算法

決策樹、線性和邏輯回歸都是比較常用的機(jī)器學(xué)習(xí)算法,他們雖然有著不同的功能,但卻都屬于“有監(jiān)督學(xué)習(xí)”的一部分,即是說,模型在訓(xùn)練的時(shí)候,即需要特征矩陣X,也需要真實(shí)標(biāo)簽y。機(jī)器學(xué)習(xí)當(dāng)中,還有相當(dāng)一部分算法屬于“無監(jiān)督學(xué)習(xí)”,無監(jiān)督的算法在訓(xùn)練的時(shí)候只需要特征矩陣X,不需要標(biāo)簽。無監(jiān)督學(xué)習(xí)的代表算法有聚類算法、降維算法。


聚類算法是無監(jiān)督類機(jī)器學(xué)習(xí)算法中最常用的一類,其目的是將數(shù)據(jù)劃分成有意義或有用的組(也被稱為簇)。這種劃分可以基于我們的業(yè)務(wù)需求或建模需求來完成,也可以單純地幫助我們探索數(shù)據(jù)的自然結(jié)構(gòu)和分布。如果目標(biāo)是劃分成有意義的組,則簇應(yīng)當(dāng)捕獲數(shù)據(jù)的自然結(jié)構(gòu)。然而,在某種意義下,聚類分析只是解決其他問題(如數(shù)據(jù)匯總)的起點(diǎn)。無論是旨在理解還是應(yīng)用,聚類分析都在廣泛的領(lǐng)域扮演著重要角色。這些領(lǐng)域包括:心理學(xué)和其他社會(huì)科學(xué)、生物學(xué)、統(tǒng)計(jì)學(xué)、模式識(shí)別、信息檢索、機(jī)
器學(xué)習(xí)和數(shù)據(jù)挖掘。
聚類分析在許多實(shí)際問題上都有應(yīng)用,下面是一些具體的例子,按聚類目的是為了理解數(shù)據(jù)自然結(jié)構(gòu)還是用于數(shù)據(jù)處理來組織。

1.1.1.旨在理解數(shù)據(jù)自然結(jié)構(gòu)的聚類

在對(duì)世界的分析和描述中,類,或在概念上有意義的具有公共特性的對(duì)象組,扮演著重要的角色。的確,人類擅長(zhǎng)將對(duì)象劃分成組(聚類),并將特定的對(duì)象指派到這些組(分類)。例如,即使很小的孩子也能很快地將圖片.上的對(duì)象標(biāo)記為建筑物、車輛、人、動(dòng)物、植物等。就理解數(shù)據(jù)而言,簇是潛在的類,而聚類分析是研究自動(dòng)發(fā)現(xiàn)這些類的的技術(shù)。

1.1.2 用于數(shù)據(jù)處理的聚類

聚類分析提供由個(gè)別數(shù)據(jù)對(duì)象到數(shù)據(jù)對(duì)象所指派的簇的抽象。此外,-些聚類技術(shù)使用簇原型(即同一個(gè)簇中用于代表其他對(duì)象的數(shù)據(jù)對(duì)象,例如質(zhì)心等)來刻畫簇特征。這些簇原型可以用作大量數(shù)據(jù)分析和數(shù)據(jù)處理技術(shù)的基礎(chǔ)。因此,就聚類用于數(shù)據(jù)處理層面而言,聚類分析是研究發(fā)現(xiàn)最有代表性的簇原型的技術(shù)。

  • 數(shù)據(jù)降維
    許多數(shù)據(jù)分析技術(shù),如回歸和PCA,都具有O(m2 )或更高的時(shí)間或空間復(fù)雜度(其中m是對(duì)象的個(gè)數(shù))。因此對(duì)于大型數(shù)據(jù)集,這些技術(shù)不切實(shí)際。然而,可以將算法用于僅包含簇原型的數(shù)據(jù)
    集,即每一列只保留其原型,而不是整個(gè)數(shù)據(jù)集。依賴分析類型、原型個(gè)數(shù)和原型代表數(shù)據(jù)的精度,行匯總結(jié)果可以與使用所有數(shù)據(jù)得到的結(jié)果相媲美。
  • 數(shù)據(jù)離散壓縮
    簇原型可以用于數(shù)據(jù)列壓縮。例如,創(chuàng)建一個(gè)包含所有簇原型的表,即每個(gè)原型賦予-個(gè)整數(shù)值,作為它在表中的位置(索引)。 每個(gè)對(duì)象用于它所在的簇相關(guān)聯(lián)的原型的索引表示。這類壓縮稱作
    向量量化(vector quantization),并常常用于圖像、聲音和視頻數(shù)據(jù)。
    無論是用于數(shù)據(jù)降維還是離散壓縮,都將損失-定的數(shù)據(jù)信息量,而能夠使用聚類進(jìn)行信息濃縮的
    數(shù)據(jù)的特點(diǎn)是:
    (1) 許多數(shù)據(jù)對(duì)象之間高度相似
    (2) 某些信息丟失是可以接受的
    (3) 希望大幅度壓縮數(shù)據(jù)量
  • 有效地發(fā)現(xiàn)最近鄰
    很多機(jī)器學(xué)習(xí)算法都是基于距離的模型,即找出最近鄰可能需要計(jì)算所有點(diǎn)對(duì)點(diǎn)之間的距離,如之前介紹的KNN。通常我們可以使用簇原型減少發(fā)現(xiàn)對(duì)象最近鄰所需要計(jì)算的距離的數(shù)目。直觀地說,如果兩個(gè)簇原型相距很遠(yuǎn),則對(duì)應(yīng)簇中的對(duì)象不可能互為近鄰。這樣,為了找出一個(gè)對(duì)象的最近鄰,只需要計(jì)算到鄰近簇中對(duì)象的距離,其中兩個(gè)簇的鄰近性用其原型之間的距離度量,從而大幅降低KNN類算法的計(jì)算量。

1.2 核心概念

在討論具體的聚類技術(shù)之前,還需要討論必要的背景知識(shí)。首先,我們就聚類分析中的核心概念展開討論。

1.2.1 聚類分析

聚類分析僅根據(jù)在數(shù)據(jù)中發(fā)現(xiàn)的描述對(duì)象及其關(guān)系的信息,將數(shù)據(jù)對(duì)象分組。其目標(biāo)是,組內(nèi)的對(duì)象相互之間是相似的(相關(guān)的),而不同組中的對(duì)象是不同的(不相關(guān)的)。組內(nèi)的相似性(同質(zhì)性)越大,組間差別越大,聚類就越好。

1.2.2 簇

簡(jiǎn)單來說,簇就是分類結(jié)果的類,但實(shí)際上簇并沒有明確的定義,并且簇的劃分沒有客觀標(biāo)準(zhǔn),我們可以利用下圖來理解什么是簇。該圖顯示了20個(gè)點(diǎn)和將它們劃分成簇的3種不同方法。標(biāo)記的形狀指示簇的隸屬關(guān)系。下圖分別將數(shù)據(jù)劃分成兩部分和六部分。然而,將2個(gè)較大的簇都劃分成3個(gè)子簇可能是人的視覺系統(tǒng)造成的假象。此外,說這些點(diǎn)形成4個(gè)簇可能也不無道理。該圖表明簇的定義是不精確的,而最好的定義依賴于數(shù)據(jù)的特性和期望的結(jié)果。聚類分析與其他將數(shù)據(jù)對(duì)象分組的技術(shù)相關(guān)。例如,聚類可以看作一種分類,它用類(簇) 標(biāo)號(hào)創(chuàng)建對(duì)
象的標(biāo)記。然而,只能從數(shù)據(jù)導(dǎo)出這些標(biāo)號(hào)。相比之下,KN則是監(jiān)督分類(supervisedclassfication),即使用由類標(biāo)號(hào)已知的對(duì)象開發(fā)的模型,對(duì)新的、無標(biāo)記的對(duì)象賦予類標(biāo)號(hào)。為此,有時(shí)稱聚類分析為非監(jiān)督分類(unsupervised classification)。在數(shù)據(jù)挖掘中,不附加任何條件使用術(shù)語分類時(shí),通常是指監(jiān)督分類。

1.3 基于原型的聚類技術(shù): K-Means

1.3.1 基于原型的簇

此時(shí)簇是對(duì)象的集合,并且其中每個(gè)對(duì)象到定義該簇的原型的距離比到其他簇的原型的距離更近(或更加相似)。 對(duì)于具有連續(xù)屬性的數(shù)據(jù),簇的原型通常是質(zhì)心,即簇中所有點(diǎn)的平均值。當(dāng)質(zhì)心沒有意義時(shí)(例如當(dāng)數(shù)據(jù)具有分類屬性時(shí)),原型通常是中心點(diǎn),即簇中最有代表性的點(diǎn)。對(duì)于許多數(shù)據(jù)類型,原型可以視為最靠近中心的點(diǎn);在這種情況下,通常把基于原型的簇看作基于中心的簇(center-basedcluster)。毫無疑問,這種簇趨向于呈球狀。下圖是一個(gè)基于中心簇的例子。

1.3.2. K-Means基本定義

K均值算法比較簡(jiǎn)單,我們從介紹它的基本算法開始。首先,選擇K個(gè)初始質(zhì)心,其中K是我們指定的參數(shù),即所期望的簇的個(gè)數(shù)。每個(gè)點(diǎn)指派到最近的質(zhì)心,而指派到一個(gè)質(zhì)心的點(diǎn)集為一個(gè)簇。然后,根據(jù)指派到簇的點(diǎn),更新每個(gè)簇的質(zhì)心。重復(fù)指派和更新步驟,直到簇不發(fā)生變化,或等價(jià)地,直到質(zhì)心不發(fā)生變化。
K-Means的核心任務(wù)就是根據(jù)我們?cè)O(shè)定好的K,找出K個(gè)最優(yōu)的質(zhì)心,并將離這些質(zhì)心最近的數(shù)據(jù)分別分配到這些質(zhì)心代表的簇中去。具體過程可以總結(jié)如下:

那什么情況下,質(zhì)心的位置會(huì)不再變化呢?當(dāng)我們找到一個(gè)質(zhì)心,在每次迭代中被分配到這個(gè)質(zhì)心上的樣本都是一致的,即每次新生成的簇都是一致的,所有的樣本點(diǎn)都不會(huì)再?gòu)囊粋€(gè)簇轉(zhuǎn)移到另一個(gè)簇,質(zhì)心就不會(huì)變化了。這個(gè)過程在可以由下圖來顯示,我們規(guī)定,將數(shù)據(jù)分為4簇(K=4) ,其中白色X代表質(zhì)心的位置:

在數(shù)據(jù)集下多次迭代(iteration),就會(huì)有:

可以看見,第六次迭代之后,基本上質(zhì)心的位置就不再改變了,生成的簇也變得穩(wěn)定。此時(shí)我們的聚類就完成了,我們可以明顯看出,K-Means按照數(shù)據(jù)的分布, 將數(shù)據(jù)聚集成了我們規(guī)定的4類,接下來我們就可以按照我們的業(yè)務(wù)需求或者算法需求,對(duì)這四類數(shù)據(jù)進(jìn)行不同的處理。

1.3.3 算法執(zhí)行細(xì)節(jié)

聚類算法聚出的類有什么含義呢?這些類有什么樣的性質(zhì)?我們認(rèn)為,被分在同一個(gè)簇中的數(shù)據(jù)是有相似性的,而不同簇中的數(shù)據(jù)是不同的,當(dāng)聚類完畢之后,我們就要分別去研究每個(gè)簇中的樣本都有什么樣的性質(zhì),從而根據(jù)業(yè)務(wù)需求制定不同的商業(yè)或者科技策略。聚類算法的目的就是追求“簇內(nèi)差異小,簇外差異大”。而這個(gè)“差異”,由樣本點(diǎn)到其所在簇的質(zhì)心的距離來衡量。
對(duì)于一個(gè)簇來說,所有樣本點(diǎn)到質(zhì)心的距離之和越小,我們就認(rèn)為這個(gè)簇中的樣本越相似,簇內(nèi)差異就越小。而距離的衡量方法有多種,令x表示簇中的一個(gè)樣本點(diǎn),μ表示該簇中的質(zhì)心,n表示每個(gè)樣本點(diǎn)中的特征數(shù)目,表示組成點(diǎn)x的每個(gè)特征,則該樣本點(diǎn)到質(zhì)心的距離可以由以下距離來度量。

距離衡量方法

常見距離衡量方法即對(duì)應(yīng)公式如下所示:
● 數(shù)據(jù)距離
對(duì)于數(shù)據(jù)之間的距離而言,在歐式空間中我們常常使用歐幾里得距離,也就是我們常說的距離平方
和開平方,其基本計(jì)算公式如下:

除此之外,還有曼哈頓距離,也被稱作街道距離,該距離的計(jì)算方法相當(dāng)于是歐式距離的1次方表示形式,其基本計(jì)算公式如下:

當(dāng)然,不管是歐式距離還是曼哈頓距離,都可視為閔可夫斯基距離的-種特例,該距離計(jì)算公式如下:

當(dāng)n為1時(shí),就是曼哈頓距離,當(dāng)n為2時(shí)即為歐式距離,當(dāng)n趨于無窮時(shí),即為切比雪夫距離 。

文本距離

而除了數(shù)據(jù)距離之外,距離的衡量還常見于文本數(shù)據(jù)之間,此時(shí)我們常用余弦相似性或杰卡德相似度來進(jìn)行衡量,余弦相似性計(jì)算本質(zhì)上就是計(jì)算余弦夾角,其基本計(jì)算公式如下:

而杰卡德相似度則主要以集合運(yùn)算為主:

1.3.4 誤差平方和SSE (Sum of the Squared Error, SSE)

此處引入機(jī)器學(xué)習(xí)算法中非常重要的概念,誤差平方和,也被稱為組內(nèi)誤差平方和。該概念在聚類和回歸算法中均有廣泛應(yīng)用。在聚類算法中所謂誤差平方和是指每個(gè)數(shù)據(jù)點(diǎn)的誤差,即它到最近所屬類別質(zhì)心的歐幾里得距離,然后求和匯總既得誤差平方和。在聚類算法中,SSE是我們判斷模型是否最優(yōu)的重要指標(biāo),我們希望求得的模型是在給定K值得情況下SSE最小的模型,即在相同的K值情況下聚類模型SSE越小越好,這也是聚類算法最核心的優(yōu)化條件。

1.3.5 聚類目標(biāo)函數(shù)和質(zhì)心計(jì)算方法

聚類算法中的目標(biāo)函數(shù)是實(shí)現(xiàn)聚類這一目標(biāo)所使用的函數(shù),如最小化對(duì)象到其所屬類的質(zhì)心距離等,這里需要注意,-般如果采用距離作為鄰近度衡量標(biāo)準(zhǔn),則目標(biāo)函數(shù)往往是利用最小距離來構(gòu)建聚類類別,而若采用相似度作為鄰近度衡量標(biāo)準(zhǔn),則目標(biāo)函數(shù)就是利用最大化相似度和來構(gòu)建聚類類別。
而質(zhì)心是聚類類別的原型,-般可用均值或中位數(shù)來表示。但無論如何,在一旦確定距離衡量方法或鄰近度函數(shù)(如歐式距離等),并 在模型優(yōu)化條件(SSE最小) 的指導(dǎo)下,目標(biāo)函數(shù)和質(zhì)心選取方法都會(huì)隨之確定,常用鄰近度函數(shù)、質(zhì)心和目標(biāo)函數(shù)組合如下:

而這一切實(shí)際上是建立在嚴(yán)格的數(shù)學(xué)理論推導(dǎo)的基礎(chǔ)之上的,推導(dǎo)方法之一就是利用EM算法進(jìn)行計(jì)算。首先,我們需要定義聚類算法中的符號(hào)集:

然后,誤差平方和可由下列計(jì)算公式表示:

其中,C; 是第i個(gè)簇,x是C;中的點(diǎn),C是第i個(gè)簇的質(zhì)心。我們這里驗(yàn)證最常用的,當(dāng)采用歐式距離時(shí)當(dāng)且僅當(dāng)質(zhì)心為均值的時(shí)候才能夠保證在目標(biāo)函數(shù)的聚類過程中SSE保持最小。要保證在給定K值情況”下總SSE最小,則用梯度下降理論工具可將問題轉(zhuǎn)化為為了保證總SSE最小,K的每一步取值,即K值每增加1,都要能夠最大程度降低SSE,即在給定K值步長(zhǎng)為1的情況下去找SSE下降速度最快的坡度(詳見邏輯回歸)。即簇的最小化SSE的最佳質(zhì)心是簇中各點(diǎn)的均值。同樣可類似證明采用曼哈頓距離時(shí)最佳質(zhì)心選取方案是選取中位數(shù),而當(dāng)采用余弦夾角衡量相似度時(shí),均值是最佳的質(zhì)心計(jì)算方法。

總結(jié)

以上是生活随笔為你收集整理的Python机器学习---2.聚类算法理论部分的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。