Adaptive Kernel Value Caching for SVM Training