机器学习常用算法体系

人工智能: 研究如何模拟实现人类智能的科学.
机器学习: 研究如何用计算机模拟实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能.

它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎.

深度学习: 机器学习的分支,是一种以人工神经网络为架构,对数据进行表征学习的算法.

将简单的模型叠加在一起,得到一个有深度的模型,从而得到具有一个具有更强大表达能力的新模型.

一.机器学习算法分类

1. 有监督学习

指对数据的若干特征与若干标签(类型)之间的关联性进行建模的过程. 只要模型被确定,就可以应用到新的未知数据上(由过去已知的标签对新数据进行分类预测).
  1. 分类 : 标签都是离散值
  2. 回归 : 标签都是连续值

2. 无监督学习

指对不带任何标签的数据特征进行建模,通常被看成是一种 "让数据自己介绍自己"的过程 (对数据的结构进行探索,不能预测未知数据).
  1. 聚类 : 将数据分成不同的类别
    2)== 降维 ==: 追求用更简洁的方式表现数据

3. 半监督学习

介于有监督和无监督之间,通常在数据不完整的时候使用.

4. 强化学习

不同于监督学习,强化学习将学习看作是试探评价过程,以’试错’的方式进行学习,并与环境进行交互以获得奖惩指导行为,以其评价.

下面是常用的有监督算法和无监督算法的算法大类总结:

机器学习常用算法体系

二.机器学习的关键概念:过拟合与欠拟合

1.过拟合

模型在训练集上表现很好(得分高),在测试集上表现很糟糕,学习能力很强,但学的太过精细了,在新数据上表现会很差.

2.欠拟合

模型在训练集和测试集上表现都很糟糕,学习能力不足.

3.拓展

1.线性回归模型逻辑回归模型是天生的欠拟合模型
2.决策树模型是天生的过拟合模型

三.机器学习的主要挑战

1.‘坏数据’

1) 训练数据数量不足,对于复杂问题而言,数据充足比算法选择更重要,但实际情况是中小型数据较普遍,额外的训练数据很难获得或者成本较高.
2) 训练数据不具代表性:

(1) 可能是由于本身不具备预测能力(过去数据与未来数据完全无关,是一个白噪声序列).
(2) 数据集太少而噪声明显.
(3) 采样偏差:例如1936年美国总统大选预测,大范围民意调查向1000万人发送邮件,得到240万回复.但采样问题:非随机采样,无反应偏差.
(4) 非随机采样:由于民意调查的地址来自电话簿,杂志订阅名单,俱乐部会员名单等类似名簿,这些人对富人有偏好.
(5) 无反应偏差:没有给出回复的人;不怎么关心政治的人;不喜欢民意调查组织者的人等等,都被排除在外.

3) 质量差的数据:包含较多缺失值和异常值----->处理方法:数据预处理.
4) 无关特征----->处理方式是特征工程:特征选择特征提取.

四.机器学习三大要素

1.模型

在监督学习过程中,模型就是所要学习的条件概率分布决策函数.

2.策略

在模型的假设空间中,按照一种准则进行学习或选取最优模型,这是机器学习的目标.

准则类型

1) 损失函数最小化 (应用于非概率模型)

下面是常用的损失函数:
机器学习常用算法体系

2) 经验风险最小化

模型 f(x) 关于训练数据集的平均损失称为经验风险 (empirical risk) 或经验损失 (empirical loss), 记为 R.
机器学习常用算法体系
理论上,我们学习的目标就是选择模型 f(X) 关于联合分布 P(X,Y) 的
期望损失(expected loss)最小的模型.根据大数定律,当样本容量N趋于无穷大时,经验风险就会趋于期望风险 . 所以我们可以尝试用经验风险来估计期望风险.

当模型是条件概率分布,损失函数是对数损失函数时,经验风险最小化就等价于极大似然估计.

3) 结构风险最小化

当样本量很小时,经验风险最小化学习效果就未必很好,会产生"过拟合(over-fitting)"现象.这时候就需要通过另一种策略来防止这种现象.

结构风险最小化是为了防止过拟合而提出的策略.结构风险最小化等价于正则化(regularization).结构风险在经验风险的基础上加上了表示模型复杂度的正则化项(regularizer)或罚项(penalty term).

3.算法

算法是指学习模型的具体计算方法.机器学习基于训练数据集,根据学习策略,从假设空间中选择最优模型,最后考虑用什么样的计算方法求解最优模型.这时,机器学习的问题归结为最优化问题.

五.机器学习的模型评估

1. 训练误差(training error): 在损失函数给定时,模型在训练集上的错分样本比率.假设学习到的模型是 Y,训练误差是模型 Y关于训练数据集上的平均损失.
2. 测试误差(empirical error): 在损失函数给定时,模型在测试集上的错分率,是模型 Y关于测试数据集的平均损失.

训练误差的大小,用来判断给定问题是不是一个容易学习的的问题.
测试误差的大小,则反映了模型对未知数据的预测能力.

测试误差小的学习方法具有很好的预测能力,如果得到的训练集和测试集的数据没有交集,通常将此预测能力称为泛化能力(generalization ability).

无论什么样的数据和方法,自由度上升,训练均方误差都将降低(其实等价于增加数据量).

3.高方差和高偏差

