第三講:感知機+SVM+LR(上)
1. 補充
1.1 最小二乘法的概率解釋
2. 支援向量機
2.1 模型與策略
2.2 硬間隔最大化
2.2.1 函式間隔與幾何間隔
2.2.2 間隔最大化原理
2.2.3 線性可分SVM學習演算法——最大間隔法
2.2.4 最大間隔法示例
2.2.5 線性可分SVM學習的對偶演算法
2.2.6 對偶學習演算法示例
2.3 軟間隔最大化(下)
3. LR(下)
補充
1.1 最小二乘法的概率解釋
前文向大家介紹了最小二乘的解析式以及它的幾何解釋,下面我們嘗試從概率的角度,去探討最小二乘與極大似然估計的關係。先做這樣幾個假設:
誤差總是存在的
首先要說明的,所有的預測值都不可能完美地與真實值契合,所以誤差必然存在,而我們的目的就是如何讓誤差儘可能地小。這樣就可以假設有一組θ,使真實的資料存在以下關係式,
假設誤差服從高斯分佈
至於為什麼可以這樣假設,原因是人們認為誤差是隨機的,所以服從高斯分佈。根據中心極限定理,也能夠做出這樣的假設。該定理指出,如果一個隨機變數是若干獨立隨機變數的總和,當被加的個數趨近於無窮大時,他的概率密度函式近似高斯密度。並且誤差也是獨立同分布(Independent Identical Distribution,IID)。
其中μ是正態分佈隨機變數的均值,σ2是此隨機變數的方差,也可以記作N(μ,σ2)。
設ε的平均值為0,方差為ε2
求真實值的概率分佈
ε的概率密度函式,就是預測值與真實值差的概率密度函式,那麼可以把上述兩個等式合併,經過變換,得到如下等式:
求聯合概率分佈
這樣相當於給定一組θ、x,求出了y的概率密度分佈,聯合概率分佈等於邊緣概率分佈的乘積:
定義對數似然函式
這裡我們就得到了一個關於x、y、θ的模型,它表示真實值y的聯合概率分佈。當我們想使預測正確的概率最大時,只需要將L(θ)最大化就可以了。於是,求值問題又變成了求最大值問題。為了方便計算,我們定義對數似然函式,L(θ),也就是對L(θ)取對數,再求最大值。對數函式為一個單調遞增函式,所以不會對原函式造成影響。取對數後,累乘變成累加。
等式第一項是一個常數項,第二項是一個負數項。要讓L(θ)最大,就要讓負數項最小:
這又回到了我們熟悉的式子上面來了,簡單的來說,最小二乘法就是誤差服從高斯分佈且獨立同分佈下的極大似然估計。
支援向量機
2.1 模型與策略
90年代的時候,在貝爾實驗室,Yann Lecun和 Vapnik經常就SVM和神經網路的優劣展開激烈的討論,但那個時候,神經網路發展的並不是很強大,反觀SVM的理論研究則更加深入,通過核技巧成功將SVM的應用層面從線性可分擴充套件到線性不可分的情況,一度佔據上風。
支援向量機(SupportVector Machine, SVM)是一種二類分類模型,它的基本模型是定義在特徵空間上的間隔最大的線性分類器,間隔最大使它有別於感知機;支援向量機的學習策略是間隔最大化,可形式化為一個求解凸二次規劃(convex quadratic programming)的問題,也等價於正則化的合頁損失函式的最小化問題。
當訓練資料可分時,通過硬間隔最大化(hardmarginmaximization),學習一個線性的分類器,即線性可分支援向量機,又稱為硬間隔支援向量機;當訓練資料近似可分時,通過軟間隔最大化(softmargin maximization) ,也學習一個線性分類器,稱為軟間隔支援向量機。
2.2 硬間隔最大化
對於二維特徵空間的線性可分的二分類問題,如上圖所示兩種類別。這時有無數個直線能將兩類資料正確區分。但哪種看起來分的更好呢?也就是說如何去定義“好”呢,有這樣兩種度量方式,一種叫做函式間隔,另外一種叫幾何間隔,函式間隔與幾何間隔的概念如下。
1.2.1 函式間隔與幾何間隔
函式間隔
對於給定的訓練資料集T和超平面(w,b),定義超平面(w,b)關於樣本點(xi,yi)的函式間隔為
如圖所示,資料點到分介面的在y軸上的距離即函式間隔(藍線所示)。
定義超平面(w,b)關於訓練資料集T的函式間隔為超平面(w,b)關於T中所有樣本點(xi,yi)的函式間隔之最小值,即
函式間隔可以表示分類預測的正確性及確信度。但是當等比例的改變w和b時,如
超平面沒有改變,但是函式間隔變為原來的k倍,即
如果對超平面的法向量w加以約束,使得間隔是確定的,這時函式間隔成為幾何間隔。
幾何間隔
對於給定的訓練資料集T和超平面(w,b),定義超平面(w,b)關於樣本點(xi,yi)的幾何間隔為
其中,||w||為 w 的L2範數。
下圖為幾何間隔的示例圖。其中w為超平面的法向量,A點到超平面的距離為γi
定義超平面(w,b)關於訓練資料集T的幾何間隔為超平面(w,b)關於T中所有樣本點(xi,yi)的幾何間隔之最小值,即
如果等比例的改變超平面引數w和b,函式間隔按比例改變,而幾何間隔不變。
1.2.2 間隔最大化原理
最大間隔分離超平面
對於一個線性可分的資料來說,我們總能找到一個超平面能將它區分開來,那麼對這個超平面來說,我們也可以找到距離這個超平面最近的一些資料點,也就是與超平面幾何間隔最小的這些資料點,即,但是我們找的這個超平面可能不是最優的,這個最優的意思是說,不僅將這些資料正確分開,並且對於那些距離超平面最近的資料點(難分的資料點)也讓它離超平面儘可能的遠,這樣的超平面對於未知資料就有很好的預測能力。因此我們要最大化幾何間隔。也稱之為硬間隔最大化。
下面我們學習如何求得最大間隔分離超平面。這個問題可以轉化為下面的約束最優化問題:
該問題第一項表示的是要求最大化超平面(w,b)關於訓練集的幾何間隔γ,第二項約束條件表示的是超平面(w,b)關於每個訓練樣本的幾何間隔至少是γ。
考慮到幾何間隔與函式間隔的關係,上述問題可改寫為如下問題:
假設把w和b按照比例變為k倍,約束優化問題變為如下形式:
可以看出函式間隔的這一變化,對上述最優化問題的不等式約束沒有影響,對目標函式的優化同樣沒有影響,也就是說,它產生了一個等價的最優化問題。為此取=1。另外考慮到最大化和最小化和最小是等價的。於是我們可以得到如下的線性可分支援向量機學習的最優化問題:
1.2.3 線性可分SVM學習演算法——最大間隔法
求解出上述約束最優化問題的解w*和b*後,那麼就可以得到最大間隔分離超平面
w*·x+ b* = 0
及分類決策函式
f(x)= sign(w*·x +b*),
即線性可分支援向量機模型。
下面我們總結一下整個演算法流程。
輸入:線性可分訓練資料集T={(x1,y1),(x2,y2),···,(xN,yN)},其中,xi∈χ=Rn,yi∈У={-1,+1},i= 1,2,···,N
輸出:最大間隔分離超平面和分類決策函式。
構造並求解約束最優化問題:
求得最優解w*和b*。
由此得到分離超平面:
w*·x + b*= 0
分類決策函式
f(x) = sign(w*·x+ b*)
1.2.4 最大間隔法示例
有如下一組資料集:
在座標軸上如下所示:
根據上述演算法,根據訓練資料集構造約束最優化問題:
化簡可得:
問題轉化為求圓心到某一區域最小值的問題,如下圖所示:
上圖中紅色標記所示點,即為我們要求的解。求得:
帶入約束條件求b得:
最終可得:
其中棕色直線是我們求得的最終分介面,而與之平行的另外兩條虛線是支撐向量所在的直線,落在這兩條直線上的資料點到分介面的距離相等,它們支撐起了整個分類器的分類效能,保證了最優的分類效果。
1.2.5 線性可分SVM學習的對偶演算法
拉格朗日對偶性
在約束最優化問題中,常常利用拉格朗日對偶性將原始問題轉換為對偶問題,通過解對偶問題而得到原始問題的解。這樣做一是因為對偶問題往往更容易求解;二是因為自然引入核函式,進而推廣到非線性分類問題。
原始問題
考慮如下約束最優化問題
稱此約束最優化問題為原始最優化問題或原始問題。
首先引入拉格朗日函式
相關推薦
第三講:感知機+SVM+LR(上)
主要內容 1. 補充 1.1 最小二乘法的概率解釋 2. 支援向量機 2.1 模型與策略 2.2 硬間隔最大化 2.2.1 函式間隔與幾何間隔 &n
第四講:感知機+SVM+LR(下)
主要內容 2. 支援向量機(下) 2.3 軟間隔最大化 2.3.1 線性支援向量機 &nbs
第三節:初識pandas之DataFrame(上)
技術 eight spa 16px panda 分享 tro info data DataFrame是Python中Pandas庫中的一種數據結構,它類似excel,是一種二維表。 第三節:初識pandas之DataFrame(上)
從蘇寧電器到卡巴斯基第21篇:單證這一年(上)
單證的學習與生活 這是我第一次來到北京工業大學學習,我覺得與我的本科學校相比,那麼這裡簡直就是天堂了。唯一可能不太好的,就是寢室裡面是那種上下鋪的設定,而本科是上床下桌。我覺得上床下桌那種,
感知機學習演算法(PLA)的修正過程的理解(機器學習基石)
原理 首先,PLA修正過程的數學表示: 在一個迴圈中,t代表當前的迭代次數 1. 找到一個錯誤分類的點(xt,ytxt,yt): sign(wTtxn(t))≠yn(t)sign(wtTxn(t))≠yn(t) 2. 修正該錯誤 Wt+1←Wt+yn
第八節:web爬蟲之urllib(五)
模塊 otp robot size 分享 png http 不可 parser 第四個模塊 robotparser: 主要是用來識別網站的 robots.txt 文件,然後判斷哪些網站可以爬,哪些網站不可以爬的,其實用的比較少。 第八節:web爬蟲之urll
《shell編程實戰》第3章shell變量基礎(上)
shell 老男孩 變量 1、什麽是shell變量簡單地說,變量就是用一個固定的字符串代替更多更復雜的內容,該內容裏可能還會包含變量、路徑、字符串等其他的內容。變量是暫時存儲數據的地方及數據標記,所存儲的數據存在於內存空間中,通過正確地調用內存空間中變量的名字就可以取出與變量對應的數據。意義:使用
第十章、日常運維(上)
抓取 進入 fff 0.11 cpu rip 筆記 裏來 ifd 10.1 使用w查看系統負載 10.2 vmstat命令 10.3 top命令 10.4 sar命令 10.5 nload命令 10.6 監控io性能 10.7 free命令 10.8 ps命令 10.9 查
C++筆記 第十七課 物件的構造(上)---狄泰學院
如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第十七課 物件的構造(上) 問題:物件中成員變數的初始值是多少?不定的 小實驗 下面的類定義中成員變數i和j的初始值為什麼? 17-1 成員變數的初始值 #incl
C++筆記 第十三課進階面向物件(上)---狄泰學院
如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第十三課 進階面向物件(上) 你考慮過嗎? 日常生活中,我們都習慣於對事物進行分類。那麼,這種分類的思想是夠可以引入程式設計中呢?是的 1.面向物件基本概念 面向物件
機器學習筆記—svm演算法(上)
機器學習筆記—svm演算法(上) 一:初識svm 問題:用一條直線把下圖的圓球和五角星分離開來。 解答:有N種分法,如下圖: 附加題:找出最佳分類? 解答:如圖: Exe me?鬼知道哪一條是最佳?? 等等這個最佳分類是不是等價於,地主讓管家給兩個兒子
資料結構 筆記:字串類的建立(上)
歷史遺留問題 -C語言不支援真正意義上的字串 -C語言字元陣列和一組函式實現字串操作 -C語言不支援自定義型別,因此無法獲得字串型別 從C到C++的進化過程引入了自定義型別 在C++中可以通過類完成字串型別的定義 字串類的實現 class String :
Python之路(十五):網絡編程(上)
核心 accept 廣泛 文件系統 類型 操作 兩種 學習 一起 socket編程 本篇介紹socket是基於什麽來的,為什麽要知道互聯網底層實現通信的原理 一、客戶端/服務端架構 即C/S架構,包括 1.硬件C/S架構(打印機) 2.軟件C/S架構(web服務
The Beam Model:Stream & Tables翻譯(上)
作者:周思華 歡迎訪問網易雲社群,瞭解更多網易技術產品運營經驗。 本文嘗試描述Beam模型和Stream & Table理論間的關係(前者描述於資料流模型論文、the-world-beyond-batch-streaming101和the-world-beyond-batch-streaming-1
區塊鏈技術基礎語言(三十一):Go語言網路程式設計(上)
原文連結:區塊鏈技術基礎語言(三十一):Go語言網路程式設計(上) 一、網路概述 1.1 網路協議 網路協議就是為網路資料交換而制定的規則、約定與標準。 1.2 分層模型 為了降低網路設計的複雜性,絕大多數網路都組織成一堆相互
第18課 - 深入特權級轉移(上)
初識任務狀態段(Task State Segment) 處理器所提供的硬體資料結構, 用於實現多工解決方案 TSS中儲存了 關鍵暫存器的值以及 不同特權級使用的棧 參考:紫陌 ht
大型網站架構系列:負載均衡詳解(上)
//轉載自:http://blog.jobbole.com/97957/ 面對大量使用者訪問、高併發請求,海量資料,可以使用高效能的伺服器、大型資料庫,儲存裝置,高效能Web伺服器,採用高效率的程式語言比如(Go,Scala)等,當單機容量達到極限時,我們需要考慮業務
第6章 征服CSS3選擇器(上)
屬性選擇器 在HTML中,通過各種各樣的屬性可以給元素增加很多附加的資訊。例如,通過id屬性可以將不同div元素進行區分。 在CSS2中引入了一些屬性選擇器,而CSS3在CSS2的基礎上對屬性選擇器進行了擴充套件,新增了3個屬性選擇器,使得屬性選擇器有了萬用字元的概念,這三個屬性選擇器與CSS2的屬性選擇器
資料結構開發(1):學習前的準備(上)
0.目錄 1.泛型程式設計簡介 2.智慧指標示例 3.異常類構建 3.1 C++異常簡介 3.2 異常類構建 4.小結 參考前文傳送門: C++解析(26):函式模板與類模板 C++解析(20):智慧指標與型別轉換函式 C++解析(28):異常處理 1.泛型程式設計簡介 資料結構
js運動應用:多物體運動框架(上)
多物體運動框架原理: 1、所有屬性不可公用 2、屬性與運動物件繫結:速度,透明度等其他屬性值 案例一:多個div變寬: <!DOCTYPE HTML> <html> &