1. 程式人生 > >聽課筆記(第十一講): 線性分類模型 (臺大機器學習)

聽課筆記(第十一講): 線性分類模型 (臺大機器學習)

在上一講中,我們瞭解到線性迴歸和邏輯斯蒂迴歸一定程度上都可以用於線性二值分類,因為它們對應的錯誤衡量(square error, cross-entropy) 都是“0/1 error” 的上界。

1, 三個模型的比較

1.1 分析Error Function
本質上講,線性分類(感知機)、線性迴歸、邏輯斯蒂迴歸都屬於線性模型,因為它們的核心都是一個線性score 函式:
只是三個model 對其做了不同處理:
線性分類對s 取符號;線性迴歸直接使用s 的值;邏輯斯蒂迴歸將s 對映到(0,1) 區間。

為了更方便地比較三個model,對其error function 做一定處理:

這樣,三個error function 都變成只有y*s 這一項“變數”。

通過曲線來比較三個error function (注意:cross-entropy 變為以2為底的scaled cross-entropy)


很容易通過比較三個error function 來得到分類的0/1 error 的上界:

這樣,我們就理解了通過邏輯斯蒂迴歸或線性迴歸進行分類的意義。

1.2 優缺點比較
線性分類(PLA)、線性迴歸、邏輯斯蒂迴歸的優缺點比較:
(1)PLA
優點:在資料線性可分時高效且準確。
缺點:只有在資料線性可分時才可行,否則需要藉助POCKET 演算法(沒有理論保證)。
(2)線性迴歸
優點:最簡單的優化(直接利用矩陣運算工具)
缺點:y*s 的值較大時,與0/1 error 相差較大(loose bound)。

(3)邏輯斯蒂迴歸
優點:比較容易優化(梯度下降)
缺點:y*s 是非常小的負數時,與0/1 error 相差較大。

實際中,邏輯斯蒂迴歸用於分類的效果優於線性迴歸的方法和POCKET 演算法。線性迴歸得到的結果w 有時作為其他幾種演算法的初值。

2,隨機梯度下降 (Stochastic Gradient Descent)
傳統的隨機梯度下降更新方法:

每次更新都需要遍歷所有data,當資料量太大或者一次無法獲取全部資料時,這種方法並不可行。

我們希望用更高效的方法解決這個問題,基本思路是:只通過一個隨機選取的資料(xn,yn) 來獲取“梯度”,以此對w 進行更新。這種優化方法叫做隨機梯度下降。


這種方法在統計上的意義是:進行足夠多的更新後,平均的隨機梯度與平均的真實梯度近似相等。

注意:在這種優化方法中,一般設定一個足夠大的迭代次數,演算法執行這麼多的次數時我們就認為已經收斂。(防止不收斂的情況)

3,多類別分類 (multiclass classification)
與二值分類不同的是,我們的target 有多個類別(>2)。

一種直觀的解決方法是將其轉化為多輪的二值分類問題:任意選擇一個類作為+1,其他類都看做-1,在此條件下對原資料進行訓練,得到w;經過多輪訓練之後,得到多個w。對於某個x,將其分到可能性最大的那個類。(例如邏輯斯蒂迴歸對於x 屬於某個類會有一個概率估計)
如果target 是k 個類標籤,我們需要k 輪訓練,得到k 個w。
這種方法叫做One-Versus-All (OVA):


它的最大缺點是,目標類很多時,每輪訓練面對的資料往往非常不平衡(unbalanced),會嚴重影響訓練準確性。multinomial (‘coupled’) logistic regression 考慮了這個問題,感興趣的話自學下吧。

4,另一種多值分類方法
這種方法叫做One-Versus-One(OVO),對比上面的OVA 方法。

基本方法:每輪訓練時,任取兩個類別,一個作為+1,另一個作為-1,其他類別的資料不考慮,這樣,同樣用二值分類的方法進行訓練;目標類有k個時,需要 k*(k-1)/2 輪訓練,得到 k*(k-1)/2 個分類器。
預測:對於某個x,用訓練得到的 k*(k-1)/2 個分類器分別對其進行預測,哪個類別被預測的次數最多,就把它作為最終結果。即通過“迴圈賽”的方式來決定哪個“類”是冠軍。

顯然,這種方法的優點是每輪訓練面對更少、更平衡的資料,而且可以用任意二值分類方法進行訓練;缺點是需要的輪數太多(k*(k-1)/2),佔用更多的儲存空間,而且預測也更慢。
OVA 和 OVO 方法的思想都很簡單,可以作為以後面對多值分類問題時的備選方案,並且可以為我們提供解決問題的思路。

相關推薦

