• 沒有找到結果。

第三節 深度學習技術

二、 TensorFlow

「k-means++」。

5. algorithm:

有「auto」、「full」或是「elkan」三種選擇,其中,「full」即為傳統 的 K-Means 演算法、「elkan」為 elkan K-Means 演算法,而默認值

「auto」則會根據數據值是否稀疏來決定使用「full」或是「elkan」,若數 據為稠密的則選擇「elkan」,反之,若數據為稀疏的則選擇「full」,因此 一般建議使用默認之「auto」演算法進行分析。

二、 TensorFlow

自 2015 年 Google 開放了原始碼,TensorFlow 即成為創建深度學習模型使用 的框架,深度學習為機器學習模型中會使用的多層神經網絡的其中之一,然而,

TensorFlow 融入人工智慧及機器學習中,針對無法透過顯性演算法獲得最優解 的目標相當有幫助,如用戶篩檢、預測與剖析之聚類分析(Clustering)等,其 架構流程為 graph(表示一整個計算任務)在 session(在 session 中才會執行 graph)中啟動,並將 graph 的 op. (operation,即為 graph 中的節點,亦為對資 料的操作)分發到 CPU 或是 GPU 設備上,而執行後將產生 tensor(表示數據資 料)回傳;其最廣泛被使用之三個模組分別為卷積神經網絡(Convolutional Neural Networks, CNN),適用於辨識和處理圖像,其實務應用於商業上的圖線 辨識,如為客戶進行相關之配對及歸類庫存之開發專案,或是醫學診斷中用於 配對病人的醫學圖像資料與已知疾病的能見病徵等;遞歸神經網絡(Recurrent neural networks, RNN),適用於處理自然語言相關的功能,其可應用於辨識對 白或講稿,或是虛擬助手,如 Apple 的 Siri、Amazon 的 Alexa 以及 Google 之助 手;大型線性模型(Linear Model),適用於資料分析和簡單的行為預測,舉例

然而,TensorFlow 亦提供非監督式學習技術之聚類分析模型,因聚類分析 之 演 算 法 為 一 個 對 於 數 據 進 行 初 步 分 析 的 技 術 之 一 , 故 廣 泛 被 使 用 。 在 TensorFlow 中實現 K-means 演算法,其演算之步驟如下:

1. tf.constant(value,dtype=None,shape=None,name=’Const’):

將數據保存於常量 tensor 中,創建一個常量 tensor,按照提供之數值,

並可用 shape 以指定其形狀,其中數值可以為一個數字,亦可為一系 列 list,而資料若為 list,其長度需小於等於圖形展開後之長度。

2. tf.Variable (initializer,name) :

決定初始點集合(centroids),可從輸入數據中隨機選擇 K 個對象,

K 即為分析者欲對數據分群之集群數量,可透過 tf.Variable 函數已完 成 此 目 的 。 initializer 為 初 始 化 參 數 , 可 具 有 tf.random_normal 、 tf.constant 等函數,而 name 即為變量之名字。

3. tf.sub(vectors,centroides)

當擁有數據資料之點集合時,根據歐式距離公式計算最近的點集合

(centroid),透過此 function 可計算數據之距離點,二維度之公式如 下,

d2(Vector, centroid)

= (Vectorx− centroidx2+ (Vectory− centroidy2 4. tf.expand_dims:

若資料之為度相同,但其維度大小不同時,可透過此 function 在每個 tensor 中插入一個維度,則可使上述 tf.sub function 於資料點進行計算 歐式距離公式。

5. tf.argmin

最後,透過 tf.argmin 來賦予數值,找到給定的向量 tensor 中,在指定 的座標軸上的最小值之為至,即為在某一維度中最小值之點集合

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

(centroid)。

6. tf.concat

當在迭代過程中創建了一個新的點集合,則須將此 K 個新的 tensor 的 果連結一起,而每個 tensor 即為 K 個集群中數據之平均值,而透過以 下之 function 以計算每一點屬於哪個集群。

(1) tf.equal function 獲得一個 tensor,true 即代表了指定的 tensor 與 K 個集群互相匹配的位置,同時計算了數據點之間的平均值。

(2) tf.where 則根據輸入之 tensor 中的元素值歸類於 true 的為ˋ來建構 一個 tensor,其維度為1 × n數據列。

(3) tf.reshape 根據 tensor 向量中屬於第 k 個集群的點所引來建構一個 tensor,其維度為n × 1。

(4) tf.gather 則從第 k 個集群中收集之所有點座標創建 tensor,其向量 維度為1 × n 之數據列。

(5) 最後,透過 tf.reduce_mean 跟 k 個集群中的所有點族群的平均值來 創建 tensor 為二維度之座標值。

在基本的 K-Means 聚類演算法步驟為輸入聚類數 k,並生成 k 個隨機點作為 類別的中心點,將每個點所分配到最近的中心點做為新的聚類,計算每個類別 的平均值做為新的中心點,並於中心點不再變化或是達到最大迭代次數時,輸 出結果。

‧ 國

立 政 治 大 學

N a tio na

l C h engchi U ni ve rs it y

第肆章 實證分析

聚類分析(Cluster Analysis)屬於數據挖掘中的非監督式學習模型之一,

將對象按照各自的屬性、特性進行合理分類,由類似對象組合成多個類別的過 程,因此,本文將使用之分析方法為聚類分析,希望透過模型將在電商通路中 所蒐集之顧客資訊,對於這群未知顧客進行分群,將相似特性之顧客集為一 群,業者可透過分群結果對於不同聚類中之顧客進行不同之行銷策略,以提供 更具效率以及客製化服務,其中,將使用以 Python 機器學習之開源軟體 Scikit-Learn 之 K-Means 進行聚類分析,此外,對於聚類後之顧客貼上標籤,再進行 決策樹分析(Decision Tree),希望透過決策樹更進一步觀察其分類標準以及 配適結果。