十分钟了解算法(3)——有趣的算法

版权声明:本文为博主原创,未经博主允许不得转载。 https://blog.csdn.net/weixin_36904568/article/details/88831387

一:KNN算法

(一)概念

K最近邻,就是k个最近的邻居的意思,每个样本都可以用它最接近的k个邻居来代表。

(二)特点

如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。

(三)使用

1. 特征抽取

  1. 挑选合适的特征
  2. 确定样本的特征值,建立n维坐标轴
  3. 标出每个样本的点,并使用毕达哥拉斯公式计算两点间的距离,这表示两个样本的相似程度。
  4. 对样本进行分类

2. 回归

  1. 根据步骤一分好类后,选取样本的K位邻居的某个值求平均
  2. 结果就是该样本求某个值的预测结果

二:二叉查找树

  • 可以动态的增删数据,同时还可以快速查找。
  • 左子树比根节点小,右子树比根节点大
  • 数据库使用B树来存储数据

三:反向索引

  • 原来的索引是每篇文章作为索引,指向它所包含的字符
  • 反向索引是由字符作为索引,指向它出现过的文章

四:傅里叶变换

  • 对于图片或音乐,分解为多个频率。可以处理信号,压缩图片或音乐。

五:并行算法

  • 在多个内核的计算机中分配多个任务,做好负载均衡。

1. MapReduce分布式算法:包含映射和归并两个部分

  • 映射函数接受数组,并且对每个元素进行分配,执行同一个操作。
  • 归并函数接受数组,并且转换为一个元素

2. 概率型数据结构与算法:布隆过滤器+HyperLogLog

  • 占用内存少
  • 结果可能错,但是不会漏。

六:SHA算法和SimHash算法

SHA:

  • SHA是一个散列函数 ,它生成一个散列值(一个较短的字符串,散列函数根据字符串生成数组索引),而SHA根据字符串生成另一个字符串。
  • SHA无法逆向推理,只能通过键推出值,无法通过值推出键。
  • 局部不敏感

SimHash:

  • 局部敏感

七:Diffie-Hellman和RSA算法

  • 双方无需知道加密算法。
  • 使用公钥对其进行加密,加密后的消息只有使用私钥才能解密

猜你喜欢

转载自blog.csdn.net/weixin_36904568/article/details/88831387