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








暫無數(shù)據(jù)