分类算法

分类算法在解决大容量样本的时候通常面临两个问题即查找速率和存储空间的问题,这也是算法通常涉及到的时间复杂度和空间复杂度的问题。

在一些高端应用当中,时间复杂度更为突出,也就是查找性能更为重要。

比较流行的或者代表性的算法有hicuts,hypersplit,d2bs,hicuts是在两维上进行分割,而hypersplit是在多维上进行分割,适用性更强。

 值得一提的是broadcom网络处理器里面的分类实现方式是比较特殊也是非常有特色的,它的好处是对任何样本都有确定性,不会因为样本的不同而出现不同的资源消耗。

分类算法的理论基础是计算几何中多维空间的点定位问题。

 

几个基本的定理:

1.n个规则的每个维度(范围表示)最多可以形成2n+1个区间。端点最多是2n

 

算法复杂度:

如果2分那么其分割的时间复杂度为log(2n),F个维度就是F*log(2n)

 

hypersplit采用2分简化了预处理过程。

hypersplit主要采用的策略是:

1.空间分解

针对所有规则,在某一个维度上,得到所有的端点;

对端点进行排序;

按照一定的策略对规则进行划分,如取某个端点使两边的规则数相同的,或者两边端口相同,或者对区间进行一个加权的划分等等。

 

posted @ 2019-07-28 16:17  techx  阅读(846)  评论(0)    收藏  举报