1. 程式人生 > >機器學習(二):機器學習中的幾個基本概念

機器學習(二):機器學習中的幾個基本概念

前言

對於《統計學習方法》中遇到的一些問題,以及機器學習中的一些自己沒有理解透徹的問題,希望通過梳理總結能夠有更深入的理解。

在上一章最開始我們已經概括了統計學習方法的三要素,即模型、策略、演算法,這裡就不再詳述了。

本文討論總結了如下幾個概念:損失函式與風險函式、經驗風險最小化與結構風險最小化、欠擬合與過擬合、正則化、生成模型與判別模型等。這些都是機器學習中的常見問題,這裡僅做一個梳理,不能保證非常全面,不足之處煩請指正。

1. 損失函式與風險函式

(1) 損失函式:

損失函式(Loss Function),也稱代價函式(Cost Function),是用來度量預測的錯誤程度的函式,是預測值f

(X)f\left( X \right)和實際值YY非負實值函式,記作L(Y,f(X))L\left( {Y,f\left( X \right)} \right)

常用的損失函式如下:

0-1損失函式:L(Y,f(X))={0,Yf(X)1,Y=f(X)L\left( {Y,f\left( X \right)} \right) = \left\{ \begin{array}{l} 0{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} ,{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} Y \ne f\left( X \right)\\ 1{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} ,{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} Y = f\left( X \right) \end{array} \right.

平方損失函式:L(Y,f(X))=(Yf(X))2L\left( {Y,f\left( X \right)} \right) = {\left( {Y - f\left( X \right)} \right)^2}

絕對損失函式:L(Y,f(X))=Yf(X)L\left( {Y,f\left( X \right)} \right) = \left| {Y - f\left( X \right)} \right|

對數或對數似然損失函式:L(Y,P(Y

X))=logP(YX)L\left( {Y,P\left( {Y\left| X \right.} \right)} \right) = - \log P\left( {Y\left| X \right.} \right)

(2) 風險函式:

風險函式(Risk Function),也稱期望損失(Excepted Loss),用來表示損失函式的期望。具體的說,就是表示理論上模型f(X)f\left( X \right)關於聯合概率分佈P(X,Y)P\left( {X,Y} \right)平均意義下的損失,即: Rexp(f)=EP[L(Y,f(X))]=X×ΥL(y,f(x))P(x,y)dxdy{R_{\exp }}\left( f \right) = {E_P}\left[ {L\left( {Y,f\left( X \right)} \right)} \right] = \int_{{\rm X} \times \Upsilon } {L\left( {y,f\left( x \right)} \right)P\left( {x,y} \right)dxdy} 然而,一般情況下樣本的聯合概率分佈是未知的(如果已知就可以直接求出條件概率分佈了),學習的目標則是選擇期望風險最小的模型,這是矛盾的。

那麼,如何解決這一問題呢? 這裡,考慮模型f(X)f\left( X \right)關於NN個樣本的訓練資料集的平均損失,即經驗風險(Empirical Risk)或經驗損失(Empirical Loss): Remp(f)=1Ni=1NL(yi,f(xi)){R_{emp}}\left( f \right) = \frac{1}{N}\sum\limits_{i = 1}^N {L\left( {{y_i},f\left( {{x_i}} \right)} \right)} 可以看到,期望風險Rexp(f){R_{\exp }}\left( f \right)是模型關於聯合分佈的期望損失,經驗風險Remp(f){R_{emp}}\left( f \right)是模型關於訓練集的平均損失。

由大數定律知,當樣本容量NN趨於無窮時,經驗風險趨於期望風險。那麼,似乎就可以用經驗風險估計期望風險了。但是,實際上訓練樣本數目都是有限的,甚至有時候樣本數目很小,那麼這樣估計就會有很大偏差。因此,需要對經驗風險進行一定的矯正,這就關係到監督學習的兩個基本策略:經驗風險最小化和結構風險最小化。

注: 這裡簡單說一下大數定律(辛欽大數定律):對於相互獨立同分布的NN個樣本,及任意的ε>0\varepsilon > 0, 有limP{1Ni=1NxiE(xi)<ε}=1\lim P\left\{ {\left| {\frac{1}{N}\sum\limits_{i = 1}^N {{x_i}} - {\rm E}\left( {{x_i}} \right)} \right| < \varepsilon } \right\} = 1

2. 經驗風險最小化與結構風險最小化

(1) 經驗風險最小化:

Empirical Risk Minimization,記作ERM。 ERM策略認為,經驗風險最小的模型是最優模型。

當樣本容量足夠大時,ERM確實能取得很好的學習效果,比如極大似然估計就是ERM的一個例子(參照上一章內容)。 當模型是條件概率分佈、損失函式是對數損失函式時,ERM等價於極大似然估計。

但是,當樣本容量很小時,ERM的學習效果就不太好,很容易“過擬合”。

(2) 結構風險最小化:

Structural Risk Minimization,記作SRM。 SRM是為了防止過擬合而提出的策略,等價於正則化。

結構風險是在經驗風險上加上表示模型複雜度的正則化項或懲罰項,即: RSRM(f)=1Ni=1NL(yi,f(xi))+λJ(f){R_{SRM}}\left( f \right) = \frac{1}{N}\sum\limits_{i = 1}^N {L\left( {{y_i},f\left( {{x_i}} \right)} \right)} + \lambda J\left( f \right)其中J(f)J\left( f \right)為模型複雜度,是定義在假設空間上的泛函,模型ff越複雜,J(f)J\left( f \right)就越大,即複雜度表示了對複雜模型的懲罰。

SRM需要經驗風險和模型複雜度同時最小化,比如最大後驗估計就是SRM的一個例子(同樣參考上一章內容)。 當模型是條件概率分佈、損失函式是對數損失函式、模型複雜度有模型先驗概率表示時,SRM等價於MAP。

3. 欠擬合與過擬合

對於一個模型而言,我們希望在訓練的時候能夠獲得較小的訓練誤差,同時測試的時候能夠使測試誤差與訓練誤差的偏差儘可能小。那麼,這就涉及到機器學習的兩個基本概念:欠擬合和過擬合,即underfitting和overfitting。

(1) 欠擬合

什麼是欠擬合?欠擬合是指模型不能在訓練集上獲得足夠低的誤差。 簡單地說,就是模型訓練都沒有做好,就更不用說測試誤差了。

(2) 過擬合

那麼什麼是過擬合呢?過擬合是指訓練誤差和測試誤差之間的偏差太大了。 簡單地說,就是模型訓練誤差很小,甚至於把不合適的樣本(包括噪點)都作為有用樣本進行訓練,那麼模型雖然對訓練集擬合很好,但泛化性很差,在測試集上就會出現較大的誤差。

(3) 如何解決欠擬合和過擬合呢?

一般來說,模型容量過小易出現欠擬合,過大則易出現過擬合。

那麼什麼是模型容量呢?和樣本容量不同,通俗地說,模型容量是指其擬合各種函式的能力。換句話說,我們可以將學習演算法選擇為解決方案的函式集,這樣通過改變輸入特徵的數目和加入這些特徵對應的引數,從而改變了模型的容量。當然容量不僅取決於模型的選擇,還有很多其他方法,這裡暫時不做討論了(其實是還沒研究過)。

相對於欠擬合,過擬合大概是機器學習中更容易遇到也更重要的問題。一味追求提高對訓練集的預測能力(即小誤差),使所選模型複雜度過大、引數過多,從而產生過擬合。那麼,要解決過擬合問題,可以考慮以下常用方法: a.重新整理資料,儘可能去掉噪聲資料; b.增大訓練資料量,過小的訓練集容易出現過擬合; c.採用dropout方法,一般用於神經網路訓練中,簡單地說就是每層以一定概率選擇保留的神經元(即對應的引數),降低神經網路的複雜度; d.正則化。

4. 正則化

前面說過,結構風險最小化(SRM)等價於正則化。其實正則化就是模型選擇的典型方法,具體來說就是給目標函式(一般是損失函式)加上一個正則項或懲罰項,從而達到降低模型複雜度、提高模型泛化能力的作用。 正則項一般是模型複雜度的單調遞增函式,模型越複雜,正則化值就越大。常用的正則項為Lp{L_p}範數,包括L1{L_1}範數、L2{L_2}範數等。

這裡順便總結一下常用Lp{L_p}範數的意義和作用: L0{L_0}範數:表示向量XX中非零元素的個數,但是L0{L_0}範數很難寫成一個好的數學表示式,很難優化求解,因此實際上是一個NP難問題; L1{L_1}範數:表示向量XX中非零元素的絕對值之和,也稱為稀疏規則運算元,可以實現特徵稀疏從而去掉無用特徵,實際上是L0{L_0}範數的最優凸近似; L2{L_2}範數:表示向量XX中各元素的平方和開根的結果,多用於防止過擬合、提高模型泛化能力; L{L_\infty }範數:表示向量XX中元素的最大值。

5. 生成模型與判別模型

生成模型和判別模型是監督學習中的兩類模型,一般用於解決不同型別的問題。

(1) 生成模型:

由訓練資料學習樣本的聯合概率分佈P(X,Y)P\left( {X,Y} \right)並求出相應的條件概率分佈P(YX)P\left( {Y\left| X \right.} \right)作為預測,這樣的模型稱為生成模型。

生成模型表示了給定輸入產生輸出的生成關係(即聯合分佈P(X,Y)P\left( {X,Y} \right))。

典型方法有樸素貝葉斯法、混合高斯模型和隱馬爾可夫模型。

生成模型的優點: a.可以還原出聯合概率分佈P(X,Y)P\left( {X,Y} \right),而判別模型不能; b.學習收斂速度更快,即當樣本容量增加的時候,學到的模型可以更快地收斂於真實模型; c.當存在隱變數時,生成模型仍然可以學習(比如混合高斯模型就是加入隱變數的生成方法),而判別模型不能。

生成模型的缺點: a.聯合分佈的確能夠提供更多的資訊,但同樣需要更多的樣本和更多的計算; b.如果只是對樣本進行分類,那麼生成模型計算得到的關於類條件概率的許多資訊就用不到了,浪費了計算資源; c.實踐中判別模型效果更好。

(2) 判別模型:

由訓練資料之際學習條件概率分佈P(YX)P\left( {Y\left| X \right.} \right)或者決策函式f(X)f\left( X \right)作為預測,這樣的模型稱為判別模型。

判別模型表示了對於給定的輸入XX,應該預測得到什麼樣的輸出YY

典型方法有:K-近鄰、感知機、決策樹、logistic迴歸、最大熵、支援向量機、提升方法和條件隨機場等。

判別模型的優點: a.可以直接學習條件概率分佈P(YX)P\left( {Y\left| X \right.} \right)或者決策函式f(X)f\left( X \right),那麼就是直接面向預測,往往學習準確率更高; b.由於直接學習的P

相關推薦

機器學習機器學習基本概念

前言 對於《統計學習方法》中遇到的一些問題,以及機器學習中的一些自己沒有理解透徹的問題,希望通過梳理總結能夠有更深入的理解。 在上一章最開始我們已經概括了統計學習方法的三要素,即模型、策略、演算法,這裡就不再詳述了。 本文討論總結了如下幾個概念:損失函式與風險

列舉類列舉類常用的方法

列舉類中的幾個常見方法 int compareTo(E o) String name() int ordinal() String toString() <T> T valueOf(Class<T> type,String name) values(

1 Z-Stack協議重要概念的理解

     PANID的出現一般是伴隨在,確定通道以後的。PANID其全稱是Personal Area Network ID,網路的ID(即網路識別符號),是針對一個或多個應用的網路,用於區分不同的ZigBee網路,一般是mesh或者cluster tree兩種拓撲結構之一。所有節點的panID唯一,一個網路

TensorFlow系列專題機器學習基礎

歡迎大家關注我們的網站和系列教程:http://www.tensorflownews.com/,學習更多的機器學習、深度學習的知識! 目錄: 資料預處理 歸一化 標準化 離散化 二值化 啞編碼

機器學習logistic迴歸

基礎知識: logistic迴歸其實是一個分類問題,可以定義如下:c為2時是一個兩類分類問題. 當分佈為伯努利分佈時:    logistic迴歸和線性迴歸類似,不同的條件概率是不同的,方程如下: 其中:sigmoid函式定義如下: 使用logist

機器學習快速入門SVM分類

定義 SVM便是根據訓練樣本的分佈,搜尋所有可能的線性分類器中最佳的那個。仔細觀察彩圖中的藍線,會發現決定其位置的樣本並不是所有訓練資料,而是其中的兩個空間間隔最小的兩個不同類別的資料點,而我們把這種可以用來真正幫助決策最優線性分類模型的資料點稱為”支

Python與機器學習Windows下科學計算環境搭建

【注意:安裝numpy和scipy模組時注意與Python版本保持一致】 1.安裝numpy 測試: 沒有報錯,bingo~ 2.安裝scipy 在官網中下載scipy3.4版本:scipy-0

TensorFlow學習筆記快速理解Tutorial第一例子-MNIST機器學習入門

    TensorFlow教程的第一章“MNIST機器學習入門”很簡單,用了一個很簡單的網路,實現了MNIST樣本訓練。     教程連結:http://wiki.jikexueyuan.com/project/tensorflow-zh/tutorials/mnist_

機器學習有監督學習、無監督學習和半監督學習

一、基本概念 1 特徵(feature) 資料的特徵。 舉例:書的內容 2 標籤(label) 資料的標籤。 舉例:書屬於的類別,例如“計算機”“圖形學”“英文書”“教材”等。 3 學習(learning) 將很多資料丟給計算機分析,以此

HotSpot學習虛擬機器的啟動過程原始碼解析

### 1. 前言 上文介紹了HotSpot編譯和除錯的方法,而這篇文章將邁出正式除錯的第一步——除錯HotSpot的啟動過程。 學習啟動過程可以幫助我們瞭解程式的入口,並對虛擬機器的執行有個整體的把握,方便日後深入學習具體的一些模組。 ### 2. 整體感知啟動過程 整體的感知啟動過程可以在啟

機器學習統計學習問題概述

學習:“如果一個系統能夠通過執行某個過程改進它的效能,這就是學習。”按照這一觀點,統計學習就是計算機系統通過運用資料及統計方法提供系統性能的機器學習。 機器學習的物件是資料,它從資料出發,提取資料特徵,抽象出資料模型,發現數據中的知識,又回到對資料的分析和預測

機器學習3機器的進化-迭代學習

之前介紹的簡單線性迴歸,就是一個迴歸模型,是一個可用於機器學習的模型。什麼意思呢?就是模型的狀態(引數集合)是可以進化的,只要合理訓練它,模型就能取得更好的預測狀態,所以說模型可用於機器學習。 要應用機器學習,一開始就要考慮選擇一個良好的模型(分類模型或迴歸模型),想清楚了,這步是很重要的,如果你選擇了一個不

機器學習5機器學習的一個例項

大家都知道tensorflow(簡稱tf)是一個機器學習的框架,使用它就可以完成機器學習。那就用tf來演示一下怎麼做機器學習吧,這樣你就有一個具體的感受:原來是這樣的啊! 本文使用tensorflow做一次機器學習的演示。 但是,tensorflow的理解跟使用,是可以作為一個獨立的專題來講解的,這個我再補充

Unity3D學習使用JSON進行對象數據的存儲讀取

進行 存儲路徑 新的 del jpg cati spa 全局變量 .net 前言 前段時間完成了自己的小遊戲Konster的制作,今天重新又看了下代碼。原先對關卡解鎖數據的存儲時用了Unity自帶的PlayerPref(字典式存儲數據)。 讀取關卡數據的代碼: voi

Android NDK學習編譯腳本語法Android.mk和Application.mk

GC make files 文件的 包括 一次 opengl aries 基本語法 一、Android.mk Android.mk分為一下幾部分: LOCAL_PATH:= $(call my-dir), 返回當前文件在系統中的路徑,Android.mk文件開始時必須定義

強化學習馬爾可夫決策過程

最優 最大值 公式 des 版本 ams 強化學習 有獎 RoCE Finite Markov Decision Process 馬爾可夫決策過程(MDP)是對連續決策進行建模,當前的動作不僅對當前產生影響,而且還會對將來的的情況產生影響,如果從獎勵的角度,即MDP不僅影響

linux入門學習linux圖形化界面與命令行界面之間的切換,以及一些系統命令

之間 linu 鏡像 pan ctr 安裝 linux -- linux鏡像 一、linux圖形化界面與命令行界面之間的切換 註意:前提是你安裝的 linux鏡像ios 必須具備圖形化功能。 1)  圖形化界面--->命令行界面:       ctrl + alt +

PE檔案格式學習總體結構

1.概述 PE檔案分為幾個部分,分別是: DOS頭 DOS Stub NT頭(PE頭) 檔案頭 可選頭 區段頭(一個數組,每個元素都是一個結構體,稱之為IMAGE_SECTION_HEADER) .text .rdata .data .rs

TensorFlow學習tf.random_normal() 和 tf.random_unform()

1. tf.random_normal() #正態分佈 tf.random_normal( shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None ) Args:

網頁開發學習表格

一、表格 表格所涉及的標籤有“表格標籤”,“行標籤”和“單元格標籤”。 < table >…< /table >:表格標籤,表示一個表格的開始和結束。 < tr >…< /tr >:行標籤,成對出現,包含在表格標籤之間,有