機器學習筆記-總結

  • 2019 年 12 月 25 日
  • 筆記

機器學習筆記是我這學期在上」統計學習」這門課時學習到的內容的一個總結.因為過往很多學過的知識,現在大多都已經忘掉了,而統計機器學習的內容則很重要,我可不能再上過就忘掉,所以在複習的時候把這些內容都記錄下來,以便以後查閱.

基本概念

  1. 學習:一個系統在完成一項任務T的時候,使用了數據E,使得在評判標準P下,性能獲得了提升,這就是學習
  2. 統計學習的對象是數據,關於統計學習的基本假設是:同類數據服從一定的統計規律性,即數據都是獨立同分布的
  3. 統計學習中的問題可以分為4大類,分別是
    • 監督學習:解決預測問題, 根據預測變數是否連續,分為回歸問題和分類問題
    • 非監督學習:解決分析型問題, 分為聚類(.如影像分割).,密度估計和關聯分析三類
    • 半監督學習:問題中既有分析的部分,又有預測的部分,主要有主動學習(.先分析,出現問題時向人要數據(.如分類label).).
    • 增強學習:在合適過程中,根據回饋做新的判斷,主動增強自身的學習,典型應用:機器人足球
  4. 統計學習的基本步驟
    1. 獲取數據(.即E).
    2. 確定用什麼樣的數學模型,所有模型構成假設空間
    3. 有了一組模型後,確定策略,即如何來找到最優的模型
    4. 寫出模型選擇策略的演算法
    5. 通過學習得到最優模型
    6. 用學習到的模型來在新的數據上進行分析和預測
  5. 學習的三大要素:模型,策略,演算法.模型是知識的集合,策略是模型選擇的準則,演算法就是學習的具體方法

模型的種類

  1. 線性模型(Linear model):y=ax+b,演算法實例:線性回歸(Linear regression)
  2. 對數線性(Log-linear model):演算法實例:邏輯斯蒂回歸(Logistic regression)
  3. 稀疏模型(Sparse model):形式也是y=ax+b,但a很稀疏,演算法實例:稀疏分解(Sparese decomposition)
  4. 非線性核方法(Non-linear by kernel),利用核技巧將非線性問題轉化為線性問題,實例:支援向量機(SVM, support vector machine)
  5. 層級非線性(Layered nonlinear):實例:神經網路(Neural Network)
  6. 圖模型(Graphic model):將數據看作隨機變數的話,它們之間的依賴關係可用圖來表示,實例:貝葉斯網路(Bayes network)
  7. 樹模型(Tree model):對輸入變數進行分塊處理,每個子塊有可以使用別的機器學習演算法,實例:決策樹(Decision tree),提升數(Boosting tree)
  8. 混合模型(Mixture model):實例:聚類(Clustering) 上述模型中,1-5為非概率模型,6,8為概率模型,7為混合類型,概率模型和非概率模型可能都有.

學習的策略

策略是模型選擇的準則,為了量化模型的好壞,我們定義了損失函數和風險函數 損失函數(Loss function):也叫代價函數(Cost function),用來度量模型對於一個輸入X產生的預測值f(x)與真實值Y之間的差異的大小.常見的損失函數有:

  1. 0-1 損失函數(0-1 loss function)
  1. 平方損失函數(Square loss function)
  1. 絕對值損失函數(Absolute loss function)
  1. 對數損失函數(Log loss function)

風險函數是損失函數的期望,即將模型的輸入輸出XY作為隨機變數,風險函數就是模型f(X)關於聯合分布P(X,Y)的平均意義下的損失.風險函數的值越小,表示模型預測結果越準確,這種模型就越好,所以機器學習的目的就是最小化風險函數(Rish miniization).需要注意的是:P(X,Y)是未知的 如果給定數據集,我們可以計算在該數據集上的平均損失,這個損失定義為經驗風險.經驗風險在數據量足夠大的時候,能很好的近似期望風險,但在數據量較少的時候誤差會比較大. 在經驗風險的基礎上,加上表示模型複雜度的正則化項,則構成結構風險.結構風險能有效的防止過擬合,因為結構風險要求經驗風險和模型複雜度同時都小.

經典機器學習演算法

分類演算法:

  1. K近鄰(KNN, K Nearest Neighbor)
  2. 樸素貝葉斯(Naive Bayes)
  3. 支援向量機(SVM, Support Vector Machine)
  4. AdaBoost

聚類演算法:

  1. K-Means
  2. 期望最大化(EM, Expectation Maximization)

回歸演算法:

  1. 脊回歸(Ridge regression)
  2. Lasso回歸(The Least Absolute Shrinkage and Selectionator Operator)

關聯分析演算法:

  1. 先驗演算法(Aprior)

降維演算法:

  1. 主成份分析法(PCA, Principal Component Analysis)
  2. 局部線性嵌入(Locally linear embedding)

欠擬合(under-fitting)和過擬合(over-ftting)

在訓練模型的時候,有的時候需要選擇不同的複雜度(.如不同參數的個數).來訓練,不同的複雜度體現了模型對訓練數據的擬合程度. 如果參數過少,模型過於簡單,則模型不能很好的擬合訓練數據,這種情況稱為欠擬合,很顯然,欠擬合因為連訓練數據的規律都沒有學習到,所以對於預測,性能肯定不會太好. 另一方面,如果參數太多,模型過於複雜,則對訓練數據可以做到特別好的擬合,但由於訓練數據是有雜訊和誤差的,這種情況會將訓練數據的雜訊和誤差都考慮進來,在測試集上性能反而會下降.下面是訓練誤差和測試誤差與模型複雜度的關係

交叉驗證(Cross Validation)

學習的最終目的是預測,即學習一個模型,使得對未知數據能很好地預測.在實際操作中,一般將數據集分為3部分:訓練集,驗證集和測試集.為了驗證在訓練集上學習到的模型好壞,需要現在驗證集上進行驗證.實際中數據總是不充足的,所以需要重複使用數據,採用交叉驗證的方法.最常用的交叉驗證方法是S折交叉驗證方法. S折交叉驗證方法(S-fold cross validation):隨機地將數據切分為S個互不相交的子集,然後利用S-1個子集的數據訓練模型,利用餘下的1個子集作為測試集.測試集的選擇有S中情況,所以這種驗證可以進行S次.對每個模型,都進行S次訓練和驗證,然後求出平均測試誤差,將平均測試誤差最小的模型作為最優模型. 當數據量特別少的時候,我們將每個數據分為一個子集,即如果有N個數據,則S=N,這種方法稱為留一交叉驗證(Leave-one-out cross validation).

判別模型(Discriminative model)和生成模型(generative model)

生成式方法:對於某個給定的輸入X,先學習得到聯合分布P(X,Y),再計算P(Y|X),也即該方法考慮給定輸入X,輸出Y是怎麼生成的,要求得到一個關於整體的資訊,即對P(X,Y)進行建模. 生成式方法應用更廣,適用於各種機器學習問題,而且收斂速度快,而且對於有隱變數的情況,也適用.但由於需要建模XY的聯合分布,所以不能進行降維處理. 常見的生成式模型有樸素貝葉斯法和隱馬爾科夫模型. 判別式方法:對於某個給定的輸入X,直接給出預測值f(X)P(Y|X).該方法關注的是對於給定的輸入X,應該預測什麼樣的輸出Y,而不用去考慮數據整體的分布這些資訊,即對P(Y|X)建模. 常見的判別模型有KNN,感知機,決策樹,邏輯斯蒂回歸,最大熵模型,SVM,AdaBoost,條件隨機場等. 判別式方法只能用於分類和回歸問題,可以對X進行降維處理.