案例解讀:Canvas在翻轉課堂中的二分類預測應用
編輯導語:隨著技術的發展,我們會采取一些新形態來輔助日常業務,比如翻轉課堂就是在線教育中的一種新形態。但是,如何才能讓翻轉課堂發揮更好的效果?本篇文章里,作者結合Amazon SageMaker Canvas做了應用測評,一起來看看吧。
一、案例背景
1. 背景介紹
在線教育的一種新形態,利用建構主義來推進更好學習效果的達成。
而形態上,更多以翻轉課堂的形式來落地。它的真正達成需要一些要素,其中一個比較重要的點在于同學們之間能夠互相討論啟發,這樣才能發揮出教學內容的更好吸收效果。
在引入正式的分析之前,簡單介紹一下翻轉課堂,是一種講練結合的方式,先老師講一段內容,然后同學討論,通過同學與同學之間對前面內容的討論,達到對內容的更好理解,這種互相碰撞能對概念理解得更深刻,對使用邊界更明確,對過往經驗的復盤與未來使用方面都能有一些不錯的聯系與觸動。
2. 當前問題卡點
而當前的中間過程的問題卡點,同學們進入翻轉課堂時討論不起來,而討論不起來的原因是很少的人進入房間內發言,會有一個房間1個人發言,其他人沉默的情況。
二、分析框架確定
1. 基本假設
為了能夠達到更好的效果,那么需要讓同學在聽講之后,針對前面學過的內容進行討論。大家可以回憶想象一下高中的場景,老師臺上講完了內容,臺下前后桌分組討論。討論起來,互相碰撞思想時才是此時的精髓。
因為線下的過往關系積累以及線下的關系壓力等,所以大家發言討論不是難事兒,但線上的場景里,有些難度。在嘗試了通過數據瞄定線上關系,通過關系分組失敗之后,將視角轉移到了人的方面,在這里首先有兩個假設:
- 發言是需要有過往積累的。
- 發言的人在過去的跡象中有做出一些不同的表現,更活躍更愿意參與各種意見表達。
2. 確定分析目標
在結合問題方面,鎖定分析目標就有兩個:
- 通過同學歷史數據進行建模,最終能夠預測用戶發言與否的模型;
- 能夠嘗試確定哪些行為對識別發言比較重要,作為后續產品運營的一個考慮抓手。
三、數據介紹
1. 基于假設的指標選擇
為了能夠相對準確地做出發言與否的預測,那么從兩個假設里去找到相關的可量化的數據指標。最終選定了四大類數據。分別是基礎數據、歷史此類活動的數據、歷史學習情況以及互動情況。
根據上面的四大方面,確定了如下的指標:
2. 目標值確定
除了上述的變量之外,目標字段為talk,他的判斷條件是在talk廳發言超過1min計為1,小于等于1min的計為0。
3. 數據量備注
因為使用Canvas的過程中會需要上傳文件,所以進行了脫敏,使該數據集既能保留了數據原本有用的部分,又能得到一定的保護。
由于是新業務初期,所以能夠拿到的只有2000+條數據。雖然看起來比較少,但能夠用于做最初的簡單模擬。
四、利用Canvas建立機器學習模型
1. 操作總結
在Canvas建立模型的操作分為以下5個步驟:
- 構建aws數據存儲;
- 導入數據;
- 通過目標區分回歸與預測模型;
- 建立模型;
- 完成模型,回歸結果。
2. 構建數據存儲
首先打開Amazon SageMaker Canvas。因為前期我已經注冊好了Amazon SageMaker Canvas,所以注冊登錄等不做演示。
接下來搜索s3,打開s3,在buckets下創建數據存儲位置,點擊“create bucket”來創建存儲數據的桶。
圖中是我創建的三個bucket,我在本次操作中使用的是sagemarker-studio-l,點擊打開它,在里面上傳本地csv。此處需要注意,只能上傳csv,xlsx這樣格式上傳之后后續也是無法使用的,需要格外注意。
通過upload來打開下一個上傳頁面,通過add files打開我們要用的csv的文件夾,點擊上傳完成文件添加。
3. 導入數據
搜索Canvas回到這個頁面,點擊左側邊欄的Canvas啟動Canvas功能。
打開后的頁面就如下方圖的界面。
理論上來說,都是有數據才有模型,不過在Canvas里并沒有完全固定的順序,先添加數據或者先添加模型都是可以的。
現在我們先建立一個模型,點擊“new model”,對model起一個可辨識的名字。方便后續查看。
我會以我的目標以及版本操作來命名。在此次操作中,起名為talk-vx(下圖是第3次建立模型,所以命名為talk-v3)。
在頁面中選擇import數據的方式,將s3中bucket下sagemarker-studio-l中存儲的csv導入到模型可選范圍中,并選中對應數據集。下方圖為操作示意圖。
在所有都操作結束后,選擇對應的數據集,點擊“select dataset”來確定數據集。
4. 通過目標區分回歸與預測模型
在我的數據集中,talk是這個用戶發言or沒有發言,再次明確一下這個目標字段的含義,在talk廳發言1min以上的為1,否則計為0。
在select a column to predict的欄目下,選擇talk為最終目標字段。Canvas很智能地識別到了是二分類模型。
5. 建立模型
可以快速查看一下我們指標的情況,之后可以通過quick build快速構建模型,之后會自動定位到analysis頁等待一段時間。
這個過程中我們只需要等待,別的操作是沒有的。
6. 完成模型,回歸結果
如下圖所示,Canvas已經完成了模型模擬,并返回了準確率的結果。
1)準確率概念明晰
準確度在85.681%,看起來是不錯的情況了。但這里需要明確一個問題,什么是準確率?
機器學習中的準確率=預測對的個數/整體的個數。
我們這里舉個例子。在這個實驗中,假如有10個數據,6個是0,4個是1;而預測出的10個結果,6個0中預測出了5個0,4個1中預測出了2個1,那么這里的正確率就是(5+2)/10 = 70%。
2)不使用準確率作為評判標準的原因
Canvas也提供了準確率部分的查詢??梢源蜷_scoring的頁面來看整個模型的預測情況。
在下圖中,能夠看到最左邊的數據是400+的數據量,而在前文中,放到模型里的數據是2000+的數據。
這里就類似我們在使用機器學習中切分訓練集和測試集數據的操作,切出來一部分用做訓練模型的預測。
通過顏色與條狀寬度我們可以分辨到1是個小部分,0是個大部分,但在預測錯誤的情況中,1預測為0的與0預測為1的這兩種錯誤情況,圖上的寬度看起來是相近的。
但這里有我們需要兼顧看真實的0和1的寬度分布,可以知道1預測錯誤的數量/實際為1的數量>0預測錯誤的數量/實際為0的數量。
所以可以很清晰地看到不均衡的數據用準確率的衡量方式并不靠譜。說個極端點兒的例子,1000條數據中,999個0,1個1,就算把所有都預測為0,也能保證其較高的準確率,99.9%。但在這種情況下,99.9%的準確率對我們實在預測時并沒有什么用處。因為1才是我們希望準確預測出來的。
3)選擇混淆矩陣作為評判依據
所以這里我們要用另一種方式來看,用混淆矩陣的方式來判斷模型的好壞。當然Canvas也提供了查看混淆矩陣的入口。點擊“advanced metrics”來查看混淆矩陣。
混淆矩陣中,我們需要定義什么是正例,正例就是我們期望的那個記過,在我們這個案例中,
因為我們要看到的預測人是發言的人,也就是talk = 1。于是在左上角“positive class”下選擇“1”,那么我們可以很容易看到該模型在準確率與召回率兩方面的情況,分別是62.887%和70.115%。都不是特別高的情況。
4)混淆矩陣快速理解
關于混淆矩陣,為了方便理解,通過一個小例子強調幾個基本概念。
比如我們從一群人中通過數據預測出女生。
- 那么準確率就是TP/(TP+FP),這個值低就是把男生也預測為女生,說明把我們不想找到的也找出來了。
- 那么召回率就是TP/(TP+FN),這個值低就是把女生預測為了男生,說明把我們想找到的也沒能找出來。
5)Canvas可以有更短時間有更高的模型效果
回到前面的案例,可以看到這準確率和召回率這兩個都不是特別高的水平,低于80%。
那么這樣的例子,可以說是Canvas的模型模擬水平不足嘛?
當然不可以這么武斷地下結論。
因為機器學習模型的結果不行,有兩種可能:
- 第一種是數據不行,所謂“garbage in,garbage out”。
- 第二種是模型選取的不行,每個模型都有其適用邊界,表現的好壞。
當然這兩個可能都沒有辦法完全斷定。
但用另一種方法來判斷,拿這個數據通過python做過模型,利用自己做的模型選擇的算法選擇了邏輯回歸模型。下方的LR即為選擇的結果。
經過調參后,準確率60.85%,召回率65.84%。在不斷調參之后效果并不如Canvas處理的好。
如果去使用Canvas的話,也就是消耗了1/10的時間與精力,就足以得到更好的效果,那么就可以大大提升日常工作效率。
回到上面的話題,通過這兩次的比較,基本斷定的是數據質量不高導致的。
需要對數據指標或者數據量需要有所改進??梢钥紤]:
- 用更多的指標或替換更有用的指標
- 更多的數據量來重新訓練。
五、回歸分析目標
那么回歸最初的分析目標。
- 通過同學歷史數據進行建模,能夠構建預測用戶發言與否的模型。
- 能夠嘗試確定哪些行為對識別發言比較重要,作為后續產品運營的一個考慮抓手。
1. 第一個分析目標回歸
在第一個分析目標上,沒有達成得非常好。但Canvas的結果比自己做的效果好,且時間更短。所以可以采用Canvas的結果,用Canvas建構的模型來預測后續的情況。
同時這里可以考慮兩個迭代方向:
- 一個是在選擇數據指標方面,能夠思考找到更多邏輯上相關的可能數據指標;
- 另一個是在數據量方面,積累更多的業務數據來訓練模型。
但是,在沒有更好的策略時,Canvas的模型結果是一個當前可以考慮采納的結果。
2. 第二個分析目標回歸
在第二個分析目標上,可以初步找到需要關注的指標。
可以從這個左邊指標影響程度上能夠看到哪些指標是對預測發言情況有作用的指標。
前6個指標分別是:
- 停留在talk廳的時長;
- 停留在課程與talk廳的總時長;
- 看其他課程并發送消息互動的數量;
- 付費到現在的時間天數;
- 停留在老師講課處的時長;
- 周活躍天數。
這些是可以考慮的前6個指標,但有個額外注意的內容,單純地提升talk廳的時長是沒有意義的,所以需要接下來去看什么與talk廳停留時長相關,那些停留時長更長的與更短的區別在哪些方面等等。
當然這些都是與業務集合推進的步驟,但確實是找到了接下來可以考慮的抓手方向。
六、期望與總結
在使用過程中對Canvas有兩個期望:
- 能夠連上公司的數據庫,拿到數據更方便,這樣能夠更快去選取數據并構建訓練模型。
- 能夠將數據預測結束后的結果返回,例如有返回結果api接口。這樣就能輔助后續線上的互動教育做到更快速又合適的分組了。
總結
Canvas是一個非常方便快捷高效的工具,它的好處如下:
1)簡單快捷易操作,通過導入數據、quick build等快捷完成短時間高效果的模型訓練。相比于自己模型寫代碼,訓練模型且不斷調參,Canvas達到更好的效果也就消耗1/10的時間。
2)因為模型的效果更好,訓練速度更快,可以在特征工程做完之后,快速對數據情況有個把握,這些數據能夠訓練到什么程度。當然沒有特別好的特征工程處理的話,就可以用邏輯縮小范圍,不斷構建模型嘗試,找到最合適的用于分類的要素。
3)能夠在模型結果輸出后,得到模型中的指標重要性,可以考慮作為相關的抓手要素.
作者:李猛
本文由 @三法?原創發布于人人都是產品經理。未經許可,禁止轉載
題圖來自 Unsplash,基于CC0協議。
看到最后再想到自己的粗略分析就笑了,不愧是得一等獎的牛神。。。。還是得細致出功夫
一篇手把手教你如何使用Amazon SageMaker Canvas工具的文章,感覺可以有效提高翻轉課堂的效率
哈哈哈哈作者分析的很是專業!看標題我以為是可畫,結果是這么高級的東西