真正傻瓜式操作:這款國產BI軟體,輕鬆實現資料分析預測與視覺化
最近朋友推薦一款名為Yonghong Desktop的工具,號稱既有BI,又有AI,而且還是免費的,於是二話不說,下載->安裝->啟動產品,一系列操作快速搞定後,馬上就想體驗一下。
這裡我們使用天池開放的資料資源裡下載的兩個 csv 資料
資源地址:
Tianchi_mum_baby.csv(兒童資訊)
Tianchi_mum_baby_trade_history.csv(交易記錄)
作為體驗該軟體的樣例資料。表結構如下兩張表所示。
表1 兒童資訊如下,共有 3 個欄位:
列名 | 描述 |
---|---|
user_id | 整數型別,使用者ID |
birthday | 時間型別,出生年月日 |
gender | 性別(“0”是女,“1”是男,“2”是未知) |
表2 交易記錄資訊如下,共有 7 個欄位:
列名 | 描述 |
---|---|
auction_id | 整數型別,交易ID |
user_id | 整數型別,使用者ID |
cat_id | 整數型別,品類ID |
cat1 | 整數型別,基礎品類ID |
property | 文字型別,商品相關屬性 |
buy_mount | 整數型別,購買數量 |
day | 時間戳,交易日期 |
通過兩個表的資料,實現“根據使用者購買的兒童用品交易記錄預測兒童的年齡”。
後續就可以基於預測的結果向用戶推薦該年齡段可能需要的商品,促成更多商品銷售,用資料分析提升產品轉換,最終實現做成了一幅視覺化報表,如下:
經過研讀線上幫助文件和一番摸索發現,Yonghong Desktop功能確實強大,資料探索、準備和處理、模型構建和推理,報告製作等各方面功能都很完善。
接下來我們就來一起學習下,如何利用這些資料來實現分析與預測吧~
01. 做好基礎準備——資料的匯入與探索
1.1 資料匯入
資料來源的格式為CSV格式,直接在 Yonghong Desktop 上選擇下圖1這個功能上傳資料即可形成資料集。
圖1 CSV資料匯入功能
匯入後的資料集分別存放在如下位置
圖2 匯入的原始資料集
1.2 資料探索
在Yonghong Desktop 上“深度分析”模組建立一個新實驗,將資料集“baby”、“baby_trade_history”拖入畫布,在右側檢視各個資料的元資料、探索資料功能。
可以發現以下資訊:
- “baby”資料集的user_id欄位唯一值數量為953個;
- “baby_trade_history”資料集的user_id欄位唯一值數量為29944個,因此只有3.18%的使用者關聯有baby資料的;
- “baby_trade_history”資料集的property欄位是關於購買商品的屬性資訊且均已脫敏,無法知道其具體含義。
這麼多的交易記錄都查不到對應的兒童資訊,我的想法是通過有兒童資訊的交易記錄,經過模型構建推理剩下那些交易記錄對應的兒童資訊。
02. 簡單五步——輕鬆完成資料處理
將“baby_trade_history”資料集關聯有兒童資訊的交易記錄作為兒童年齡已標註的訓練集,未關聯兒童資訊的記錄作為待預測資料集。
根據對業務和資料集的理解,兒童年齡與欄位cat_id (商品品類)、cat1 (商品基礎品類)、property (商品屬性)、buy_mount(購買數量)相關性較高。
2.1 構造“baby_trade_history_train”資料集作為模型的訓練集
它是由資料集“baby”、“baby_trade_history”資料集內部聯接而成。構造資料流如下圖3所示,“聯接”運算元的配置如圖4所示。
圖3 baby_trade_history_train資料集的工作流圖4 訓練集的內部聯接配置
2.2 通過交易日期和生日,算出年齡欄位
在“baby_trade_history_train”資料集上通過新建計算列生成一個計算列欄位age,其取值為根據欄位birthday計算出的兒童年齡。該計算列:
“roundUp((dateValue(parseDate(col['day'],'yyyyMMdd'))-dateValue(parseDate(col['birthday'],'yyyyMMdd')))/365,1)”
2.3 構造“baby_trade_history_predict”資料集作為模型推理用的待預測資料集
它是由資料集“baby”、“baby_trade_history”資料集右側聯接而成,如圖5所示。
圖5 測試集的右側聯接配置
2.4 待預測資料集過濾掉年齡欄位不為空的資料行
由於“baby_trade_history”資料集的user_id唯一值數量多於“baby”資料集的記錄,右聯接後“baby_trade_history_predict”資料集中關於”baby”的有大量空值。
如圖6所示。在該資料集上新增過濾條件濾出birthday欄位含有空值的行作為“baby_trade_history_predict”資料集最終輸出,過濾完的結果只剩下在baby資料集裡查詢不到的資料。過濾條件配置如圖7所示。
圖6 有空值的欄位圖7 過濾條件
2.5 從property欄位構造新特徵
property欄位的資料如圖8所示。
圖8 baby_trade_history資料
該欄位集中了商品的所有屬性名及其取值,但顯然不同型別的商品,其屬性必然有差異,比如用途、尺寸、重量、材質、商品細分型別等等,不同年齡段的兒童用商品必然有所不同或者兒童偏好不同,這決定了商品屬性必然與年齡存在相關性。
通過觀察資料(圖8)發現,property欄位將商品屬性及其取值以冒號分割同時以分號分割不同的屬性,雖然屬性及取值均已脫敏,但仍然有利用的價值。
於是我嘗試用計算列拆分該欄位構造出新欄位。由於商品屬性較多,我分離出了幾個常見的商品屬性作為計算列,如圖9所示,其中:property_len是商品屬性個數,其內容為:
len(col['property'])-len(substitute(col['property'],';',''))
property_21458是屬性21458對應的值,其計算列內容為:
if contains(ifNull(col['property'],'0'),'21458:') then parseInt(split(split(col['property'],'21458:',2),';',1))/1000 else 0 end
其它屬性列對應的計算列同property_21458列。
圖9 property分離出的新欄位(紅框內)
經過以上步驟,資料處理完成。
03. 快速搭建實驗——模型的構建與推理
3.1 模型構建
模型構建涉及特徵工程和訓練過程,在深度分析中是以實驗的形式存在的。經過前面資料處理之後,搭建模型實驗已經比較簡單了。在Yonghong Desktop上建立一個實驗,將“資料集”tab下的訓練集“baby_trade_history_train”資料集和“操作”tab下“/演算法/迴歸/決策樹迴歸”運算元及檢視節點拖至實驗畫布,構建的實驗如下圖10所示,用到的節點位於圖11中標註的位置。
圖10 建立的模型訓練實驗工作流圖11 使用的運算元
決策樹迴歸的引數配置表如圖12所示,調參過程略過,這裡大家可以根據對資料和業務的理解自行設定。
特徵列選擇如圖13所示,注意欄位的順序是有用的,模型應用的時候欄位的含義和順序需要與這個特徵列順序保持一致。
圖12 決策樹迴歸演算法的引數配置表圖13 特徵列
訓練完模型後通過“多檢視”節點可以檢視其效能指標、特徵重要性等,如下圖14所示。
為了後續應用訓練好的模型,我通過“儲存為訓練模型”及時將模型儲存下來(操作過程略),儲存的訓練模型存放於如圖15所示的位置,取名為:兒童年齡預測_訓練模型。
圖14 模型效能指標檢視圖15 儲存的訓練模型
特別注意:在搭建模型訓練實驗的時候,遇到一個小坑。在“建立資料集”模組構建訓練集時,如果新增計算列或者更新了計算列的計算邏輯後,在深度分析實驗工作流中的訓練集“baby_trade_history_train”節點上需要滑鼠右鍵選單點選“重新整理”。
3.2 模型推理
儲存了訓練模型,就可以開始用它搭建模型推理服務工作流了。
第一步,新建一個實驗,將預測資料集:baby_trade_history_predict,和剛儲存的訓練模型:兒童年齡預測_訓練模型拖入畫布中,建立工作流如圖16所示。
第二步,配置模型應用節點。由於訓練集和測試集的所選的特徵欄位完全一樣,所以模型應用中填寫的特徵列與訓練模型的欄位和順序完全一致,本實驗中的配置如圖17所示。
圖16 模型推理工作流圖17 模型應用運算元的配置項
predict_age欄位是新建的欄位,點選圖18裡的icon進行建立。
圖18 新建欄位寫入模型預測的結果
第三步,設定製作報告可以使用的節點輸出。這裡顯然模型應用節點的輸出是我需要的,直接選擇該節點即可,節點設定頁面如圖19所示。
圖19 設定用於製作報告的節點
儲存該實驗,取名為:兒童年齡預測實驗。
04. 讓結果一目瞭然——製作視覺化報告
訓練資料集baby_trade_history_train裡有age欄位,待預測資料集裡有預測結果欄位predict_age。現在的一個想法,就是把所有交易記錄的age和predict_age拼接到一列裡,就可以得到所有交易記錄的年齡(一部分是實際的,一部分是預測的)。
4.1 合併訓練資料集和待預測資料集
這裡又用到了自服務資料集進行資料處理,將待預測資料集baby_trade_history_predict和訓練資料集baby_trade_history_train做聯合得到新資料集baby_trade,如圖20。
圖20 聯合之後的資料集baby_trade
特別注意:聯合的資料集需要欄位相同,欄位型別也匹配。
4.3 基於合併的資料集新建報告,並應用實驗
基於baby_trade新建報告,選擇繫結pane上的應用實驗,如圖20。
圖20 應用實驗入口
在彈出的選擇實驗視窗中,如圖21 選擇實驗視窗,選擇兒童年齡預測實驗,並選擇模型應用節點,點選確定。
圖21 選擇實驗視窗
在此繫結資料集上,出現模型應用上新增的欄位,見圖22。
圖22 應用實驗
4.3 合併age和predict_age欄位
新建計算列age_new,進行拼接,見圖23。
圖23 欄位拼接
4.4 對每個年齡段進行分組
基於age_new欄位新建資料分箱,設定見圖24。
圖24 資料分箱
4.5製作報告
用上面預測和準備的資料,即可在Yonghong Desktop上通過視覺化的方式拖拽得到消費商品的年齡分佈,不同年齡段的購買情況,不同年齡的商品偏好,不同商品的年齡分佈,並由此做精準的商品推薦。
我拖拽做了四個圖表,基本在分鐘級以內搞定,最終展示效果如圖25所示。
圖25 視覺化效果
好了,現在整體的資料分析+預測已經完成,來做一個簡單的總結:
回溯整個過程,可以發現,Yonghong Desktop有強大的資料治理功能,其中自服務資料集和計算列異常驚豔。深度分析模組內建了豐富的運算元,模型構建和推理通過簡單的工作流,拖拽即可實現,無需編碼。通過在實驗上設定可用於報告製作的運算元節點,即可實現AI和BI結合,將AI的預測結果通過報表進行分析和呈現。