k 最近鄰 (KNN) 算法是一種非參數(shù)監(jiān)督學(xué)習(xí)分類器,它使用鄰近性對(duì)單個(gè)數(shù)據(jù)點(diǎn)的分組進(jìn)行分類或預(yù)測(cè)。是當(dāng)今機(jī)器學(xué)習(xí)中使用的流行且簡(jiǎn)單的分類和回歸分類器之一。采用 k 個(gè)最近鄰的平均值來對(duì)分類進(jìn)行預(yù)測(cè)。通常用于簡(jiǎn)單的推薦系統(tǒng)、模式識(shí)別、數(shù)據(jù)挖掘、金融市場(chǎng)預(yù)測(cè)、入侵檢測(cè)等。
在機(jī)器學(xué)習(xí)算法的廣闊領(lǐng)域中,很少有技術(shù)像 K 最近鄰 (KNN) 算法一樣通用且直觀。如果您正在尋找用于模式識(shí)別、分類和回歸任務(wù)的強(qiáng)大工具,KNN 提供了一種簡(jiǎn)單而有效的方法,可以利用鄰近性的力量。
k 最近鄰算法的目標(biāo)是識(shí)別給定查詢點(diǎn)的最近鄰居,以便我們可以為該點(diǎn)分配一個(gè)類標(biāo)簽。為了做到這一點(diǎn),KNN 有一些要求:
確定您的距離指標(biāo)
為了確定哪些數(shù)據(jù)點(diǎn)最接近給定的查詢點(diǎn),需要計(jì)算查詢點(diǎn)與其他數(shù)據(jù)點(diǎn)之間的距離。這些距離度量有助于形成決策邊界,將查詢點(diǎn)劃分為不同的區(qū)域。
k-NN算法中的k值定義了將檢查多少個(gè)鄰居來確定特定查詢點(diǎn)的分類。例如,如果 k=1,則該實(shí)例將被分配到與其單個(gè)最近鄰居相同的類。定義 k 可以是一種平衡行為,因?yàn)椴煌闹悼赡軙?huì)導(dǎo)致過度擬合或欠擬合。較低的 k 值可能會(huì)導(dǎo)致較高的方差,但偏差較低,而較大的 k 值可能會(huì)導(dǎo)致較高的偏差和較低的方差。
k 的選擇在很大程度上取決于輸入數(shù)據(jù),因?yàn)?strong style="outline: 0px;max-width:100%;box-sizing: border-box !important;overflow-wrap: break-word !important">具有更多異常值或噪聲的數(shù)據(jù)可能會(huì)在 k 值較高時(shí)表現(xiàn)更好??傮w而言,建議 k 為奇數(shù),以避免分類中的平局,并且交叉驗(yàn)證策略可以幫助您為數(shù)據(jù)集選擇最 佳 k。
KNN 中的過擬合和欠擬合
過度擬合:當(dāng)模型變得過于復(fù)雜,從訓(xùn)練數(shù)據(jù)中捕獲噪聲或不相關(guān)模式時(shí),就會(huì)發(fā)生過度擬合。在 KNN 的背景下,當(dāng)我們將 K 設(shè)置為非常小的值(例如 1 或 2)時(shí),可能會(huì)發(fā)生過度擬合。這會(huì)導(dǎo)致模型對(duì)訓(xùn)練數(shù)據(jù)中的局部變化過于敏感,從而導(dǎo)致對(duì)未見過的數(shù)據(jù)的泛化能力較差。
2. 欠擬合:當(dāng)模型太簡(jiǎn)單而無法捕獲數(shù)據(jù)中的潛在模式時(shí),就會(huì)發(fā)生欠擬合。在 KNN 的情況下,當(dāng)我們將 K 設(shè)置為較大值(例如訓(xùn)練樣本總數(shù))時(shí),可能會(huì)發(fā)生欠擬合。這會(huì)導(dǎo)致模型過于籠統(tǒng)并且過度簡(jiǎn)化數(shù)據(jù)中的基礎(chǔ)模式。
KNN如何避免過擬合和欠擬合?
為了避免KNN中的過擬合和欠擬合,選擇合適的K值很重要。K值小會(huì)導(dǎo)致過擬合,而K值大則會(huì)導(dǎo)致欠擬合。最 佳 K 值取決于具體的數(shù)據(jù)集和當(dāng)前的問題。通常使用交叉驗(yàn)證或網(wǎng)格搜索等技術(shù)來找到平衡偏差和方差的最 佳 K 值,從而最 大限度地提高模型在未見過的數(shù)據(jù)上的性能。
k-NN 算法已在各種應(yīng)用中使用,主要是在分類中。其中一些用例包括:
- 數(shù)據(jù)預(yù)處理:數(shù)據(jù)集經(jīng)常有缺失值,但 KNN 算法可以在稱為缺失數(shù)據(jù)插補(bǔ)的過程中估計(jì)這些值。
- 推薦引擎:使用來自網(wǎng)站的點(diǎn)擊流數(shù)據(jù),KNN 算法已用于向用戶提供有關(guān)其他內(nèi)容的自動(dòng)推薦。這項(xiàng)研究 表明,用戶被分配到特定組,并根據(jù)該組的用戶行為向他們提供推薦。然而,考慮到 KNN 的擴(kuò)展問題,這種方法對(duì)于較大的數(shù)據(jù)集可能不是最 佳的。
- 金融:它也被用于各種金融和經(jīng)濟(jì)用例。例如,一篇論文 展示了如何在信用數(shù)據(jù)上使用 KNN 來幫助銀行評(píng)估組織或個(gè)人的貸款風(fēng)險(xiǎn)。它用于確定貸款申請(qǐng)人的信用度。另一本期刊 強(qiáng)調(diào)了其在股市預(yù)測(cè)、貨幣匯率、期貨交易和洗錢分析中的用途。
- 醫(yī)療保健:KNN 也在醫(yī)療保健行業(yè)中得到應(yīng)用,對(duì)心臟病和前列腺癌的風(fēng)險(xiǎn)進(jìn)行預(yù)測(cè)。該算法的工作原理是計(jì)算最可能的基因表達(dá)。
- 模式識(shí)別:KNN 還有助于識(shí)別模式,例如文本和數(shù)字分類 。這對(duì)于識(shí)別您可能在表格或郵寄信封上找到的手寫數(shù)字特別有幫助。
就像任何機(jī)器學(xué)習(xí)算法一樣,k-NN 有其優(yōu)點(diǎn)和缺點(diǎn)。根據(jù)項(xiàng)目和應(yīng)用,它可能是也可能不是正確的選擇。
- 易于實(shí)現(xiàn):鑒于該算法的簡(jiǎn)單性和準(zhǔn)確性,它是新數(shù)據(jù)科學(xué)家首先要學(xué)習(xí)的分類器之一。
- 輕松適應(yīng):隨著新訓(xùn)練樣本的添加,算法會(huì)進(jìn)行調(diào)整以適應(yīng)任何新數(shù)據(jù),因?yàn)樗杏?xùn)練數(shù)據(jù)都存儲(chǔ)在內(nèi)存中。
- 很少的超參數(shù):KNN 僅需要 ak 值和距離度量,與其他機(jī)器學(xué)習(xí)算法相比,這較低。
缺點(diǎn)
- 擴(kuò)展性不佳:由于 KNN 是一種惰性算法,因此與其他分類器相比,它占用更多的內(nèi)存和數(shù)據(jù)存儲(chǔ)。從時(shí)間和金錢的角度來看,這可能代價(jià)高昂。更多的內(nèi)存和存儲(chǔ)將增加業(yè)務(wù)支出,并且更多的數(shù)據(jù)可能需要更長的時(shí)間來計(jì)算。雖然已經(jīng)創(chuàng)建了不同的數(shù)據(jù)結(jié)構(gòu)(例如 Ball-Tree)來解決計(jì)算效率低下的問題,但根據(jù)業(yè)務(wù)問題,不同的分類器可能是理想的選擇。
- 維數(shù)詛咒:KNN 算法往往會(huì)成為維數(shù)詛咒的受害者,這意味著它在處理高維數(shù)據(jù)輸入時(shí)表現(xiàn)不佳。這有時(shí)也稱為峰值現(xiàn)象,即在算法達(dá)到最 佳特征數(shù)量后,額外的特征會(huì)增加分類錯(cuò)誤量,尤其是當(dāng)樣本量較小時(shí)。維度詛咒是指隨著維度(特征)數(shù)量的增長,特征空間變得越來越稀疏的現(xiàn)象。在高維空間中,鄰近或相似的概念變得不太有意義。這可能會(huì)對(duì) KNN 的性能產(chǎn)生負(fù)面影響,因?yàn)樵撍惴ㄒ蕾囉谙嗨茖?shí)例彼此接近的假設(shè)。在具有高維特征空間的大型數(shù)據(jù)集中,KNN 的準(zhǔn)確性和有效性可能會(huì)降低。
- 容易過擬合:由于“維數(shù)災(zāi)難”,KNN也更容易過擬合。雖然利用特征選擇和降維技術(shù)來防止這種情況發(fā)生,但 k 的值也會(huì)影響模型的行為。較低的 k 值可能會(huì)過度擬合數(shù)據(jù),而較高的 k 值往往會(huì)“平滑”預(yù)測(cè)值,因?yàn)樗菍?duì)更大區(qū)域或鄰域的值進(jìn)行平均。但是,如果 k 值太高,則可能無法擬合數(shù)據(jù)。
-不相關(guān)或離群特征:在大型數(shù)據(jù)集中,經(jīng)常會(huì)遇到不相關(guān)或有噪音的特征,這意味著它們對(duì)底層模式?jīng)]有多大貢獻(xiàn),或者具有不一致或誤導(dǎo)性的信息。KNN 在距離計(jì)算中平等地考慮所有特征,這可能導(dǎo)致決策過程中包含不相關(guān)或有噪聲的特征。這可能會(huì)導(dǎo)致預(yù)測(cè)不理想并降低性能。
假設(shè)我們想了解一條新評(píng)論是否屬于正面評(píng)論或負(fù)面評(píng)論的類別。為了機(jī)器學(xué)習(xí)算法的可解釋性,評(píng)論中的每個(gè)單詞都將被轉(zhuǎn)換為向量。
KNN 算法根據(jù)訓(xùn)練過程中發(fā)現(xiàn)的文本向量的相似性,將文本向量分為正面評(píng)論和負(fù)面評(píng)論類別。KNN 算法學(xué)習(xí)數(shù)學(xué)函數(shù),根據(jù)新數(shù)據(jù)點(diǎn)與特定文本向量組的相似性將其分類到合適的類別。
使用 KNN 算法進(jìn)行回歸的過程與分類的過程幾乎相同。唯 一的區(qū)別是,在回歸中,算法采用最近鄰的平均值或中位數(shù)來分配類標(biāo)簽,而對(duì)于分類問題,類標(biāo)簽是根據(jù)多數(shù)投票來分配的。
1. KNN 的有效性隨著大量訓(xùn)練數(shù)據(jù)的增加而增加,因此它支持足夠的數(shù)據(jù)表示
2. KNN 可用于分類和回歸
3. KNN 是非參數(shù)的,因此沒有與基礎(chǔ)數(shù)據(jù)相關(guān)的假設(shè)。因此,它也可以用于非線性數(shù)據(jù)
4. KNN的實(shí)現(xiàn)很簡(jiǎn)單
1. 測(cè)量訓(xùn)練樣本中所有數(shù)據(jù)點(diǎn)之間的距離是一項(xiàng)計(jì)算成本高昂的任務(wù)
2. 如果訓(xùn)練數(shù)據(jù)過度隨機(jī)化,那么根據(jù)距離度量分配類標(biāo)簽就會(huì)很混亂
3. 對(duì)于距訓(xùn)練數(shù)據(jù)較遠(yuǎn)的查詢點(diǎn),KNN 不適合
UWB信號(hào)的KNN機(jī)器學(xué)習(xí)電子圍欄
微文:空間區(qū)域-普通存在性檢測(cè)和精細(xì)網(wǎng)格化存在檢測(cè)的比較
微文:高精度工業(yè)電子圍欄-UWB區(qū)域網(wǎng)格化精準(zhǔn)定位
微文:首創(chuàng)UWB精細(xì)網(wǎng)格化的數(shù)字視頻位置空間結(jié)構(gòu)化-賦能視頻監(jiān)控
公眾號(hào) 掃碼咨詢
![]() | 上海市閔行區(qū)中春路4999號(hào)莘莊商務(wù)樓1326室 |
![]() | service@covond.com |
![]() | www.jxetj.com |
![]() | 交換機(jī):18017588179(孫經(jīng)理) 無人機(jī):13311882358(孫總) |