K最近鄰算法:KNN用於分類和迴歸,需要考慮最近的鄰居。
分類就是編組。
迴歸就是預測結果。
特徵抽取意味着將物品轉換爲一系列可比較的數字。
能否挑選合適的特徵事關KNN算法的成敗
餘弦相似度不計算兩個矢量的距離,而比較它們的角度。適合如下情況: 假設有兩位品味類似的用戶,但其中一位打分時更保守。他們都喜歡Manmohan Desai的電影Amar Akbar Anthony,但Paul給了5星,而Rowan只給了4星,如果用距離公式,這兩位用戶可能不是鄰居,雖然他們的品味非常接近。
OCR識別是基於K最近鄰算法。
樸素貝葉斯分類器能計算出郵件爲垃圾郵件的概率,其應用領域與KNN相似。
搜索引擎基於反向索引(倒排索引)(inverted index)。
傅里葉變換可創建類似於Shazam這樣的音樂識別軟件。
並行算法:Hadoop的MapReduce。
布隆過濾器是一種概率型數據結構,它提供的答案有可能不對,但很可能是正確的。 爲了判斷一個網頁是否已被搜索引擎蒐集,可不使用散列表,使用布隆過濾器。
HyperLogLog 是一種類似於布隆過濾器的算法。如果Google要計算用戶執行的不同搜索的數量,可使用此算法。
HyperLogLog近似地計算集合中不同的元素數,與布隆過濾器一樣,它不能給出準確的答案,但也八九不離十,佔用內存少很多。
Simhash生成的散列值存在細微的差別,這讓你能夠通過比較散列值來判斷兩個字符串的相似程度。
線性規劃使用Simplex算法,來求一個問題的最優化解,