XGBoost 是陈天奇(怪)领衔开发的一套 Gradient Boost 算法实现,比如我会用到它做 LambdaMART 的实验。如果要给它一个评价,那应该是:好用、耐操。

不过,也有甜蜜的烦恼。XGBoost 在每轮迭代后,能够贴心地给出模型在数据集上的指标。比如我会关心 NDCG 指标。然而,这里列印出来的指标,会比事后用标准算法计算出来的值要高不少。

阅读全文 »

所谓字符串匹配,就是拿着一个字符串(也称为模式串),去到另一个字符串(母串)里去查找完全相同的子串的过程。显然,只要能定义相等关系,那么字符串匹配算法可以扩展到任意的序列匹配算法。因此,这会是一类用途很广的算法。

解决字符串匹配问题,最朴素的办法就是拿着模式串逐字符地沿着待匹配的串去比对,每次向前移动一个字符,直到完全匹配或者找不到匹配。显然,这个算法的复杂度是 $O(n\cdot m)$($n$ 表示母串的长度,$m$ 表示模式串的长度),是比较高的。

这里介绍的 KMP 算法,能够在 $O(n)$ 时间内完成任务,它是由 Donald Knuth/James H. Morris/Vaughan Pratt 发明的。当然,你也可以称之为「看毛片算法」——你高兴就好。

阅读全文 »