iT邦幫忙

2021 iThome 鐵人賽

DAY 11
1
自我挑戰組

資料分析及AI深度學習-簡單基礎實作系列 第 11

DAY11:機器學習模型_筆記分享

摘要

1. 監督式學習

  • 多元迴歸分析
  • 正規化回歸
  • 羅吉斯迴歸
  • 樸素貝葉斯模型
  • KNN
  • 支援向量機
  • CART樹
  • 類神經網路ANN

2. 非監督式學習

  • 主成分分析PCA
  • 關聯分析
  • K-means

3. 集成學習

  • Bagging
  • Boosting
  • stacking

內容

1. 監督式學習

多元迴歸分析(線性)

  • 常見的迴歸係數估計方法:

    • 普通最小平方法(OLS):未知殘差的分配,使所有觀察值與估計值的殘差平方和最小。
    • 最大概似法(MLE):已知殘差的分配,使觀察樣本出現的機率最大(意即找出一組與觀察值最接近的參考值)。

最常見的是普通最小平方法(Ordinary Least Squares, OLS)

  • 當為多元迴歸分析時(X1,X2,.....,Xn),需挑選適合的自變數X,分為三種方法:

    • 前向式(foreward):將X自變數一一加入模型,從最顯著的開始加(只加顯著的X)。
    • 後向式(backward):將自變數全部丟入模型,從最不顯著的自變數開始剔除(只踢不顯著的X)。
    • 逐步挑選(stepwise):綜合前向及後向,直至模型顯著後不剔除。(A變數顯著,加入B變數後,A變成不顯著而B顯著,則剔除A變數,後加入C變數,以此類推)。

較常使用-逐步挑選(stepwise)

  • 四大假設:

    • 線性(Linearity):x與y是線性關係。
    • 常態性(Normality):若母體為常態分佈,則殘差項也要符合常態分佈。
    • 同質性(Heteroscedasticity):殘差項之間有相同的變異。
    • 獨立性(Independency):殘差項之間相互獨立。
  • 優點:

    • 直觀,線性容易理解。
    • 限制多,樣本需求較少。
  • 缺點:

    • 無法處理非線性問題。
    • 會有共線性問題,但無法解決線性組合高度相關的問題。

正規化回歸(Regularized Regression)

確認線性迴歸有over-fitting問題,再試試看"正規化迴歸"。

  • LASSO Regression:

    • 迴歸+L1 penalty(一階懲罰項,絕對值)。
    • LASSO不僅能正規化優化模型,還能自動執行變數篩選(Feature selection)。
    • LASSO幫你識別並挑選出有最強訊號的一個變數。
  • 嶺迴歸(Ridge Regression):

    • 迴歸誤差平方和+L2 penalty(二階懲罰項,平方項)。
    • 將迴歸係數值平均地分散在各個變數之間。
  • 彈性網罩模型(elastic nets):

    • 迴歸模型中,讓L1懲罰項與L2懲罰項都加入模型(權重相加=1)。
    • LASSO為L2權重=0的型態,Ridge為L1權重=0的型態。
  • 參考資料:


羅吉斯迴歸(logistic regression)

  • 說明:
    建立二元類別機率值之勝率比,後對數值的線性分類模型,羅吉斯迴歸的依變項(Y)主要為二元的類別變項(亦即是或否,0或1),羅吉斯迴歸的自變項(X),可以是離散變數,也可以是連續變數。

    • 為線性分類模型。
    • 不需要常態分配的假設。
    • 使用的估計方法為最大概似估計法。
    • 羅吉斯迴歸使用的是sigmoid激活函數。
  • 參考資料:


樸素貝葉斯模型(Naïve Bayesian classifier)

