我們接觸比較多的分類方法,例如決策樹,關聯規則挖掘,支援向量機,貝葉斯分類,後向傳播等等,都可以被稱為「急切學習法」,他們接受訓練集的資訊,在對新的元組(測試集中)進行檢驗之前,就已經構造好了泛化模型(即分類器),然後根據分類器,直接對新元組分類。所以「急切學習法」的名字很形象:趕緊學(訓練之後立即得到分類器),學完之後,直接用(對新元組分類)。
現在我要說一種新的分類方法,最近鄰(knn)分類,和這些「急切學習法」不同,knn分類並不著急學習,他對於接受的訓練元組初始時不做任何處理,只是簡單儲存,直到接收到測試集中新元組的那一刻,再利用訓練集中的元組進行泛化,給出分類結果。這種模式也被稱為「惰性學習法」。那knn分類來說,當接收到新元組需要做檢驗時,程式計算出與這個新元組(測試元組)最近的k個最近的訓練元組,根據多數投票的原則,確定測試元組的類別。具體的演算法和注意事項我會在下面詳細說明。
和「急切學習法」相比,「惰性學習法」有優勢,也有缺點:
先說優點:
再說缺點:
不過無論如何,「惰性學習法」(尤其是knn分類)為我們提供了一種和大多分類方法不同的思路,還是有用武之地的,所以我覺得有必要在此總結。
依次讀取訓練元組:
,其中x
i xi由m
m個屬性' role="presentation">
組成。即xi
= xi=
,其中xi,
j xi,
j為訓練元組xixi
對於屬性ajaj
的值。對所有訓練元組的所有屬性值做歸一化處理。以屬性值xi,jx
i,
j為例,假設屬性ajaj
的最大值為ma
x(aj
) max
(aj)
,最小值為mi
n(aj
) min
(aj)
,那麼令xi,jx
i,
j歸一化變為x′
i,j xi,
j′
: x′i,j
=xi,
j−mi
n(aj
)max
(aj)
−min
(aj)xi
,j′=
xi,j
−min
(aj)
max(
aj)−
min(
aj
)這樣使得所有的屬性值取值都在[0
,1] [0,
1]
內,避免了屬性的值域不同造成的不同權重的影響。
查詢k最近鄰:knn的思想非常簡單,對於測試元組y=y=
,計算與訓練集中(別忘了此時已做完歸一化)元組的距離,進一步可以得到和
y y
距離最近的
k' role="presentation">k
k個元組。這裡距離的計算一般使用歐幾里得距離,當然也可以根據具體情況的不同,使用最恰當的度量方法。有關資料相似性度量的說明我在部落格資料相似性的度量方法總結有著相對詳細的解釋。歐幾里得距離的計算方法如下: di
s(y,
xi)=
∑nj=
1(yj
−xi,
j)2‾
‾‾‾‾
‾‾‾‾
‾‾‾‾‾√d
is(y
,xi)
=∑j=
1n(y
j−xi
,j)2
分類:原則就是「多數投票」,在查詢到的k個最近鄰當中,取最多的類別作為分類結果。
關於knn分類,有5點細節需做進一步說明:
如何確定引數
k k
的值:通常的方法是「試」,從k=
1' role="presentation">k=1
k=1開始,每次對
k k
加1,再根據測試集資料,通過多輪迭代檢驗效果最佳的
k' role="presentation">k
k。一般來說,訓練元組越多,
k k
的值越大。當然,具體操作時,針對不同資料的經驗也很重要,這是書本上學不來的。
如何處理標稱屬性的情況:屬性如果不是數值,而是標稱的,甚至可能既有數值,也有標稱。面對這種情況,方法是對標稱屬性「數值化」,拿顏色舉例,紅藍黃三色我們可以定義數值為
' role="presentation">
(得滿足歸一化的要求)。如果需要考慮不同標稱屬性之間差距不同的話,可以為屬性值賦予權重來調整,例如,黑色與白色的數值差可以設計的比黑色與藍色之間的數值差大。
如何處理缺失值:訓練元組是收集來的資料,大多時候,非我們所願。比如乙個訓練元組或測試元組的某乙個或多個屬性缺失。通常的做法是「往大了放」。即盡可能地考慮令缺失處的差值最大。具體分兩種情況:
如何提高分類的計算效率:線性遍歷的速度在面對大資料時肯定要完。因此現在比較常用的辦法是下面幾項:
學習法 費曼學習法
一 提出者 理查德 費曼,理論物理學家,1965年獲得諾貝爾物理學獎,量子電動力學創始人之一,奈米技術之父。二 步驟 費曼學習法可以簡化為四個單詞 target 目標 teach 教授 review 回顧 simplify 簡化 1 目標 確定乙個目標,比如學習一門技術 學習一門語言 學習一節課程。...
西蒙學習法
前兩天在csdn看某位博文的時候,看到了關於西蒙學習法的介紹,今天就上網搜尋來仔細的研究一下。諾貝爾經濟學獎獲得者西蒙教授曾提出了這樣乙個見解 對於乙個有一定基礎的人來說,他只要真正肯下功夫,在6個月內就可以掌握任何一門學問。西蒙教授立論所依據的實驗心理的研究成果表明 乙個人1分鐘到1分半鐘可以記憶...
浸泡學習法
就這樣突然想些點,今天的尾巴,靈感就來了,是給別人除錯程式中想到的。我想很多人都會和我一樣,看的再 醜 僅是外貌和大眾不同罷了 也就不醜了,成了一般人。看的再漂亮的人也就那樣,也變成一般人了。男生總是有這樣一句話,媳婦總是別人的好 我想也是因為這種效應吧,再漂亮的女孩子看時間長了也就一般了。把大蒜泡...