• 沒有找到結果。

第四章 實驗

4.1 環境與流程

4.1.2 實驗流程

立 政 治 大 學

N a

tio na

l C h engchi U ni ve rs it y

27

第四章 實驗

相較於第三章的實驗,本章實驗使用較大規模的資料集。資料集為 2010 年 9 月至 2011 年 3 月的使用紀錄,共 26 萬多筆資料,其中包含有 30 個使用者、1125 個手機應用 程式。

4.1 環境與流程

4.1.1 實驗環境

本研究進行實驗時所使用的系統,硬體為一般個人電腦(單機),軟體環境則是簡述如 下:

 作業系統,使用 Ubuntu v12.04

 程式語言,使用 C++、Python

 關聯式資料庫使用 MySQL (Workbench CE 6.0.8)

 另外,本研究使用由德克薩斯州大學資訊科學學系所開發的 Co-clustering Software (Version 1.1)16進行雙分群

4.1.2 實驗流程

此實驗為一個基於離線(Off-Line)及模型基礎(Model-Base)的架構。我們將資料集整理 成 CCS(Compressed Column Storage)檔,使用 Co-Clustering Software 三種演算法對使用者

16資料來源:http://www.cs.utexas.edu/Users/dml/Software/cocluster.html

CSV(Comma Separated Value)檔並匯入資料庫,對每個 User,做不同的推薦。首先,我們 找出與此 User 相同群組的 User 名單,在各應用程式分類的群組中,使用三種方法計算同 的 User 使用的頻率分別是 0.39、0.36、0.09、0.12、0.06,那麼他的分數就是 1.02;App Cluster 是 1 的 App0100,被 2 個同群的 User 使用的頻率分別是 0.2、0.16,那麼他的分數

17 參考網址:https://www.python.org/

‧ 國

立 政 治 大 學

N a

tio na

l C h engchi U ni ve rs it y

29

到我們所推薦的應用程式;然而,使用者是否使用某應用程式,也不能完全代表他或她是 否喜歡該應用程式。圖 18 為實驗一流程說明。

圖 14 實驗流程圖

以下介紹實驗一所用的 SQL。

‧ 國

立 政 治 大 學

N a

tio na

l C h engchi U ni ve rs it y

30

SQL#1 找出與欲推薦 User 同一個 Cluster 其他 User,並以這些同群使用者的資料為基 準,其中 user_cluster_result 儲存了使用者分群的結果, $user_id$表示欲推薦的使用者。

SQL#2 取得 User 未使用過的 App 做為推薦候選名單,user_app_value 這個 Table 儲存 了使用者對應用程式的操作狀況,app_cluster_result 儲存了應用程式分群的結果。

SELECT user FROM user_cluster_result WHERE user_cluster = (

SELECT user_cluster FROM user_cluster_result WHERE User='$user_id$'

)

SELECT a.app_id, a.value, b.app_cluster FROM user_app_value a, app_cluster_result b

WHERE a.User='$user_ud$' and a.value='0' and a.app_id=b.app_id

‧ 國

立 政 治 大 學

N a

tio na

l C h engchi U ni ve rs it y

31

SQL#3.1 計算每個應用程式的分群$app_cluster$的使用人數,使用@row 語法依照人數 多少從高到低排序。

SQL#3.2 計算每個應用程式的分群$app_cluster$的使用次數/頻率,使用@row 語法依 照使用次數/頻率多少從高到低排序。

SELECT *,@row := @row + 1 as row FROM (

SELECT app_id, count(user) AS user_app_value,app_cluster FROM recommender_list a, (

SELECT @row := 0

) r

WHERE app_cluster=$app_cluster$ AND user_app_value <> 0 GROUP BY app_id ) b

ORDER BY user_app_value DESC

SELECT *,@row := @row + 1 AS row FROM (

SELECT app_id, SUM(user_app_value) AS user_app_value, app_cluster FROM recommender_list a, (SELECT @row := 0) r

WHERE app_cluster=$app_cluster$

GROUP BY app_id ) b

ORDER BY user_app_value DESC

‧ 國

立 政 治 大 學

N a

tio na

l C h engchi U ni ve rs it y

32

SQL#4 推薦排名前 5 的應用程式。

當我們在整理實驗所需的資料集時,發現類似的應用程式在 Google Play 的分類有些 特別,例如像是部分 Bus 相關的應用程式分類為 Transportation,而部分 MRT 相關的應用 程式分類為 Travel & Local,我們設計了額外的實驗,從 User 使用應用程式的相似性,探 討應用程式在 Co-Clustering 做分類的結果,想了解 Google Play 的分類情形是否可做調整。

Co-Clustering Software 所提供的參數有許多,必要輸入的參數有演算法(–A)、行分群 數量(–C)、 輸入之資料(–I)、列分群數量(–R)四種。本研究所用的參數為-A、-C、-I、-R、

-O 五種,在演算法中,我們使用了三種演算法分別做實驗;以應用程式為列(Column),將 應用程式分成 30 個 Cluster;以使用者為行(Row),將使用者分為 2 個 Cluster。本實驗的 參數設定說明如表 2。

SELECT * FROM recommender_result WHERE app_sequence<=5

i -- Information Theoretic Co-Clustering algorithm(DEFAULT)

e -- Minimum Squared Residue I Co-Clustering Algorithm

r -- Minimum Squared Residue II Co-Clustering Algorithm

inputFormatType

若輸入稠密矩陣參數 d,必須指定檔案格式

s:矩陣與其維度資訊分別儲存於兩個檔案

t:矩陣與其維度資訊儲存於同一檔案

inputFilename

-I s f user_app_count

-R 列分群數量 ROW Cluster Num

outputAccessMode:輸出模式

a:將結果附加在檔案後

o:將結果覆蓋檔案

outputFilename:輸出的檔案名稱

-O c s 1 o result

‧ 國

立 政 治 大 學

N a

tio na

l C h engchi U ni ve rs it y

34

相關文件