开始接触一个机器学习的任务时,需要简单的考虑:
1. 样本数据集多大?
如果样本集不大,可以考虑用简单的LR、NB、KNN来解决,因为更复杂的学习算法很可能在样本集上过拟合,反而不如简单的分类器取得的效果好。
2. 有多少带有标注的样本?
目前的深度学习类有监督学习算法对标记样本的依赖比较严重,往往需要大量的相对clean的标记样本。
无监督学习可以获取数据的分布情况,但往往无法精确的量化到可以产品实用的程度。
对于标记样本很少,而未标记样本很多的情况,可以考虑使用半监督学习的方法。
3. 选取什么样的特征?
对于分类问题,特征的维度多少会影响分类器的选择,维度过高可能引起维数灾难,并且减慢训练测试的速度。维度过低可能会减少特征中的有用分类信息,降低检测准确率。
另一个需要考虑的问题是特征的稀疏性,高维的稀疏特征是可以采用一些特殊的分析分类方法(利用稀疏矩阵特性)进行解决的,也可以进行降维(PCA、SVD)而不至于损失太多有效特征。
4. Last but not the least -- 样本的本身属性
样本是图像、音频或是文本?样本的特征是否是可量化成数值的,或是用类别表示的属性?如果问题可以用简单的判断逻辑解决,就没有必要引入机器学习。
附上scikit-learn数据库关于算法模型选择的流程图: