机器学习算法分类
如何决定使用哪种机器学习算法
scikit-learn作为一个丰富的python机器学习库,实现了绝大多数机器学习的算法。
上图是scikit-learn的路径图,分成了分类、聚类、回归和降维四个方法
常用机器学习算法
1.线性回归 (Linear Regression)
2.逻辑回归 (Logistic Regression)
3.决策树 (Decision Tree)
4.支持向量机(SVM)
5.朴素贝叶斯 (Naive Bayes)
6.K邻近算法(KNN)
7.K-均值算法(K-means)
8.随机森林 (Random Forest)
9.降低维度算法(Dimensionality Reduction Algorithms)
10.Gradient Boost和Adaboost算法
这篇总结的很全面了 https://blog.csdn.net/han_xiaoyang/article/details/51191386
机器学习工作流程
1 抽象成数学问题
明确问题是进行机器学习的第一步。这里的抽象成数学问题,指的我们明确我们可以获得什么样的数据,目标是一个分类还是回归或者是聚类的问题,如果都不是的话,如果划归为其中的某类问题。
2 获取数据
- 数据决定了机器学习结果的上限,而算法只是尽可能逼近这个上限。数据要有代表性,否则必然会过拟合。
- 而且对于分类问题,数据偏斜不能过于严重,不同类别的数据数量不要有数个数量级的差距。
- 而且还要对数据的量级有一个评估,多少个样本,多少个特征,可以估算出其对内存的消耗程度,判断训练过程中内存是否能够放得下。如果放不下就得考虑改进算法或者使用一些降维的技巧了。如果数据量实在太大,那就要考虑分布式了。
3.特征预处理与特征选择
- 良好的数据要能够提取出良好的特征才能真正发挥效力。
- 特征预处理、数据清洗是很关键的步骤,往往能够使得算法的效果和性能得到显著提高。归一化、离散化、因子化、缺失值处理、去除共线性等,数据挖掘过程中很多时间就花在它们上面。
- 筛选出显著特征、摒弃非显著特征,这对很多结果有决定性的影响。这需要运用特征有效性分析的相关技术,如相关系数、卡方检验、平均互信息、条件熵、后验概率、逻辑回归权重等方法。
4 训练模型与调优
算法训练,现在很多算法都能够封装成黑盒供人使用。但是真正考验水平的是调整这些算法的(超)参数,使得结果变得更加优良。
5 模型诊断
这就需要对模型进行诊断的技术。
- 过拟合、欠拟合 判断是模型诊断中至关重要的一步。常见的方法如交叉验证,绘制学习曲线等。过拟合的基本调优思路是增加数据量,降低模型复杂度。欠拟合的基本调优思路是提高特征数量和质量,增加模型复杂度。
- 误差分析 也是机器学习至关重要的步骤。通过观察误差样本,全面分析误差产生误差的原因,是参数的问题还是算法选择的问题,是特征的问题还是数据本身的问题……
- 诊断后的模型需要进行调优,调优后的新模型需要重新进行诊断,这是一个反复迭代不断逼近的过程,需要不断地尝试, 进而达到最优状态。
6 模型融合
- 一般来说,模型融合后都能使得效果有一定提升。
- 工程上,主要提升算法准确度的方法是分别在模型的前端(特征清洗和预处理,不同的采样模式)与后端(模型融合)上下功夫。而直接调参的工作不会很多,毕竟大量数据训练起来太慢了,而且效果难以保证。