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算法,来求一个问题的最优化解,