Amazon SageMaker Canvas產品測評——人人都是“業務分析師”
編輯導語:可能每個人的日常工作中,都或多或少地會涉及到業務分析模塊,那么在社會普遍對效率有所追求的情況下,我們在日常業務中,是否可以借用工具來實現業務分析價值的最大化?也許,亞馬遜云科技推出的Amazon SageMaker Canvas就屬于這類型工具之一。本文作者就對其進行了測評體驗,一起來看一下吧。
一、事實是,我們都在做業務分析
無論你是否意識到,我們每天的工作實際上都包含了業務分析。
試著想象以下這些場景:
- 移動游戲運營想提升付費用戶比例,會通過分析用戶使用行為,得出影響付費的因素,從而采取針對性的運營手段。
- 超市老板進貨時,會綜合考慮以往銷售情況、地段、季節等因素,分析出每件商品要備的庫存量。
- 房屋中介在管理客戶時,會根據客戶的個人情況、背景資料和意向信息分類跟進,提升成交量。
盡管上述場景的主人公都并非專業的業務分析師(business analyst),但他們知道怎樣讓自己做出更聰明的判斷。
而這恰恰就是業務分析的本質:通過收集和處理業務數據,分析得出某種趨勢、模式或根本原因,并根據這些洞察做出數據驅動的業務決策 [1]。
二、可是問題是……
盡管我們都或多或少在用自己的方式,通過“業務分析”來完成工作,但是問題也在一一浮現。
1. 期望更進一步
數據量大、影響因素多、缺乏專業的建模能力等等,都會使我們在實際分析業務時往往停留在表面,而錯過了挖掘背后更深的洞見。
比如,在分析影響用戶付費的因素時,我們的運營同學定位到多種相關的行為指標:
- 用戶來源:來源于渠道A的用戶付費比例更高;
- 日均活躍時長:活躍的用戶付費比例更高;
- 日均互動數:互動多的用戶付費比例更高;
- 是否參與激勵活動:參與過的用戶付費比例更高。
以上的結論雖能幫我們判斷出哪些特性的用戶更具有付費意愿,但想進一步知道:哪些指標影響更大,指標間是否會相互影響,能否在下次運營活動前就能預測出最終效果,往往還是無從下手。
2. 結論對么?能不能快速驗證
或許憑借業務經驗,我們能覺察出某一指標是決定用戶付費的關鍵因素,或是能預估到下一個季度的銷售情況。
但問題是:能否通過數據來快速驗證我們的結論;或者是否有更專業的方法來論證我們的猜想。
3. 溝通的成本
此外,當我們期望將自己的洞察分享給團隊其他伙伴,又開始思考要怎樣有效地闡明自己的判斷。
或是當我們的洞察可以提煉出一套能長期執行的決策模型時,要如何讓數據科學家或算法工程師在此基礎上進一步優化并部署發布。
三、更好的方式:工具助力分析
幸運的是,很多專業的服務團隊也發現了以上這些問題,從不同角度為我們提供了解決方案。
1. 入門級全能選手:Excel
Excel絕對是人手一個的必備辦公軟件,它簡單易用,也是很多原始數據的存儲格式,方便加工處理。我們可以通過簡單的函數處理、數據透視以及可視化圖標等功能,快速地發掘數據中一些潛在的信息。適用于數據量不大,較簡單的統計、分析和預測。
2. 專精可視化分析:Tableau、PowerBI
主打拖拽操作和全程可視化,幫助我們在數據準備(包括多表合并、數據清理等)和數據展現上實現自助,大大降低普通用戶與數據交互的門檻。更適合團隊內共享數據洞察。
3. 分析預測大師:Python、各大公司提供的云上AI服務、專業BI軟件等
相較于前2類,這一類產品我們可能比較陌生,多是數據科學家在使用。
雖然它們在海量數據處理、統計預測、數據建模、數據挖掘等方面具有絕對的優勢,但也正因為專業度過高,需要編寫代碼或機器學習等專業知識,一般人很難上手。
所以不會寫代碼、零經驗就真的無法享受到機器學習帶來的超強助攻么?
不慌,亞馬遜云科技為我們帶來了解決方案:
亞馬遜云科技的機器學習服務下的SageMaker Canvas平臺,主打0代碼機器學習預測服務,讓普通從業者也能方便地構建機器學習模型來獲取洞察和進行預測。
接下來,就一起來體驗下 Amazon SageMaker Canvas (下面簡稱Canvas)的實操效果吧。
四、Canvas初體驗
體驗官:未接觸過機器學習的產品經理。
體驗場景:這里設想了2個場景,分別看看Canvas在業務獲取洞察和進行預測上的表現。
場景一:獲取洞察
1)背景
公司引入外部供應商承接項目時,往往會先經過競標流程。
競標時會將同樣的測試任務指派給多個供應商完成,依據返回的效果判斷最終哪幾個供應商中標。
2)目標
哪些是決定供應商是否中標的關鍵因素。
3)體驗過程
① 數據導入
通過業務分析篩選出可能影響供應商中標的字段包括:
- task_id:任務編號(一個任務可以指派給多個供應商)
- total_num:任務的數據總量
- task_type:任務類型
- if_standard:是否為標準任務(標準任務才有報價單價)
- unit_price:供應商報價的單價
- tech_percent:技術分占比;技術分占比高表示更注重技術評分
- busi_percent:商務分占比;商務分占比高表示更注重價格便宜
- supplier_id:供應商編號
- bid_result:是否中標
- est_time:預計任務總工期
- deliver_time:本次交付的時間
- deliver_score:本次交付的技術評分
取的是最近3個月的數據,一共是一個csv文件,共12列*1068行。
來到Canvas平臺,先按指引配置了支持本地上傳能力后,直接將表拖拽上傳就OK了。
整體的數據導入流程還是比較順暢的。不過因為我最開始的原始數據是中文的,而Canvas暫時不支持中文字符的顯示,所以這里又返回重新處理了一遍數據。
② 創建模型
切換到【Build】模塊后,可以方便地在下方預覽關聯的數據集字段:包括字段的缺失比例、是否有和數據類型不匹配的值、有多少唯一值、平均數/眾數等等。可以很好地幫助我們快速了解整體數據情況。
當選擇好目標字段“bid_result”后,系統會根據所選目標列的類型自動推薦合適的模型“2 category prediction”;當然你也可以根據實際情況進行修改。目前看到Canvas給出的模型大類包括:分類預測、數值模型和時間序列預測。
可以在quick build之前先預覽模型,快速獲得模型預估準確率和各個字段的影響分值。
可以看出,影響供應商是否中標的最重要的前3個因素是supplier_id、deliver_score和deliver_time,而最不重要的2個因素是task_id和if_standard。
這樣的結論基本符合實際情況:
- 一些供應商的交付能力比較高,所以更容易中標。
- 供應商得分和交付時間本身就是定標時的重點考核依據。
- 而任務編號以及是否屬于標準任務屬于任務本身的屬性,應該影響比較小。
我們可以綜合Canvas給出的字段影響分值以及業務實際情況,來篩選最終用于訓練的字段:
比如我嘗試取消勾選了impact值最小的task_id和if_standard,更新后發現模型預測準確性反而降低了。這也許是因為在實際情況,任務編號或是否屬于標準任務可能會影響供應商的選擇范圍。
又取消勾選了那些在試標前未知的因素(包括est_time、deliver_score和deliver_time),現在最重要的前3個因素變成了供應商編號、報價單價和任務總數據量。
有一點疑惑的是,我發現系統會自動給出字段的數據類型且不支持修改。但是有部分字段的數據類型是不符合預期的:比如supplier_id被判斷為了numeric類型,但該字段本身應該屬于categorical,這可能是因為supplier_id的取值是數字的原因。
想了解錯誤的數據類型會不會對模型準確率造成影響,所以我又新建了一個模型,將supplier_id的取值修改為了N1、N2、N3…,這時data type成功變成了categorical。但預覽后發現模型的預測準確率其實沒有太大的變化。
確認沒有影響后,使用quick build看下最終生成的模型效果。
③ 模型分析
Quick Build得到的模型準確率和Preview Model一致,但是可以看到各個字段更詳細的影響度分布和模型評分。
a)supplier_id
supplier_id的影響度是用箱型圖呈現的。可以看到供應商N1最易中標,供應商N2和N3相對容易中標,供應商N5和N8則相對不容易中標。這一洞察能引導我們進一步分析這些供應商的能力或資質有哪些差異,從而更早篩選出能力優的供應商。
b)unit_price
報價這一塊沒有得到很好的洞察,貌似整體看都是偏向中標的。
還是之前的那個疑問,unit_price的數據類型為什么會被系統自動定義為Categorical(分類)呢,是因為它的unique取值只有46個么?
c)total_num
total_num的影響度是用散點圖呈現的。粗略看,好像是任務總數據量過大時不容易中標。
不過因為過多的點集中在1~200001這個區間,不容易看出當任務總數據量少時的影響。這里如果能支持調節橫坐標區間的話,可能會更加方便。
最后來看一下模型的混淆矩陣(誤差矩陣):
總體來說,生成的模型在預測未中標時的準確率更高(可能是因為原始數據里Yes的比例更高吧)。
④ 模型預測
從上面的分析模塊,可以大致獲得以下2個洞察:
- 供應商N1相對容易中標,供應商N5和N8則相對不容易中標;
- 任務總數據量過大時不容易中標(相對影響較小)。
我們可以通過【Predict】這個模塊快速驗證一下。
預測方式包括2種:批量預測和單行預測。
a)單行預測
各個字段的默認值應該取的是平均數/眾數。右側顯示當前輸入值下的中標結果預測以及平均預測結果。
當修改supplier_id到N8后,可以看到當前場景中標結果預測是No,與猜測一致。
當修改total_num到1000000后,預測結果沒變。但是新的預測值相對于平均預測結果來說,No的概率變高了一點。
可以看到,單行預測能方便地更改輸入值來更新對應的預測結果,以及觀察新的預測值相對于平均預測結果的變化情況。
b)批量預測
可以選擇一個字段匹配的數據集來批量生成預測值以及對應的概率。因為這里我用的是已有數據,可以對比看到準確率還是挺高的,并且和洞察基本吻合。
場景二:預測
1)背景
超市老板進貨時,會綜合考慮以往銷售情況、店鋪位置、季節等因素,來預估未來各個商品的銷售情況,從而提前準備合適的庫存。
2)目標
預測未來7天各個店鋪不同類別商品的銷售量。
3)體驗過程
① 數據導入
這里用的數據來源是kaggle上的store sales數據 [2]。
影響物品銷售量的因素包括:
- 時間——季節或周期性波動
- 是否有促銷活動
- 店鋪位置
- 商品種類
- 歷史銷售情況
- 一些其他可能的影響:比如工資漲幅、地震、油價等。
由于Canvas的免費測試單元格只有100w,所以先線下對數據做了簡化處理。
最終選擇了3個表。
train.csv
- prod_id:商品編號(包含店鋪信息和商品類別)
- sell_date:銷售日期
- store_nbr:店鋪編號
- prod_family:商品類別;共6個
- prod_sales:商品銷售額
- onpromotion:打折幅度
一共是6列*32670行。
stores.csv
- store_nbr:店鋪編號
- store_city:店鋪所在城市;共6個
- store_type:店鋪分類;共4類
一共是3列*15行。
holidays_events.csv
- sell_date:銷售日期
- holiday_type:節假日類型;共2類
一共是2列*84行。
因為數據來源于3個不同的表,所以這次嘗試了一下Canvas的join功能。
Join預覽這里的統計只是顯示前100個的,這里給體驗造成了2個阻礙:
- 當我看到holiday_type的Distinct values為0時,一開始以為3個表join沒有成功。
- 不能直觀看到不同的join方式所形成的數據集差異。
字段名這里是可編輯框,但實際是不支持修改的。如果像Tableau那樣支持修改的話,會更方便。
數據導入這里還有一個問題是后來發現的:到了生成模型的時候,遇到了一個這樣的錯誤提示“Field state should not contains a reserved word”。
上網搜索后才發現預測模型對上傳的數據集字段名有一些限制,所以又要返回第一步進行修改。這個如果能在一開始導入的時候做好提醒,或者出錯后能直接修改字段名就好了。
最終join完成后,3張表變成了一個9列*33660行的大表,可以進入下一步了。
② 創建模型
這里的數據集字段預覽出現了一個提示:onpromotion這個字段有“Missing Values”,提示說源數據集中的某些字段缺少未來值,可能會造成預測準確度偏低,建議更新數據集。
這個提示還是有點疑惑的:比如為什么只有onpromotion需要給出未來值,返回后更新數據集的入口在哪里。在查詢了使用手冊 [3]后也沒有得到很好的說明,所以暫時沒有做處理。
看了一下目標字段prod_sales有42%的值為0,總體分布圖呈現右偏斜。
這里還發現了新功能“數據清洗”,可以快速為一些缺少值的數據設置默認值。
最后為時間序列預測模型配置好參數后,直接standard build(暫僅支持)就好了。
③ 模型分析
可能是因為沒有處理missing value的問題,最后生成的模型準確率比較低。
時間序列預測模型的分析維度和二分類預測不太一致,它主要是選取了2個維度:
- 模型整體的WAPE準確度(加權絕對百分比誤差 [4])
- 各字段對預測值的影響度:onpromotion、holiday_type和store_city會提升預測值;而prod_family和store_type會降低預測值。
可以理解打折促銷以及節假日能提升商品的銷量;但是為何店鋪所在地能提升銷量,而商品類型和店鋪類型會降低銷量,就需要進一步分析了。
④ 模型預測
最后來看看模型預測的效果吧。
預測方式也包括2種:全部預測和單行預測。
a)單行預測
這里只需要選擇待預測的字段值(某個店鋪的某類商品)就可以自動生成相應的時間序列預測模型。
因為我之前配置的預測天數是7,這里展示了14天的數據(包括預測前7天)。
紫色的線為給出的預測值,還有對應的上下限。預測結果總體還是比較直觀的,但是由于之前未處理missing數據的原因,預測準確度不高。
b)全部預測
點擊后需要運行的時間比較久,而且這里沒有限制多次預測,不知道會不會影響預測速度。
耐心等待后發現最后效果如下:P50應該是給出的預測結果,p10和p90是對應的上下限。
整體評價
整體來說,作為一個小白用戶能全靠自己摸索走完整個模型創建、分析和預測的流程,實際體會一下機器學習在業務分析中的作用,還是很有成就感的。
當然出于對產品能不斷優化完善的期望,這里從用戶體驗和產品功能2個角度給出了個人評價。
1)用戶體驗
① 加分項
- 易用性強:點擊式、可視化界面操作,小白用戶也能快速上手。
- 流程易學:能一步步引導用戶完成 數據選擇 – 創建模型 – 模型分析 – 模型預測 4個步驟。
- 布局合理:頁面設計(圖標、提示文案、按鈕等)十分清晰合理,能快速找到所需的信息和功能。
② 待提升項
a)提示不夠及時
- 比如模型已經開始運行了,等待幾分鐘后卻提示要新增配置forecast。
- 或者模型運行后告知字段和系統保留字段有沖突,要返回第一步修改數據。
b)容錯性一般
比如誤點了standard build或多次點擊prediction后不支持取消,需要等待幾小時。
c)有一定的學習成本
- 對于非專業數據分析人員,一些提示或說明比較迷惑。
- 普通用戶可能不知道如何通過箱型圖、散點圖、混淆矩陣等進行分析獲取洞察。
d)對中文的支持度不夠好
- 平臺目前全英文展示,部分提示或說明理解起來比較困難。
- 不支持帶中文字符的源數據。
- 時間序列模型的節假日模式也不支持中國。
e)延遲感偏強
部分操作響應速度比較慢,也遇到過幾次長時間loading的情況。
2)產品功能
① 超預期
a)數據導入
靈活度高:可支持多個數據表自由join。
b)創建模型
- 可視化程度高:用戶可以方便地預覽數據集字段的各項統計指標。
- 自動化程度高:可以根據用戶所選的預測目標列準確推薦最合適的訓練模型。
- 模型預覽能力:能快速獲得模型預估準確率和各個字段的影響分值。
- 支持Quick build和Standard build2種方式,滿足不同場景的模型創建需求。
c)模型分析
- 可視化指標豐富:包括各個字段的影響度分布箱型圖、散點圖、模型整體的混淆矩陣等。
- 能方便地復制或下載數據圖表,與他人共享。
d)模型預測
支持批量和單行2種方式,滿足不同場景的預測需求。
② 待滿足
a)數據導入
沒有發現支持更新數據的入口。
b)創建模型
- 對已導入數據的處理能力較弱。
- 缺少不同模型對原數據要求的說明。
- 不支持設置目標預測對象為組合列。
c)模型分析
- 不能給出進一步優化預測準確率的建議。
- 支持用戶自定義分析的配置較少。
- 一些專業的統計圖表缺少像Tableau數據解釋 [5] 類似的功能,幫助用戶更好地發現洞察。
d)模型預測
- 預測失敗時缺乏解釋或指引,只能重試。
- 缺少對預測結果較為詳細的說明,比如一些新增的字段含義是什么、為什么批量預測表最后有多行空值等。
五、總結
回歸最開始的問題,Canvas真的能使普通從業者進行專業的業務分析,方便地構建機器學習模型來獲取洞察和進行預測么?
從體驗結果來看,能,但也不全能。
現階段,Canvas的確能做到讓普通用戶也能0代碼通過機器學習從已有數據分析生成可用的預測模型。但最終能否獲取有價值的洞察,預測是否準確,仍會受很多因素的影響:比如輸入數據的質量、用戶自身的統計學知識和分析能力等等。
從普通業務人員到真正的業務分析師,工具只是我們強大的助手,正如Amazon SageMaker Canvas 并非智者本身而是其引路人。
引用
[1]?https://www.oracle.com/cn/business-analytics/what-is-business-analytics/
[2] https://www.kaggle.com/competitions/store-sales-time-series-forecasting/data
[3] https://docs.aws.amazon.com/sagemaker/latest/dg/canvas-make-time-series-forecast.html
[4] https://aws.amazon.com/cn/blogs/china/measuring-forecast-model-accuracy-to-optimize-your-business-objectives-with-amazon-forecast/
[5] https://help.tableau.com/current/pro/desktop/zh-cn/explain_data_basics.htm
本文由 @咯咯咯 原創發布于人人都是產品經理,未經許可,禁止轉載。
題圖來自Pexels,基于CC0協議。
很漲知識的一篇文章!就是小白的我看著還是比較懵的哈哈