機器學習小白上路,過去一個月在西瓜書上學習筆記與感悟。
技術標籤:機器學習
一些術語
- 資料集(data set):所有資料的集合.
- 示例(instance)或樣本(sample):對一個特定示例,如一個西瓜的所有資料。
- 屬性(attribute)或特徵(feature):反應事件或物件在某方面的表現或性質的事項。
- 屬性值:屬性具體的特點。
在這裡,屬性和屬性值很容易混:
個人認為:屬性是放在這個地方合適,而在其他地方不合適。如西瓜的色澤(屬性)是綠色(屬性值),你不可以說手機的色澤如何,但可以說手機是綠色的(雖然不準確)顯然屬性的使用範圍不如屬性值的廣泛。可以利用這一點區分。 - 屬性空間(attribute space)樣本空間(sample space)或輸入空間:屬性張成的空間。
- 特徵向量(feature vector):將屬性構成座標軸,形成座標系後每一個特徵都可以對應一個個體。也就是具有這幾個特徵的個體。
- 維數(dimensionality):有幾個屬性維數是幾。
- 學習(learning)或訓練(training):從資料中學得模型的過程,通過執行某個演算法來完成。
- 訓練資料(training data):訓練過程中使用的資料。
- 訓練樣本(training sample):訓練資料中的樣本。
- 訓練集(training set):訓練樣本組成的集合。
- 假設(hypothesis):學得了模型對應了某種潛在規律。
- 真相(ground-truth):這種規律本身。
- (Xi,Yi):表示第i個樣例Yi是標記,Y是標記的集合。
- 正類(positive)反類(nagetive):在只涉及兩個類別的二分類,其中一個叫正類另一個叫反類。
- 測試(testing):學習萬模型以後,用它進行預測的過程叫作測試。
- 測試樣本(testing sample):被預測的樣本。
- 聚類(clustering)聚類:將訓練集中的西瓜分為若干組,每組稱為一個“簇”
可以幫助我們瞭解資料內在的規律,能為更深入的瞭解資料建立基礎 - 根據是否有標記資訊學習任務分為兩大類:有監督學習和無監督學習,分類和迴歸是前者的代表,而聚類是後者的代表。
- 泛化能力:指學的的模型在適用於新樣本的能力。
- 版本空間:所有有效假設的集合。
如何獲得具有強泛化能力的模型?
通常假設樣本空間中的樣本服從一個未知分佈D,我們獲得的每個樣本都是獨立的從這個分佈(概率分佈,指每個樣本從樣本空間中被抽到的概率遵循統一的概率分佈)上取樣獲得的及獨立分佈,一般而言,訓練樣本越多,我們可以得到更多的D資訊,就可以獲得更強泛化能力的模型。
假設空間
歸納與演繹:
前者是從具體的事物歸納出一般性規律
後者是從一般到特殊的轉化,即從基礎原理歸納出具體情況。
歸納學習:從示例歸納出規律有狹義和廣義之分
廣義:從樣例中學習
狹義:從訓練資料中得出概念,也稱為概念學習。概念學習中最基本的是布林學習。
我們把學習過程看作一個在所有假設組成的空間中進行搜尋的過程,搜尋目標是找到與訓練集匹配的假設
有許多搜尋策略如自頂向下,從一般到特殊或自下而上,從特殊到一般,搜尋過程可以不斷的刪除和正例不一樣的假設和(或)與反例一致的假設,最終得到與訓練集一致(即對所有訓練樣本能夠進行正確判斷)的假設,這就是我們學的的成果。
歸納偏好(用於當版本空間中的假設互相相悖時使用):機器學習過程中會出現對某種型別假設的偏好。
如圖,圖中的曲線A和B都是穿過點,機器必須有一種偏好才能選出它認為正確的模型。
奧卡姆剃刀(Occam’s razor):若有多個假設與觀察一至,則選擇最簡單的那個。
沒有免費午餐定理:不論是聰明演算法還是笨拙演算法,都會出現相同情況(一個演算法a在那些地方比b好那也有演算法b在一些地方比a好。
脫離實際問題空談“什麼演算法更好”毫無意義。
模型評估與選擇
1. 錯誤率:分類錯誤的樣本數/樣本總數=錯誤率。
2. 精確度:1-錯誤率=精確度。
3. 誤差:樣本實際輸出值與樣本真實輸出之間的差異。
4. 泛化誤差:在新樣本上的誤差。
5. 我們希望得到泛化誤差小的模型,然而我們不能讓精確度達到100%,因為如果讓訓練樣本太好了的話,很可能把訓練樣本自身的一些特點當作了所有潛在樣本都會具有的一般性質,這會導致泛化能力的下降,它被稱為“過擬合”【“過配”反義“欠配”】,我的認識是:不小心把一些樣本獨有的特點認為是所有樣本都有的特點,從而產生錯誤。
6.產生原因是學習能力過強或太弱【學習能力由學習演算法和資料內涵決定】,欠擬合比較容易克服,如:在決策樹中擴充套件分支,神經學習中增加輪數,而過擬合不可避免只可以緩解,(p問題:就是在多項式時間內可以算出答案的問題,也就是說可以在一個比較短的時間內(人類可以接受的時間,比如一個小時啊一天之類的,不是什麼一百年啊一千年這麼長的時間)可以算出答案的問題。
np問題:就是可以(多項式時間內)短時間內驗證一個答案正確性的問題。
np完全問題:第一個條件,可以這麼說,就是你如果能解決a問題,則通過a問題可以解決b問題,那麼a問題比b問題複雜,當所有的問題都可以通過a問題的解決而解決的話,那麼a問題就可以稱為np完全問題,第二個條件,就是a問題屬於np問題。
np難問題:這個就是np完全問題中滿足第一個條件並且不滿足第二個條件的問題。)可以這麼理解:機器學習通常是NP難甚至是更難,那麼有效的演算法是在多項式時間內可以執行完成;若可以避免過擬合,則可以使經驗誤差最小化就可以獲得最優解,這就是我們構造性的證明了p=NP,但p!=NP,所以,過擬合不可避免。
那麼在,面對那麼多的演算法,我們應該選擇哪一個,使用哪一種配置引數,理想的方法當然是對泛化誤差進行評估,選擇小誤差的那個,‘那麼,如何評估?
模型評估
可以考慮通過實驗測試來對學習的泛化誤差進行評估。
需要一個測試集,然後以測試誤差作為泛化誤差的近視 注意:測試集儘量與訓練集互斥,測試樣本不在訓練集中出現,未在訓練過程中使用過。
但我們只有一個數據集,即要測試也要訓練該怎麼辦:通過對D進行適當的處理,從中產生訓練集S和測試集T。以下有幾種方法:
- 留出發:暴力拆D變為兩個互斥的集合即
D=S∪T,S∩T=Ø. - 儘量保持資料的分佈的一致性,避免因資料劃分過程引入額外的誤差。如樣本比例。要進行若干次的劃分與測試,在得出平均值作為評估結果。
- 交叉驗證法:將D分成k個大小相似的互斥子集,儘可能保持一致性,然後每次使用k-1個子集的並集作訓練集,餘下的那個子集作測試集,最常分為10個。注意:測試集是一個,不是幾個的並集。也要使用不同的劃分重複p次,最後的結果是平均值
- 留一法:有幾個資料分成幾個樣本。這種方法往往被認為準確,沒有免費午餐定理也適用於評估。
- 自助法(有放回取樣):用於減少訓練樣本規模不同造成的影響(估計偏差),同時還能比較高效的進行實驗估計。
方法,從有m個數據樣本的D中隨機挑資料到D2,然後把資料放回去,重複m次後,D2中就有了嗎M個樣本,而有一部分不會出現,那麼,我們可以把D2作為訓練集,把沒有選進去的作為測試集這樣的測試結果也稱“包外估計“。
可以在資料集小,難以有效劃分訓練集或測試集時使用,由於資料集改變了初始資料集的分佈會引入估計偏差
調參與最終模型
大多數學習演算法都有些引數需要哦設定,引數配置不同,學到的效能模型效能往往有顯著差異,因此往往要調參。
調參和演算法選擇沒有什麼本質區別:對每種引數配置都訓練出模型,然後把最好的模型的引數作為結果,但由於是在實數範圍內,所有基本不可能一個一個實驗出結果。所以只能一小段一小段來試。
選定模型以後,應該用D重新訓練模型,使用了M個數據,這才是最後模型
注意:現實中我們通常把實際使用中用到的資料稱為測試資料,而評估測試的資料稱為驗證集,也就是說,把訓練資料分為訓練集和實驗集。
效能度量
不僅需要有效可行的實驗估計方法,還要度量模型泛化能力的評價標準,這就是效能度量。
迴歸任務最常用的效能度量是“均方誤差“類似與方差公式:
E(f.D)=1/m ∑_(i=1)^m▒(f(x_i )-y_i )^2
更一般的,對於資料分佈D和概率密度p(⋅),均方誤差可以表示為:
E(f;D)=∫_(x~D)▒〖(f(x)-y)^2 P(x)ⅆx〗.
錯誤率與精確
分類錯誤率定義為:
精確度定義為
查準率 查全率與F1
對於二分類問題而言:
查準率P與全率R關係:
這是一對相互矛盾的量。可以產生P-R曲線
若一個機器學習的P-R曲線被另一個完全包裹住,則稱後者的效能高於前者。但有時兩個曲線有交點,這個時候則可以可以判斷曲線下面的面積的大小,但這個值不容易表現。因此人們又設計了一些綜合考量查準率查全率的效能度量。比如:BEP平衡點,F1。
這裡要明白,在一些應用中對查準率與查全率重視程度不同。而F1的一般形式F_β可以讓我們表達出對查準率與查全率不同偏好
(β>0)
以上內容來自於西瓜書
2020 12.18