libsvm 和 liblinear 的组合在做分类的时候确实挺稳的,STSC(监督传输稀疏编码)就把这俩整合得挺溜的。作者直接放出了完整的 MATLAB 实现,实验脚本、可视化工具一应俱全,连原始手写数字数据也打包好了,真是省事。

STSC 的核心思想就是在源域和目标域之间搞点“传输学习”的事情,同时又加了稀疏编码这味料。适合那种样本分布不太一致、又要保持识别准确率的任务,比如跨域数字识别、图像分类啥的。

代码结构挺清晰的,重点在code/目录下,里面还用了子模块方式嵌套了LIBSVMLIBLINEAR,所以一定要用

git clone --recursive git@github.com:alshedivat/stsc.git

不然缺库就跑不动。安装的时候也别忘了在code/libsvm/matlabcode/liblinear/matlab下运行make,MATLAB 中直接执行就行:

cd code/liblinear/matlab
make
cd ../libsvm/matlab
make

跑实验也简单,直接在code/目录里跑起来就行了。并行支持也做得不错,适合丢多核机器上批量试参数,效率不低。数据集加载和预脚本都给你准备好了,拿来直接用。

如果你之前用过LibSVM或者搞过稀疏表达,那这个项目上手会蛮快。比较推荐看看作者的可视化脚本,嗯,调模型的时候挺有。

推荐几个相关资源,有时间可以顺手看看:

如果你刚好在找带迁移学习思想的稀疏编码方法,那这个 STSC 代码你值得一试。