K-近鄰算法(KNN)是一種基于監督學習的分類和回歸方法。它的基本思想是,給定一個訓練資料集,對于一個新的輸入執行個體,找到訓練資料集中與它最近的K個執行個體,然後根據這K個執行個體的多數類别來預測輸入執行個體的類别
K-近鄰算法有三個重要的要素:K值的選擇,距離度量和分類決策規則。K值的選擇會影響算法的複雜度和泛化能力,一般采用交叉驗證法來選取最優的K值。距離度量是用來計算輸入執行個體和訓練執行個體之間的相似程度,常見的距離度量有歐式距離,曼哈頓距離,闵可夫斯基距離,切比雪夫距離和餘弦距離。分類決策規則是用來根據K個最近鄰執行個體的類别來确定輸入執行個體的類别,一般采用多數投票法。
K-近鄰算法的優點是簡單易懂,無需訓練,适用于多分類問題。缺點是計算量大,需要大量的存儲空間,對噪聲和異常值敏感,無法給出決策依據。為了提高K-近鄰算法的搜尋效率,可以利用特殊的資料結構來存儲資料,如KD樹。