ML算法选型

概念

均方差 MSE mean square error
平均绝对差 MAE mean absolute error
交叉损失熵 cross entropy
欠拟合:训练集和测试集性能接近
过拟合:训练集远远高于测试集性能

有监督学习算法比较

knn
调节:n_neighbors
优点:模型很容易解释。
缺点:
局限:仅适用于小数据集。
建议:预处理数据(将特征缩放到同一范围)能提高准确率。

线性模型
调节alpha或者C
优点:对维度非常高的稀疏数据(如文本数据)表现好。训练和预测速度快。适用于非常大的数据集。
缺点:泛化能力较差。

朴素贝叶斯模型
调节alpha
优点:对维度非常高的稀疏数据(如文本数据)表现好。训练和预测速度快。适用于非常大的数据集。
缺点:泛化能力比线性分类器较差。
局限:仅适用于分类。

决策树
调节 max_features, max_depth
优点:不需要对特征进行预处理(如放缩),不需要反复调节参数
缺点:容易过拟合,泛化能力差。数模型不能在训练数据范围之外进行预测。

random forest
调节n_estimators, max_features, max_depth
优点:不需要对特征进行预处理(如放缩),不需要反复调节参数。算法鲁棒性好。
缺点:对维度非常高的稀疏数据(如文本数据)表现不好。需要更大内存,训练和预测速度较慢。

梯度提升树
调节n_estimators, learning_rate。learning_rate控制每棵树对前一棵树错误的纠正强度。
优点:不需要对特征进行预处理(如放缩),预测时间比random forest较短,精度比random forest高。
缺点:对维度非常高的稀疏数据(如文本数据)表现不好。训练速度较慢。需要仔细调参,算法鲁棒性差。
建议:先尝试random forest,再尝试梯度提升树

svm
调节 核类型,gamma(等于核宽度的倒数),C。gamma/C越大对应越复杂的模型。
优点:适用于低维/高维数据。决策边界可以为非线性。
缺点:预处理数据(需要将特征缩放到同一范围)与调参都需要非常小心(对参数设置非常敏感)。模型很难检查,很难被解释。对大数据集,运行时间较长且内存需求大。

MLP
调节 hidden_layer_sizes(隐含层个数,以及每个层中单元个数(一般接近于输入特征个数)), activation(激活函数,默认为relu),solver(优化方法,默认为adam), alpha(正则化强度)。
优点:在足够计算时间和数据情况下,性能更优秀。
缺点:预处理数据(需要将特征缩放到同一范围,均值为0, 方差为1)与调参都需要非常小心。模型很难检查,很难被解释。训练时间很长。
建议:adam对数据缩放相当敏感,lbfgs算法鲁棒性好。调参步骤:(1) 创建过拟合网络;(2) 缩小网络;(3)增加正则项去提高泛化能力。

总结:
C, gamma越小对应越简单模型,泛化能力更强。
alpha越大对应越简单模型,泛化能力更强。

无监督学习算法比较

应用算法之前,都执行数据缩放处理。
kmeans
调节 n_clusters。
优点:适用于大数据集。速度较快。
缺点:需要给定聚类个数;k均值仅能找到相对简单的形状。依赖于初始化。
应用:矢量化,用簇中心来表示每个数据点。类比于pca

凝聚聚类
调节 n_clusters。
优点:适用于大数据集。速度较快。
缺点:需要给定聚类个数;仅能找到相对简单的形状。不能对新数据做出预测。
应用:找出簇中心个数

DBSCAN 带噪声的基于密度的空间聚类应用
调节 eps(定义了点与点之间接近的含义),min_samples。
优点:适用于较大数据集。不需要给定聚类个数;能找到相对复杂的形状。
缺点:不能对新数据做出预测。速度较慢。
不确定性:有时会生成大小差别很大的簇。

模型验证

评价泛化能力
train_test_split

k折交叉验证
调节 cv,用于指定分类器
cross_val_score
优点:比更train_test_split准确。
缺点:增加了计算成本。
应用:用于回归

分层k折交叉验证
避免某一个类别的数据都集中在某一个折中。导入sklearn.model_selection.StratifiedKFold
优点:比更train_test_split准确。
缺点:增加了计算成本。
应用:用于分类

打乱交叉验证
sklearn.model_selection.ShuffleSplit

分组交叉验证
比如将同一个人的数据放在一组
sklearn.model_selection.GroupKFold

posted @ 2018-09-24 12:46  sunzhuli  阅读(992)  评论(0编辑  收藏  举报