R中的K最近鄰算法[帶有示例的終極指南]

已發表: 2020-03-20

R 中的 KNN 算法因其多功能性和功能性而非常流行。 因此,如果您正在學習機器學習,您一定不時聽說過它的名字。 您一定想知道,“R 中的 KNN 是什麼?” 或“它是如何工作的?”。

在本文中,我們將找到這些問題的答案,並幫助您徹底理解這個主題。 因此,事不宜遲,讓我們開始吧。

目錄

什麼是 KNN 算法?

KNN 代表 K 最近鄰。 它是一種有監督的機器學習算法,根據點相鄰數據點的特徵將數據點分類為目標類。

假設您希望您的機器識別蘋果和橙子的圖像並區分它們。 為此,您需要輸入蘋果和橙色圖像的數據集。 然後,您必須訓練您的數據模型,讓它通過其獨特的特徵檢測每種水果。 比如,它可以通過紅色識別蘋果,通過顏色識別橙子。

訓練完數據模型後,您可以通過為它提供一個包含其他蘋果和橙子圖像的新數據集來對其進行測試。 現在,KNN 算法將根據它在訓練模型中發現的特徵,通過對蘋果和橙子進行分類來分離它們。

它將一個數據點的特徵與其相鄰的特徵進行比較,看看它們有多相似。 它會根據這些發現對它們進行分類。

在許多情況下,您將在圖表上繪製點。 要計算兩點之間的距離,您需要使用不同的公式。 計算兩個數據點之間距離的最常用方法是歐幾里得距離。 它計算距離而不考慮點中存在的屬性或屬性。

KNN 算法的特點

以下是 R 中 KNN 算法的特點:

  • 它是一種監督學習算法。 這意味著它使用標記的輸入數據來預測數據的輸出。
  • 這是一個簡單的機器學習算法
  • 您可以將 KNN 算法用於多種問題
  • 它是一個非參數模型。 這意味著它不對數據做任何假設,這使得解決與真實數據相關的問題非常有用。
  • 它通過將數據點與其相鄰數據點進行比較來對數據進行分類。 簡單來說,KNN 算法的工作是基於屬性的相似性。
  • 它屬於惰性算法的範疇。 惰性算法會記住訓練數據,而不是從中學習判別函數。 詳細了解機器學習算法的類型。
  • 您可以使用 KNN 來解決回歸和分類問題。

KNN 算法是無偏的,並且由於我們上面討論的特性,它是許多問題的首選。 然而,一切都有其問題,KNN 也不例外。

該算法對於解決過於復雜的問題沒有用處。 它的模型也沒有抽象過程。 對於一個合適的模型,您需要高質量的數據,因為它有時會錯過有價值的見解,因為它是一種惰性算法。 它很快,但您需要花費大量時間進行數據清理。

它是如何工作的?

要了解 R 中的 KNN 是如何工作的,我們將看另一個示例。

假設您的數據集有兩個類。 第 1 類有矩形,第 2 類有圓形。 您必須使用此算法將輸入的新數據點分配給這兩個類之一。 為此,您首先必須為您的算法定義“K”的值。 K 表示算法將考慮的最近鄰點的數量。

考慮在此示例中輸入 K 作為 4。 對於 K = 4,鄰居是三個圓形和一個矩形。 在這種情況下,您會將數據點歸為第 2 類,因為該點周圍的圓圈數量高於矩形。

如果鄰居是三個矩形和一個圓形,您會將其歸為第 1 類。我們已經討論過 KNN 算法如何計算兩點之間的距離以確定誰是最近的鄰居。 為此,它使用歐幾里得距離公式。

歐幾里得距離的公式如下:

d(p,q) = d(q,p) = ( q 1 p 1 ) 2 +( q 2 p 2 ) 2 ... ( q n p n ) 2

這裡,p = (p1, p2, p3, .... pn) 和 q = (q1, q2, q3, ... qn)。 在這個等式中,“d”表示點 p 和 q 之間的歐式距離。

如您所見,這很簡單。 它的簡單性使其具有高度的通用性,因此它是最流行的算法之一。 您可以使用它來解決各種問題。

R中的KNN示例

您可能想知道我們在哪裡可以看到 KNN 算法在現實生活中的應用。 為此,您必須查看亞馬遜。

亞馬遜的巨大成功取決於很多因素,但其中一個突出的因素是他們對先進技術的使用。 其中一項技術是機器學習。 他們的推薦系統幫助他們創造了數億美元的收入。 而這個推薦系統為此使用了 KNN 算法。

另請閱讀:機器學習項目理念

假設您在亞馬遜上購買了一件黑色牧馬人牛仔褲和一件皮夾克。 幾週後,另一個人從亞馬遜購買了同樣的牛仔褲,但沒有買那件皮夾克。 亞馬遜會推薦此人購買夾克,因為他的購買模式與您的相似。

因此,亞馬遜的推薦系統基於人們的購買模式而工作。 為了理解這種相似性,您可以使用基於此原理的 KNN 算法。 現在您了解了該算法的基礎知識及其實際應用。 還有很多其他的使用例子,但現在,讓我們堅持這個。

學習世界頂尖大學的數據科學課程獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

結論性想法

R 中的 KNN 算法有很多用途。 並且在閱讀了這篇文章之後,我們相信你對這個算法很熟悉了。 如果您想了解更多關於此類機器學習算法的信息,您應該看看我們詳細的機器學習課程

除了其他方面,您將學習很多關於機器學習和其中使用的各種算法的知識。

R 編程語言是用來做什麼的?

編程語言 R 是為涉及統計和數據可視化的計算而創建的。 今天,R 被統計學家、數據科學家、數據和業務分析師廣泛使用。 R 的核心內置了許多統計功能,因此 R 可以實現的大部分核心數據分析不需要第三方庫。 與許多其他計算機編程語言不同,R 不是通用語言。 因此,它本質上是用來實現它做得非常好的特定功能。 然而,R 被各行各業的企業廣泛使用,以從用戶生成的大量日常數據中獲取有用的見解。

用 R 編程有什麼好處?

R 編程語言為新手和專家程序員提供了各種優勢。 它的主要優點包括它為構建統計計算模型提供的功能和便利性。 其次,R 是一種支持並行分佈式計算的開源編程語言。 任何人都可以使用它,而無需購買許可證或使用費。 此外,它還帶有一個龐大的庫來支持各種功能,其獨立於平台的框架也增加了便利性。 R 也可用於有效的數據清理、網絡抓取和數據整理功能,並廣泛用於開發機器學習模型。

為什麼 KNN 被稱為 Lazy Learner 算法?

K-最近鄰算法是機器學習中最簡單的算法之一。 然而,它通常被稱為懶惰的學習者。 這樣做的原因是,當您向該算法提供所有與訓練相關的數據時,它無法訓練自己。 它不是學習判別函數,而是記住整個訓練數據集。 每添加一個新數據點,該算法就會在整個訓練集中搜索其最近的鄰居,這總是會增加進行預測所需的時間。 這通常使其計算成本高且非常耗時。