導航:首頁 > 源碼編譯 > 鄰近檢索演算法分類

鄰近檢索演算法分類

發布時間:2025-03-31 21:25:02

① 常見的監督學習演算法

一. K-近鄰演算法(k-Nearest Neighbors,KNN)

K-近鄰是一種分類演算法,其思路是:如果一個樣本在特徵空間中的k個最相似(即特徵空間中最鄰近)的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別。K通常是不大於20的整數。KNN演算法中,所選擇的鄰居都是已經正確分類的對象。該方法在定類決策上只依據最鄰近的一個或者幾個樣本的類別來決定待分樣本所屬的類別。

二、決策樹(Decision Trees)

決策樹是一個樹結構(可以是二叉樹或非二叉樹)。其每個非葉節點表示一個特徵屬性上的測試,每個分支代表這個特徵屬性在某個值域上的輸出,而每個葉節點存放一個類別。

使用決策樹進行決策的過程就是從根節點開始,測試待分類項中相應的特徵屬性,並按照其值選擇輸出分支,直到到達葉子節點,將葉子節點存放的類別作為決策結果。

三、樸素貝葉斯(Naive Bayesian)

貝葉斯分類是一系列分類演算法的總稱,這類演算法均以貝葉斯定理為基礎,故統稱為貝葉斯分類。樸素貝葉斯演算法(Naive Bayesian) 是其中應用最為廣泛的分類演算法之一。樸素貝葉斯分類器基於一個簡單的假定:給定目標值時屬性之間相互條件獨立。

四、邏輯回歸(Logistic Regression)

線性回歸就是根據已知數據集求一線性悔攜函數,使其盡可能擬合數據,讓損失函數最小,常用的拿棚線性碧敏伏回歸最優法有最小二乘法和梯度下降法。而邏輯回歸是一種非線性回歸模型,相比於線性回歸,它多了一個sigmoid函數(或稱為Logistic函數)。

五、AdaBoost

AdaBoost目的就是從訓練數據中學習一系列的弱分類器或基本分類器,然後將這些弱分類器組合成一個強分類器。AdaBoost有一個很突出的特點就是精度很高。

六、神經網路

神經網路從信息處理角度對人腦神經元網路進行抽象,建立某種簡單模型,按不同的連接方式組成不同的網路。

② KNN演算法-4-演算法優化-KD樹

KNN演算法的重要步驟是對所有的實例點進行快速k近鄰搜索。如果採用線性掃描(linear scan),要計算輸入點與每一個點的距離,時間復雜度非常高。因此在查詢操作時,可以使用kd樹對查詢操作進行優化。

Kd-樹是K-dimension tree的縮寫,是對數據點在k維空間(如二維(x,y),三維(x,y,z),k維(x1,y,z..))中劃分的一種數據結構,主要應用於多維空間關鍵數據的搜索(如:范圍搜索和最近鄰搜索)。本質上說,Kd-樹就是一種平衡二叉樹。

k-d tree是每個節點均為k維樣本點的二叉樹,其上的每個樣本點代表一個超平面,該超平面垂直於當前劃分維度的坐標軸,並在該維度上將空間劃分為兩部分,一部分在其左子樹,另一部分在其右子樹。即若當前節點的劃分維度為d,其左子樹上所有點在d維的坐標值均小於當前值,右子樹上所有點在d維的坐標值均大於等於當前值,本定義對其任意子節點均成立。

必須搞清楚的是,k-d樹是一種空間劃分樹,說白了,就是把整個空間劃分為特定的幾個部分,然後在特定空間的部分內進行相關搜索操作。想像一個三維(多維有點為難你的想像力了)空間,kd樹按照一定的劃分規則把這個三維空間劃分了多個空間,如下圖所示:

首先,邊框為紅色的豎直平面將整個空間劃分為兩部分,此兩部分又分別被邊框為綠色的水平平面劃分為上下兩部分。最後此4個子空間又分別被邊框為藍色的豎直平面分割為兩部分,變為8個子空間,此8個子空間即為葉子節點。

常規的k-d tree的構建過程為:

對於構建過程,有兩個優化點:

例子:採用常規的構建方式,以二維平面點(x,y)的集合(2,3),(5,4),(9,6),(4,7),(8,1),(7,2) 為例結合下圖來說明k-d tree的構建過程:

如上演算法所述,kd樹的構建是一個遞歸過程,我們對左子空間和右子空間內的數據重復根節點的過程就可以得到一級子節點(5,4)和(9,6),同時將空間和數據集進一步細分,如此往復直到空間中只包含一個數據點。

如之前所述,kd樹中,kd代表k-dimension,每個節點即為一個k維的點。每個非葉節點可以想像為一個分割超平面,用垂直於坐標軸的超平面將空間分為兩個部分,這樣遞歸的從根節點不停的劃分,直到沒有實例為止。經典的構造k-d tree的規則如下:

kd樹的檢索是KNN演算法至關重要的一步,給定點p,查詢數據集中與其距離最近點的過程即為最近鄰搜索。

