精準營銷難?Sophon Base手把手教你從建模到上架

Sophon是一款包含數據分析和機器學習建模的一系列智能分析軟件。基於本軟件,您可以快速完成從特徵工程、模型訓練到模型上線的機器學習全生命周期開發工作。為了幫助您快速入門,本文將以精準市場營銷模型應用實驗為例來展示Sophon Base的使用過程。

關於Sophon Base

Sophon包含3個主要模塊: Sophon Base、Sophon Edge、Sophon KG。其中Sophon Base 數據科學基礎平台具備完整的數據探索、多數據源接入、實驗調度、智能分析、用戶資產以及平台管理等功能;為用戶提供完整的模型上線閉環,全流程圖形化幫助用戶更加便捷地對線上服務進行管理,實現模型價值。

實驗背景

某家企業希望開拓新用戶進行精準的市場營銷,但企業只知道市場營銷方案對過去的用戶是否產生效果。用人工甄別的方式篩選現有用戶將消耗大量的人力資源。

通過建立精準市場營銷模型,讓企業可以運用過往用戶數據來預測營銷方案是否會對現有用戶產生效果,從而鎖定潛在用戶,提高郵件、短訊營銷的轉化率,減少企業營銷行為的成本。

在本實驗中,我們將以精準市場營銷為案例背景,展示如何使用Sophon Base來完成精準市場營銷模型的訓練、測試、預測、上線與實際應用。

數據集

Sophon Base平台在數據樣例中為該實驗提供了兩個樣例數據集,分別為包含過去用戶信息的數據集pastcompaigndata與包含現在用戶信息的數據集newcompaigndata。

在實驗開始前,先瀏覽數據集pastcompaigndata中的字段以及取值:

數據集pastcompaigndata字段

在本實驗中,「response」以外的字段將作為模型的輸入,「response」字段將作為模型的輸出。

數據集newcompaigndata包含除了「response」以外的所有字段。因此,您需要使用數據集pastcompaigndata訓練市場營銷模型並測試。訓練出的模型將讀取newcompaigndata中的用戶信息,並預測營銷方案是否會對這些用戶產生效果。

瀏覽完數據集的字段後,您已經知道該實驗近似監督學習中的二分類問題。本實驗將選擇隨機森林算法來訓練模型。因為該數據集字段較多,這也意味着它具有較高的維度;字段的取值較少,「gender」、「area」、「email」、「mobile」等字符串字段只有兩種取值。而隨機森林計算開銷小,性能強大,擅長處理高維度的數據;同時字符串字段取值劃分較少,隨機森林產生的屬性權值具有可信度。在訓練結束後,隨機森林能夠給出哪些字段比較重要。

開始實驗

在創建項目之前,本文默認您的sophon平台及各種配置文件已經成功安裝,正常運行,並且您已成功註冊sophon 用戶。

進入項目首頁,點擊「+新建項目」以新建一個項目:

新建項目

在新建項目對話框中配置項目參數:

參數配置完成後,點擊「確認」以創建項目。

在項目首頁,點擊創建好的項目,進入項目詳情頁面。該頁面包含實驗、數據集、SQL編輯、特徵、代碼、Notebook、模型、運行歷史、API模型服務、工作流等數據。

點擊左側的實驗,點擊實驗,並新建空白實驗:

點擊實驗,並新建空白實驗

在新建空白實驗頁面,填寫實驗的名稱與保存位置,點擊確定以創建實驗。實驗創建後會自動進入該實驗界面。

數據導入

在左側算子選擇中點擊「數據集」>「數據樣例」>pastcompaigndata,將pastcompaigndata拖動至右側工作區:

拖動pastcompaigndata

選中pastcompaigndata,右鍵菜單>「查看數據」,可以預覽數據集的內容,看到結果如下:

預覽pastcompaigndata數據

數據探索

接下來進行數據探索操作。點擊左側工具欄的數據集按鈕進入數據集界面:

數據集按鈕

在數據集界面,點擊上方的樣例按鈕,在下方查找到pastcompaigndata數據集樣例:

數據集界面

點擊該樣例後可以進入樣例的詳情頁面,點擊上方的圖形探索按鈕,切換至圖形探索頁面進行數據探索。

拖動左側數據列至右側維度、指標、交叉分類等操作框中來進行繪圖。點擊上方的統計分析按鈕,切換至統計分析頁面進行統計分析;勾選數據列,點擊「分析」,即可得到數據集的整體統計分析結果。

數據預處理

我們可以通過搭建算子來快速完成數據的預處理工作。

在左側選擇「預處理」>「字符串」>「字符串索引」算子並拖動至工作區,將數據源的output連接至「字符串索引」算子的input。

在左側選擇「預處理」>「元信息」>「設置角色」算子並拖動至工作區,將「字符串索引」算子右側的output連接至「設置角色」算子的input。

在左側選擇「預處理」>「其他」>「樣本切分」算子並拖動至工作區,將「設置角色」算子的output連接至「樣本切分」算子的input。

