最近在參加大數據的暑期培訓,記錄一下學習的東西。算法
引言性能
懶惰學習法:簡單的存儲數據,而且一直等待,直到給定一個檢驗數據,才進行範化,以便根據與存儲的訓練元組的類似性對該檢驗數據進行分類。懶惰學習法在 訓練元組的時候只作少許的工做,而在進行分類或者數值預測時作更多的工做。因爲懶惰學習法存儲訓練元組或實例,也被稱爲基於實例的學習法。學習
K-近鄰算法:屬於懶惰學習法,給定一個訓練數據集,在訓練數據集中找到與未知實例最鄰近的K個訓練集中的實例,這K個實例的多數屬於某個類,就把該未知實例分類到這個類中。測試
算法描述: 大數據
一、數據標準化spa
二、計算測試數據與各個訓練數據之間的距離blog
三、按照距離的遞增關係進行排序排序
四、選取距離最小的K個點事件
五、肯定前K個點所在類別出現的頻率內存
六、返回前K個點中出現頻率最高的類別做爲測試數據的預測分類
K近鄰算法的三個基本要素:k值的選擇,距離度量,分類決策規則
1、數據標準化
做用:防止某一屬性權重過大
好比說座標點 x,y。 x的範圍是【0,1】,但y的範圍倒是【100,1000】,在進行距離的計算的時候y的權重比x的權重大。
這裏就用最簡單的一種標準化方法:
Min-max標準化: x‘ = (x -min)/(max-min)
舉個例子:
x數據集爲[1, 2, 3, 5], 則min=1, max=5
1 : (1-min) / (max-min) = 0
2 : (2-min) / (max-min) = 0.25
3 : (3-min) / (max-min) = 0.5
5 : (5 -min) / (max-min) = 1
則x數據集被更新爲 x'[0, 0.25, 0.5, 1]
Min-max方法 x‘ 被標準化在[0,1]區間中
2、距離度量
計算距離有歐式距離,曼哈頓距離等等, 通常採用歐式距離。
歐式距離公式 :
就好比(x1, y1)和 (x2, y2)的距離爲
多維也是同樣的,對應座標相減,平方後,求和,再求根號
曼哈頓距離:
曼哈頓距離公式:
點(x1, y1)和(x2, y2)的曼哈頓距離爲: |x1-x2| + |y1-y2|
多維爲對應座標相減的絕對值求和
根據需求選擇不一樣的距離度量
3、肯定K值
k值的選擇會對k近鄰法的結果有很大的影響,k值較小意味着只有與輸入實例較近的訓練實例纔會對預測結果起做用,但容易發生過擬合;若是k值較大,優勢是能夠減小學習的估計偏差,缺點是學習的近似值偏差增大,這時與輸入實例較遠的訓練實例也會起預測做用,使預測發生錯誤。在實際應用中,k值通常選擇一個較小的數值,採用交叉驗證的方法來選擇最優的k值。
4、分類決策規則
分類決策規則是隻按照什麼規則肯定當前實例屬於哪一類。
k近鄰算法中,分類決策規則每每是多數表決,即由輸入實例的K個最鄰近的訓練實例中的多數類決定輸入實例的類別。
5、優缺點
優勢:簡單,易於理解,無需建模與訓練,易於實現;適合對稀有事件進行分類。
缺點:懶惰算法,內存開銷大,對測試樣本分類時計算量也比較大,性能較低;可解釋性差,沒法給出決策樹那樣的規則。