為非線性分類模型。

  • 基本假設:

    • 每個變數之間相互獨立關係。
    • 每個變數同等重要(權重相等)。
  • 優點:

    • 速度快,簡單,有效。
    • 可用於多類別預測,並可獲得Y的各類別機率。
    • 只需少量樣本進行訓練。
    • 可以處理帶雜訊或遺缺值的資料(相對的,遺缺值會造成'零頻率',導致某些特徵無法一起運算,須以平滑技術處理)。
  • 缺點:

    • 特徵同等重要且互相獨立的假設通常不符合現實狀況。
    • 不適合有大量數值屬性的資料集。
    • 刪除重複出現的高度相關的特徵,可能會丟失頻率信息,影響效果。
  • 參考網址:


KNN(K nearest neighborhood)

  • 說明:

    • KNN為監督式學習,假設欲預測點是i,找出離i最近的k筆資料多數是哪一類,預測i的類型。
    • K為奇數較好,為偶數可能碰上無法分類的情況。
    • 當K=1的時候容易Over-fitting,而K很大的時候容易Under-fitting。
  • 優點:

    • 對異常值不敏感。
    • 資料輸入無特別的限制。
    • 精度高。
  • 缺點:

    • 訓練模型依賴訓練集資料且不可丟棄。
    • 時間複雜度(計算經過幾道程序)及空間複雜度(耗費的記憶體成本)較高。
    • 無法處理遺缺值。
  • 參考資料:


支援向量機 SVM (Support Vector Machines)

  • 說明:

    • 為一種監督式學習,利用統計風險最小化的原則來估計一個分類的超平面(hyperplane),找到決策邊界,
    • 使到兩分類的邊界最大化(落在邊界上或邊界內的點稱為支援向量support vector),以完美區隔兩類別。
    • 但真實資料不可能完美分類,故SVM藉由誤差限度不敏感損失函數(ε-insensitive loss)能容忍部分誤差(即少許樣本落在邊界內)。
    • 運用到核函數,用意在於低維空間無法取得超平面的解,將維度轉換到更高維空間,使其找到解。
  • 優點:

    • 解決高維特徵分類問題很有效。
    • 儘管特徵維度大於樣本數依然可使用。
    • 核函數可將低維轉換高維,可靈活解決各種非線性各種非線性分類迴歸問題。
  • 缺點:

    • 若特徵維度遠高於樣本數,效果則普通。
    • 對缺失值敏感。
    • 樣本量過大時,映射到高維度,運算量會過高。
    • 核函數選擇無適合的標準,較難選擇。
  • 參考資料:


分類與迴歸樹 (CART樹)

  • 說明:

    • 可用於分類及迴歸,根據是否滿足條件進行不斷的二分。
    • 屬於無母數分析方法,不需假設資料的線性關係或者常態分配。
    • 為隨機森林演算法的基礎。
    • 以某個目標函數,將樣本遞迴分割(recursive partition)成許多同質群組,達到群組內異質度最小,分類就用組內多數決(基尼指數最小),迴歸就用均方誤差(MSE)最小。
  • 優點:

    • 無須對母體進行預先假設。
    • 容易解釋,視覺化。
    • 離散或連續皆可建模,且無需處理缺失值。
    • 可以透過交叉驗證的剪枝來選擇模型。
  • 缺點:

    • 容易overfitting或undrfitting。
    • 模型較不穩定,樣本小變動,模型可能劇烈變動。
    • 準確度只侷限於局部。

