第九章 KNN(K最近鄰分類演算法)

2021-06-25 22:04:29 字數 3848 閱讀 1430

1

、惰性學習法

說到惰性學習法,就要提到急切學習法。

急切學習法:給定訓練集, 在接收待分類的新元祖(如檢驗元組)之前,就構造泛化(即分類)模型。如:決策樹歸納、貝葉斯分類、基於規則的分類、後向傳播分類、支援向量機和基於關聯規則挖掘的分類等。

惰性學習法(也稱為基於例項的學習法):給定乙個訓練元組,簡單地儲存它 (或只是稍加處理) ,一直等到給定乙個檢驗元組。僅當看到檢驗元組時,它才進行泛化,以便根據儲存的訓練元組的相似性對該元組進行分類。

優點:原理簡單,實現起來比較方便。支援增量學習。能對超多邊形的複雜決策空間建模。

缺點:計算開銷大,需要有效的儲存技術和並行硬體的支撐。

k

近鄰演算法就是惰性學習法的例子。

2

、k近鄰演算法(knn演算法)

k最近鄰分類法是20世紀50年代早期首次引進的。給定大量訓練集時,該方法是勞動密集的,直到20世紀60年代計算能力大大增強之後才流行起來。此後被廣泛用於模式識別領域。

工作原理:存在乙個樣本資料集合(訓練樣本集),並且樣本集中每個資料都存在標籤,即我們知道樣本集中每一資料與所屬分類的對應關係。輸入沒有標籤的新資料後,將新資料的每個特徵與樣本集中資料對應的特徵進行比較,然後演算法提取樣本集中特徵最相似資料(最近鄰)的分類標籤。一般來說,我們只選擇樣本資料集中前k個最相似的資料。最後,選擇k個最相似資料中出現次數最多的分類,最為新資料的分類。

例子:下圖中,綠色圓要被決定賦予哪個類,是紅色三角形還是藍色四方形?如果k=3,由於紅色三角形所佔比例為2/3,綠色圓將被賦予紅色三角形那個類,如果k=5,由於藍色四方形比例為3/5,因此綠色圓被賦予藍色四方形類。

鄰近性的度量方法

「鄰近性」用距離度量,距離越大,表示兩個點越不相似。

計算距離的方法:歐幾里得距離、曼哈頓距離或其它距離。但多採用歐幾里得距離(簡單)。

:兩個點或元組x1=(x11,x12,...,x1n)和x2=(x21,x22,...,x2n)的歐幾里得距離是:

換言之,對於每個數值屬性,取元組x1和x2該屬性對應值的差,取差的平方並累計。並取累計距離計數的平方根。

2.2

屬性的數值規範化

有助於防止具有較大初始值域的屬性(如收入)比具有較小初始值域的屬性(如二元屬性)的權重過大。

例如,可以通過計算下式,使用最小—最大規範化將數值屬性a的值v變換到[0,1]區間中的v'

其中mina和maxa分別是屬性a的最小值和最大值。

2.3

比較的屬性不是數值型別而是分類型別(如顏色),如何計算距離?

對於分類屬性,一種簡單的方法是比較元組x1和x2中對應屬性的值。如果二者相同(例如,元組x1和x2都是藍色),則二者之間的差為0。如果二者不同(例如,元組x1是藍色,而元組x2是紅色),則二者之間的差為1。

其他方法可採用更複雜的方案。(例如,對藍色和白色賦予比藍色和黑色更大的差值。)

2.4

缺失值的處理

解決辦法:取最大的可能差。

對於分類屬性,假設每個屬性都已經對映到[0,1]區間,如果屬性a的乙個或兩個對應值丟失,則取差值為1;