您也可以在搜索框中直接輸入名稱搜索算子,對應的算子會被檢索出來。

算子連接完成後如圖所示:

預處理算子連接

點擊選中「字符串索引」算子,在右側進行參數設置:

「字符串索引」算子>算子參數

先點擊右側的算子參數,並設置參數:

之後點擊左側的IO參數,然後點擊屬性子集右側的按鈕,進入選擇屬性頁面:

「字符串索引」算子>IO參數設置

在選擇屬性頁面的左側勾選「gender」、「area」、「email」、「mobile」、「response」這五個屬性。然後點擊右側的向右按鈕來選中這五個屬性,點擊確定來完成選擇:

「字符串索引」算子>IO參數設置>屬性子集

「是否排除ID列」保持默認值不勾選。至此,「字符串索引」算子的參數設置完成。

點擊選中「設置角色」算子,在右側設置參數:

點擊額外的角色設置右側的按鈕,進入額外的角色設置頁面:

「設置角色」算子>額外的角色設置

在額外的角色設置頁面里,先選擇列名為「response」,目標角色為「label」。然後勾選該列。最後點擊確定完成設置。至此,設置角色算子的參數設置完成。

點擊選中「樣本切分」算子,在右側設置參數。點擊切分比例右側的按鈕進入切分比例頁面,如圖示將切分比例設置為7:3,70%的數據作為訓練集,30%的數據作為測試集:

「樣本切分」算子>切分比例

勾選比例後點擊確定來完成設置。不勾選「分層樣本劃分」,隨機種子設置為0。至此,數據預處理完成。

模型訓練

在左側選擇「機器學習」>「分類」>「隨機森林」算子並拖動至工作區,將「樣本切分」算子的partition1連接至「隨機森林」算子的train set。

在左側選擇「導入導出」>「模型寫入」算子並拖動至工作區,將「隨機森林」算子的model連接至「模型寫入」算子的model。

算子連接完成後如圖所示:

模型算子連接

點擊選中「隨機森林」算子,在右側設置參數。

算子參數:

值得注意的是,隨機森林中的樹一般會設置的比較深,以儘可能地降低偏差。本文中「隨機森林」算子的參數設置僅供參考,您可以對算法模型設置不同參數調試來得到多個訓練結果,根據訓練結果來構建性能最佳的模型。

點擊選中「模型寫入」算子,在右側設置參數。如果您還沒有導出過模型,您可以在右側勾選「創建新模型文件」並為你的新模型命名。如果您已經導出過模型,您可以不勾選「創建新模型文件」並選擇一個已有的模型,實驗執行後,導出的模型會自動覆蓋選擇的模型。

通過「模型寫入」算子,我們可以導出並保存訓練完的模型。

性能驗證

我們需要對訓練完的模型進行驗證與評估。

在左側選擇「驗證與評估」>「應用模型」算子並拖動至工作區,將「隨機森林」算子的model連接至「應用模型」算子右側的model。同時將「樣本切分」算子的partition2連接至「應用模型」算子左側的input。

在左側選擇「驗證與評估」>「性能(二分類)」算子並拖動至工作區,將「應用模型」算子的output連接至「性能(二分類)」算子的input。

算子連接完成後如圖所示:

性能驗證算子連接

點擊選中「性能(二分類)」算子,在右側設置參數,此處您可以根據自己的實際需要選擇評估標準:

將「性能(二分類)」算子的output連接至result,點擊上方的執行按鈕,輸出訓練模型的測試結果,對得到的測試結果進行分析:

混淆矩陣

測試集中有119個「yes」樣本與157個「no」樣本。為方便理解,分別稱它們為真樣本與假樣本。

如果一個真樣本被預測為真,我們稱其為真陽性(TP);一個真樣本被預測為假,我們稱其為假陰性(FN);以此類推,一個假樣本被預測為真,我們稱其為假陽性(FP);一個假樣本被預測為假,我們稱其為真陰性(TN)。

您可以通過召回率和精準率來初步評估模型的好壞。召回率體現了所有正樣本中被識別出的正樣本的比例,精準率體現了所有預測為正的樣本中預測正確的比例。召回率與精準率可以由以上四個數字得出:召回率=TP / (TP + FN)、精準率= TP / (TP + FP)。

根據混淆矩陣中的信息,您可以知道:有115個真陽性,10個假陽性,4個假陰性,147個真陰性,召回率為0.966、精準率為0.920。可以看出該模型無論是召回率還是精準率都較高。

您也可以使用ROC曲線來評估模型的性能。ROC曲線可以反映模型在選取不同閾值時其命中率與誤判率的趨勢走向。

ROC曲線

其中,命中率即真正類率(true postive rate TPR),等同於召回率。TPR越大,預測正類中預測正確的比例越高;誤判率即負正類率(false postive rate FPR)。FPR越小,誤判率越低,預測正類中實際負類越小。在ROC曲線中,FPR作為橫軸而TPR作為縱軸。

