既然SVM与Logistic非常相似,那是不是它们可以混合使用呢?结果是否定的,在不同的情况下,应该选择不同的算法。
用n表示Feature数量,m表示训练集个数。下面分情况讨论
n很大,m很小
n很大,一般指n=10000;m很小,一般m=10-1000。m很小,说明没有足够的训练集来拟合非常复杂的非线性模型,所以这种情况既可以选择线性kernel的SVM,也可以选择Logistic回归。
n很小,m中等
n很小,一般指n=1-1000;m很小,一般m=1000-10000。m中等,说明有足够的训练集来拟合非常复杂的非线性模型,此时适合选择非线性kernel的SVM,比如高斯核kernel的SVM。
n很小,m很大
n很小,一般指n=1-1000;m很大,一般m=50000-1000000。m很大,说明有足够的训练集来拟合非常复杂的非线性模型,但m很大的情况下,带核函数的SVM计算也非常慢。所以此时应该选线性kernel的SVM,也可以选择Logistic回归。n很小,说明Feature可能不足以表达模型,所以要添加更多Feature。
注意,一个结构合适的神经网络,可以适用以上提到的所有情况,但神经网络一般训练速度都很慢。