如在構建好的k-d tree上搜索(3,5)的最近鄰時,對二維空間的最近鄰搜索過程作分析。

首先從根節點(7,2)出發,將當前最近鄰設為(7,2),對該k-d tree作深度優先遍歷。

以(3,5)為圓心,其到(7,2)的距離為半徑畫圓(多維空間為超球面),可以看出(8,1)右側的區域與該圓不相交,所以(8,1)的右子樹全部忽略。

接著走到(7,2)左子樹根節點(5,4),與原最近鄰對比距離後,更新當前最近鄰為(5,4)。

以(3,5)為圓心,其到(5,4)的距離為半徑畫圓,發現(7,2)右側的區域與該圓不相交,忽略該側所有節點,這樣(7,2)的整個右子樹被標記為已忽略。

遍歷完(5,4)的左右葉子節點,發現與當前最優距離相等,不更新最近鄰。所以(3,5)的最近鄰為(5,4)。

舉例:查詢點(2.1,3.1)

星號表示要查詢的點(2.1,3.1)。通過二叉搜索,順著搜索路徑很快就能找到最鄰近的近似點,也就是葉子節點(2,3)。而找到的葉子節點並不一定就是最鄰近的,最鄰近肯定距離查詢點更近,應該位於以查詢點為圓心且通過葉子節點的圓域內。為了找到真正的最近鄰,還需要進行相關的『回溯'操作。也就是說,演算法首先沿搜索路徑反向查找是否有距離查詢點更近的數據點。

舉例:查詢點(2,4.5)

一個復雜點了例子如查找點為(2,4.5),具體步驟依次如下:

上述兩次實例表明,當查詢點的鄰域與分割超平面兩側空間交割時,需要查找另一側子空間,導致檢索過程復雜,效率下降。

一般來講,最臨近搜索只需要檢測幾個葉子結點即可,如下圖所示:

但是,如果當實例點的分布比較糟糕時,幾乎要遍歷所有的結點,如下所示:

研究表明N個節點的K維k-d樹搜索過程時間復雜度為: 。

同時,以上為了介紹方便,討論的是二維或三維情形。但在實際的應用中,如SIFT特徵矢量128維,SURF特徵矢量64維,維度都比較大,直接利用k-d樹快速檢索(維數不超過20)的性能急劇下降,幾乎接近貪婪線性掃描。假設數據集的維數為D,一般來說要求數據的規模N滿足N»2D,才能達到高效的搜索。

Sklearn中有KDTree的實現,僅構建了一個二維空間的k-d tree,然後對其作k近鄰搜索及指定半徑的范圍搜索。多維空間的檢索,調用方式與此例相差無多。

③ 數據挖掘中的分類技術

數據挖掘中的分類技術
KNN(K最近鄰演算法)
演算法核心:如果一個樣本在特徵空間中K個最相似的樣本中的大多數屬於一個類別,則該樣本也屬於這個類別,並具有這個類別的特徵
在確定分類時只依靠最鄰近的一個或幾個樣本的類別來決定待分樣本所屬類別,在做決策時只與極少數的相鄰樣本有關
由於KNN方法主要依靠周圍有限的臨近樣本,而不是依靠判別類域的方法來確定樣本所屬類別。對於類域交叉或重疊較多的待分樣本集來說,KNN方法較其他方法更合適
決策樹
決策樹要解決的問題是用哪些屬性充當這棵樹的各個節點的問題,決策樹按分裂標准不同可以分為基於資訊理論的方法和基於最小GINI指標方法
神經網路
神經網路的學習是一個過程,並按照一定的規則(學習演算法)調整各層的權值矩陣,待網路各層權值都收斂到一定值,學習過程結束
支持向量機(SVM)
盡量把樣本中從更高維度看起來在一起的樣本合在一起
支持向量機的目的是找到一個最優超平面,使分類間隔最大。最優超平面就是要求分類面不但能將兩類正確分開,而且使分類間隔最大
在兩類樣本中離分類面最近且位於平行於最優超平面上的點就是支持向量,為找到最優超平面,只要找到所有的支持向量即可
對於非線形支持向量機,通常做法為把線形不可分轉換成線形可分,通過一個非線形映射將低維輸入空間中的數據特徵映射到高維。

④ knn是什麼意思

knn是鄰近演算法,或者說K最鄰近分類演算法,全稱為K-NearestNeighbor,是數據挖掘分類技術中最簡單的方法之一。所謂K最近鄰,是K個最近的鄰居的意思,說的是每個樣本都可以用最接近的K個鄰近值來代表。近鄰演算法是將數據集合中每一個記錄進行分類的方法。

knn是鄰近演算法,或者說K最鄰近分類演算法,全稱為K-NearestNeighbor,是數據挖掘分類技術中最簡單的方法之一。所謂K最近鄰,是K個最近的鄰居的意思,說的是每個樣本都可以用最接近的K個鄰近值來代表。近鄰演算法是將數據集合中每一個記錄進行分類的方法。

knn演算法的核心思想:

