① 樸素貝葉斯的理解
樸素貝葉斯是基於貝葉斯定理與特徵條件獨立假設的分類方法。對於給定的訓練數據集,首先基於特徵條件獨立假設學習輸入輸出的聯合概率分布,然後基於模型,對給定的輸入x,利用貝葉斯定理求出後驗概率的最大的輸出y。
具體的推導可以參考網上的博文,這里不再進行敘述。
其中P(A)稱之為先驗概率,我們希望求得的P(A|B)稱之為後驗概率。
單純的看這個公式很難理解貝葉斯的含義,這里用周志華西瓜書中例子來進行更好的理解。
假設我們手裡有了一個西瓜,它有一系列的特徵,那麼我們現在需要根據這些特徵來判斷這個是好瓜還是壞瓜呢?這也就變成了一個數理統計裡面稱為條件概率的東西,也就是在某個條件存在的基礎上,我們來求某一個事件發生的概率,比如事件B發生的條件下求事件A發生的概率,我們可以寫成P(A|B).
那我們西瓜的例子來說,事件B是什麼?當我是我們可以觀察到的一系列的這個瓜的特徵值了。假設我們用加粗的 X 來表示,因為特徵很多,加粗表示這是一個特徵向量, X = x1,x2,...,Xn 。那麼我們要求的就是基於這個條件下這個瓜是好瓜或者是壞瓜的事件的概率。就是求P("好瓜"|X)或者P("壞瓜"|X)。那這個怎麼求呢?當然是使用上面的貝葉斯公式了。
最終我們可以寫出
來比較這兩個哪個的概率大,那麼我們就認為我們的這個瓜是好瓜還是壞瓜。
既然已經有了可以求概率的公式,那我們可以著手進行計算了,首先是先驗概率P(Ci)(這里換成字母C表示類別以及下標i表示第i類,當然在西瓜的例子裡面只有兩個類別,那就是「好瓜」和「壞瓜」),這個很好計算,只用統計出「好瓜」和「壞瓜」各有多少個,然後除以全部的個數就可以得出相應的概率了。
這邊先看分母,因為在計算中我們用到的特徵數據都是一樣的,所以分母完全可以當成一個常數,也就是我們的公式可以簡化成:
P(Ci)可以容易求出,但是P(X/Ci)就很困難了。因為把這個展開後為:
理論上這個可以利用我們的數據集來進行估計的,但是現實情況是,n的值往往非常大(屬性非常多),而我們的數據集往往不能保證我們的樣本包含了屬性值的所有可能組合。那麼很多p(X|ci)我們估計得到的值就是0。然而這些樣本很可能僅僅是我們的數據集中沒包含到,即「未被觀測到」,但不代表它們現實中「出現概率為0」。
樸素貝葉斯對條件概率分布作了條件獨立性的假設,由於這是一個較強的假設,樸素貝葉斯由此得名。有了這個假設,我們就可以這樣計算P(X/Ci):
P(x1/ci)P(x2/ci)...P(xn/ci)
沒錯,就是把每個特徵獨立的拆出來寫成連乘的形式來計算這個概率。
引入連乘操作後可能導致一個問題,那就是數據量大了之後,進行多次的連乘操作可能導致結果下溢,也就是最後算出的概率為0了,所以把連乘操作改為取對數操作,即logP(X/ci),展開後把每個概率取對數後進行相加。
由於我們驗證的西瓜中有些特徵屬性可能數據集中不會出現,導致最終算出的概率為0,但現實中這種瓜是存在的,所以引入拉普拉斯平滑來進行處理。也就是計算公式是修改為:
N表示訓練集D中可能的類別樹,Ni表示第i個屬性可能的取值數
對於離散數據只需要把對應特徵的屬性個數加起來除以總數即可,而連續型數據則需要藉助概率密度函數,此處假設數據服從高斯分布,用高斯密度函數來計算連續型數據的概率。
此處用Python實現西瓜書上151頁的例子,數據集是西瓜數據集3.0。
整體的思路:使用兩個全局變數來存儲好瓜和壞瓜在數據集中的索引,遍歷待分類數據的數據,拿出待分類的特徵屬性來進行概率計算,,每次計算都需要算出特徵屬性值在所有好瓜或者壞瓜上的概率,計算概率時要區分離散數據以及連續型數據,加入拉普拉斯平滑和取對數運算,最終比較各自大小,得出分類結果。
② 經典機器學習系列之【集成學習】
塌歷老中國有句老古話,叫「 三個臭皮匠頂個諸葛亮 」,說的是人多力量大,可也有句成語叫「 烏合之眾 」。在機器學習中也有一類演算法,將這兩種思想融合起來,取其精華,它就是 集成學習 ,演算法將不同的學習器融合在一起。
在集成學習中,演算法不要求每個學習器性能最好,但是期望它們對問題具有不同的看法,Good But Different (好而不同)。
如果在分類問題上描述的話,所表示的就是具有不同的劃分能力,對於一些樣本學習器 能劃分,對於另外一些樣本,學習器 能劃分。並不要求單個學習器對所有樣本都具備劃分能力。
用專業一點的屬於來說的話,就是不同的學習器具有不同的偏好模型,但是每一個都是弱監督模型,集成學習將多個弱監督模型組合,得到一個好的強監督模型。其思想是,不同的學習器之間相互地錯誤糾正,以達到最終准確率的提升。
集成學習,其英文名稱叫做( ensemble learning ),它通過將多個學習器集成在一起來達到學習的目的。主要是將有限的模型相互組合,其名稱有時也會有不同的叫法,有時也會被稱為多分類器系統( multi-classifier system )、委員會學習( committee learning )、Molar systems、classifier fusion、combination、aggregation等。這些概念相互之間互相聯系,又有些許區別,對於概念的定義業界還沒有達成共識。整個演算法所表現出來的性能非常地強悍,許多高水平的競賽(Knowledge Discovery and Data Mining、Kaggle)中都是首選。
在機器學習,滿足訓練集的假設不一定在實際應用中有同樣好的表現,這樣學習演算法選擇哪個假設進行輸出的時候就面臨著一定的風險,把多個假設集成起來能夠降低這種風險(這可以理解為通過集成使得各個假設和目標假設之間的誤差得到一定程度的抵消)。
在周志華西瓜書中通過Hoeffding不等式證明了, 隨著集成中個體分類器數目的增大 , 集成的錯誤率將指數級下降 , 最終趨於零 。
集成學習先產生一組「個體學習器」( indivial learner ),再通過某種策略將其結合起來。依據每個個體學習器所採用的學習演算法是否相同,可以分為 同質集成 和 異質集成 。
集成學習器性能要好於單個個體學習器需要滿足 好而不同 的兩點要求:
第一個條件相對來說比較容易實現,在當前問題下訓練一個模型,結果比瞎猜的結果好就行了。 第二個條件是集成學習研究的核心問題 。每個個體學習器學習的都是同一個問題,所以個體學習器不可能做到完全相互獨立。想想小時候,老師讓你發爛歲表不同的觀點,想想寫論文的時候找創新點,人都很難做到這樣一件事情,何況它只是一個小小的學習演算法。
想要在個體學習器足夠好的前提下,增強其多樣性,我們可以直觀上來想像一下。整個的演算法學習過程是從數據到模型再到輸出。
首先考慮輸入 。如果每個學習器學習不同的樣本,那麼可以學習出相對來說不同的個體學習器。那麼現在的問題就是怎麼劃分訓練樣本,你可以隨機抽取,或者利用不同的屬性子集訓練出不同的個體學習器。
其次考慮模型 ,如果基學習器的模型不一樣,也能訓練出不同的個體學習器。
最後考慮輸出 ,如果我們依據標簽的特性來進團升行劃分,也能得到不同的個體學習器。
依據上述三點概念,主要有以下5種方法:
從原始訓練樣本中產生不同的樣本子集,然後利用不同的樣本子集訓練不同的個體學習器。如 Bagging 中使用的 自助采樣 , Boosting 中使用的 序列采樣 。
這種訓練樣本擾動的方法簡單高效,但 只對不穩定的基學習器有效 ,像 決策樹 、 神經網路 等;對於穩定的基學習器,如線性學習器、支持向量機、樸素貝葉斯、K-NN等,就效果不明顯,產生這個問題的原因就是因為穩定的基學習器,「變通能力」並不是很強。
說到Bagging和Boosting,這里詳細介紹一下這兩種經典的方法:集成學習分為個體學習其之間存在強以來關系、必須 串列生成的序列化方法-Boosting 和不存在強依賴關系, 可同時生成並行化方法-Bagging 。
具體的實現方法是:首先給每一個訓練 樣例賦予相同的權重 ,然後訓練第一個基本分類器並用它來對訓練集進行測試, 對於那些分類錯誤的測試樣例提高其權重 (實際演算法中是降低分類正確的樣例的權重), 然後用調整後的帶權訓練集訓練第二個基本分類器 ,然後重復這個過程直到最後得到一個足夠好的學習器。
Boosting中最著名演算法是1997年Yoav Freund所提出的AdaBoost(Adaptive Boosting)方法。下圖是AdaBoost論文Bing學術搜索結果:
本文以周志華西瓜書推導過程為例,以「 加性模型 」(additive model)進行解析:
將基學習器 線性組合,則基學習器的線性組合表示為如下 形式:
定義整個學習器的損失函數為指數損失函數( exponential loss function ),期望指數損失函數最小化:
其中 是真實函數, , 表示樣本的權值分布(對於錯誤的樣本權重要高一點,正確的樣本權重要低一點,所有的樣本組合起來就相當於有一個分布)。
若基學習器的線性組合 能夠使得指數損失函數最小化,一般的做法就是求偏導數,令其等於零,求解。由於 取值只有兩種,所以其求偏導數之後的結果如下所示:
令其偏導數為0,解得:
有:
這意味著若指數損失函數最小化,則分類錯誤率也將最小化。說明指數損失函數是原任務的替代函數,但由於其連續可微,所以用它替代 0/1 損失函數作為優化目標。上面這么多就是說接下來用這個連續的指數損失函數做進一步的處理。
在AdaBoost演算法中,第一個基分類器 通過直接將基學習演算法用於初始數據分布而得到;之後的 和 是通過迭代生成得到的。當基分類器 基於分布 產生之後,基分類器的權重 應該使得 最小化指數損失函數,只有 在判斷錯誤的基分類器給予較小權值,判斷正確的基分類器給予較大權值,才能使得 具有較准確的判斷,從而最小化指數損失函數
其中 ,其實就是誤判率。為了求得基分類器的權重,對其求導:
再令導數為0,可得:
到這里相當於自適應做完了,在這里,AdaBoost自適應的思想採取的是加權多數表決的方法,上述公式體現出來的就是加大分類器誤差率小的弱分類器的權值,使其在表決中起較大作用。誤差率較大的則相反。
現在要回到Boost的原理中對樣本的處理,在改變這個樣本的權值,或者說概率分布的時候,我們要實現的直觀想法是: 提高那些被前一輪弱分類器錯誤分類樣本的權值 , 降低那些被正確分類的樣本的權值 。接下來我們去把這個公式證出來:
這里通過基學習器開始證明,看基學習器在什麼樣本分布下能夠學出來最小化分類誤差。
AdaBoost 在得到 之後,調整樣本分布,使得 能學出來之前的基學習器無法學習到的東西,能糾正 的一些錯誤,那這個 就能夠最小化:
注意到 ,上式可使用 的泰勒展開式近似為如下公式:
於是理想的基學習器:
注意到 是一個常數。令 表示一個分布:
依據數學期望的定義,等價於令:
由 , , ,有:
則理想的基學習器:
由此可見,理想的 將在分布 下最小化分類誤差。 和 的關系有:
上述公式就是下圖AdaBoost的第7步更新公式,整個的AdaBoost演算法如下圖所示:
AdaBoost 演算法第五行檢查當前基分類器是否比隨機猜測好,一旦不滿足條件,當前基學習器即被拋棄,且學習過程停止。在這個請款下就有可能導致集成中包含基學習器數量過少,導致整體性能不佳。採用「重采樣法」(re-sampling)來處理,即在每一輪學習中,根據樣本分布對訓練集重新采樣,再用重采樣而得到的樣本集對基學習器進行訓練,則可獲得重啟動。
是並行式集成學習方法著名代表,基於自助采樣法( bootstrap sampling ),給定包含 個樣本的數據集,有放回隨機采樣,經過 次得到含有 個樣本的采樣集,這樣的采樣,初始訓練集中約有 的樣本出現在采樣集中。
照這樣采樣出 個含 個訓練樣本的采樣集,然後基於每個采樣集訓練一個基學習器,再將這些基學習器進行結合。在預測輸出時,Bagging通常對分類任務使用 簡單投票法 。對回歸任務使用 簡單平均法 。
上圖中 表示自助采樣產生的樣本分布。
輸入屬性擾動通常是從初始屬性集中抽取出若干個屬性子集,然後利用不同的屬性子集訓練出不同的個體學習器。比如有:
RF 在以 決策樹 為基學習器構建Bagging集成的基礎上,進一步在決策樹的訓練過程中引入隨機屬性。傳統決策樹在選擇劃分屬性時是在當前結點的屬性集合中選擇一個最優屬性;而在RF中,對基決策樹的每個結點, 先從該結點的屬性集合中隨機選擇一個包含 個屬性的子集 , 然後再從這個子集中選擇一個最優屬性用於劃分 。
隨機森林中基學習器多樣性不僅來自樣本擾動,還來自屬性擾動,使得最終集成的泛化性能可通過個體學習器之間差異度的增加而進一步提升。
但這類輸入屬性擾動的方法只對大量冗餘屬性的數據集有效,但若數據集只包含少量屬性,或者冗餘屬性很少,則不宜使用。隨機森林由於起始引入了屬性擾動,性能會比Bagging差一點,但隨著個體數量增多,隨機森林通常會收斂到更低的泛化誤差。
演算法參數擾動指的是通過隨機設置不同的參數來訓練差別較大的個體學習器。如下圖所示的神經網路的隱層神經元數、初始連接權值等不同。
此類方法對參數較多的演算法有效,對參數較少的演算法,可通過將其學習過程中某些環節用其他類似方法代替?從而達到擾動的目的。這可能也是發論文的一個點吧,自己以後可能也不咋用這個演算法,就不去做演算法調研了。
輸出標記擾動是對訓練樣本的類別標記稍作變動,將原來的多分類問題隨機轉化 多個二分類問題 來訓練基學習器。經典的一個演算法就是糾錯輸出編碼法(Error-Correcting Output Codes,ECOC)
將每個類別對應一個長度為n的二進制位串(稱為碼字),共形成m個碼字,這些碼字的同一位描述了一個二值函數。學習結束後獲得n個二分器,在分類階段,每個二分器對輸入樣本產生的輸出形成輸出向量,然後由決策規則判定輸入樣本的類別。
這類方法對類數足夠多的數據集有效,但若數據集包含的類數較少,則不宜使用。
混合擾動在同一個集成演算法中同時使用上述多種擾動方法。比如隨機森林就同時使用了訓練樣本擾動和輸入屬性擾動。
上文五點討論的是如何產生好而不同的個體學習器。那產生了好而不同的個體學習器之後,我們如何結合這些策略?主要有 平均法 和常見的 投票法 (voting),具體包括:
簡單地將輸出結果平均一下
乘以權值系數將其加起來。
即若某標記得票過半數,則分類為該標記,否則拒絕分類。
分類為得票最多的標記,若同時有多個標記獲最高票,則從中隨機選取一個。
給每個個體學習器預測的類標記賦一個權值,分類為權值最大的標記。這里的權值通常為該個體學習器的分類置信度(類成員概率)。
③ 2021-01-25
機器學習(周志華) 參考答案 第十二章 計算理論學習
機器學習(周志華西瓜書) 參考答案 總目錄
http://blog.csdn.net/icefire_tyh/article/details/52064910
從三個方面來確定泛化誤差的上界,確定學習的可行性。
1.試證明Jensen不等式:對任意凸函數f(x),有f(E(x))≤E(f(x))。
顯然,對任意凸函數f(x),必然有
取 ,
所以:
以此類推得:
2.試證明引理12.1。
引理(12.1)若訓練集D包含m個從分布Ɗ上獨立同分布采樣而得的樣例, ,則對任意 ,有 。
已知Hoeffding不等式:若 為m個獨立的隨機變數,且滿足 ,則對任意 ,有
。
將 替換為損失函數 ,顯然 ,且獨立。
帶入Hoeffding不等式得:
其中
所以有: 。
3.試證明推論12.1。
推論(12.1):若訓練集D包含m個從分布 上獨立同分布采樣而得的樣例, ,則對任意 ,式(12.18)以至少 的概率成立。
式(12.18):
有引理(12.1)可知, 成立
即
取 ,則
所以 的概率不小於
整理得: 以至少 的概稿罩腔率成立。
4.試證明: 空間中線性超平面構成的假設空間的VC維是d+1。
線性空間超平面公式為 ,超平面將空間分為二塊,即二分類。
取 空間中不共超平面的d+1個點,為了簡化,假設是各坐標軸基向量和原點。
設A是(d+1)*(d+1)矩陣,第一列是b的系數1,第二列起是各個點的坐標。
要證明的是,對於任意的 ,存在 使得 成立。
由於X是可逆矩陣,可以得 使得 成立。所以VC維至少是d+1。
由於R^d空間中的d+2個點必然線性相關,將第d+2個點寫成前n+1個點的線性組合:
,
則:
對任意的 ,取 ,得到 恆成立,所以此時 無法被打散。
即VC維小於d+2。
所以 空間中線性超平面構成的假設空間的VC維是d+1。
5.試計算決策樹樁假設空間的VC維。
如果是非連續屬性,通過決策樹一次劃分無法確定節點個數,可能導致VC維無限大。
僅考慮連續屬性單變數的決策樹樁。
由於決策樹的劃分是與坐標軸平行的超平面,顯然平面上的2個點是可以被打散的,即VC維大於等於2。
對於平面的3各點,如果其中兩個點的連線與一條坐標軸平行,另兩個點的鍵衫連線與另一坐標軸平行。比如(0,0),(0,1),(1,0)三個點,無法通過一個與坐標軸平行的超平面來劃分。所以VC維小於3。
所以決策樹樁假設空間的VC維是2。
6.決策樹分類器的假設空間VC維可以為無窮大。
由於決策樹如果不限制伸展,會包含整個假設空間。對任意多的樣本,決策樹可以使得訓練誤差為0,所以VC維是無窮大。
7.試證明:最近鄰分類器的假設空間VC維為無窮大。
最近鄰分類器,也就是悶歷1NN,總是會把自己分類成自己的樣本分類,所以對任何數目的樣本訓練誤差恆為0。如圖所示
8.試證明常數函數c的Rademacher的復雜度為0。
常數函數c的Rademacher的復雜度為
其中 是隨機變數,以0.5的概率取1,0.5的概率取-1。
所以
9.給定函數空間 ,試證明Rademacher復雜度 。
當 時,
當 時,
所以
即: 。
10.考慮定理12.8,試討論通過交叉驗證法來估計學習演算法泛化能力的合理性。
K折交叉驗證,當K=m時,就成了留一法。
由式(12.59):
取 時,可以得到:
以至少 的概率成立,所以留一法有不錯的泛化能力。
前提條件是 對於損失函數l滿足 均勻穩定性,且 應該是 這個量級。
僅拿出一個樣本,可以保證很小的 。
隨著K的減小,訓練用的樣本會減少, 逐漸增大,當 超出 量級時,交叉驗證就變得不合理了。
④ 《機器學習》pdf下載在線閱讀,求百度網盤雲資源
《機器學習》(周志華)電子書網盤下載免費在線閱讀
鏈接:https://pan..com/s/1JOJeNfgMu0yr0cDH35z4lw
書名:機器學習
作者:周志華
豆瓣評分:8.7
出版社:清華大學出版社
出版年份:2016-1-1
頁數:425
內容簡介:
機器學習是計算機科學與告卜人工智慧的重要分支領域. 本書作為該領域的入門教材,在內容上盡可能涵蓋機器學習基礎知識的各方面。 為了使盡可能多的讀者通過本書對機器學習有所了解, 作者試圖盡可能少地使用數學知識. 然而, 少量的概率、統計、代數、優化、邏輯知識似乎不可避免. 因此, 本書更適合大學三年級以上的理工科本科生和研究生, 以及具有類似背景的對機器學 習感興趣的人士. 為方便讀者, 本書附錄給出了一些相關數學基礎知識簡介.
全書共16 章,大致分為3 個部分:第1 部分(第1~3 章)介紹機器學習的基礎知識;第2 部分(第4~10 章)討論一些經典而常用的機器學習方法(決策樹、神經網路、支持向量機、貝葉斯分類器、集成學習、聚類、降維與度量學習);第3 部分(第11~16 章)為進階知識,內容涉及特徵選擇與稀疏學習、計算學習理論、半監督學習、概率圖模型、規則學習以及強化學習等.前3章之外的後續各章均相對獨立, 讀者可根據自己的興趣和時岩此間情況選擇使用. 根據課時情況, 一個學期的本科生課程可考慮講授前9章或前10章; 研究生課程則不妨使用全書.
書中除第1章外, 每章都給出了十道習題. 有的習題是幫助讀者鞏固本章學習, 有的是為了引導讀者擴展相關知識. 一學期的一般課程可使用這些襪棗穗習題, 再輔以兩到三個針對具體數據集的大作業. 帶星號的習題則有相當難度, 有些並無現成答案, 謹供富有進取心的讀者啟發思考.
本書可作為高等院校計算機、自動化及相關專業的本科生或研究生教材,也可供對機器學習感興趣的研究人員和工程技術人員閱讀參考。
作者簡介:
周志華,南京大學教授,計算機科學與技術系副主任,軟體新技術國家重點實驗室常務副主任,機器學習與數據挖掘研究所(LAMDA)所長,校、系學術委員會委員;ACM傑出科學家,IEEE Fellow,IAPR Fellow,中國計算機學會會士;長江學者特聘教授,國家傑出青年基金獲得者。2007年創建南京大學機器學習與數據挖掘研究所(LAMDA),2010年11月任軟體新技術國家重點實驗室常務副主任,2013年5月任計算機系副主任。
⑤ 請問有沒有純小白入門機器學習的書籍
1.機器學習
首先推薦的一本書的周志華的《機器學習》,網稱西瓜書,這是機器學習領域的經典入門教材之一,是一本大而全的書!內容中有用到西瓜舉例子。如果你之前真的沒有接觸過任何關於機器學習的知識,那麼這本書大概可以作為你第一本入門書。這本書對理論的講解並沒有很深入,但是通過舉例子可以讓人很容易理解每一個演算法。
第二本是推薦李航的統計學習方法,推薦指數五顆星,真香指數滿天星。這本書對機器學習原理的解釋、公式的推導非常非常詳盡,相信看完這本書,不會再說機器學習是玄學了。目前已經出了第二版。第二版要比第一版厚一些。使用這本書強烈建議裡面的公式動手在白紙上推一推!
第三本推薦的是機器學習實戰,通過上面兩本書學習了概念、原理、公式推導,接下來可以實戰一下。這本書作為機器學習實戰的入門書再合適不過。 裡面的代碼跟著敲,不敲沒效果哦。
⑥ 西瓜書是什麼意思啊
西瓜書,即周志華老師的《機器學習》一書,因封面畫著西瓜而得名。這一系列文章,主要對西瓜書中的一些概念和公式做出通俗的解讀工作。
1、 引言
機器學習:我們在日常生活中的決策,比如當前天氣穿什麼衣服、如何解一道數學題等,都是根據以往的經驗做出的。人工智慧的終極目標就是讓機器擁有像人一樣的智能,既然基於經驗的決策經常發生在人身上,那我們也可讓機器試試基於經驗決策,來解決一些之前沒能解決的問題。
3、假設空間談絕凱
歸納:就是用那一堆西瓜做實驗的過程,先觀察瓜的外表,再打開瓜嘗嘗是否好吃。隨著經驗增多,你漸漸總結出什麼樣的瓜是好瓜。當然,不同的人會有不同的總結方法。
演繹:利用總結出來的規律給水果攤進貨的過程。如果進來的都是好瓜,那說明規律總結對了。如果進來的不全是好瓜,說明還要繼續進行歸含喚納。
假宏腔設:用西瓜做實驗的時候,先假設顏色深的瓜好吃,再去驗證這一假設是否正確。當然這樣的假設會有很多,歸納就是尋找最優假設的過程。
⑦ 求 機器學習周志華pdf
鏈接:
《機器學習》展示了機器學習中核心的演算法和理論,並闡明了演算法的運行過程。