1. 程式人生 > >clustering and retrival: week 2 筆記

clustering and retrival: week 2 筆記

存儲 ive 統計學 重要 問題: 表示 誤差 k近鄰法 重復

華盛頓大學 《機器學習》 筆記。

knn

  k-nearest-neighbors : k近鄰法

  給定一個 數據集,對於查詢的實例,在數據集中找到與這個實例最鄰近的k個實例,然後再根據k個最鄰近點預測查詢實例的類別。

  《統計學習方法》中這樣描述的:

    技術分享圖片

    技術分享圖片

  K近鄰模型是基於訓練數據集 對 特征空間的一個劃分。

    技術分享圖片

  當k =1 ,為一種特殊情況,稱為最鄰近法。

  Knn算法實現的三個重要問題: 距離度量選擇、k值選擇,分類決策方法。

  1. 距離度量選擇

  常用的距離度量有歐式距離、曼哈頓距離等。

  技術分享圖片

  《統計學習方法》中對距離度量總結:

  技術分享圖片

  2. K值選擇

  K過小,預測結果對鄰近的實例點十分敏感,容易發生過擬合。

  K過大,估計誤差(estimation error)可以減小,但近似誤差(approximation error)增大,與實例點隔得很遠的訓練實例也會對預測起作用。

  k值一般由交叉驗證(cross validation)決定。

  3.分類決策方法

  即找到k個最鄰近點後,如何得出最後的輸出結果。對於分類問題,往往采用多數表決

  《統計學習方法》:

    技術分享圖片

kd樹

  實現knn算法時,一個主要的問題是如何對數據集快速搜索。其中,暴力搜索復雜度O(Nlogk),使用特殊的數據結構可以提高搜索效率。

  Kd樹是二叉樹,表示對k維空間(k是特征的數量)的一個劃分。Kd樹是一種存儲數據集的方式,以便於進行快速搜索。構造kd樹相當於不斷地用垂直於坐標軸的超平面將k維空間切分,構造成一系列的k維超矩形區域,kd樹的每個結點對應於一個k維超矩形區域(《統計學習方法》)。

  

 Kd樹的構造方式:以2維空間為例(2個特征)。

  輸入數據集,輸出kd樹。特征為x = (x[1], x[2])

  開始:根節點為包含整個數據集的矩形區域(如下圖所示)。以 feature 1 為切割特征,將整個區域切割成兩個子空間,生成兩個子節點。

  技術分享圖片技術分享圖片

   對每個子區域遞歸,重復切分。直到子區域中包含的數據點少於設定的臨界值為止。

    技術分享圖片 技術分享圖片

給定一個查詢點,搜素其近鄰點的方法:

  從根節點出發,根據查詢點的特征值找到包含查詢點的葉子節點,在葉子節點裏搜索。

    技術分享圖片

  之後再回溯到父節點,在父節點的其他子節點中搜索,這樣搜索範圍被限制在數據集空間的局部區域,提高搜索效率。

    技術分享圖片

復雜度:

  構造二叉樹的復雜度:

     size: 如果每個葉節點只包含1個數據點,一共2N-1個節點。

    depth: O(log N)

    構造時間:O(N log N)

  查詢復雜度:

    找到葉子節點: O ( log N)

    回溯到父節點以及移動到另一個子節點搜素最大花費: O(N)

    復雜度 O ( log N) --> O(N)

   (N 為訓練集數據點總數)

  註:通過一些剪枝和優化,查詢時間復雜度非常接近O(logN),kd樹適用於低維空間(特征數較少)的情況,維度較高時接近暴力搜索方法。

    對於高維情況,kd樹就不是很適用了,可以使用 LSH(locality sensitive hashing )。

clustering and retrival: week 2 筆記