k-nn在k/n->0時效果更顯著,但是這必然帶來巨大計算量,使用kd樹能緩建情況。
歸類到例項空間受控於例項與例項之間距離
1. 數值型1.1 處理方式:歸一化
1.2 採用距離公式
* 歐幾里得
* 曼哈頓
* city-block
* …2. 名詞性屬性
1.1 處理方式:
1.2 無需量度尺寸
1.kd樹結構長什麼樣?
k指k個屬性。
二叉樹,用乙個超平面將輸入例項空間分隔開,再將每乙個部分遞迴進行分割。
二維空間上,所有的**都與乙個軸平行或垂直,而不是決策邊界。
當加入新的資料點時,需要從頭構建樹。
2.如何才能在乙個訓練樣本集上建立一棵好樹?
重點在第乙個訓練例項的選擇以及**方向,因為後續都是基於該點做超平面分割的。
q:如何尋找乙個好的方向?
a:好的方向應該使得資料散布範圍最廣,因此在確定根節點有以下兩個步驟
s1.分別計算資料點在每個軸的方差,選擇最大方差所對應的軸為**軸。
s2.找出位於該軸的中間值(或平均值,取平均值可以使得平面不至於變成瘦長的矩形,而導致不平衡),選擇閾值對應的點。
3.超球體?
q:為什麼不用超矩形?
kd樹使用超矩形缺點:由於在切分時,切分平面是一塊一塊的矩形,而矩形有腳。
超球體沒腳,可代替。雖然超球體相互重疊,而超矩形相鄰,但kd樹並沒有要求不能重疊。
超球體之間的層級關係,更清晰表達樹的層級關係
監督學習四 基於例項的學習
1 基於例項的學習 instance based learning 這應該是機器學習演算法中最簡單的演算法,它不像其他演算法需要在樣本的基礎上建立一般性的推理公式,而是直接通過儲存的資料集進行分類或回歸學習來得到結果。它的缺點是對儲存空間的需求很大,需要占用的空間直接取決於例項數量的大小,並且 的時...
python 例題 Python 練習例項47
參考 encoding utf 8 三種簡單的變數交換方法 引數法 相互運演算法 字元拼剪法 def shuru a raw input 請輸入a的值 b raw input 請輸入b的值 return a,b def change1 a,b 加入第三變數 t a a b b t print 一種變...
學習OpenCV課後題4 7
include include include include pragma comment lib,cv.lib pragma comment lib,cvcam.lib pragma comment lib,cxcore.lib pragma comment lib,highgui.lib vo...