8000字詳解“聚類算法”,從理論實現(xiàn)到案例說明
算法可以說是AI技術(shù)的核心,想入門AI的同學,了解一些算法知識是很有必要的。這篇文章里,作者就介紹并梳理分析了AI無監(jiān)督學習中的聚類算法,一起來看看其工作原理和應用場景吧。
各位看官:
歡迎一起探索AI的世界。就在開年的2月21日,國務院國資委召開中央企業(yè)人工智能專題推進會扎實推動AI賦能產(chǎn)業(yè)煥新,這一消息在國務院國有資產(chǎn)監(jiān)督管理委員會官網(wǎng)上公布,國家隊的重視也是全民擁抱AI的大好時機。
OpenAI和Sora掀起了一股全民科技熱潮,又加之當前經(jīng)濟需要新的科技和新的需求來推動市場發(fā)展,原因很多,錯綜復雜。但無論是因為什么,擁抱AI都會成為當今互聯(lián)網(wǎng)從業(yè)人員的不二選擇。
現(xiàn)如今,大家都多多少少知道一些AI,特別是一些AI應用的名稱,但論及AI的技術(shù)原理,并非人人皆知。當然,大部分人也不需要知道背后的原理,就像我們?nèi)ゲ蛷d吃飯時,會盡情品嘗菜肴的美味但不一定需要知道每樣食材的品種和產(chǎn)地。
那么,哪一類人群需要在擁抱AI的浪潮中還需習得AI的技術(shù)原理呢?
是原互聯(lián)網(wǎng)行業(yè)要轉(zhuǎn)型AI行業(yè)的一批人,或者剛畢業(yè)要進入AI行業(yè)的新手小白,這些人是市場上新誕生的一群AI從業(yè)人員,也正是這些人,將有更大的機會在AI行業(yè)創(chuàng)造出新的社會價值。
互聯(lián)網(wǎng)科技人員是市場上最早一批接觸AI的人,在OpenAI還未火遍全球之前,就已經(jīng)有一批人在一些細分領(lǐng)域做著AI相關(guān)的工作,只不過那時候的AI市場還沒那么大。
而且那時候,互聯(lián)網(wǎng)領(lǐng)域無論是C端還是B端都存在著大量的市場機會,大量的市場需求未被滿足,就算不涉及AI,無論是個人還是公司,都有著巨大的增長空間。
但是現(xiàn)在,一切都在改變,擁抱變化將是我們面對市場不確定性的主要節(jié)奏,原互聯(lián)網(wǎng)從業(yè)人員,上至大廠下至小初創(chuàng)公司,都不能固守著原先互聯(lián)網(wǎng)模式的一畝三分地,止步不前只會將自己圈禁待死。
所以說,無論是想轉(zhuǎn)型AI,還是新手入門AI,都必須具備AI領(lǐng)域一定程度的專業(yè)能力。為了了解AI,我們可以去學習如何操作市面上的AI工具,把現(xiàn)今流行的文生文,文生圖,文生視頻都玩一個遍。
但重點是,我們在體驗之余,也要靜下心來想想,如果想在AI這條路上走出自己的核心競爭力,僅僅會操作AI工具是否足以支撐自己走得穩(wěn),走得遠?
若想成為AI行業(yè)中有獨特競爭力的一員,首要就是打好AI基本功。形成這個觀點,不僅是基于我在互聯(lián)網(wǎng)多年的從業(yè)經(jīng)驗,也是基于國內(nèi)外大量公司和個人的成功案例。
也許功能或產(chǎn)品會被借鑒,人才會被挖走,但有些競爭力形成的護城河,就算公開于眾,也是奪不走的,這就是真正的實力,背后也是因為有著扎實的基本功做支撐。
入門AI,無論從哪個角度切入,都要先克服畏難情緒,日拱一卒,一步一腳印地磨練AI基本功。我們從AI的專業(yè)知識開始,逐步構(gòu)建自身的核心競爭力。
本章要說的主要內(nèi)容就是AI無監(jiān)督學習中的算法。算法是AI技術(shù)的核心。了解算法對于提高AI應用的性能和效率至關(guān)重要。
類似ChatGPT,背后的算法能夠從數(shù)據(jù)中學習并生成新的內(nèi)容,我們需要了解這些AI算法的工作原理和應用方式,以便更好地將它們?nèi)谌胱约旱漠a(chǎn)品和業(yè)務中。
全文8000字左右,預計閱讀時間15分鐘,若是碎片時間不夠,建議先收藏后看,便于找回。
照例,開篇提供本篇文章的目錄大綱,方便大家在閱讀前總攬全局,對內(nèi)容框架有預先了解。
一、無監(jiān)督學習算法
1. 算法是什么,能吃嗎?
哈哈,開個小玩笑,算法當然不能吃了。算法是一系列定義明確的操作步驟,用于解決特定問題或完成特定任務。
我們常見的算法通常指的是計算機科學中的一個概念,它涉及到數(shù)據(jù)的處理、轉(zhuǎn)換和計算,用于實現(xiàn)某個目標或解決某個問題。
也可以簡單理解成,算法是通過數(shù)據(jù)來解決問題的一種工具。往小了說,像四則運算、定理公式都可以稱之為算法。嗯,1+1=2,也是一種算法。所以,算法并沒有我們以為的那么高深莫測。
在AI和機器學習領(lǐng)域,算法被設計用于從數(shù)據(jù)中學習、發(fā)現(xiàn)模式、做出預測或執(zhí)行決策,而無需顯式的編程。
算法可以是簡單的,比如排序一組數(shù)字,也可以是復雜的,比如識別圖像中的對象或理解自然語言文本。在AI領(lǐng)域,算法被用來處理人力所不及的領(lǐng)域,像“1+1=2”這類的問題,就犯不著用上算法啦。
算法概念很廣,我們主要圍繞機器學習中的算法展開討論。在機器學習中,算法通常分為以下幾類:
【監(jiān)督學習算法】
監(jiān)督學習算法通過使用已標記的訓練數(shù)據(jù)(輸入和相應的輸出)來學習模型。通過建立一個從輸入到輸出的映射,讓模型能夠?qū)π碌奈礃擞洈?shù)據(jù)進行預測。
常見的監(jiān)督學習算法包括線性回歸、決策樹、支持向量機等。
【無監(jiān)督學習算法】
無監(jiān)督學習算法則需要在沒有明確標簽的情況下從數(shù)據(jù)中學習結(jié)構(gòu)和模式。這類算法主要用于聚類、降維和關(guān)聯(lián)規(guī)則挖掘等任務。
比如,K均值聚類、主成分分析(PCA)和關(guān)聯(lián)規(guī)則挖掘都是常見的無監(jiān)督學習算法。
如果對無監(jiān)督學習的基本概念還不太清楚的,推薦我上一篇寫的《現(xiàn)在入門“AI無監(jiān)督學習”還來得及(9000字干貨)》,和本篇有相關(guān)聯(lián)之處,一起看看有助于加深理解。
【半監(jiān)督學習算法】
半監(jiān)督學習算法通常會結(jié)合監(jiān)督學習算法和無監(jiān)督學習算法的優(yōu)勢,利用同時包含有標簽和無標簽數(shù)據(jù)的訓練集進行模型訓練。
這樣的組合允許算法在一部分數(shù)據(jù)上學習有監(jiān)督的模式,又從未標記的數(shù)據(jù)中學習無監(jiān)督的結(jié)構(gòu)。常見的半監(jiān)督學習算法包括半監(jiān)督支持向量機(SVM)、自訓練(Self-training)和混合模型(Mixture Models)等。
【強化學習算法】
強化學習是一種通過與環(huán)境的交互來學習行為的方法,強化學習算法的核心思想是通過試錯來學習。
在這種學習方式下,智能體嘗試通過不同的行為來觀察環(huán)境的反饋,選擇在不同狀態(tài)下采取動作,而后進行學習并優(yōu)化,目的就是實現(xiàn)最大化預期的總獎勵。
一些經(jīng)典的強化學習算法包括Q-learning、Deep Q Network(DQN)、Policy Gradient等。
在本篇,我會重點說說無監(jiān)督學習的算法。在監(jiān)督學習的算法中,關(guān)于線性回歸部分,之前在《(萬字干貨)如何訓練優(yōu)化“AI神經(jīng)網(wǎng)絡”模型?》中有提到,而半監(jiān)督學習和強化學習的相關(guān)內(nèi)容,我會在以后的文章中,再和大家娓娓道來。
2. 我們?yōu)槭裁葱枰惴?,價值幾何?
無監(jiān)督學習是機器學習的一種方法,算法就是實現(xiàn)無監(jiān)督學習的工具,更是無監(jiān)督學習的核心。無監(jiān)督學習的目標是發(fā)現(xiàn)數(shù)據(jù)中的內(nèi)在關(guān)系,而算法的設計和選擇直接決定了這一目標能否實現(xiàn)以及實現(xiàn)的效率和效果。
在無監(jiān)督學習中,算法的價值不言而喻,主要凸顯在以下幾處。
【數(shù)據(jù)探索與模式發(fā)現(xiàn)】
我們之前多次提到,無監(jiān)督學習可以發(fā)現(xiàn)數(shù)據(jù)中的潛在結(jié)構(gòu)和模式,幫助理解數(shù)據(jù)的內(nèi)在特性。
但我們從未細細推敲過,無監(jiān)督學習是如何發(fā)現(xiàn)數(shù)據(jù)中的結(jié)構(gòu)和模式的。而算法,就是開啟這個盲盒的鑰匙。數(shù)據(jù)探索與模式發(fā)現(xiàn)的全部奧秘,都在算法之中。
【數(shù)據(jù)預處理】
從我之前寫的幾篇關(guān)于數(shù)據(jù)集的文章中可知,我們在AI訓練之前,需要對數(shù)據(jù)進行預處理,這是一個非常關(guān)鍵的步驟。
那么,問題又來了,我們該如何高效完成數(shù)據(jù)預處理的任務呢?答案是:善用算法。
比如,在實際情況中,我們拿到的初始數(shù)據(jù)往往包含缺失值、異常值或噪聲。而聚類或密度估計這類算法,可以幫助識別和處理這些不完整的或異常的數(shù)據(jù)點,從而提高數(shù)據(jù)質(zhì)量。
【特征提取】
在特征提取方面,算法可以幫助識別數(shù)據(jù)中的重要特征,為后續(xù)的監(jiān)督學習任務或其他分析提供更有用的數(shù)據(jù)表示。就像考試前,已經(jīng)有一位學神幫你勾出了重要知識點,助你逢考必過。
再有,像是降維算法,也是無監(jiān)督學習中常用的特征提取算法,它通過降低數(shù)據(jù)的維度,保留主要信息的同時減少冗余。這有助于簡化數(shù)據(jù)表示,提高計算效率,并減少過擬合的風險。
【降低標注成本】
通俗點說,算法還有一大價值,就是省錢省時省人力。在傳統(tǒng)的監(jiān)督學習中,模型的訓練通常需要大量帶有標簽的數(shù)據(jù),而這一標注過程既費時又費力。
無監(jiān)督學習之所以能夠在大多數(shù)情況下利用未標注的大規(guī)模數(shù)據(jù)進行訓練,是因為算法在背后起著關(guān)鍵作用。
特別是當我們要涉足一個新領(lǐng)域時,獲取足夠數(shù)量的標注數(shù)據(jù)可能是一項昂貴且耗時的工程。這該如何解決?答案還是:善用算法。
我們通常會讓算法先在一個相關(guān)領(lǐng)域進行無監(jiān)督學習,這樣AI模型就可以學到通用的特征和表示,就可以減少對于新領(lǐng)域標注數(shù)據(jù)的需求,也就有效地降低了在新任務上進行標注所需的成本,加速了模型的部署和應用。
縱觀算法價值,我總結(jié)了4個方面,分別是“數(shù)據(jù)探索與模式發(fā)現(xiàn)”、“數(shù)據(jù)預處理”、“特征提取”和“降低標注成本”。也許還有不完善之處,但力求可以幫助各位看官理解算法的重要性,即便只獲一二,都值得歡喜。
二、聚類算法
1. 聚類算法的基本概念
在無監(jiān)督學習中,聚類算法是一類將數(shù)據(jù)集分成若干個群組的算法。這些群組稱為“簇”。每個簇內(nèi)的數(shù)據(jù)點彼此之間相似度較高,而不同簇的數(shù)據(jù)點相似度較低。
聚類算法要做的就是,在沒有任何預先標注的情況下,將相似的數(shù)據(jù)點歸為一簇,將不相似的數(shù)據(jù)點劃分到不同的簇中。
基于聚類算法,我們可以更容易地理解數(shù)據(jù)的分布、發(fā)現(xiàn)數(shù)據(jù)中的異常值,解決數(shù)據(jù)壓縮、圖像分割、市場細分等各類問題。
常見的聚類算法包括:K均值聚類(K-Means Clustering)、層次聚類(Hierarchical Clustering)、DBSCAN(Density-Based Spatial Clustering of Applications with Noise)、高斯混合模型(Gaussian Mixture Model,GMM)等。
其中,K均值聚類算法(通常稱為K-means算法)的早期版本由Stuart Lloyd在1957年提出。他的研究是為了優(yōu)化通信系統(tǒng)中的信號傳輸。
后來,該算法被MacQueen在1967年重新發(fā)現(xiàn),他將其用于數(shù)據(jù)分析領(lǐng)域。MacQueen在他的論文中正式描述了K-means算法,并首次使用了“K-means”這個名稱。
層次聚類的概念最早由J.L. Ward于1963年提出,該方法特別關(guān)注于最小化整個數(shù)據(jù)集的總方差,通過這種方式來形成層次聚類的結(jié)構(gòu)。
而DBSCAN,首次出現(xiàn)在1996年的論文中,由Martin Ester等人共同提出的。它能夠在有噪聲的數(shù)據(jù)集中發(fā)現(xiàn)任意形狀的簇,并且能夠識別并處理噪聲點。
至于高斯混合模型,有著更早的演進過程,其概念可以追溯到19世紀,但具體由誰提出就不得而知了。
本篇,我們就重點來說說聚類算法中的K均值聚類和層次聚類。
2. K均值聚類(K-Means Clustering)
K均值聚類(K-Means Clustering)是一種經(jīng)典的聚類算法,其基本原理是將數(shù)據(jù)點分為K個簇,每個簇由簇中心(通常是簇內(nèi)所有點的均值)表示。
所以,K-Means算法涉及到簇中心的計算,對于第i個簇,其簇中心(質(zhì)心)的計算公式為:
K均值聚類的目標是最小化簇內(nèi)平方誤差,即找到K個簇,使每個數(shù)據(jù)點與其所屬簇中心的距離之和最小。目標函數(shù)的數(shù)學公式是:
從公式可見,E值越小則簇內(nèi)數(shù)據(jù)(樣本)相似度越高。K-Means算法通過迭代更新簇中心,不斷優(yōu)化這個目標函數(shù),來達到更好的聚類效果。
現(xiàn)在,我們已知數(shù)學公式,可以進一步了解K-Means算法是如何實現(xiàn)迭代優(yōu)化的?
- K-Means算法是在不斷迭代中找到最優(yōu)解的,大致步驟如下:
- 初始化:隨機選擇K個數(shù)據(jù)點作為初始簇中心。
- 分配數(shù)據(jù)點:對于數(shù)據(jù)集中的每個數(shù)據(jù)點,計算其與各個簇中心的距離,并將其分配到距離最近的簇中心所在的簇。
- 更新簇中心:計算每個簇內(nèi)所有數(shù)據(jù)點的均值(或其它形式的中心),將其作為新的簇中心。這個均值可以是算術(shù)平均值、幾何平均值、中位數(shù)等。
- 重新計算誤差:重新計算每個簇內(nèi)數(shù)據(jù)點到簇中心的距離,并計算總的平方誤差。
- 迭代:重復步驟(2)—(4),直到滿足停止條件。停止條件可以是簇中心的變化小于某個閾值,或是達到預設的最大迭代次數(shù),又或是誤差函數(shù)的減少小于某個值。
從K-Means算法的步驟中,我們能發(fā)現(xiàn)該算法對初始簇中心的選擇敏感,不同的初始中心可能導致完全不同的聚類結(jié)果。
3. K均值聚類算法能解決什么問題?
我們不能讓算法只停留在理論層面,我們還需要讓K-Means算法可以解決一些實際問題。
在實際場景中,K-Means算法可以解決聚類問題,通俗點說,可以幫我們完成大量數(shù)據(jù)的分類任務。比如:市場細分、圖像分割、文檔分組、異常檢測或者數(shù)據(jù)壓縮等。
【K-Means算法-客戶分群】
假設公司的CRM系統(tǒng)中有大量的客戶交易信息,比如購買時間、購買金額、購買頻率、購買商品類型等。我們的目標是根據(jù)這些數(shù)據(jù)將客戶分為不同的群體,以便更好地定制營銷策略。
這時候采用K-Means算法就可以高效解決這個問題。
最開始,我們需要從CRM系統(tǒng)中提取相關(guān)的客戶交易信息,做好數(shù)據(jù)準備。原始數(shù)據(jù)的數(shù)量和質(zhì)量是影響最終目標成敗的關(guān)鍵。
然后,我們需要對提取到的數(shù)據(jù)進行預處理。對數(shù)據(jù)進行清洗,處理缺失值、異常值,并可能進行歸一化或標準化處理,以便于算法能夠更好地處理這些數(shù)據(jù)。
K-Means算法需要預先指定簇的數(shù)量K,我們需要選擇合適的K值??梢試L試不同的K值,并使用如肘部法則(Elbow Method)或輪廓系數(shù)(Silhouette Score)來完成選擇。
然后是初始化簇中心。隨機選擇K個數(shù)據(jù)點作為初始簇中心,再使用選擇的 K 值執(zhí)行 K-Means 算法,將客戶分為 K 個簇,每個簇代表一個客戶群體。執(zhí)行K-Means算法的過程中會涉及到多次的更新迭代。
此后,我們需要評估聚類結(jié)果,還需要對每個簇進行分析,了解每個客戶群體的特征。這可能涉及到購買習慣、活躍度、商品偏好等方面的特征,還可以使用可視化工具展示每個簇的特征分布。
當我們一旦確定了最佳的聚類結(jié)果,就可以根據(jù)不同的客戶群體制定個性化的營銷策略。例如,對高價值客戶采取個性化服務,對潛在回流客戶采取促銷活動,對頻繁購買的客戶群提供額外獎勵等。
在整個假設案例的過程中,我們可以發(fā)現(xiàn)K-Means算法落地到實際應用場景中,能解決什么樣的問題。
我們可以利用K-Means算法對客戶交易數(shù)據(jù)進行聚類,從而實現(xiàn)客戶群體的細分,幫助公司高層和市場銷售人員更好地理解客戶群體,市場部門可以制定更加精準和有效的營銷策略,提高公司ROI,提高客戶滿意度,提高公司業(yè)務效益。
4. 層次聚類(Hierarchical Clustering)
層次聚類算法(Hierarchical Clustering)是一種基于數(shù)據(jù)點之間的相似性進行聚類的算法。與K-Means算法不同,層次聚類不需要預先指定簇的數(shù)量,它通過逐步合并或分裂現(xiàn)有的簇來構(gòu)建一個簇的層次結(jié)構(gòu)。
根據(jù)數(shù)據(jù)集的劃分是“自底向上”的聚合策略,還是“自頂而下”的分拆策略,層次聚類算法可以進一步分為凝聚的層次聚類算法AGNES(AGglomerative NESting)和分裂的層次聚類算法DIANA(DIvisive ANAlysis)。
初始時,AGNES將每個對象自成一簇,之后這些簇依照某一種準則逐步合并。DIANA則以相反的方法處理,初始時將所有對象歸為同一類簇,然后依據(jù)某種原則將該簇逐漸分裂。
層次聚類算法要比K均值聚類算法復雜,不依賴于一個單一的數(shù)學公式,而是通過一系列的步驟來構(gòu)建一個簇的層次結(jié)構(gòu)。
其中,凝聚的層次聚類算法AGNES的實現(xiàn)步驟是:
1)初始化:將每個數(shù)據(jù)點視為一個初始的單獨的簇。
2)計算簇間距離:計算所有簇之間的距離或相似度。通常使用最短連接(Single Linkage)或最長連接(Complete Linkage)來衡量簇之間的距離。
最短連接是指兩個簇中最近的兩個點之間的距離,而最長連接是指兩個簇中最遠的兩個點之間的距離。
3)合并最相似的簇:找到距離(相似度)最小的兩個簇,將它們合并成一個新的簇。
4)更新距離矩陣:合并兩個簇后,需要更新距離矩陣,以反映新合并的簇與其他簇之間的距離。主要表現(xiàn)在刪除合并的簇之間的距離,并更新剩余簇之間的距離。
5)迭代:反復執(zhí)行步驟(3)和(4),直到所有數(shù)據(jù)點被合并成一個大簇或滿足某個停止準則。
6)形成簇樹:最終,通過逐步合并相似的簇,形成一個簇的層次結(jié)構(gòu),稱為簇樹。在簇樹中,每個節(jié)點代表一個簇,節(jié)點之間的邊表示兩個簇之間的距離。
AGNES這種自底向上的策略,從每個數(shù)據(jù)點開始,逐步將相似的簇合并,最終形成一個包含所有數(shù)據(jù)點的大簇。而且,它能夠構(gòu)建一個簇的層次結(jié)構(gòu),可以反映簇之間的關(guān)系和數(shù)據(jù)點的層次分布。
與AGNES相反,分裂的層次聚類算法DIANA的實現(xiàn)步驟是:
1)初始化:將所有數(shù)據(jù)點作為一個初始的單獨的簇。
2)選擇簇分裂點:在當前簇中選擇一個數(shù)據(jù)點作為分裂點。通過計算當前簇中各個特征的方差,選擇具有最大方差的特征作為分裂點。也可以基于數(shù)據(jù)點的統(tǒng)計特性來選擇,比如選擇當前簇中最小值或最大值作為分裂點。
選擇分裂點的策略會影響最終的聚類結(jié)果,因此需要根據(jù)具體的數(shù)據(jù)集和應用場景來選擇最合適的策略。
3)分裂簇:根據(jù)選定的分裂點,將當前簇分裂成兩個子簇,形成一個新的層次結(jié)構(gòu)。一個子簇包含所有小于或等于分裂點的數(shù)據(jù)點,另一個子簇包含所有大于分裂點的數(shù)據(jù)點。
4)迭代:重復步驟(2)和(3),直到滿足停止條件。停止條件可以是達到預設的迭代次數(shù)、簇的大小小于某個閾值,或者簇的分裂不再產(chǎn)生顯著的改進等。
5)形成簇樹:迭代結(jié)束后,DIANA 生成一個層次樹,也就是簇的層次結(jié)構(gòu),稱為簇樹。該樹反映了分裂過程,每個節(jié)點表示一個簇。
DIANA算法采用的是自頂向下的遞歸分裂策略,不是AGNES那樣的自底向上的合并策略。由于其在每個階段選擇分裂,逐步細化聚類結(jié)構(gòu),因此也被稱為“分而治之”的聚類算法。
從算法特性中我們可以發(fā)現(xiàn),DIANA適用于相對小型的數(shù)據(jù)集,因為在每一步都需要計算所有簇對之間的相異度,如果數(shù)據(jù)規(guī)模較大,計算復雜度就會變高,效率就會降低。
5. 層次聚類算法能解決什么問題?
紙上得來終覺淺,絕知此事要躬行。當面對實際問題時,層次聚類算法能發(fā)揮什么作用?
接下來,我們分別就AGNES算法和DIANA算法的原理,一起來看看應用場景中的假設案例,從案例中進一步知曉它們能解決哪些問題。
【AGNES算法-文檔分類】
AGNES算法可以解決文檔分類的問題,比如將相似的文檔歸為一類。
假設公司的文件管理系統(tǒng)中有大量的文檔數(shù)據(jù),需要我們在最短的時間內(nèi)完成文檔的歸類工作。在文檔種類繁多,文檔數(shù)量龐大的情況下,我們就可以用AGNES算法來解決。
第一步就是數(shù)據(jù)準備,我們要先從文件管理系統(tǒng)中提取相關(guān)的文檔數(shù)據(jù),包括文檔的內(nèi)容、關(guān)鍵詞、作者、創(chuàng)建時間、文件格式等。
然后,對提取的文檔數(shù)據(jù)進行清洗,便于算法能夠更好地處理這些數(shù)據(jù)。
再然后,確定衡量文檔相似性的方法,常用的包括余弦相似度、歐氏距離等。選擇適當?shù)南嗨贫榷攘糠椒ㄓ兄诰垲愃惴ǜ玫刈R別相似文檔。
接下來,將每個文檔視為一個單獨的簇,或者隨機選擇一些文檔作為初始簇中心。完成初始化聚類的操作。
接下來的幾步,都是AGNES算法的迭代步驟,上一段有說過,這里可以簡單跳過,簡單來說,要做的就是“計算相似性—合并相似度最高的兩個簇—反復迭代—確定最終聚類”。
執(zhí)行完AGNES算法后,我們要對聚類結(jié)果進行分析,檢查每個簇內(nèi)的文檔是否具有相似的主題或內(nèi)容。根據(jù)需要,我們可以做一些優(yōu)化,比如,調(diào)整算法參數(shù)或特征表示等。
最后,我們將文檔按照聚類結(jié)果進行管理,就可以更方便地查找和理解文檔內(nèi)容。若有需要,也可以基于文檔的聚類結(jié)果進行進一步的分析和決策。
【DIANA算法-學情分析】
如果在教育行業(yè),DIANA算法可以用于進行細粒度的學情分析,給學生提供個性化的學科輔導和支持。
假設一所學校想要深入地了解并分析學生的學習情況,想知道學生是否達到了現(xiàn)階段的教學目標,還要了解學生的考試成績、作業(yè)完成質(zhì)量、課堂表現(xiàn)等。通過DIANA算法可以解決這類問題。
照例,所有和算法相關(guān)的工作,數(shù)據(jù)收集都是首先要做的事情。我們要收集學生的學習數(shù)據(jù),包括考試成績、作業(yè)完成情況、課堂表現(xiàn)、參與討論的頻率和質(zhì)量、學習資源的使用情況等。
然后是數(shù)據(jù)預處理,也就是對收集的數(shù)據(jù)進行數(shù)據(jù)清洗。包括去除異常值、處理缺失數(shù)據(jù)、標準化或歸一化數(shù)據(jù)等。
拿著預處理后的數(shù)據(jù),我們就可以使用DIANA算法對學生的學情數(shù)據(jù)進行聚類。算法的執(zhí)行過程中需要進行反復迭代。
在每次迭代中,算法會找到在當前簇中具有最大或最小特征值(如考試分數(shù)、作業(yè)完成率等)的學生,并將其作為分裂點,將當前簇分裂成兩個子簇。
迭代完成后,DIANA算法會形成一個簇的層次結(jié)構(gòu),將學生分為不同的層次群體,每個群體代表了一組具有相似學情特征的學生,通過分析每個簇的特征,我們可以識別出影響學生學情的關(guān)鍵因素,如學習習慣、學習資源的使用、課堂參與度等。
最后,在DIANA算法的幫助下,我們可以為不同群體的學生提供個性化的學習支持,如制定個性化的教學策略、提供針對性的教材和輔導、采用符合學生自身特點的教學方法等。
通過以上的假設案例,我們不難發(fā)現(xiàn),層次聚類算法在實際場景中能幫助我們解決不少問題。
其中,AGNES算法能夠?qū)⑾嗨频奈臋n歸為一類,從而解決文檔分類的問題,有利于公司管理大量的文檔數(shù)據(jù),提高文檔檢索的效率。
與其對應的,DIANA算法可以基于學生的學習數(shù)據(jù),幫助老師們了解學生的學習情況,為學生提供個性化的學科輔導,幫助學生克服學習困難。擁有了這樣的學情數(shù)據(jù),學生的學習成績提升,老師教學質(zhì)量的提高,那都是遲早的事情。
三、總結(jié)與預告
在現(xiàn)在的信息爆炸時代,數(shù)據(jù)已經(jīng)成為了我們生活和工作中不可或缺的一部分,我們需要更有效方法來處理海量的數(shù)據(jù),特別是在AI領(lǐng)域。
而人工智能算法不僅可以提高我們的工作效率,還能幫助我們做出更準確的決策。
本篇重點介紹了聚類算法中的K均值聚類算法和層次聚類算法。我們從基本概念說起,聊到算法實現(xiàn)的步驟,通過假設案例帶入實際場景,將算法從書本中拉到現(xiàn)實世界中,看看算法能幫我們解決哪些問題。
比如,K均值聚類算法可以將客戶分為不同的群體,能幫助企業(yè)更好地了解客戶,制定更有效的營銷策略。
層次聚類算法中的AGNES算法可以將相似的文檔歸為一類,幫助企業(yè)更好地管理和分析文檔。DIANA算法可以完成學情分析,幫助學校或教育機構(gòu)更好地了解學生的學習情況,制定更有效的教學策略。
最后,簡單預告一下,無監(jiān)督學習的內(nèi)容還未結(jié)束,后續(xù)的篇章我會繼續(xù)和大家聊聊關(guān)于無監(jiān)督學習降維算法、落地場景和相關(guān)案例等。
AI真的很有意思,如果你也喜歡,那就一起吧。
作者:果釀,公眾號:果釀產(chǎn)品說
本文由 @果釀 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來自 Unsplash,基于CC0協(xié)議。
該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務。
- 目前還沒評論,等你發(fā)揮!