当运行一个学习算法时,如果这个算法的表现不理想,那么多半是出现两种情况:要么是偏差比较大,要么是方差比较大.

以射击为例:
高方差: 子弹射的到处都是 ----------> 过拟合
高偏差: 子弹全射到离目标很远的地方------------>欠拟合

解决高方差(也即过拟合) :
  1. 尝试获得更多的训练实例(数据)
  2. 尝试减少特征的数量
解决高偏差(也即欠拟合):
  1. 尝试获得更多的特征
  2. 尝试增加多项式特征

六.scikit-learn算法库实现

机器学习大部分的模型算法都是通过调用sklearn算法库来实现的,除了一些简单的算法如 KNN 和 Kmeans可以手写代码实现,其他算法手写难度较大,所以大多数情况下调包使用.

sklearn算法库包括以下几个大模块

1.四大机器学习算法

分类 (有监督) Classifier
回归 (有监督) Regression
降维 (无监督)
聚类 (无监督)

2.其他模块

特征提取
数据预处理
模型评估

以下为sklearn的API参数参考网址,可以在界面搜索框(crtl+f)输入要查看模型的关键词,里面会有模型的使用说明:

https://scikit-learn.org/stable/modules/classes.html

sklearn算法包的调参方式:

1.学习曲线
2.网格搜索

七.常用机器学习算法:

1.KNN

  1. KNN分类器
  2. KNN回归器

2.Kmeans聚类

3.朴素贝叶斯

  1. 高斯朴素贝叶斯
  2. 多项式朴素贝叶斯
  3. 伯努利朴素贝叶斯

4.线性回归

5.岭回归

6.Lasso回归

7.逻辑回归

8.决策树

  1. 分类树
  2. 回归树

9.集成算法

集成算法:将若干个弱分类器通过一定的策略组合之后产生一个强分类器.

集成算法的种类:
1) Bagging (袋装法)

并行集成方法(Bagging),其中参与训练的基础学习器并行生成(例如 Random Forest (随机森林)).并行方法的原理是利用基础学习器之间的独立性,通过平均可以显著降低错误.

每个基础学习器建立所使用的的数据是从训练集中有放回随机抽样出来的.

2) Boosting (提升法)

序列集成方法(Boosting),其中参与训练的基础学习器按照顺序生成(例如 AdaBoost).序列方法的原理是利用基础学习器之间的依赖关系.通过对之前训练中错误标记的样本赋值较高的权重,可以提高整体的预测效果.

3) Bagging VS Boosting
  1. 样本选择上
    Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的.
    Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化,而权值是根据上一轮的分类结果进行调整.

  2. 样例权重
    Bagging:使用均匀取样,每个样例的权重相等.
    Boosting:根据错误率不断调整样例的权重,错误率越高则权重越大,因此Boosting的分类精度要优于Bagging.

  3. 预测函数
    Bagging:所有预测函数的权重相等.
    Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更高的权重.

  4. 并行计算
    Bagging:各个预测函数可以并行生成,对于极为耗时的学习方法,Bagging可通过并行训练节省大量时间开销.
    Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果.

  5. 过拟合和欠拟合
    单个评估器存在过拟合问题的时候,Bagging能在一定程度上解决过拟合问题,但Boosting可能会加剧过拟合的问题.
    单个评估其学习能力较弱的时候,Bagging无法提升模型表现,Boosting有一定可能提升模型的表现.

  6. 算法目标
    Bagging:降低方差,提高模型整体的稳定性.
    Boosting:降低偏差,提高模型整体的精确度.
    Bagging和Boosting都可以有效地提高分类的准确性,在大多数数据集中,Boosting的准确性要高于Bagging.

组合策略:
1) 平均法

对于数值类的回归预测问题,通常使用的结合策略是平均法,也就是说,对于若干个弱学习器的输出进行平均得到最终的预测输出.

2) 投票法

(1) 相对多数投票法: 少数服从多数,也就是n个弱学习器的对样本x的
预测结果中,数量最多的类别Ci 为最终的分类类别.如果不止一个类别获得最高票,则随机选择一个做最终类别.

(2) 绝对多数投票法: 要票过半数,在相对多数投票法的基础上,不光要求获得最高票,还要求票过半数,否则会拒绝预测.

(3) 加权投票法:每个弱学习器的分类票数要乘以一个权重,最终将各个
类别的加权票数求和,最大的值对应的类别为最终类别.

3) 学习法

对于学习法,代表方法是stacking,当使用stacking的结合策略时, 我们不是对弱学习器的结果做简单的逻辑处理,而是再加上一层学习器,也就是说,我们将训练集弱学习器的学习结果作为输入,将训练集的输出作为输出,重新训练一个学习器来得到最终结果.

常见的集成算法:

  1. 随机森林 :
    随机森林分类器
    随机森林回归器

2.Adaboost (最具代表性的Boosting算法)
Adaboost分类器
Adaboost回归器

  1. GBDT(梯度提升算法,Boosting算法)
    GBDT分类器
    GBDT回归器

  2. XGBoost(极限梯度提升算法,Boosting算法)
    XGBoost分类器
    XGBoost回归器

10.支持向量机SVM

  1. 支持向量机分类器SVC

  2. 支持向量机回归器SVR