類神經網路ANN (Artificial Neural Networks)

  • 專有名詞:

    • 輸入層(Input Layer):

      • 輸入資料X的地方,視為第0層節點。
    • 輸出層(Output Layer):

      • 輸出預測,也是最後一層。
    • 隱藏層(hidden Layer):

      • 位於輸出層及輸入層之間,都稱為隱藏層。
    • 神經元(或稱感知器,Neuron):

      • 為ANN的最基本的單元,每個神經元內都包含權重係數、線性函數、激活函數(activation function)。權重與線性函數接收輸入層的數據後,做線性加權,利用激活函數轉為非線性函數,後輸入給下一層神經元做迭代。
         
    • 激活函數(activation function):

      • 將線性函數轉換成非線性函數。
    • 損失函數(loss function):

      • 損失函數會根據預測的目標有不同的公式,目的都是為了合理的評估正向傳播的輸出ŷ與實際值y之間的差距,最小化損失函數。
    • 正向傳播(forward propagation):

      • 由輸入層輸入資料至隱藏層再到輸出層,為正向傳播。
    • 反向傳播(back propagation):

      • 將正向傳播計算出的輸出當成輸入,利用梯度下降(gradient descent)來更新權重,最小化損失函數,回傳至隱藏層,再做正向傳播,反覆迭代直到終止條件為止。
  • 架構及運行方式:

    • 設定ANN的架構與初始參數:隱藏層數、各層神經元數、激活函數、初始化各層神經元的權重與偏差係數。
    • 從輸入層輸入樣本,進行正向傳播,至隱藏層轉換為非線性函數後輸出給下一層節點。
    • 預測的ŷ與實際值y做比較,計算出損失函數、權重及學習率等等,再進行反向傳播。
    • 反覆進行迭代,直到達到終止條件為止。
    • 終止條件:
      • 迭代次數上限
      • 兩次解的差異太小
  • 優點:

    • 模型穩定度佳。
    • 準確度高。
    • 有記憶功能。
    • 學習能力強。
    • 平行化處理能力強。
  • 缺點:

    • 引數多,調參數難。
    • 學習過程難以觀察,模型較難解釋。
    • 需要大量樣本訓練,且學習時間較長,甚至有可能達不到目的。
  • 參考資料:


2. 非監督式學習

主成分分析PCA(Principal components analysis,PCA)

  • 說明:

    • 為一種統計分析、簡化數據集的方法,利用正交變換來對一系列可能相關的變數的觀測值進行線性變換,從而投影為一系列線性不相關變數的值,這些不相關變數稱為主成分(Principal Components)。
    • 將座標軸中心移至數據集的中心,利用旋轉座標軸,使數據在C1軸的變異數最大,以保留更多信息,C1即為第一主成分。
    • 找一個與C1主成分的共變異數為0的C2主成分,以避免信息重疊。
    • 主成分分析經常用於減少數據集的維數,同時保留數據集當中對變異數貢獻最大的特徵。
  • 優點:

    • 以變異數為衡量信息量的指標,不受數據集以外的因素影響。
    • 用正交轉換方式,可消除數據成分間相互影響的因素。
  • 缺點:

    • 主成分間的特徵維度較難解釋。
    • 容易捨棄一些也帶有信息量的特徵,分析結果可能會受影響。
  • 參考資料:


關聯分析

  • 說明:

    • 為一種簡單、實用的分析技術,尋找數據之間的關聯性或相關性,以預測某屬性數據出現的規律。
    • 最常見的為購物籃分析,當A商品被購買時,可能會一同購買哪些商品,以尋找商品之間的關聯性。
  • 衡量準則:

    • 支持度(support):計算品項集合在整個交易資料庫出現的次數比,介於[0, 1],說明規則的統計顯著性。

    • 信心度(confidence):利用支持度取出集合後,排列所有可能後挑出高信心度即為關聯規則。比如支持度挑出{A, B}兩品項,其可能規則包含{A} ⇒ {B}或{B} ⇒ {A}。{A}⇒{B}的信心度=P(B|A)=買A的人有多少個AB都買,說明規則的強度。

    • 增益率:說明項集{A}和項集{B}之間的獨立性,公式為"AB共同出現次數/A和B單獨出現次數",若Lift=1說明{A}和{B}相互獨立,說明兩個條件沒有任何關聯。如果Lift<1,說明兩個事件是互斥的。一般認為Lift>3才是有價值的規則。

  • 參考資料:


