【教學重點】機器學習方法與流程入門 Machine Learning — Intro|政大數據分析社 110_2 社課 Lesson 6
講解資料科學流程、機器學習經典四類演算法、交叉驗證概念及模型訓練優化心得。
作者/講者:JiunYi Yang|原文連結
前言
本次資料探員與 Finformation 合作擔任 政大數據分析社 社課講師,一共7週課程。第6堂課主題是【資料科學方法與流程入門】,後來考慮課程長度和難易度,調整為著重在「資料科學題目發展」、「資料科學流程重點」、「經典機器學習算法」。
本次課後也釋出課程錄影及上課簡報pdf,若想要索取,相關流程在這篇貼文可以找到。
你也可以前往觀賞我錄製的 課程Youtube影片(資訊欄有各節課綱的快捷秒數,可以跳著觀看),對你有幫助的話歡迎按讚留言分享,讓我收到一些你的回饋。
本次上課課綱
- 從數據分析到資料科學
- 資料科學技術範疇
- 設定資料科學問題
- 機器學習演算法運作概念
- 機器學習演算法種類介紹
- 如何選擇演算法
- 了解演算法的成效:模型評估指標
- 交叉驗證的必要性
- 因應預測標籤不平衡問題
- 心得總結:如何優化訓練後的模型
以下我們整理各節重點和相關參考連結,方便學員做複習:
*資料科學流程
在開始前再次複習資料科學流程:
- 資料擷取
- 資料前處理
- 資料視覺化與分析洞察
- 模型選擇與建構
- 模型訓練與成效指標比較
- 特徵工程用於模型成效優化
- 模型超參數調整
(I) 從數據分析到資料科學
- 商業目標:改善現況 → 提前佈局:
數據分析幫助我們了解現況、發現問題、提出改善方針;資料科學則是當我們有充足的數據量、資源能夠從改善現況,往前推進到提前佈局、節省成本或增加盈利時,透過建模流程和資料工程將整個從資料擷取到目標值預測的流程加以自動化,並將預測輸出直接運用到業務情境中,發揮資料的價值。 - 數據分析的洞察用於訓練特徵篩選:
數據分析和資料科學在流程上是相互銜接的,我們在進行數據分析時所繪製的視覺化圖表,展示特徵分佈、相關程度、解釋性等等,都會幫助我們在進行資料科學流程時的特徵篩選,有時也甚至會回頭去修改資料前處理的做法。 - 模型演算法複雜度和業務需求需取得平衡,資料科學的本質為解決問題:
機器學習算法大部分還是保留了特徵貢獻度、權重等輸出量,但在較為複雜的神經網絡中,如遞歸神經網絡、長短期記憶模型等牽涉到 time_steps 的模型,要如何同步解讀特徵權重和時間窗格權重則是深度學習所面臨的解釋性議題。
(II) 資料科學技術範疇
人工智慧、機器學習、深度學習、監督式學習、非監督式學習、強化學習等眾多名詞,彼此間的關係大致可用此圖來描述,在很多地方你也會看到類似的圖表呈現不同領域的關係。
以下是經過資料探員理解吸收後,以盡量白話好懂的方式解釋名詞。
- 人工智慧
廣義的人工智慧泛指,運用電腦程式展現人類智能以解決問題。展現人類智能指的是在條件式規定以外,電腦程式能夠從中找到數學規律、最佳解的過程。理想化的情境是電腦能夠透過觀察周遭環境、經由超越條件式以外的判斷,做出行動以達到目標,舉例來說,自駕車、AlphaGo人工智慧棋手等。
維基百科上的人工智慧學科及研究範疇涵蓋眾多領域,機器學習只是其中一個分支。出處連結
- 機器學習
其中一種解決人工智慧問題的手段,透過歷史資料及領域經驗,定義損失函數及預測評估指標,用以最佳化演算法成效表現。 - 深度學習
機器學習的其中一個分支,特色在於在神經網絡架構中加入特徵學習。如圖像、影像、語音、文字等非結構化資料難以人工方式進行高效的特徵抽取,而透過多層的神經網絡結構,可以將特徵經由不同的抽象層次被抽取出來(例如理解為從不同面向對事物進行特徵描述)。 - 監督式學習
指定目標預測值來讓演算法學習最小化預測與實際的誤差,如 是否購買、廣告花費、是否違規等。 - 非監督式學習
在不指定目標預測值的情況下,利用演算法將更為相似的資料樣本歸納在一起,或找出隱藏在其中的關聯。 - 強化學習
在不告訴機器預測目標值的情況下進行模型學習,每當機器做出一個行為,環境回饋一種狀態和回報給機器,使其透過狀態和回報的好壞往正確方向學習。
(III) 設定資料科學問題
有的時候我們會很直觀的想好要預測的目標值會是什麼,通常這樣的題目要不是已經被實作出來,就是往往因為標籤過少難以達到很好的成效。此時可以依照資料特性、業務情境調整資料科學問題。
案例1:根據問題屬性改變原本的直觀設計 — 電商瀏覽行為的預測議題
電商A擁有訪客的瀏覽日誌、交易紀錄,現希望能增加全站的營收;其訪客瀏覽日誌中的購買次數比例僅約1%。
我們會很直覺的想要對電商A的訪客進行購買預測,了解誰會是真正下單的顧客,但在這樣的購買比例下做預測是不切實際的,我們很難得到非常好的預測效果,以數據分析來說購買者的人數也不夠具代表性。
這時我們如果轉個方向想,要提升營收的勢必不能限於目前的流量,需要在擴大流量之餘,提高全站轉換率,才能再增加廣告預算的同時提升廣告投報率。如果我們的方向改為追求「未購買者的精確度」,調整門檻值,儘早排除不會購買之可能性最高的用戶,這樣一來則可以讓廣告預算花在較有可能會購買的人,並透過追蹤全站轉換率來驗證長期的效果。
案例2:根據業務需求調整預測目標 — 從研究所需的分類模型到實際上線所需的數值模型
醫院B擁有病患進行血液透析的生理監測數據時間序列,現希望能提前預測血壓偏低的病患示警請醫護關注。
直覺上來說會以血壓低於多少的機率來作為預測目標,但這樣的結果呈現給醫護人員,他們無法直觀的做出判斷,仍需要預測的血壓值和機率輔助來綜合判定要做什麼樣的預防措施。
經由以上兩個案例可以發現到,其實資料科學題目會在實務情境中,透過專家和使用者意見被修正改善。
(IV) 機器學習演算法運作概念
在進行機器學習時有以下幾個元素:
- Input:訓練資料集特徵
- Process:演算法
- Output:預測目標值
我們希望一個演算法能夠有越來越好的成效,意指的是希望他的預測值與實際值越接近越好,因此我們會定義所謂的「損失函數 (Loss Function)」,來衡量每一次預測完,樣本總體的預測值和實際值相差了多少?
接著演算法便會將損失函數的結果進行「最佳化」,通常是直到找到最小值為止(Loss最少,預測和實際值最接近)。我們可以設定搜尋最小值所跑的次數上限(Epochs)、每次搜尋時要改變的量的大小(Learning Rate)、所改變的量是否要根據前一次調整(Momentum)等等。這個過程即為機器學習演算法的大致運作邏輯。
(V) 機器學習演算法種類介紹
經典機器學習演算法我們介紹以下四類、共9種:
( A ) 迴歸
- Linear Regression 簡單線性迴歸
針對平面上的樣本點,找到一條誤差平方和最小的直線
( B ) 分類
- Logistic Regression(羅吉斯迴歸)
針對空間中樣本點,找到一能夠將兩/多類別資料樣本切分開的線或平面 - Decision Tree(決策樹)
以不同資料特徵和切點做分類,找到分類後能夠造成純度較高的分類子集的特徵作為節點,以此類推構成有數個節點和葉子的分類樹。 - Random Forest(隨機森林)
由數個決策樹構成,以多數決方式得出預測結果,善用多棵弱決策樹增強成效。 - Gradient Boosting Decision Tree(梯度提升樹)
循序式的建構決策樹,下一棵樹是以上一棵預測後的殘差為訓練特徵,最終結果是將多棵決策樹的結果加總得之。 - K-Nearest Neighbor(K-近鄰演算法)
以附近K個樣本點的分類結果決定該樣本要被分到哪一類
( C ) 分群
- K-Means Clustering(K-平均分群演算法)
須事先決定要分成幾群,算法隨機挑選群心後不斷迭代分群結果,直到群心不再變動。 - Hierarchical Clustering(階層式分群演算法)
無須事先決定要分幾群,有由上而下分裂和由下而上聚合兩種方法。
( D ) 關聯
- Apriori Algorithm(先驗演算法)
將出現項目排列組合後,依次去掉支持度最低(最不頻繁出現)的項目組,迭代直到最後剩下即為最頻繁一起出現的組合。
(VI) 如何選擇演算法
本課我們所介紹到的演算法較為經典、初階,在判斷演算法的選擇上,最首要是分辨資料科學問題種類;若我們考慮到更進階的演算法,如 Lasso Regression, Ridge Regression、其他 NLP 演算法 等,此時選擇演算法的標準就不會再那麼單純只考慮問題本身,還會牽涉到資料集大小、資料特性等。但本堂課以初學者出發,暫不深入討論;在入門階段時,需要注意資料集樣本數至少>100筆再進行演算法訓練、經典演算法可當作 baseline model(基準比較模型) 優先測試,因為其模型架構不會過於複雜,也可作為未來優化的基礎。
(VII) 了解演算法的成效:模型評估指標
針對方才我們介紹的四類演算法中,這邊舉前三類來介紹常見的評估指標:
( A ) 迴歸
- MSE (Mean Square Error) 均方差
預測值與實際值之殘差平方的平均。 - R² (R-squared)
即為樣本相關係數的平方,用來判斷迴歸模型的解釋力。
( B ) 分類
- Confusion Matrix(混淆矩陣)
表示實際和預測兩維度的列聯表,例如:實際是A但預測是B、實際是C預測也是C…符合這些情況的各自數目被記錄在一矩陣中。 - True-Positive (TP)
二元分類問題下,實際和預測相符;預測是 label=1,實際也是 - True-Negative (TN)
二元分類問題下,實際和預測相符;預測是 label=0,實際也是 - False-Positive (FP)
二元分類問題下,實際和預測不符;預測是 label=1,實際則是 label=0
False-Positive Rate (FPR) 偽陽性率 - False-Negative (FN)
二元分類問題下,實際和預測不符;預測是 label=0,實際則是 label=1
False-Negative Rate (FNR) 偽陰性率 - Precision(精確度)
預測的樣本中,有多少比例預測正確 - Recall(召回率)
實際的樣本中,有多少比例預測正確 - F-Score
同時考慮 Precision 及 Recall,平衡的反映演算法的精確度 - ROC Curve (Receiver Operating Characteristic Curve)
X軸:偽陽性率(FPR)/Y軸:真陽性率(TPR),隨著閾值不同,ROC Curve 上座標點跟著改變 - AUC (Area Under ROC Curve)
代表在 ROC Curve 下的面積,表示分類器預測能力;當 2 條 ROC Curve 發生交叉,我們無法斷言孰優時,計算曲線下面作為能力判斷指標之一。
( C ) 分群
- WSSE (Within-cluster Sum of Squared Errors) 群內誤差平方和
各群內樣本到自家群心距離平方和 - Silhouette Coefficient(側影係數)
是一種評估群與群之間離散程度的方法,使用 a 參數表示樣本點在目前群內的緊密程度、b 參數表示樣本點與其他群的緊密程度,越小越緊密、越大則越疏遠。最終綜合得出側影係數,係數越大表示當前分權方法的品質越好。
*不能用來評價不同分群演算法間的優劣,由於如DBSCAN所得出的側影係數本來就會高於其他方法
(VIII) 交叉驗證的必要性
交叉驗證的目的在於使我們獲得的模型成效能夠更客觀、穩定,避免在模型應用到測試集或真實世界資料時,成效與訓練環境相差過大。交叉驗證發生在模型訓練、驗證環節,透過多重切分資料訓練來達到對模型穩定度的驗證,最後得到一個交叉驗證後的成效指標。
因此在解釋交叉驗證前,我們還需要了解:
- 訓練、驗證、測試集切分的用意
以 作業、小考、期末考 來分別比喻 訓練集、驗證集、測試集三者,模型需要透過多次作業和小考來訓練,我們才能更好的掌握期末考分數。如果只寫過一次作業就面期末考,那麼作業所得的成績和期末考成績很可能相差甚遠。 - 何謂 overfitting (擬合過度)?
模型好壞可大致有3種階段: Under-fit → Good-fit → Over-fit
Under-fit 指的是模型複雜度還可以再提升,現有的可能無法 fit 到大部分的資料點。Good-fit 指的是目前的模型可以很好的 fit 到大部分的樣本。Over-fit 則是模型因為過度 fit 在訓練集的資料點,以致於使用新資料進行預測時,出現和訓練時落差很大的成效。
為了避免 overfitting 導致新資料進行預測時的成效不可控,我們透過交叉驗證,讓模型對打亂的資料集重複訓練,使其看過很多不同的資料組合,最後對新資料做預測時能夠有更 generalized 的表現,不會過度受到單一資料集的影響。
P.S. 簡報中有交叉驗證的圖解,更方便學習理解(如何領取簡報?)。
(IX) 因應預測標籤不平衡問題
這是分類題目在現實生活中很常面臨到的資料集困境,很多時候我們更在意的那個標籤相對少數,如:購買者、刷單者、假流量來源、駭客攻擊行為等。
那麼有預測標籤不平衡問題該怎麼解決呢?不外乎是將多數類別抽樣到和少數類別樣本一樣多,或是從少數類別樣本中合成新資料點,讓他變得和多數類別樣本一樣多。前者稱做 Under-Sampling,後者為 Over-Sampling。
- Under-Sampling
使用合理的抽樣方法皆可達到目的,如隨機抽樣、分層抽樣等 - Over-Sampling
imbalance-learn 套件提供不同的樣本合成方法,SMOTE 是最為常見的,還有其變化型
(X) 心得總結:如何優化訓練後的模型
不論是根據個人經驗或參考他人作品,通常來說,好的特徵組合對成效的提升會比超參數調整更明顯。
不論是每次訓練後的模型對特徵貢獻度的解讀、透過不同的遞迴方式篩選特徵組,都是我們盡可能找到對目標值更有鑑別度特徵的方式之一。
這次我們還沒有深入介紹到特徵工程的內容,不過有一些在優化分類器上的特徵工程 tips:
- 觀察連續型變數和目標值的關係後轉換為離散區間
- 假如遇到時間序列資料,可生成差值、成長率等特徵
- 從高維度資料萃取有效特徵:降維(PCA/T-SNE/LDA等)
- 使用神經網絡層進行特徵提取
結語
感謝聽課的所有學員,若對簡報、上課內容、錄影內容和方式有任何建議回饋,歡迎私訊 資料探員 Data Agent 粉專,我會再一一回覆各位。