聽課筆記 線性分類模型 (機器學習

在上一講中,我們瞭解到線性迴歸和邏輯斯蒂迴歸一定程度上都可以用於線性二值分類,因為它們對應的錯誤衡量(square error, cross-entropy) 都是“0/1 error” 的上界。1, 三個模型的比較1.1 分析Error Function本質上講,線性分類

聽課筆記 歸納理論(機器學習

上一講重點是一些分析機器學習可行性的重要思想和概念,尤其是生長函式(growth function) 和突破點(break point) 的理解。這一講開篇再介紹一個界函式(bounding function)的概念:是指當(最小)突破點為k 時,生長函式m(N) 可能的最大值,記為B(N, k)。顯然,當

臺灣國立大學機器學習技法.聽課筆記 :Soft-Margin Support Vector Machine

我們從第一講到第三講,都是說Hard-Margin SVM,要求全部的點都要進行正確劃分,太完美了;也許有些點是noise,但是還是Hard-MarginSVM。 我們現在就想能不能加一些容忍度,容忍一些錯誤點。於是我們就得出以下寫法: 於是我們得出了新的SVM的式子: 但是這個式子並不是線

構建基本腳本

基本腳本1.1 多命令; shell腳本可以通過;將命令串起來一起運行,甚至可以將前一個命令執行的結果作為參數傳給後一個命令執行。[[email protected]/* */ ~]# date;who Mon Jul 17 20:46:33 CST 2017 (unknown) :0

python 第二周 我的python成長記 一個月搞定python數據挖掘!(19) -scrapy + mongo

msg 步驟 [0 ssi xtra tin perl overflow tab mongoDB 3.2之後默認是使用wireTiger引擎 在啟動時更改存儲引擎:   mongod --storageEngine mmapv1 --dbpath d:\data\db 這

Python學習筆記

準備 for ring 價格 python use imp pri exce 使用ElementTree解析XML文件 # 導入Python中內置的處理XML文件的模塊try: import xml.etree.cElementTree as ETexcept Imp

Java學習筆記類型轉換和instanceof關鍵字

方法 png true feed out 實例 strong 運算符 nbsp 基本數據類型轉換: 自動類型轉換:把大類型的數據賦值給大類型的變量(此時的大小指的是容量的範圍) 1 byte b = 12; //byte是一個字節 2 int i = b; //i

Linux學習筆記日常運維三

ifconfig一、linux網絡相關、 ifconfig ifconfig //查看網卡ip(yum install net-tools) ifup ens33/ifdown ens33 //開啟網卡,關閉網卡,只有一個網卡時,一旦關閉了網卡就會斷開遠程鏈接,只能去服務器主機重新打

大數據筆記——SparkStreaming詳細介紹

rgs 啟動 gui sele big 虛擬 ring foreach 單詞 Spark Streaming: Spark用於處理流式數據的模塊,類似Storm 核心:DStream(離散流),就是一個RDD=================================

二進制安裝kubernetes v1.11.2 章 node節點部署

tab flanneld tar ips html apt www. span 1.2 繼續前一章部署。 十一、node節點部署 kubernetes node 節點運行了如下組件: flannel docker kubelet kube-proxy 11.1 部署fl

Java開發筆記二維數組的擴展

賦值 如同 div 當前 完全 長度 例如 如何使用 說明 前面介紹的數組容納的是一串數字,仿佛一根線把這組數字串了起來,故而它只是一維數組。一維數組用來表示簡單的數列尚可,要是表達復雜的平面坐標系,那就力不從心了。由於平面坐標系存在水平和垂直兩個方向,因此可用二維數組來保

Java開發筆記二維陣列的擴充套件

前面介紹的陣列容納的是一串數字,彷彿一根線把這組數字串了起來,故而它只是一維陣列。一維陣列用來表示簡單的數列尚可,要是表達複雜的平面座標系,那就力不從心了。由於平面座標系存在水平和垂直兩個方向,因此可用二維陣列來儲存平面座標系上的一組座標頂點,其中第一維是頂點佇列,第二維是頂點的橫縱座標。許多個平面組合起來變

nginx 原始碼學習筆記—— event 模組(二) ——事件驅動核心ngx_process_events_and_timers

首先繼續回憶下,之前子執行緒執行操作裡面有一個未涉及的內容ngx_process_events_and_timers,今天我們就來研究下這個函式。 本篇文章來自於:http://blog.csdn.net/lengzijian/article/details/7601730 先來看一下第十九

為什麼我要放棄javaScript資料結構與演算法—— 演算法模式

本章將會學習遞迴、動態規劃和貪心演算法。 第十一章 演算法模式 遞迴 遞迴是一種解決問題的方法,它解決問題的各個小部分,直到解決最初的大問題。遞迴通常涉及函式呼叫自身。 遞迴函式是像下面能夠直接呼叫自身的方式或函式 function recursiveFunction(someParam){

springboot2.x簡單詳細教程--整合Logback日誌框架

一、新日誌框架LogBack介紹     簡介:日誌介紹和新日誌框架Logback講解     1.常用處理java的日誌元件 slf4j,log4j,logback,common-logging 等    &

Effective_STL 學習筆記 永遠讓比較函式對相等的值返回 false

  除非比較函式總是為相等的值返回 false,否則將會打破所有的標準關聯容器, 不管關聯容器是否允許存在副本(set、map、multiset、multimap) 對於(set、map)使用 less_equal (<=): 1   !( 10A <= 10B ) &a

機器學習筆記TensorFlow實戰十三遷移學習

1 - 引言 越複雜的神經網路,需要的訓練集越大,ImageNet影象分類資料集有120萬標註圖片,所以才能將152層的ResNet的模型訓練到大約96.%的正確率。但是在真正的應用中,很難收集到如此多的標註資料。即使收集到也需要花費大量人力物力來標註。並且即使有了大量的資料集,要訓練一

Effective_STL 學習筆記 瞭解你的排序選擇

  排序出 20 個質量最高的 Widget,一種演算法叫作 partial_sort: 1   bool qualityCompare( const Widget & lhs, const Widget & rhs ) 2   { 3     // 返回 lhs 的質量是

Javaweb學習筆記————————過濾器

過濾器     過濾器概述         1.什麼是過濾器:             過濾器javaweb三大元件之一,它與Serlvet很相似,不過它過濾器是用來攔截請求的,而不是處理             請求的。             當用戶請求某個Servlet

201711671125 《Java程式設計》10周學習總結

教材學習內容總結 第十一章 JDBC 程式經常使用JDBC進行如下的操作 : (1)與一個數據庫建立連線。 (2)向資料庫傳送SQL語句。 (3)處理資料庫返回的結果。 2.連線MySQL資料庫 (1)下載JDBC-MySQL資料庫驅動 (2)載入JDB