《Machine Learning:Clustering & Retrieval》課程第2章之LSH
當維度較高時,kd-tree有一系列問題,主要是node之間的交叉導致不能很好的prune,導致搜索效率很低。
一種方式就是找近似解就可以了,比如提到的approximate KNN,另外一種近似解法就是LSH。2.什麼是LSH?
用隨機的超平面進行編碼。
3.為什麼說LSH是近似解?
因為最近鄰不一定在query point這一邊。
4.用超平面去劃分,會涉及哪些問題?2指的是false negative,3指的是false positive。
5.如何選擇超平面呢?
random!
為什麼選擇隨機產生呢?
因為從概率角度,隨機產生把兩個點分到一邊的概率還是很大的,尤其當兩個點很相近的時候。
6.一個超平面夠嗎?
當然不夠啦,因為false positive太多了,計算複雜度也太高了。
7.那怎麼能減少false positive呢?
加更多的超平面唄。
8.那怎麼較少false negative呢?
因為加了更多的超平面後,那兩個相鄰的點的bin index不一樣的概率就加大了,所以
要加更多的hash table。
9.所以加超平面有利有弊了?
是的,減少false positive的同時增加了false negative,是一個trade-off。
為了減少false negative,要加hash table。10.除了加hash table的數量外,還有別的方法嗎?
有,搜索neighbor bins,怎麼定義neighbor bins呢?就是flipping bits的個數,(有點像漢明距離),如果是flipping bits是1的話,那麼010的鄰居是000, 110, 011.
11.LSH的過程總結一下?12.為什麼叫做Locality Sensitive hash?
If a hash has the tendency to put nearby data into the same bin, then it is a LS-Hash.13.那LS hash和普通的hash有什麼區別呢?
普通的hash,比如md5,如果一個位元組變了,那麼整個hash值就完全變了。
而LS hash的目的是讓值相近的hash後的值也相近。
前者是用來validate file用的,後者是detection duplicate file用的。
推薦閱讀:
※用「機器學習」做「股票預測」能做到什麼程度?
※機器學習中如何利用id類特徵?
※[機器學習實戰]k-近鄰演算法
※淺析循環神經網路RNN的兩種應用
※梯度下降法求解logisitic回歸及其python代碼實現
TAG:机器学习 |