速記AI課程-統計與資料分析(三)

資料處理方法

利用簡單移動平均做出的極簡單的股票操作策略(From Online Trading Concepts

在進行資料分析前,其實最麻煩的,是要把資料整理到可以分析的狀態。這真的是很多企業會面臨的問題,畢竟當初所開發的系統、留存的資料,並非僅為了資料分析目的而存在,因此即使是台灣的龍頭企業,資料品質都還有不少改善的空間。

那麼,有哪些方法可以協助資料處理?吳介紹了平滑技巧、遺失值處理、資料轉換與重抽法則四種方向。

平滑技巧

以股票指數來看,如果X軸是日期,Y軸是收盤指數,假設一年股市交易250天,那麼我們就可以有250個點。不過,即使有這麼多點,還是無法成為函數,無法進行預測,因此需要找一個趨勢線來配適這些點,有了這條線(函數)就可以看出主要趨勢,排除雜訊並進行預測了。而這種技巧,就稱為平滑(Smooth)。

其中最簡單的方法,當屬簡單移動平均(Simple Moving Average,簡稱SMA),概念即為股市分析常用的各種均線(5日、10日、月均、季均),而R的TTR提供了非常多計算移動平均之方式,堪稱大全。

更進階一點的,就會用到曲線配適(Fitting Curves),有從最簡單的線性迴歸,到non-linear parametric、lowess、loess、gam等常人如我可能看不懂的東西…

還有更進階的,就是核密度估計( Kernel Density Estimation,簡稱KDE),針對機率密度進行估計。假設我們抽樣了100個點如下圖灰色,那麼它應該是屬於什麼分配呢?知道分配之後,我們才能進行後續的計算。而估算這個分配的方法就是KDE。而下圖的藍線、綠線與紅線,分別代表了幾種常見的核,各種核估計的平滑性也不一。

KDE

它屬於無母數檢驗方式的一種,某教授比喻的好,無母數跟有母數方法的差別就像是Uniqlo跟訂製西裝,無母數人人可買可穿(幾乎無限制),但不一定那麼合身好看(效果不如有母數),訂製西服貴又少(限制很多),但是非常合身好看(效果極佳),無絕對之優劣,各有適當使用之時機。

遺失值處理

由於前端系統未強制要求使用者輸入,或是資料拋轉等問題,資料常常有缺漏值,分析前必須進行補遺。遺失的情形可分三種,一是整個變數遺失(如所有客戶皆未記錄性別),二是整個觀察值遺失(如缺少編號101的客戶所有資料),三是特定觀察值之特定變數遺失(如編號101客戶未記錄姓名)。

遺失還可以分成三大類原因,MCAR(Missing completely at random )、MAR(Missing at random)與NMAR(Not missing at random)。以問卷調查年收入為例,MCAR是指有些問卷可能不小心在回收過程中遺失,MAR則是指缺失跟某些變數有關,如經理比起其他層級更不喜歡透漏年薪(怕被綁架?),NMAR則是指缺失跟缺失值本身有關,如因為年收入低於100塊覺得很丟臉,所以低於100塊的人都不願意填。

那麼遺失值該如何處理?吳建議以下幾種方式:

  1. 整個觀察值刪除(List-wise Deletion):只要有任何變數遺失,則排除該觀察值,雖然是最嚴格的方式,但卻是各種統計套件預設的方式。在R中可使用na.omit()排除或是用complete.cases()來取出完整觀察值。
  2. 成對刪除(Pairwise Deletion):與前一種方法不同,比較變通一點,只有在兩兩變數互相比較時,有遺失的才不予採用,因此屆時可用來分析的資料會較前一種方法更多。
  3. 平均補替(Mean Substitution):最簡單的方式,利用平均值來填入遺失值。
  4. KNN插補(K-nearest Neighbour,KNN): 利用最靠近(最相近)的觀察值,來填補遺失值。
  5. 迴歸法(Regression Methods):利用迴歸方式,找出合理的遺失值應該是多少並填入。
不同Deletion方式

那麼哪個方法比較好?KNN目前最廣泛使用。

吳也分享一個實務上很好的做法,首先篩選出完整資料,再人工隨機缺值5%,然後利用各種補值法填入遺失值,最後比較不同方法的結果跟完整資料之差異,差異最小的即為最好的方式。

資料轉換

因為很多統計分析或假設都需要常態分配,因此不同分配的資料,可以透過各種方式進行資料轉換。常用的方式有sqrt(x)*10(開根號再乘以10,考試分數太難看的好幫手)、Log轉換(把過於集中之資料放大,或是排除極端值之影響)、Box-Cox轉換(可轉成常態)與標準化(目的並非轉成常態分配,而是拉到同一個平台公平比較,並不會改變分配的型態)。

跑步原始資料分配(上圖)經過Box-Cox轉換(From Minitab

哪種轉換最好?答案不一定,建議可試試看各種轉換方式,然後思考為什麼某種轉換方式會比較好,而進行更深入的了解。

重抽法則

機器學習有個重要的方法,叫做整體學習(Ensemble Learning),簡單來說是透過多個分類器(Classifier)產生多個結論,然後集眾人之智做出最好的決定。但是通常拿出來訓練的資料,通常只有一份,即使多做幾次,不同分類器答案也很難不同。

因此,其中一個解決方案,就是用自助抽樣法(Bootstrapping),把資料抽樣完後放回去,再繼續重複抽。

Bootstrapping概念

不平衡資料

而某些類型之資料,如詐騙網站、信用卡詐欺、舞弊等,異常資料之比例非常低,因此需要一些在不改變資料結構與分配的情況下,將多的資料變少(Under Sampling),或少的資料變多(Over Sampling)。

R內有很多套件可以達成以上目的,如ubCNN、ubENN、ubNCL、ubTomek、ubSMOTE等,不過最省事的方法是利用ubRacing,它會自己試完所有方法,並建議最好的一個!

商管 * 科技 | 顧問 + 稽核 | AI X Fraud | baubimedi@gmail.com

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store