在ROC曲線圖中的四個頂點有其特殊的含義。

第一個點,(0,1),即FPR=0,TPR=1,這是最完美的診斷,它將所有樣本都正確分類。第二個點,(1,0),即FPR=1,TPR=0,最糟糕的分類器,它成功避開了所有正確答案。第三個點,(0,0),即FPR=TPR=0,即FP=TP=0,所有樣本均被預測為假樣本。第四個點,(1,1),所有的樣本均被預測為真樣本。

一個好的分類模型的ROC曲線應儘可能靠近點(0,1),為了精確地評價分類器的好壞,您可以參考AUC值。AUC值為ROC曲線下的面積,該值越大意味着當前模型準確率越高。從上圖可以看到,黃色的線即ROC曲線。它與點(0,1)之間的距離非常近;AUC值為0.9922,接近1,可以看出訓練出的模型效果很好。

在執行實驗後,您訓練完成的模型已經被導出,可以在模型界面查看該模型的詳細信息。

模型參數重要性

在詳細信息中,我們可以看到該模型給出的參數重要性。可以看到在用戶信息中,用戶使用郵箱的評級與用戶使用流動電話的頻率都對用戶的營銷結果有着較大的影響;而用戶6個月內的銷售次數與用戶總銷售次數對結果的影響較小。

使用模型來預測結果

您已經得到了訓練完成的模型,現在可以用它來預測營銷方案對現在的用戶是否產生效果。

新建一個新實驗。點擊左側實驗按鈕進入實驗頁面,點擊實驗,新建空白實驗。進入實驗後在左側是算子選擇中點擊數據集,點擊數據樣例,選擇newcompaigndata。此部分與上一個實驗操作基本相同,不再重複。

將newcompaigndata拖動至右側工作區並預覽數據:

預覽newcompaigndata數據

在左側選擇「預處理」>「字符串」>「字符串索引」算子並拖動至工作區,將數據源的output連接至「字符串索引」算子的input。

在左側選擇「預處理」>「元信息」>「設置角色」算子並拖動至工作區,將「字符串索引」算子的output連接至「設置角色」算子的input。

算子連接完成後如圖所示:

預處理算子連接

點擊選中「字符串索引」算子,在右側設置參數。newcompaigndata沒有「response」字段,選擇屬性時去除「response」,其餘設置與上一個實驗相同,不再重複。

點擊選中「設置角色」算子,在右側設置參數:

在左側選擇「模型」,選擇之前導出的模型算子並拖動至工作區。

在左側選擇「驗證與評估」中的「應用模型」算子並拖向右側工作區,將模型算子的model連接至「應用模型」算子右側的model。同時將「設置角色」算子的output連接至「應用模型」算子左側的input。

算子連接完成後如圖所示:

模型算子連接

模型服務部署

如果希望您訓練出的模型可以投入使用,您可以選擇部署您的模型服務。模型服務部署分為2個步驟,模型上架(模型管理)及模型上線(服務管理)。

在預測實驗右上方點擊模型上架按鈕,會彈出「模型上架」對話框。

在第一步選擇模型服務中填寫參數:

模型上架頁面>選擇模型服務

模型上架頁面>選擇模型服務

全部填寫完成後點擊「下一步」。在第二步新建模型版本中填寫參數:

全部填寫完成後點擊「下一步」。

在第三步接口配置中填寫參數。先在「給上架的模型設置輸入」中勾選newcampagindata。之後勾選「基礎數據數據集」右側的「全選」。最後點擊「上架」以上架模型:

模型上架頁面>接口配置

上架後點擊左側工具欄的「模型服務」按鈕進入模型管理頁面:

左側工具欄的「模型服務」按鈕

在模型管理頁面找到剛才上架的模型,點擊版本管理按鈕進入版本管理頁面:

模型管理頁面

在版本管理頁面中,點擊上線按鈕進入上線模型服務頁面:

版本管理頁面

在上線模型服務頁面中設置參數:

參數設置完成後,點擊上線按鈕。

點擊左側工具欄的模型服務按鈕進入模型服務界面,點擊上方的服務管理按鈕進入服務管理頁面。在該頁面可以看到剛剛上線的模型。

服務管理頁面

可以點擊測試連接按鈕測試連接狀態。如果API有返回代表連接成功,無返回代表連接失敗。模型剛上線時會顯示連接失敗,請稍後再嘗試測試連接。

小結

本文通過精準市場營銷模型的訓練、測試、預測、上線與實際應用為您展示了Sophon Base的使用流程。在Sophon Base的幫助下企業可以簡單快速地訓練出模型並得到模型的預測結果,根據預測結果,企業能夠及時調整營銷方案、篩選目標用戶、輔助領導者進行決策。將模型上架後開發人員可以直接使用API對新用戶進行篩選,最終實現企業對特定用戶進行精準市場營銷的目的。