第二章 文獻探討
3.2 精準行銷推薦系統架構
3.2.2 建立推論引擎規則庫階段
本研究透過人工智慧程式語言 CLIPS.NET 建構推薦系統規則庫和推論引擎,
建構推薦系統主要是使用 CLIPS.NET 開發規則式專家系統,考慮到電子商務平 台乃在初期營運階段,而使用者的紀錄(點閱與購買紀錄)不多,因此規則庫內只 包含 A 工作坊的行銷經驗以及陶藝品推薦送禮的規則。
如同上一節所提到,針對每條規則本研究希望依據 A 工作坊專家經驗及實 際考核後賦予一個確定因素值,有利於系統可以計算各件產品的適合度,然後做 排序推薦給消費者。但是,CLIPS.NET 本身並不支援確定因素值處理,因此本研 究必須自行開發與定義規則模式,同時進行確定因素值計算和排序,以下說明這 些項目程序:
母親節會喜歡買帶有祝福或豐收平安的含意禮物給母親
如果今天是母親節,推薦祝福或豐收平安類別產品 (CF 0.5) 男生- 偏向於買藝術品
如果男生顧客,推薦藝術品 (CF 0.8) 女生- 會買生活用品,會喜歡柴燒杯
(a) A 陶藝工作坊行銷經驗
(b) 特別日期送禮規則 圖 3. 4 推論引擎規則庫規則
31
3.2.2.1 重新定義規則模式
目前在大多數的專家系統都會依據傳統 IF-THEN 規則模式所建構,
CLIPS.NET 程式語言內也只提供此規則模式讓開發者使用原有 Defrule 函式進行 規則撰寫與處理,如圖 3.5 所示。
但若只用以上的模式建立 A 工作坊的規則庫,缺點是不僅無法輸入規則的 確定因素值,更何況是計算、分析,導致推論輸出結果也許只是符合條件的產品 集合,關於陶藝品推薦順序也沒法確定,到最後只能全部產品隨機呈現給消費者。
為了改善此問題,本研究將會重新定義規則模式,同時增加負責處理確定因素值 函式庫,所有規則都會依據以下的模式撰寫,本研究所參考 CLIPS.NET 線上範 例(WineDemo 範例),如圖 3.6。
(a) 規則表達模式 (b) 規則範例
(c) CLIPS 程式語言表示規則
IF animal is duck THEN sound is quack IF <antecedent>
THEN <consequent>
圖 3. 5 常用的規則模式
32
3.2.2.2 推論引擎程式碼架構設計
因本研究不使用 CLIPS 傳統輸入規則方法(使用 Defrule),也就是說必須設 計一套方法可以讓使用者輸入推論規則,並且能處理依據本研究設計規則架構而 產生不同規則組合。規則輸入、處理、選擇和分析都被設計在名為 RULES 的模 組,關於模組更詳細的介紹會在本章 3.3 節說明。
如同規則在推論過程的重要性,本研究暫定將產品資訊固定輸入在推論引 擎程式碼內,並寫入 PRODUCTS 模組中。同時,產品模組還結合一些其它功能,
包含進行分析程序找出符合需求的產品集,並且計算每件產品適合度然後做產品 排序。最後,當有外部程式碼呼叫產品模組的時候,系統會回傳已經進過處理的 產品名單。
IF <antecedent 1> AND <antecedent 2>
AND <antecedent 3> . . . AND <antecedent n>
THEN <consequent 1> with certainty <CF 1> and <consequent 2> with certainty <CF 2> …and
圖 3. 6本研究自訂規則模式(加入確定因素值)
33
此外,MAIN 模組是 CLIPS 內的預設程式,因而本研究希望利用此模組定 義短期記憶內事實結構,並設定其它模組被呼叫程序,詳細如圖 3.7 所示:
3.3 專家推薦系統 3.3.1 RULES module
3.3.1.1 定義規則模式
在本研究中,所有推薦規則都會以事實輸入至推論引擎的短期記憶,然而 當外部程式連結推薦系統並傳送消費者基本資料時,推薦系統會從短期記憶內進 行點火,找出有關聯的規則從而將這些規則的結果轉化成配對條件,並為計算每 件產品適合度提供 CF 值。因此,在 RULES module 本研究需定義一個事實架構,
詳細如圖 3.8 所示。
圖 3.7 各模組個別功能以及被呼叫的程序
34
每條規則都含有一個 CF 值,而在初始會自動預設為 100%,CF 值在進行 規則點火過程中會因規則後面輸入的 CF 值而改變。然後接下來就是規則的條件,
以本研究自訂規則結構,規則的條件是由一或許多條件所合成並以 “AND”作為 分隔,所以在 IF 部分需開放輸入多值欄位。
圖 3. 9 規則以事實輸入至推論引擎
IF <antecedent 1> AND <antecedent 2>
AND <antecedent 3> . . . AND <antecedent n>
圖 3. 8 推論規則 IF 格式
35
如同條件部分,規則結果的部分可同時描述不同的結果以及針對每個結果 的發生確定因素值(圖 3.10),此部分也必須設為多值欄位。
依以上所定義的事實輸入,每條規則在推論引擎短期記憶的各式會如同圖 3.11:
3.3.1.2 推論規則處理程序
推論規則以事實輸入到推論引擎的短期記憶後,會等到外部連結程式傳送 消費者資料,同時也會加入一些特別的事實用於推論過程。推論引擎被啟動後,
事實與規則會自動點火,從而篩選與事實有相關的規則做進一步分析。點火處理 過程做說明如下:
(1) 步驟一: 當規則與外部連結輸入的事實配對成功,修改並刪除配對成功條 件,此步驟進行後結果會後兩種可能性:
規則在條件部分以 IF….and…格式,經過第一步驟,規則在短期記憶 內會變成位 IF and…格式,同時將會點火步驟二
(a) 以事實輸入規則
(b) 推論引擎短期記憶內呈現 圖 3.11 以事實方式輸入推論規則
THEN <consequent 1> with certainty <CF 1> and
<consequent 2> with certainty <CF 2> …and
<consequent n> with certainty <CF n>
圖 3.10 推論規則 THEN 格式
36
推論規則若以 IF…..格式,修改後規則只會剩下 IF,並會啟動第三步 驟
(2) 步驟二: 經過上個步驟處理,已配對成功的規則都會變成 IF and…格式,因 此在這步驟主要是刪除多餘的 and,並會重新點火步驟一
(a) 移除已配對的條件
(b) 修改後的規則
圖 3.12 推論規則與外部輸入事實配對
(a) 規則內若有 IF and 便進行刪除 and
(b) 刪除 and 後的結果 圖 3.13 刪除多餘的 and
37
(3) 步 驟三 : 在此步驟以進行配對的規則條件部分 已完全刪除 (出格式 IF THEN….),因此只需要讀取規則後面的結果以及每個結果出現的 CF 值,
並在推論引擎短期記憶內新增一個事實作為後續與產品資料做配對,新增 事實 CF 值會由規則 CF 值與結果 CF 的交集,此外處理後結果會在推論規 則內刪除。若規則產生多種可能性的結果,步驟三過後的規則結果會出現 then and…格式,因此會點火步驟四處理。
(4) 步驟四: 如同步驟二,但此步驟是用於刪除規則結果後多餘的 and (a) 處理規則所產生的結果並新增推論事實
(b) 步驟三處理過後的結果 圖 3.14 處理規則所產生的結果
(a) 修改結果後的 and
(b) 執行後的結果
圖 3.15 處理推論結果後多餘的 and
38
3.3.2 PRODUCTS module
經過前面 RULES module 處理,有參與產品推論過程的規則所產生事實都 被記錄在推論引擎短期記憶,接下來的工作則是處理產品資訊,包括把產品資料 也送進推論引擎,依據推論規則產生的事實尋找符合條件的產品同時計算每件產 品的適合度做排序,在最後階段回傳已處理過的產品名單,包含產品適合度給外 部連結系統。以上流程的程式碼會在接下來依序說明:
(1) 產品資料輸入格式: 本研究先從產品三個資料欄位來進行分析,產品名稱 或編碼、產品類型(gift-type)、適合送禮對象(gift-for)、適合使用的性別 (gift_gender),因此在產品資料輸入各式現階段只包含以上所描述的屬性,
如圖 3.16。
(2) 產品與推論事實(attribute)做配對,找出適合的產品,並計算每件產品 CF 值,
CF 值會在推論事實 CF 中選擇較小,如圖 3.17。
圖 3.16 產品資料輸入格式
圖 3.17 選擇適合產品
39
(3) 產品以適合度進行排序,在最後產生產品名單程序會呼叫到此函式,主要 功能是要依據每件產品的確定因素值進行排列,如圖 3.18 所示。
(4) 外部程式會呼叫此函式,而會得到回傳的結果已經推論出來的產品名單,
並此名單也包含每件產品符合推論條件的適合度,同時也會呼叫其它函式 進行產品排序,如圖 3.19。
3.3.3 MAIN module
MAIN 模組是 CLIPS 內程式預設模組,本研究透過 MAIN 模組指定其它模 組啟動優先和程序;此外,MAIN 模組亦可進行初步資料處理讓其它模組可更順 利的進行分析,例如事實確定因素值合併等工作。不僅如此,有外部連結程式會 傳送資料到推論引擎(產品資料、顧客資料等),所以在 MAIN 模組內,本研究會 定義一個通用的格式,使資料可以被記錄在推論引擎短期記憶內。以上所描述的 功能如下說明:
圖 3.18 產品排序
圖 3.19 外部程式呼叫,回傳推薦產品名單
40
(1) 外部連結程式傳送資料格式定義,推論引擎會要求輸入資料的名稱、資料 內容以及每筆資料確定因素值,但是 CF 值並不是固定欄位因此分析系統 在初期會使用預設 100%,如圖 3.20:
(2) 合併事實確定因素值的功能主要是當出現兩個或多個以上的重複事實,短 期記憶會自動刪除一個事實並合併兩個事實的確定因素值,計算公式如方 程式 3-1:
CF =(𝑐1 + 𝑐2) ∗ 100 − 𝑐1 ∗ 𝑐2 100
3.4 智慧推論系統 API
因智慧型專家推薦系統使用人工智慧程式語言 CLIPS 開發,導致與原本以 PHP 程式語言開發並進入使用階段的電子商務系統出現無法整合狀況,本研究 進過多次研究並實驗不同解決方案,最終決定使用如圖 3.22 所示的處理方案。
在 2011 年,負責開發人工智慧程式語言 CLIPS 團隊推出與.NET 具有高相 容性版本,名為 CLIPS.NET,因而許多在.NET 平台上運作的程式語言都能結合
圖 3.20 外部資料輸入格式
圖 3.21 合併重複的事實
(3-1)
41
CLIPS 並呼叫使用,包含微軟公司所提供用於開發網頁 ASP.NET。藉此,本研究 希望能通過 ASP.NET 進行開發網頁服務(Web Service),一方面可讓電子商務系 統連結並傳送要分析的顧客,另外一方面可透過 ASP.NET 連結至 A 工作坊資料 庫抓取消費者和產品資料,最後呼叫人工智慧推薦系統、傳送各相關資料,同時 啟動分析程序尋找符合消費愛好產品。產品名單會從分析系統回傳到 APS.NET 環境,同時透過網際網路傳遞到電子商務平台,呈現在消費者購物頁面推薦給使 用者。
3.4.1
電子商務系統連結推薦系統本研究使用 ASP.NET 平台為推薦系統建立 Web Service 使得前台電子商務 網站可呼叫線上的 API 服務,並傳送需要進行分析的消費者編號(userID),Web 服務會自動連結至顧客料庫同時儲存顧客資料。本研究目前只針對消費者三個基
圖 3.22 Web API 架構設計
電子商務系統傳送消費者
電子商務系統傳送消費者