第三章 研究方法與設計
第三節 kNN 分群
國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
20
文章中會出現許多詞彙皆擁有相同之 TF-IDF 值,因此在選取特徵值時,需先去 找尋符合最低門檻值詞彙其 TF-IDF 值為多少,再將所有與其相等及大於該 TF-IDF 值的詞彙全部取出,因此取出的特徵詞彙個數占該文章詞彙總數的百分 比例會大於門檻訂定之值。
此外,雖然每篇文章訂定的特徵詞選取門檻值皆是相同的,但是每篇文章真 正取出的特徵詞彙數目卻因該文章通過最低門檻值的詞彙個數而有所不同,因此 為了使所有文章的特徵詞都立於相同的比較基準上,必須對選取到的特徵詞彙之 TF-IDF 值進行調整。其調整方式為,特徵詞的 TF-IDF 值會依據該篇文章選中的 特徵詞總數進行正規化,以獲得該特徵詞調整後的權重值。根據特徵詞總數調整 權重的概念就如同根據每篇文章的長度不同而進行調整權重的概念意義相同,每 篇文章所選取的特徵詞彙總數即代表該篇文章的長度。特徵詞彙的正規化權重調 整公式如下:
𝑊𝑖,𝑗 =𝑡𝑓𝑖𝑑𝑓𝑖,𝑗
‖𝑑⃗⃗⃗ ‖𝑗 (5)
上述公式之意涵為將該詞彙之𝑡𝑓𝑖𝑑𝑓𝑖,𝑗值除以所有選中的特徵詞彙長度 , 其中 代表該文件向量中所有權重各別平方加總再開根號(在這裡的所有權重 為該文件所有被選取之特徵詞彙的 TF-IDF 值),最後得到的𝑊𝑖,𝑗值即某一特徵詞 正規化後的權重。
第三節 kNN 分群
以下將介紹本研究所採用的分群機制-k 最近鄰居法。首先將針對 kNN 分 群器的運作原理介紹,接著闡述詞彙-文件矩陣的建置以及文件之間相似度的衡 量方式,最後說明 kNN 分群器之相關參數設定。
‖𝑑⃗⃗⃗ ‖ 𝑗
‖𝑑⃗⃗⃗ ‖ 𝑗
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
21
3.3.1 kNN 分群器運作原理
kNN 分群器是利用k最近鄰居法「物以類聚」的概念,依照每一項團購商 品的產品特徵詞間的相似度來替商品進行分群的動作。在k最近鄰居法中,計算 資料點與資料點之間的距離,常用的方式是採用歐幾里德距離來計算特徵值間的 差距,同樣的概念應用於文件分群的向量空間模型中,則是衡量文件與文件間的 相似程度,也就是計算兩文件在 n 維空間的角度差距。在取得文件與其他文件的 相似程度後,便可根據與該文件前 k 個相似的文件其所屬群集來歸納此文件應分 屬至哪個群集中。
3.3.2 建置詞彙-文件矩陣
在 kNN 分群器進行分群之前,必須建置詞彙-文件矩陣,以便於計算文件間 的相似度。「詞彙-文件矩陣」為文件與詞彙之權重對應矩陣表,其主要目的為將 之前計算所得知每份文件的特徵詞及其權重從向量空間模型轉化為以單位向量 的方式呈現。一般來說,詞彙-文件矩陣的欄即代表總詞庫中每個詞彙,列則代 表文件集中的每份文件,而矩陣內容元素則為詞庫與文件對應之詞彙權重值。就 本研究而言,詞彙-文件矩陣的欄並非總詞庫的所有詞彙,而是有被任一文件選 取為特徵詞之詞彙才會陳列於此,透過這樣的過濾機制,可以排除沒有被任何文 件選為特徵詞之詞彙,以精簡矩陣,降低運算次數。
就矩陣元素內容來看,當詞彙在此文章中被選為特徵詞時,其矩陣元素則擺 放該詞彙調整後之權重值(weight),若該詞彙並非為此文章所有之特徵詞,其矩 陣元素為 0。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
22
3.3.3 文件相似度計算
詞彙-文件矩陣建置完善後,便可依據其矩陣元素計算文件之間的相似程度。
在文件分群的向量空間模型中,計算文件間的相似程度最常用的衡量方式為計算 其餘弦相似度(Cosine Similarity)(Salton,1989),其公式如下:
cos(𝜃) = 𝑋 ∙ 𝑌
‖𝑋‖ ∙ ‖𝑌‖= ∑𝑛𝑖=1𝑋𝑖 × 𝑌𝑖
√∑𝑛𝑖=1(𝑋𝑖)2× √∑ (𝑌𝑛𝑖=1 𝑖)2 (6)
其以兩個 n 維向量間的角度差異來度量該向量間的距離,而計算所得之結果 將介於 0~1 之間,當兩份文件的向量間角度越相近時,其夾角越小,所求得之計 算結果越接近 1,代表兩份文件越相似;反之,則計算結果越接近 0,代表兩文 件越不相似。
3.3.4 kNN 分群器
本研究依據 k 最近鄰居法的運行概念,以 PHP 及 mySQL 建置 kNN 分群器,
並在 PHP Command Line Interface (CLI)環境下運作執行。在 kNN 分群器進行分 群的過程中,除了需得知文件與文件之間的相似度以外,還必須決定以下兩項參 數的設定,即 k 值與相似度的分群門檻值(threshold)。
「k 值」為決定文件所需參考的相近文件個數,一般 k 值通常介於 1~20 之 間較為合適,且奇數比偶數好。k 值的訂定會影響分群結果的品質,如果 k 值選 擇過小,則得到的參考文件數過少,對周遭文件太過敏感,也容易放大噪音數據 的干擾,降低分群的準確度;倘若 k 值選擇過大,則容易將文件分屬到文件集中 出現頻率很高的群集,而非將文件歸屬到特質相近的群集。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
23
「門檻值」的意涵在於幫助分群的判斷。一個未分群的文件進入時,會依照 訂定的 k 值取出取其相似度最為接近的 k 份文件,判斷這 k 份文件的所屬群集,
便可得知該未分群文件與每個群集間的相似程度,並將該文件歸屬於和它相似度 最相近之群集中。不過,倘若與其最相似之群集其相似程度都低於門檻值,則判 斷該未分群文件不隸屬於目前存在的任何群集,應成立新的群集。另外,門檻值 的高低對分群的影響很大,過低的門檻值不容易獲得好的分群效果,而過高的門 檻值容易產生分群過度(Overfitting)的現象導致分群品質降低。
在未分群文件與其 k 個相近文件之相似度比較的過程中,其進行方式是把 k 份相近文件依照其所屬群集各別將相似度加總,相加結果相似度數值最高之群集 即為該未分群文件之所屬群集。(若其相似值高於門檻值)
3.3.5 分群規則
本研究所制定之分群規則將依 kNN 分群器的參數設定、二次分群及合併,
以及分群結束時點作說明:
1. 在 kNN 分群器的參數設定部分,每個分群階段會在不同 k 值下測試 3 種門 檻值來觀察群集的分群狀況,以選取加權平均群內相似度最佳之分群結果做 為該次 kNN 分群運作的參數設定。本研究設定 k 值由 5 開始,以 5 為單位 遞增,若 k 值遞增後進行分群的群內相似度可較遞增前增加,則再次提高 k 值進行分群測試(本研究限制 k 值最大遞增至 15 為止)。另外門檻值變動的 方式為以 0.01 為單位往上增加。
2. 二次分群為將大群集提出,單獨提高其分群門檻值來進行再次分群的動作,
以避免為了將大群集進行分群而影響其他群集的聚合程度。本研究將大群集 定義為群集內商品個數為 20 項產品以上時,則將該群集列為候選大群集。
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
24
3. 當出現一個群集中只有單項產品便會進行合併的動作,該項產品會合併於與 其最相近之群集中,其相近程度的衡量方式是衡量群與群間的質心相似度。
而可能合併的候選群集為與該群集同一階層的群集才會納入考量。
4. 分群的結束時點為:提出大群集進行下一階段分群時,若分群後的加權平均 群內相似度成長幅度過小,或是分群無法產生分群效果時,則停止該大群集 的分群動作。本研究訂定成長幅度過小為成長率小於 20%。