00- 机器学习算法汇总 (算法)

一句话概括:

  1. 聚类:无监督学习,学习结果将产生几个集合,集合中的元素彼此相似;
  2. 分类 (class) :有监督学习,学习结果将产生几个函数,通过函数划分为几个集合,数据对象是离散值
  3. 回归 (regression):有监督学习,学习结果将产生几个函数,通过函数产生连续的结果,数据对象是连续值

集成算法有三种(bagging ,Boosting,Stacking), 常见集成算法:

  • 随机森林(Random Forest: bagging + 决策树):   将训练集按照横(随机抽样本)、列(随机抽特征)进行有放回的随机抽取,获得n个新的训练集,训练出n个决策树,通过这n个树投票决定分类结果。主要的parameters 有n_estimators 和 max_features。
  • Adaboost (adaptive boosting: boosting + 单层决策树):  训练数据中的每个样本,并赋予其一个权重,这些权重构成了向量D。一开始,这些权重都初始化成相等值。首先在训练数据上训练出一个弱分类器并计算该分类器的错误率,然后在统一数据集上再训练分类器。在第二次训练中,会调高那些前一个分类器分类错误的样本的权重。如此反复,训练出许多分类器来进行加权投票,每个分类器的权重是基于该分类器的错误率计算出来的。

  • GBDT (Gradient Boosting Decision Tree: boosting + 决策树):GBDT与Adaboost类似,反复训练出多个决策树,每次更新训练集的权重是按照损失函数负梯度的方向。过程比较复杂,这里不赘述。参数说明:n_estimators是弱分类器个数;max_depth或max_leaf_nodes可以用来控制每棵树的规模;learning_rate是hyper-parameter,取值范围为(0, 1.0], 用来控制过拟合与欠拟合。

    • 决策树还有个兄弟回归树,GBDT也有个兄弟GBRT用来做回归

  • 自己设计根据bagging或者boosting思想,自己选择弱分类器来集成:  比如knn集成算法

可参考博客:  八种常见回归算法解析及代码


一  聚类算法

聚类算法是无监督学习的一种算法,也就是说,并没有一批已经打好标签的数据供机器训练模型。因此该算法用于在数据中寻找数据间隐藏的联系和区别。通过聚类后形成几个集合,集合内部的元素间具有较高的相似度,相似度的衡量可以通过欧几里得距离、概率距离、加权重距离计算。

常见的聚类算法有:

1.划分聚类: K-means 算法、k-medoids算法、K-pototypes算法、CLARANS算法

2.层次聚类:BIRCH算法、CURE算法、

3.密度聚类:DBSCAN算法、OPTICS算法、DENCLUE算法

4.网格聚类:STING算法、CLIQUE算法、WAVE-CLUSTER算法

5.混合聚类:高斯混合模型 (符合正太分布的聚类) 、CLIQUE算法(综合密度和网格的算法)

几个聚类算法的简单对比:

00- 机器学习算法汇总 (算法)_第1张图片

二  分类算法

分类算法要求先向模型输入数据的训练样本,从训练样本中提取描述该类数据的一个函数或模型。通过该模型对其他数据进行预测和归类,分类算法是一种对离散型随机变量建模或预测的监督学习算法,同时产生离散的结果。比如在医疗诊断中判断是否患有癌症,在放贷过程中进行客户评级等。

常见的分类算法:

1.决策树:ID3、C4.5(C5.0)、CART、PUBLIC、SLIQ、SPRINT算法;

2.神经网络:BP网络、径向基RBF网络、Hopfield网络、随机神经网络(Boltzmann机)、竞争神经网络(Hamming网络,自组织映射网络);

3.贝叶斯:朴素贝叶斯(Naive Bayes)算法、TAN算法;

4.基于关联规则的分类:CBA算法、ADT算法、CMAR算法、ARCS算法;

5.混合分类方法:Bagging算法、Boosting算法

6.支持向量机:SVM

