14年的时候有人做过一个实验,比较在不同数据集上(121个),不同的分类器(179个)的实际效果。
论文题为:Do we Need Hundreds of Classifiers to Solve Real World Classification Problems?
算法 | XGBOOST | GBDT | SVM | RF | Adaboost | Other |
---|---|---|---|---|---|---|
分类 | ||||||
随机森林 | 放回抽样(1/3) | 分类投票回归均值 | 样本和特征均随机采样 | CART二叉决策树,特征多次 | 减小方差并行 | 精度高且抗噪不敏高维 |
训练集噪音大 | 会导致过 | 拟合 | – | 子树较深 | – | |
AdaBoost | 高精度 | 不用特征工程 | 不易过拟合 | 减小偏差 | 放回抽样 | – |
异常值 | 敏感 | |||||
GBDT | CART树 | 深度<5 | 叶节点<10 | 减小偏差 | – | – |
异常值 | 敏感 | |||||
Xgboost | 高精度高并发 | 缺失值不敏感 | 自定义损失函数效率高 | 分类/回归 | 高维特征选择 | 加正则,列抽样 |
– | – | |||||
SVM | 可处理高维 | 可处理非线性 | 核函数可选 | 不易过拟合 | 需归一化距离 | 无需整个训练集 |
内存消耗大 | 核函数选择需技巧 | 不适于较大数据集 | 缺失值敏感 | – | 异常值敏感 | |
神经网络 | 准确率高并行处理 | 可分布式存储 | 数据量越大越强 | 特征间有隐含关系 | 鲁棒性 | 联想记忆 |
参数多 | 黑盒 | 时间长 | ||||
K-means | 简单易实现 | 大数据集 | ||||
局部收敛 | 适数值型 | K难取 | 初始质心敏感 | 噪敏感 | 不适于凸簇 | |
KNN | – | – | – | -可解释性强- | – | – |
贝叶斯 | 可解释性强 | 特征相关度低 | 高效处理高维,但效果差 | 条件独立难成立但效果还可以 | 易于实现 | |
决策树 | 树状结构易于理解 | 可处理非线性数据 | 不受异常值干扰 | 集成学习的基础 | 可处理缺失值样本 | 短期对大量样本好 |
易过拟合 | 忽略样本间相关性 | 特征选择函数缺陷 | – | – | – | |
逻辑回归 | 结果可解释 | 可正则避免过拟合 | 易于通过梯度下降优化 | 对数损失函数 | ||
非线性能力差 | ||||||
线性回归 | 直观易理解 | 正则化避免过拟合 | 线性模型 | 易于梯度下降优化 | 最小二乘法优化 | |
不能处理非线性 |