如果一個樣本在特徵空間中的K個最相鄰的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別,並具有這個類別上樣本的特性。該方法在確定分類決策上只依據最鄰近的一個或者幾個樣本的類別來決定待分樣本所屬的類別。KNN方法在類別決策時,只與極少量的相鄰樣本有關。由於KNN方法主要靠周圍有限的鄰近的樣本,而不是靠判別類域的方法來確定所屬類別的,因此對於類域的交叉或重疊較多的待分樣本集來說,KNN方法較其他方法更為適合。

⑤ 01 KNN演算法 - 概述

KNN演算法 全稱是K近鄰演算法 (K-nearst neighbors,KNN)

KNN是一種基本的機器學習演算法,所謂K近鄰,就是k個最近的鄰居。即每個樣本都可以用和它 最接近的k個鄰近位置的樣本 來代替。

KNN是個相對比較簡單的演算法,比起之前提過的回歸演算法和分類演算法更容易。如果一個人從來沒有接觸過機器學習的演算法,拿到數據後最容易想到的分類方式就是K近鄰。打個比方:你們想了解我是個怎樣的人,然後你們發現我的身邊關系最密切的朋友是一群逗逼,所以你們可以默認我也是一個逗逼。

KNN演算法即可以應用於 分類演算法 中,也可以應用於 回歸演算法 中。

KNN在做回歸和分類的主要區別,在於最後做預測時候的決策不同。在分類預測時,一般採用 多數表決法 。在做回歸預測時,一般使用 平均值法

多數表決法: 分類時,哪些樣本離我的目標樣本比較近,即目標樣本離哪個分類的樣本更接近。

平均值法: 預測一個樣本的平均身高,觀察目標樣本周圍的其他樣本的平均身高,我們認為平均身高是目標樣本的身高。

再舉個例子:
分別根據甜度和脆度兩個特徵來判斷食物的種類。
根據樣本我們普遍發現:
比較甜,比較脆的食物都是水果。
不甜,不太脆的食物是蛋白質。
不甜,比較脆的食物是蔬菜。
於是根據目標的樣本甜度和脆度兩個特徵,我們可以對其進行分類了。

k值的選擇:
先選一個較小的值,然後通過交叉驗證選擇一個合適的最終值。
k越小,即使用較小的領域中的樣本進行預測,訓練誤差會減小,但模型會很復雜,以至於過擬合。
k越大,即使用交大的領域中的樣本進行預測,訓練誤差會增大,模型會變得簡單,容易導致欠擬合。

距離的度量:
使用歐幾里得距離:歐幾里得度量(euclidean metric)(也稱歐氏距離)是一個通常採用的距離定義,指在m維空間中兩個點之間的真實距離,或者向量的自然長度(即該點到原點的距離)。在二維和三維空間中的歐氏距離就是兩點之間的實際距離。

決策規劃:
分類:多數表決法、加權多數表決法。
回歸:平均值法、加權平均值法。

加權多數表決法:

平均值法和加權平均值法:
同樣看上面的圖,上方的三個樣本值為3,下面兩個樣本值為2,預測?的值。
如果不考慮加權,直接計算平均值:
(3 * 3 + 2 * 2) / 5 = 2.6

加權平均值:權重分別為1/7和2/7。計算加權平均值:
(3 * 3* 1/7 + 2 * 2 * 2/7) / 5 = 2.43

1、蠻力實現(brute):
計算預測樣本到所有訓練集樣本的距離,然後選擇最小的k個距離,即可得到k個最鄰近點。
缺點:當特徵數多、樣本數多時,演算法的效率比較低。

2、KD樹 (kd_tree):
首先對訓練數據進行建模,構建KD樹,然後根據建好的模型來獲取鄰近樣本數據。
後續內容會介紹KD樹搜索最小值的方式,讓大家直觀感受到KD樹比蠻力實現要少檢索多少數據。

閱讀全文

與鄰近檢索演算法分類相關的資料

熱點內容
清除電腦文件夾垃圾的方法 瀏覽:223
天河程序員 瀏覽:189
成都程序員公積金 瀏覽:765
程序員為什麼叫程序猿 瀏覽:481
加西貝拉壓縮機價格 瀏覽:786
海信聚好看如何用u盤安裝app 瀏覽:69
加密狗怎麼寫的 瀏覽:557
安卓手機如何能調最大聲音 瀏覽:665
編程開發工具大全 瀏覽:568
如何把安卓系統換成windows 瀏覽:28
android拼接url 瀏覽:22
華為nfc復制加密卡怎麼模擬 瀏覽:772
在pdf中怎麼插入文件 瀏覽:112
單片機中fw縮寫是什麼 瀏覽:375
交換律的演算法怎麼樣看能看出簡便 瀏覽:659
找醫療工作用哪個app 瀏覽:143
夢幻之鄉密碼解壓 瀏覽:596
nvidiasmi命令 瀏覽:757
創新賬戶加密維薩卡 瀏覽:874
解壓密碼很多怎麼辦 瀏覽:749