如果a是數值屬性,若兩個比較的元組屬性a的值均缺失,則取差值為1,若只有乙個缺失,另乙個存在並且已經規範化(記作v'),則取差值為|1-v'|和|0-v'|中的最大者。

2.5

確定近鄰數

k的值

引用李航博士的書【統計學習方法】中的內容:

k值的選擇會對k近鄰法的結果產生重大影響。

如果選擇較小的k值,就相當於用較小的鄰域中的訓練例項進行**,「學習」的近似誤差會減小,只有與輸入例項較近或相似的訓練例項才會對**結果起作用。但缺點是「學習」的估計誤差會增大,**結果會對近鄰的例項點非常敏感。如果近鄰的例項點恰巧是雜訊,**就會出錯。換句話說,k值的減小就意味著整體模型變得複雜,容易發生過擬合。

如果選擇較大的k值,就相當於用較大鄰域中的訓練例項進行**。其優點是可以減少學習的估計誤差。但缺點是學習的近似誤差會增大。這時,與輸入例項較遠(不相似的)訓練例項也會對**起作用,使**發生錯誤。k值的增大就意味著整體的模型變得簡單。

如果k=n,則完全不足取,因為此時無論輸入例項是什麼,都只是簡單的**它屬於在訓練例項中最多的類。模型過於簡單,忽略了訓練例項中大量有用資訊。

在實際應用中,k值一般取乙個比較小的數值。例如採用交叉驗證

法(簡單來說,就是一部分樣本做訓練集,一部分做測試集)來選擇最優的k值。

引用【資料探勘概念與技術】中的內容:

可以通過實驗確定。

從k=1開始,使用檢驗集估計分類器的誤差率。重複該過程,每次k增值1,允許增加乙個近鄰。選取產生最小誤差率的k。

一般,訓練元組數越多,k的值越大。

2.6

對雜訊資料或不相關屬性的處理

最近鄰分類法使用基於距離的比較,本質上賦予每個屬性相等的權重。因此,當資料存在雜訊或不相關屬性時,它們的準確率可能會受到影響。

對屬性賦予相關性權重w,w越大說明屬性對分類的影響越相關。對雜訊資料可以將所在的元組直接cut掉。

2.7

演算法流程

演算法的改進策略

最近鄰分類法在對檢驗元組分類時可能非常慢。如果d是具有|d|個元組的訓練資料庫,而k=1,則對乙個給定的檢驗元組分類需要o(|d|)次比較。改進如下:

、kd樹

上面「演算法的改進策略」已經提到了搜尋樹。

其實,實現k近鄰演算法時,考慮的主要問題是如何對訓練資料進行快速k近鄰搜尋。這點在特徵空間的維數大及訓練資料容量大時尤其重要。

k近鄰法最簡單的實現方法是線性掃瞄。這時要計算輸入例項與每乙個訓練例項的距離。當訓練集很大時,計算耗時,這種方法是不可行的。

為了提高k近鄰搜尋的效率,可以考慮使用特殊的結構儲存訓練資料,以減少計算距離的次數。具體方法很多,其中比較常見的是kd

樹方法。

kd樹的詳細介紹:

參見:1、李航博士的《統計學習方法》中的章節(k近鄰法的實現:kd樹)

2、大牛的部落格

更多文獻:可以參見大牛的部落格

演算法導論 第九章

這章介紹了中位數和順序統計學 中位數即乙個序列中最中間的數字,在快速排序中非常有意義,在其它的一些應用中也很有效,因為可以2分序列,這樣會有更好的效率。這章主要介紹如何不排序來找到序列的順序,由於不需要排序,可以減少很多比較的操作,最終可以獲得一些線性的演算法,得到排名第i的數字。演算法的基礎是首先...

第九章(筆記)

轉移指令是可以修改ip,或同時修改cs和ip的指令 offset 是用於提取標號偏移位址的操作符 jmp在第2章裡說到時用於修改ip或同時修改cs和ip的轉移指令,這章裡單獨的jmp指令是乙個無條件的轉移指令 jmp short 標號 是實現段內短轉移 jmp near ptr 標號 是實現段內近轉...

第九章作業

班級 0401304 學號 2013211526 姓名 鄧小俊 2.身份驗證 依據使用者所提供的身份資訊,來進行登入驗證,可以再細分為使用者是否可以登入sql sever 使用者是否可以登入到指定的目標資料庫等。授權 已通過身份驗證的使用者,檢查其所被賦予的許可權,是否可以訪問或者執行目標的物件 3...