K-means

  • 說明:

    • K-means為非監督學習,先給定K個群心(分K群),利用各個樣本到每個群心,取最短歐式距離(直線距離),判給歐式距離最短的群心,群心再依照分類後的樣本,再更新一次群心,直到所有群心的變動收斂為止。也被稱為懶惰學習。
  • 優點:

    • 原理簡單且訓練速度快。
    • 算法可解釋度高。
    • 主要僅需調整參數K。
  • 缺點:

    • 對於噪音及異常樣本較敏感。
    • 成效很依賴輸入的數據集,有些型態數據集很難收斂;或者某類別樣本較少,聚類效果較差。
    • 效果較局部,並非全部類別準確。
  • 參考資料:


3. 集成學習(ensemble learning)

  • 說明:
    • 通過建立幾個模型組合來解決單一預測問題。
    • 原理是在數據集上構建多個分類器/模型,各自獨立學習和做出預測,這些預測最後結合成單預測,因此優於任何一個單分類器做出的預測。

引導聚集算法(Boostrap AGGregatING, BAGGING)

  • 說明:

    • 強模型的Error小但Var大。
    • 使用多個強模型結合,使Var縮小,並Error也不會有太大變化。
    • 各個模型無關聯性。
    • 每個模型權重一致。
  • 方法:

    • 從訓練樣本中抽出(取後放回)多個同大小的data set,每個data set分別建立不同的模型。
    • 每個模型為保持多樣性,不做任何改善(如決策樹不做剪枝的動作),並且權重一致。
    • 結合每個模型後,若為類別就用多數決方式來決定結果,若為迴歸則用計算平均數來決定結果。
  • 模型:

    • 隨機森林(Random Forest):
      • 為Bagging的方法。
      • 可平行運算。
      • 對離群值較不敏感。
  • 優點:

    • 原始資料具有許多噪音及雜訊,可以透過抽樣方式避免噪音一同訓練,進而改善模型的不穩定性。
  • 參考資料:


Boosting

  • 說明:

    • 弱模型的Error大但Var小。
    • 使用多個強模型結合,使Var縮小,並Error也不會有太大變化。
    • 每個模型有關聯性。
    • 透過第一個模型對各個data set做分類/預測,用得來的錯誤來加強權重做學習,產第二個模型,新模型會學習到之前錯誤,以此類推,進而改善結果。
    • 與Bagging方法類似。
    • 不同之處在於需先進行一個模型才能找尋另一個模型,會對結果錯誤的模型加重權重,加以學習。
  • 模型:

    • AdaBoost:

      • 是一種Boosting分類算法。

      • 一般用於類別二分。

      • 方法:

        1. 透過一組data set訓練出一個模型,data初始權重都為1。
        2. 對於分類/預測對的data減少權重,錯誤的data則加強權重,創造新的data set。
        3. 進行N次後,將N個模型結合(準確度高的模型權重較大,反之),進行"加權"投票決定最後結果。
    • GDBT(Gradient descent + Boosting):

      • 核心是CART迴歸樹。

      • 引進殘差的概念。

      • 與隨機森林差異在於:

        1. 不可平行運算。
        2. 對於離群值較敏感。
        3. 只能用CART迴歸樹。
        4. 具有殘差的概念。
      • 與Adaboost不同在於:

        1. 用梯度下降針對模型做改善取得新的模型。
        2. 沒有對訓練集的data做權重的變更。
        3. 使變異數和滿足誤差要求,則求得最佳模型。
  • 參考資料:


堆疊法(stacking)

  • 說明:

    • 將不同的學習模型結合,給予每個模型權重,創造新的模型。
    • 與bagging和boosting不同在於,可以做模型的異質整合。
  • 參考資料:


上一篇
DAY10:驗證碼辨識(三)
下一篇
DAY12:玉山人工智慧挑戰賽-中文手寫字辨識(前言)
系列文
資料分析及AI深度學習-簡單基礎實作30

尚未有邦友留言

立即登入留言