Posted on 2019-10-16 23:44
魔のkyo 阅读(324)
评论(0) 编辑 收藏 引用 所属分类:
机器学习
优缺点和注意项
K近邻
适用于小型数据集,基准模型,容易解释。不适用于高维稀疏数据,不能外推(超出训练数据集的范围进行预测)。
线性模型(最小二乘法、岭回归、Lasso回归、弹性网络、逻辑回归、线性支持向量机)
非常可靠的首选算法,适用于非常大的数据集,也适用于高维数据,可以外推。在低维空间中泛化性能可能很差(这还要看具体问题本身的特点,还可以通过扩展特征来增加线性模型的可用性)。
其中最小二乘法、岭回归、Lasso回归、弹性网络为回归器,不需要数据缩放。逻辑回归、线性支持向量机为分类器,逻辑回归如果不进行数据缩放会导致收敛较慢需要增加迭代次数,线性支持向量机需要进行数据缩放。
朴素贝叶斯(高斯朴素贝叶斯、伯努利朴素贝叶斯、多项式朴素贝叶斯)
只适用于分类问题。适用于非常大的数据集和高维数据,比线性模型速度快,精度低于线性模型。
决策树
速度很快,不需要数据缩放,可以可视化,很容易理解。不适用于高维稀疏数据,不能外推。
随机森林
几乎总是比单棵决策树的表现要好,鲁棒性很好(可以容忍训练集中有一些错误的数据),通常不需要反复调节参数就可以给出很好的结果,不需要数据缩放,不适用于高维稀疏数据,不能外推。
梯度提升机
是监督学习中最强大也最常用的模型之一。精度通常比随机森林略高,与随机森林相比,训练速度更慢,但预测速度更快,需要的内存更少,比随机森林需要更多的参数调节,不适用于高维稀疏数据,不能外推。
核支持向量机
是非常强大的模型,允许决策边界很复杂,在低维和高维数据集上的表现都很好。对于特征含义相似的中等大小(几千~几万这样的量级)的数据集很强大。需要数据缩放,对参数敏感,可以外推。
神经网络(多层感知机)
可以构建非常复杂的模型,特别是对于大型数据集而言。对于数据缩放敏感,对参数选取敏感。大型网络需要很长的训练时间。
scikit-learn中的算法实现
算法名
|
所属模块
|
分类器
|
回归器
|
主要参数(-号表示越小越模型复杂)
|
K近邻(KNN)
|
neighbors
|
KNeighborsClassifier
|
KNeighborsRegressor
|
-n_neighbors=5
|
最小二乘法
|
linear_model
|
|
LinearRegression
|
|
岭回归
|
linear_model
|
|
Ridge
|
-alpha=1
|
Lasso回归
|
linear_model
|
|
Lasso
|
-alpha=1
|
弹性网络
|
linear_model
|
|
ElasticNet
|
-alpha=1, l1_ratio=0.5
|
逻辑回归
|
linear_model
|
LogisticRegression
|
|
+C=1.0
|
线性支持向量机
|
svm
|
LinearSVC
|
LinearSVR
|
+C=1.0
|
高斯朴素贝叶斯
|
naive_bayes
|
GaussianNB
|
|
|
伯努利朴素贝叶斯
|
naive_bayes
|
BernoulliNB
|
|
-alpha=1.0
|
多项式朴素贝叶斯
|
naive_bayes
|
MultinomialNB
|
|
-alpha=1.0
|
决策树
|
tree
|
DecisionTreeClassifier
|
DecisionTreeRegressor
|
+max_depth
|
随机森林
|
ensemble
|
RandomForestClassifier
|
RandomForestRegressor
|
+n_estimators
|
梯度提升机
|
ensemble
|
GradientBoostingClassifier
|
GradientBoostingRegressor
|
+n_estimators, +learning_rate
|
核支持向量机
|
svm
|
SVC
|
SVR
|
kernel='rbf', +C, +gamma
|
多层感知机
|
neural_network
|
MLPClassifier
|
MLPRegressor
|
solver='lbfgs', -alpha, hidden_layer_sizes
|