最近朋友推薦Yonghong Desktop,號稱既有BI,又有AI,而且還是免費的,于是二話不說,下載->安裝->啟動產品,一系列操作快速搞定后,馬上就想體驗一下。
這里我們使用天池開放的數據資源(Baby Goods Info Data,里下載了兩個csv的數據:
Tianchi_mum_baby_trade_history.csv(交易記錄)
作為體驗該軟件的樣例數據。表結構如下2圖所示。
表1 兒童信息
?
列名 | 描述 |
user_id | 整數類型,用戶ID |
birthday | 時間類型,出生年月日 |
gender | 性別(“0”是女,“1”是男,“2”是未知) |
?
表2 交易記錄
?
列名 | 描述 |
auction_id | 整數類型,交易ID |
user_id | 整數類型,用戶ID |
cat_id | 整數類型,品類ID |
cat1 | 整數類型,基礎品類ID |
property | 文本類型,商品相關屬性 |
buy_mount | 整數類型,購買數量 |
day | 時間戳,交易日期 |
?
通過兩個表的數據,實現“根據用戶購買的兒童用品交易記錄預測兒童的年齡”。
后續就可以基于預測的結果向用戶推薦該年齡段可能需要的商品,促成更多商品銷售,用數據分析提升產品轉換,最終實現做成了一幅可視化報表,如下:
經過研讀在線幫助文檔和一番摸索發現,Yonghong Desktop功能確實強大,數據探索、準備和處理、模型構建和推理,報告制作等各方面功能都很完善。
接下來我們就來一起學習下,如何利用這些數據來實現分析與預測吧~
一、做好基礎準備——數據的導入與探索
數據導入
數據源的格式為CSV格式,直接在Yonghong Desktop上選擇下圖1這個功能上傳數據即可形成數據集。
導入后的數據集分別存放在如下位置
數據探索
在Yonghong Desktop 上“深度分析”模塊創建一個新實驗,將數據集“baby”、“baby_trade_history”拖入畫布,在右側查看各個數據的元數據、探索數據功能。
可以發現:
“baby”數據集的user_id字段唯一值數量為953個,“baby_trade_history”數據集的user_id字段唯一值數量為29944個,因此只有3.18%的用戶關聯有baby數據的。“baby_trade_history”數據集的property字段是關于購買商品的屬性信息且均已脫敏,無法知道其具體含義。
這么多的交易記錄都查不到對應的兒童信息,我的想法是通過有兒童信息的交易記錄,經過模型構建推理剩下那些交易記錄對應的兒童信息。
二、簡單五步——輕松完成數據處理
將“baby_trade_history”數據集關聯有兒童信息的交易記錄作為兒童年齡已標注的訓練集,未關聯兒童信息的記錄作為待預測數據集。根據對業務和數據集的理解,兒童年齡與字段cat_id (商品品類)、cat1 (商品基礎品類)、property (商品屬性)、buy_mount(購買數量)相關性較高。
第一步,構造“baby_trade_history_train”數據集作為模型的訓練集
它是由數據集“baby”、“baby_trade_history”數據集內部聯接而成。構造數據流如下圖3所示,“聯接”算子的配置如圖4所示。
圖3 baby_trade_history_train數據集的工作流
圖4 訓練集的內部聯接配置
第二步,通過交易日期和生日,算出年齡字段
在“baby_trade_history_train”數據集上通過新建計算列生成一個計算列字段age,其取值為根據字段birthday計算出的兒童年齡。該計算列:
“roundUp((dateValue(parseDate(col['day'],'yyyyMMdd'))-dateValue(parseDate(col['birthday'],'yyyyMMdd')))/365,1)”
第三步,構造“
baby_trade_history_predict”數據集作為模型推理用的待預測數據集
它是由數據集“baby”、“baby_trade_history”數據集右側聯接而成,如圖5所示。
圖5 測試集的右側聯接配置
第四步,待預測數據集過濾掉年齡字段不為空的數據行
由于“baby_trade_history”數據集的user_id唯一值數量多于“baby”數據集的記錄,右聯接后“
baby_trade_history_predict”數據集中關于”baby”的有大量空值,如圖6所示。在該數據集上添加過濾條件濾出birthday字段含有空值的行作為“baby_trade_history_predict”數據集最終輸出,過濾完的結果只剩下在baby數據集里查詢不到的數據。過濾條件配置如圖7所示。
圖6 有空值的字段
圖7 過濾條件
第五步,從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分離出的新字段(紅框內)
經過以上步驟,數據處理完成。
三、快速搭建實驗——模型的構建與推理
模型構建
模型構建涉及特征工程和訓練過程,在深度分析中是以實驗的形式存在的。經過前面數據處理之后,搭建模型實驗已經比較簡單了。在Yonghong Desktop上創建一個實驗,將“數據集”tab下的訓練集“baby_trade_history_train”數據集和“操作”tab下“/算法/回歸/決策樹回歸”算子及視圖節點拖至實驗畫布,構建的實驗如下圖10所示,用到的節點位于圖11中標注的位置。
圖10 創建的模型訓練實驗工作流
圖11 使用的算子
決策樹回歸的參數配置表如圖12所示,調參過程略過,這里大家可以根據對數據和業務的理解自行設置。特征列選擇如圖13所示,注意字段的順序是有用的,模型應用的時候字段的含義和順序需要與這個特征列順序保持一致。
圖12 決策樹回歸算法的參數配置表
圖13 特征列
訓練完模型后通過“多視圖”節點可以查看其性能指標、特征重要性等,如下圖14所示。為了后續應用訓練好的模型,我通過“保存為訓練模型”及時將模型保存下來(操作過程略),保存的訓練模型存放于如圖15所示的位置,取名為:兒童年齡預測_訓練模型。
圖14 模型性能指標視圖
圖15 保存的訓練模型
特別注意:在搭建模型訓練實驗的時候,遇到一個小坑。在“創建數據集”模塊構建訓練集時,如果添加計算列或者更新了計算列的計算邏輯后,在深度分析實驗工作流中的訓練集“baby_trade_history_train”節點上需要鼠標右鍵菜單點擊“刷新”。
模型推理
保存了訓練模型,就可以開始用它搭建模型推理服務工作流了。
第一步,新建一個實驗,將預測數據集:
baby_trade_history_predict,和剛保存的訓練模型:兒童年齡預測_訓練模型拖入畫布中,創建工作流如圖16所示。
第二步,配置模型應用節點。由于訓練集和測試集的所選的特征字段完全一樣,所以模型應用中填寫的特征列與訓練模型的字段和順序完全一致,本實驗中的配置如圖17所示。
圖16 模型推理工作流
圖17 模型應用算子的配置項
predict_age字段是新建的字段,點擊圖18里的icon進行創建。
圖18 新建字段寫入模型預測的結果
第三步,設置制作報告可以使用的節點輸出。這里顯然模型應用節點的輸出是我需要的,直接選擇該節點即可,節點設置頁面如圖19所示。
圖19 設置用于制作報告的節點
保存該實驗,取名為:兒童年齡預測實驗。
四、讓結果一目了然——制作可視化報告
訓練數據集baby_trade_history_train里有age字段,待預測數據集里有預測結果字段predict_age?,F在的一個想法,就是把所有交易記錄的age和predict_age拼接到一列里,就可以得到所有交易記錄的年齡(一部分是實際的,一部分是預測的)。
第一步:合并訓練數據集和待預測數據集
這里又用到了自服務數據集進行數據處理,將待預測數據集
baby_trade_history_predict和訓練數據集baby_trade_history_train做聯合得到新數據集baby_trade,如圖20。
圖20 聯合之后的數據集baby_trade
特別注意:聯合的數據集需要字段相同,字段類型也匹配。
第二步:基于合并的數據集新建報告,并應用實驗
基于baby_trade新建報告,選擇綁定pane上的應用實驗,如圖20。
圖20 應用實驗入口
在彈出的選擇實驗窗口中,如圖21 選擇實驗窗口,選擇兒童年齡預測實驗,并選擇模型應用節點,點擊確定。
圖21 選擇實驗窗口
在此綁定數據集上,出現模型應用上新增的字段,見圖22。
圖22 應用實驗
第三步:合并age和predict_age字段
新建計算列age_new,進行拼接,見圖23。
圖23 字段拼接
第四步:對每個年齡段進行分組
基于age_new字段新建數據分箱,設置見圖24。
圖24 數據分箱
第五步:制作報告
用上面預測和準備的數據,即可在Yonghong Desktop上通過可視化的方式拖拽得到消費商品的年齡分布,不同年齡段的購買情況,不同年齡的商品偏好,不同商品的年齡分布,并由此做精準的商品推薦。我拖拽做了四個圖表,基本在分鐘級以內搞定,最終展示效果如圖25所示。
圖25 可視化效果
總結:
回溯整個過程,可以發現,Yonghong Desktop有強大的數據治理功能,其中自服務數據集和計算列異常驚艷。深度分析模塊內置了豐富的算子,模型構建和推理通過簡單的工作流,拖拽即可實現,無需編碼。通過在實驗上設置可用于報告制作的算子節點,即可實現AI和BI結合,將AI的預測結果通過報表進行分析和呈現。
評論
查看更多