iPAS 備考專區 登入

iPAS AI 應用規劃師 中級 科目二 大數據處理分析與應用・114 年第二次・L22・第 41 題

這段 pseudocode 在跑什麼分群演算法?

原題

請參考附圖,下列虛擬程式碼(pseudocode)最可能是在描述何種演算法? Input: - data_points: N 筆資料,每筆資料有 D 個特徵 - X: 要分成的群數 Output: - clusters: 每筆資料所屬的群編號 - centroids: 每個群的中心點 Algorithm: 1. 隨機選擇 X 個資料點作為初始中心 2. 重複以下步驟直到收斂:  a. 分群: 對每個資料點,計算它到每個中心的距離,將資料點指派給距離最近的中心  b. 更新中心: 對每個群,計算該群中所有資料點的平均值,將群中心更新為這個平均值 3. 當群中心不再變動時,停止 回傳每筆資料的群編號 clusters,以及最後的群中心 centroids

白話

這段 pseudocode 給定 N 筆資料和一個目標群數 X,先隨機挑 X 個點當中心,然後反覆做兩件事:把每筆資料分給最近的中心,再把中心移到各群的平均位置,直到中心不再移動為止,最後輸出每筆資料的群編號和各群中心座標。

問你:這個「先設 X 個中心、反覆分群更新、直到收斂」的流程,對應哪一種分群演算法?

一句話總結

這段 pseudocode 描述的是 K-means 分群(K-means Clustering):事先指定群數 K,反覆做「分派到最近中心」和「更新中心為群平均」兩個步驟,直到中心收斂為止。

情境

先感受問題:把 1000 個客戶分成 3 群,用手怎麼做?

「旅行衛星」電商有 1000 名顧客,每人有兩個特徵:年購買次數和平均客單價。行銷團隊想把這些顧客分成 3 群,方便針對性推播。

手動做的想像步驟:

第一步:隨便挑 3 個顧客,當作「三群的暫定代表人」(中心)。

第二步:對剩下所有顧客,看他們跟哪個代表人最像(距離最近),就分進那群。

第三步:每群分好後,重新算這群的「平均人」(平均購買次數、平均客單價),更新代表人。

第四步:繼續重複第二、三步,直到「代表人不再移動」為止。

最後:每個顧客都有一個群號,以及每群的中心座標。

這個「先設 K 個中心,反覆分群更新」的手動流程,就是 K-means 的核心邏輯。pseudocode 裡的 X 就是 K,centroids 就是每次更新後的代表人座標。

舊方法

怎麼從 pseudocode 排除其他三個選項

  1. 高斯混合模型(GMM)用的不是「距離最近」:GMM 的核心是機率,每個資料點屬於某群的機率是用高斯分佈計算的,不是「找最近中心」。pseudocode 裡寫的是「計算距離、指派給最近中心」,這是 K-means 的做法,不是 GMM。
  2. 階層式分群沒有「預設群數 X」:階層式分群是由下而上(或由上而下)合併或分裂,最後用樹狀圖(dendrogram)呈現,使用者事後再決定切幾層。pseudocode 開頭就要求輸入 X(群數),這是 K-means 的特徵,不是階層式。
  3. DBSCAN 沒有「中心更新」這步:DBSCAN 根據密度定義群,核心概念是「高密度區域的點」,不需要計算群平均值或更新中心。pseudocode 中明確有「更新中心為該群所有點的平均值」,這是 K-means 獨有的。
  4. 「收斂條件 = 中心不再移動」是 K-means 特徵:其他三種演算法都沒有「當中心不再移動時停止」這個終止條件。DBSCAN 沒有迭代、階層式沒有「中心」的概念、GMM 的停止條件是 log-likelihood 不再增加。
  5. 輸出同時有 clusters 和 centroids:K-means 的輸出包含每筆資料的群號(clusters)和每群的中心座標(centroids),這兩個輸出在 pseudocode 裡都有明確標示,和 K-means 的 API 完全吻合。

新方法

逐行對照 pseudocode 與 K-means 定義

旅行衛星的工程師把 pseudocode 和 K-means 定義逐行比對:

「輸入 X(群數)」= K-means 要求事先指定 K 的核心特徵

「隨機選 X 個資料點作為初始中心」= K-means 初始化步驟,稱為 random initialization

「計算到每個中心的距離,指派給最近的中心」= Assignment Step,用歐氏距離(Euclidean distance)

「計算群內所有點的平均值,更新中心」= Update Step,這就是「means」這個字的來源

「當中心不再變動時停止」= 收斂條件(convergence criterion)

「回傳 clusters 和 centroids」= K-means 的標準輸出

每一行都完美對應 K-means 的定義,排除了其他三個選項。這就是選項 A 講的:K-means 分群(K-means Clustering)。

錯選項

為什麼其他選項是錯的

B高斯混合模型分群(GMM)

字面在說什麼

GMM 也是一種分群方法,可能和這段 pseudocode 對應。

為什麼不對

GMM 使用期望最大化(EM 演算法),每個點屬於某群的方式是計算「機率」,而不是「距離最近的中心」。GMM 的 E-step 算每個點屬於各群的後驗機率,M-step 更新每群的均值、變異數和權重。pseudocode 裡只有距離計算和平均值更新,沒有任何機率或變異數的概念,所以不是 GMM。

誰會選錯

記得「GMM 也有類似 centroid 的均值參數」的人,混淆了 GMM 的均值(高斯分佈的 μ)和 K-means 的 centroid(群重心),兩者更新方式完全不同。

C階層式分群(Hierarchical Clustering)

字面在說什麼

階層式分群也是分群方法,可能描述這段流程。

為什麼不對

階層式分群的核心是建立樹狀結構(dendrogram),不需要預先指定群數,也不需要「更新中心」這個步驟。pseudocode 第一行就要求輸入群數 X,階層式分群做不到這件事,它是先分析完所有資料的合併/分裂關係,最後才讓使用者選切幾群。

誰會選錯

只知道「階層式分群也有群」但不了解它「不需要預設群數」這個根本特徵的人。

DDBSCAN 分群

字面在說什麼

DBSCAN 也是常見的分群演算法,可能就是這段 pseudocode 描述的。

為什麼不對

DBSCAN 根據密度定群,核心概念是「核心點(core point)」「邊界點(border point)」「雜訊點(noise point)」,整個演算法不需要計算群中心、不需要更新中心、不需要事先指定群數。pseudocode 裡有「隨機選 X 個初始中心」和「更新中心為群平均」這兩個步驟,DBSCAN 完全沒有這種操作。

誰會選錯

考前背「DBSCAN 也是分群演算法」但沒記住它和 K-means 核心差異的人:DBSCAN 不需要 K、不計算距離到中心、不更新中心。

變形題

同個考點下次怎麼變形

延伸

想再往下看,這 5 個

答案、題目或解析有問題?回報這題

出處:iPAS 經濟部產業人才能力鑑定 ・ 114 年第二梯次 iPAS AI 應用規劃師 中級 科目二 大數據處理分析與應用 第 41 題

看官方原文 PDF

原題 © 經濟部產業發展署,AITerms.tw 僅作教學解析使用,本站解析以 CC BY-NC-SA 4.0 授權。