2、最近鄰分類器
接下來我們來開發乙個影象分類器:最近鄰分類器。這個分類器在實踐中很少用,但是可以讓我們對資料驅動的影象分類方法有乙個概念性的理解。
影象分類樣例資料集:cifar-10,這是乙個有名的影象分類資料集。包含6萬張32x32畫素的小圖,每張都標記為10個分類中的某乙個(比如airplane, automobile, bird,等等)。這6萬張已經分為兩組,訓練資料5萬張,測試資料1萬張。下面為每個分類隨機展示了10張:
左邊:
cifar-10 資料集中的樣例資料。右邊: 第一列是測試資料,我們每張測試給出了最近鄰的10張影象
假設我們拿到這5萬張
cifar-10訓練影象(每個分類5千張),我們希望去標記剩餘的1萬張影象。最近鄰分類器拿到一張測試影象,會用這張圖去與每一張訓練影象做比較,用最近距離的訓練來**這張圖所屬的分類。
如何比較兩張,就是這兩組32 x 32 x 3的資料是怎麼比較的?乙個簡單的辦法就是乙個乙個地比較畫素點資料,然後將所有的差異求和。將兩張分別表示為兩個向量i1,i2
,要比較這兩個向量,
l1 距離就是乙個合理的選擇:
其中求和是計算所有的畫素的差異的絕對值之和。如下圖所示:
用畫素差異計算兩張l1距離的樣例(這裡只計算了乙個顏色通道)。計算對應畫素點的差異絕對值,然後求和這些絕對值。如果兩張完全一致,則和為零。差異越大則這個和就越大。
下面是乙個簡單的最近鄰分類器的實現,使用l1距離
測試**:
執行這段**得到的準確率達到38.6%。這比隨機猜測好一點(因為有10個類,亂猜也能獲得10%的準確度),但是遠不及人類的效能(估計在94%左右)或最先進的卷積神經網路,達到約95%。
距離計算:計算向量間距離有很多方法。還有一種是計算l2距離,這種方法計算特徵之間差異的平方和,然後再求平方根:
用numpy計算l2距離也很簡單,這樣即可: distances = np.sqrt(np.sum(np.square(self.xtr - x[i,:]), axis = 1))
這裡用到了平方根函式,在實際的最近鄰居應用程式中,可以省去平方根運算,因為平方根是單調函式,算不算對排序沒有影響。如果你用這個距離測試上述最近鄰居分類器,你將獲得35.4%的精度(略低於我們的l1距離結果)。
l1與l2:這兩個度量之間的差異有點意思。當涉及兩個向量之間的差異時,l2距離比l1距離更不寬容。也就是說,l2距離傾向於放大差異。l1和l2距離(或相當於一對影象之間的差異的l1/l2範數)是p範數中最常用的特殊情況。
下一章 k-最近鄰分類器及如何計算超引數
史丹福大學計算機檢視課程,青星大學 翻譯整理
1、資料驅動的影象分類方法
2、最近鄰分類器
3、k - 最近鄰分類器及使用驗證集取得超引數
4、線性分類: svm, softmax
5、優化方法:隨機梯度下降法
6、反向傳播
7、神經網路一: 建立網路架構
8、神經網路二:設定資料和損失
9、神經網路 三:學習與評價
10、神經網路案例學習
11、卷積神經網路:結構、卷積/匯集層
12、理解與視覺化卷積神經網路
13、傳承學習與卷積神經網路調諧
kNN 最近鄰分類器
以下都是個人對於knn的一些認識,可能有比較大的問題,望大家批評指正。knn分類器是一種消極的學習期,其並不事先建立明確的學習模型,是一種簡單的基於儲存的學習。應用範圍 主要針對簡單的分類問題。主要思想 找到與待檢測點距離最小的k個樣本點的分類情況,取最多的那類為待檢測點的分類。需要的內容 有標記的...
python最近鄰分類器KNN演算法
1.knn演算法 鄰近演算法,或者說k最近鄰 knn,k nearestneighbor 分類演算法是資料探勘分類技術中最簡單的方法之一。所謂k最近鄰,就是k個最近的鄰居的意思,說的是每個樣本都可以用它最接近的k個鄰居來代表。k最近鄰 k nearest neighbor,knn 分類演算法的核心思...
第五章(2) 分類 最近鄰分類器
積極學習方法 從訓練記錄中提取模型,對 資料進行分類 消極學習方法 rote分類器,記住整個訓練資料,僅當測試例項的屬性和某個訓練樣例完全匹配時才進行分類,缺點是某些測試記錄不能被分類 更靈活的方法是找出和測試樣例的屬性相對接近的所有訓練樣例,這些訓練樣例即最近鄰 最近鄰分類器是把每個樣例看作多維空...