iT邦幫忙

2021 iThome 鐵人賽

DAY 25
0

接續上一篇,第二種改善R^2的經驗。

2 . 減少極端值的影響

所謂的模型輸出的準確性,也可以這麼想:

如果輸出的結果是如預期,輸入的該資料剛好是模型可以解釋的部分。

如果輸出的結果是不如預期,輸入的該資料是模型無法解釋的部分。

那麼如果事先知道,哪些是模型無法解釋的資料並且去除,那麼模型解釋的能力是不是更好?


2-1. 移除超過上下界的資料

所以「假設」有部分的資料還是可以解釋的,那麼去除極端值,訓練出來的模型R^2應該有顯著的提升,如果完全沒有可以解釋的部分,那麼就還是會一樣爛。

幸運的是我們經由統計比較好的夥伴,做一些資料分佈的分析,發現我們資料還是有某一定的規律。

但有一些超過上界的資料,數值與其他的比較起來太過極端,可能對於模型訓練有嚴重影響,提出先把超過上界資料去除的想法,所以我們重新逐筆處理資料,一但發現答案欄的數值有超過上界的數值,該筆raw data直接先移除。

調整之後,根據該夥伴的說法,在他自己電腦訓練出來的的模型,R^2高達0.9以上。

我們將處理過後的資料重新丟到vertex建立新的autoML模型,R^2的結果大概是0.5左右。

雖然我們尚不清楚autoML內容是怎麼做,為什麼跟夥伴跑出來的模型R^2有一段差距,不過至少驗證了去除極端值,對於改善R^2有顯著的幫助。


2-2. 資料轉換

如果去除明顯的的極端之後,仔細檢視資料距離中心點兩端的分佈狀況,還是有些偏差的狀態不盡人意呢?

本來現實中採集的資料,大部分時候就不會很漂亮,嘗試做一些資料上的轉換(transmation),有利於更多的狀況理解。

由於訂單金額是一個蠻大的數字,我們選擇開根號的做法。

開根號可以減少資料彼此間的距離,下面簡單舉個例子:

未經處理分數由小到大如下:

4 ,9, 11, 23, 45, 49, 71, 82, 91, 93

開根號之後如下:

2, 3, 3.3, 4,8, 6.7, 7, 8.4, 9, 9.5, 9.6

預測的落點在1~10,會相對1~100的狀況容易許多,而實際使用的時候則須將得出預估值乘以平方。

當然這個最後的結果會更加不精準,不過原本預期就是會有個誤差範圍的結果,在可以接受的誤差又何妨呢?

於是經過開根號處理的資料,模型訓練出來的R^2得到了0.6。

另外也可以選擇取對數(log)的方式做資料轉換。


2-3. vertex 提供的改善選項

我們回到Vertex在訓練新模型的步驟,「訓練選項」的進階設定,提供了3個選項:

  • 均方根誤差(預設)
  • MAE
  • RMSLE

根據我們前面「其他名詞解釋」說明的MAE和RMSLE,搭配這篇去除極端值影響的講解,應該可以理解兩者是相似的方式。

原始資料R^2用均方根誤差跑出的結果只有0.2左右,用了MAE會有0.3,用了RMSLE則到了0.4。

或許比起我們事先處理過資料再下去跑的狀況差了一點,但看來都是所有改善。


小結:

對於我們這種資料科學的新手團隊,或許vertex能夠幫助就到這邊了,如何改善模型R^2值以及抓出更好的參數,或做出更好的資料還是得靠我們自己。

不過我們還是給vertex高度的肯定,因為有這樣的工具,很大程度地保障了「訓練」、「部署」、「應用」這些重要的工作,讓我們需要專心對付的事情,範圍縮小了許多。


上一篇
改善R^2 (1) | ML#Day24
下一篇
使用Vertex匯出的模型 | ML#Day26
系列文
後端工程師的ML入門理解與Vertex AI30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言