7. K近邻:(K-Nearest Neighbor, KNN)knn

三  回归算法

回归算法与分类算法一样都是有监督的学习算法,因此也需要先向模型输入数据的训练样本。但是与分类算法的区别是,回归算法是一种对数值型连续随机变量进行预测和建模的监督学习算法,产生的结果也一般是数值型的。

例如向已经训练好的回归模型中输入一个人的数据,判断此人20年后的经济能力,则模型的回归结果是连续的,往往得到一条回归曲线。当自变量改变时,因变量呈现连续型变化。

常见的回归算法:

1.线性回归/逻辑回归/多项式回归:LR算法、LWLR算法(局部加权)、LRCV算法(交叉验证)、MLP算法(神经网络);

2.逐步回归;

3.岭回归

4.LASSO回归;

5.ElasticNet回归;

四  数据优化处理方式

  • 归一化: 减少数据不同数量级对预测的影响, 主要是将数据不同属性的数据都降到一个数量级。
    • 最大值最小值归一化:优点是可以把所有数值归一到 0~1 之间,缺点受离群值影响较大。
    • 0-均值标准化: 经过处理的数据符合标准正态分布,即均值为0,标准差为1, 有正有负。
  • 降低维度算法: 降低维度算法试图分析数据的内在结构,不过降低维度算法是以非监督学习的方式,试图利用较少的信息来归纳或者解释数据。这类算法可以用于高维数据的可视化或者用来简化数据以便监督式学习使用。
    • 常见的算法包括:主成份分析(Principle Component Analysis, PCA)、偏最小二乘回归(Partial Least Square Regression,PLS)、 Sammon 映射、多维尺度(Multi-Dimensional Scaling, MDS)、投影追踪(Projection Pursuit)等。
  • 多项式回归:数据升维,  数据不够时防止欠拟合, 通常是使用现有参数相乘, 或者自身平方达到增加数据量的目的。

    • 使用 PolynomialFeatures 进行 特征升维
    • 特征自身的高阶版:w_{0}x_{0}+w_{1}x_{1}+w_{2}x_{2}+w_{3}x_{1}^{2}+w_{4}x_{2}^{2}
    • 特征与特征之间的组合特征:w_{0}x_{0}+w_{1}x_{1}+w_{2}x_{2}+w_{3}x_{1}^{2}+w_{4}x_{2}^{2}+w_{5}x_{1}^{2}x_{2}+w_{6}x_{1}x_{2}^{2}

五  算法集成

集成算法有三种(bagging ,Boosting,Stacking

  • 1.  bagging: 训练多个分类器取平均(最典型的就是随机森林
    • 随机:数据采样随机,特征选择随机
    • 森林:多棵树
    • 随机优点:
      • 处理 很高维度(feature很多)的数据,并且不用做特征选择
      • 在训练完后,它能够给出哪些feature比较重要(根据噪音值训练出的结果影响程度)
      • 容易做成并行化方法,速度比较快
      • 可以进行可视 化展示,便于分析
  • 2、 Boosting: 从弱学习器(弱分类器)开始加强,通过加权来进行训练,先构造第一棵树,计算残差,每增加一颗树,与之前的树对比,使得残差变小 (典型代表是AdaBoost Xgboost)
    • AdaBoost : 第一次训练每个数据的权重是一样的,如果某一个数据分类错了,下一次的训练就会增增加这个数据的权重。
    • Xgboost: 高效地实现了GBDT算法并进行了算法和工程上的许多改进
    • 最终的结果:根据每棵树的准确性来确定树的权重
  • 3、 Stacking: 聚合多个分类或回归模型
    • 根据之前的多个算法的结果进行新的训练
    • 分阶段:第一阶段得出各自结果,第二阶段再用前一阶段结果训练
    • 可以堆叠各种各样的分类器(KNN,SVM,RF等)

你可能感兴趣的:(机器学习,算法,人工智能)