教程总体简介:HMM模型、4.7 HMM模型API介绍、集成学习进阶、5.1 xgboost算法原理、5.2 xgboost算法api介绍、5.3 xgboost案例介绍、5.4 otto案例介绍 -- Otto Group Product Classification Challenge【xgboost实现】、数据变化可视化、5.5 lightGBM、5.6 lightGBM算法api介绍、5.7 lightGBM案例介绍、5.9 stacking算法基本思想、5.10 住房月租金预测、向量与矩阵的范数、朗格朗日乘子法、Huber Loss、极大似然函数取对数的原因、机器学习(算法篇 2 )、1.1 朴素贝叶斯算法简介、1.2 概率基础复习、1.3 案例、商品评论情感分析、2.1) 取出内容列、对数据进行分析、2.2) 判定评判标准 -- 1好评;0差评、朴素贝叶斯、1.4 朴素贝叶斯算法总结、2.1 SVM算法简介、支持向量机、2.3 SVM算法原理、2.4 SVM的损失函数、2.5 SVM的核方法、2.6 SVM回归、2.8 案例、数字识别器、2.9 SVM总结、3.1 初识EM算法、3.2 EM算法介绍、EM算法、3.3 EM算法实例、4.1 马尔科夫链、4.2 HMM简介、4.3 HMM模型基础、4.4 前向后向算法评估观察序列概率、4.5 维特比算法解码隐藏状态序列、逻辑回归、3.5 ROC曲线的绘制、4.1 决策树算法简介、决策树算法、4.2 决策树分类原理、4.3 cart剪枝、4.4 特征工程-特征提取、4.5 决策树算法a

<!-- start:bj1 --> 项目完整code和文档,小伙伴们---->git仓库

<!-- end:bj1 -->


全套教程部分目录:

支持向量机

学习目标

  • 了解什么是SVM算法
  • 掌握SVM算法的原理
  • 知道SVM算法的损失函数
  • 知道SVM算法的核函数
  • 了解SVM算法在回归问题中的使用
  • 应用SVM算法实现手写数字识别器

2.8 案例:数字识别器

学习目标

  • 应用SVM算法实现数字识别器

1 案例背景介绍

![image-20190814085138232]

MNIST(“修改后的国家标准与技术研究所”)是计算机视觉事实上的“hello world”数据集。自1999年发布以来,这一经典的手写图像数据集已成为分类算法基准测试的基础。随着新的机器学习技术的出现,MNIST仍然是研究人员和学习者的可靠资源。

本次案例中,我们的目标是从数万个手写图像的数据集中正确识别数字。

2 数据介绍

数据文件train.csv和test.csv包含从0到9的手绘数字的灰度图像。

每个图像的高度为28个像素,宽度为28个像素,总共为784个像素

每个像素具有与其相关联的单个像素值,指示该像素的亮度或暗度,较高的数字意味着较暗。该像素值是0到255之间的整数,包括0和255。

训练数据集(train.csv)有785列。第一列称为“标签”,是用户绘制的数字。其余列包含关联图像的像素值。

训练集中的每个像素列都具有像pixelx这样的名称,其中x是0到783之间的整数,包括0和783。为了在图像上定位该像素,假设我们已经将x分解为x = i * 28 + j,其中i和j是0到27之间的整数,包括0和27。然后,pixelx位于28 x 28矩阵的第i行和第j列上(索引为零)。

例如,pixel31表示从左边开始的第四列中的像素,以及从顶部开始的第二行,如下面的ascii图中所示。

在视觉上,如果我们省略“像素”前缀,像素组成图像如下:

000 001 002 003 ... 026 027
028 029 030 031 ... 054 055
056 057 058 059 ... 082 083| | | | ...... | |
728 729 730 731 ... 754 755
756 757 758 759 ... 782 783

![image-20190814090310960]

测试数据集(test.csv)与训练集相同,只是它不包含“标签”列。

3 案例实现

参考:案例_手写数字分类.ipynb

2.9 SVM总结

1 SVM基本综述

  • SVM是一种二类分类模型。

  • 它的基本模型是在特征空间中寻找间隔最大化的分离超平面的线性分类器。

    • 1)当训练样本线性可分时,通过硬间隔最大化,学习一个线性分类器,即线性可分支持向量机;
    • 2)当训练数据近似线性可分时,引入松弛变量,通过软间隔最大化,学习一个线性分类器,即线性支持向量机;
    • 3)当训练数据线性不可分时,通过使用核技巧及软间隔最大化,学习非线性支持向量机。

2 SVM优缺点:

  • SVM的优点:

    • 在高维空间中非常高效;
    • 即使在数据维度比样本数量大的情况下仍然有效;
    • 在决策函数(称为支持向量)中使用训练集的子集,因此它也是高效利用内存的;
    • 通用性:不同的核函数与特定的决策函数一一对应;
  • SVM的缺点:

    • 如果特征数量比样本数量大得多,在选择核函数时要避免过拟合;
    • 对缺失数据敏感;
    • 对于核函数的高维映射解释力不强

支持向量机

学习目标

  • 了解什么是SVM算法
  • 掌握SVM算法的原理
  • 知道SVM算法的损失函数
  • 知道SVM算法的核函数
  • 了解SVM算法在回归问题中的使用
  • 应用SVM算法实现手写数字识别器

3.1 初识EM算法

学习目标

  • 知道什么是EM算法

EM算法也称期望最大化(Expectation-Maximum,简称EM)算法。

**它是一个基础算法,是很多机器学习领域算法的基础,**比如隐式马尔科夫算法(HMM)等等。

EM算法是一种迭代优化策略,由于它的计算方法中每一次迭代都分两步,

  • 其中一个为期望步(E步),
  • 另一个为极大步(M步),

所以算法被称为EM算法(Expectation-Maximization Algorithm)。


EM算法受到缺失思想影响,最初是为了解决数据缺失情况下的参数估计问题,其算法基础和收敛有效性等问题在Dempster、Laird和Rubin三人于1977年所做的文章《Maximum likelihood from incomplete data via the EM algorithm》中给出了详细的阐述。其基本思想是:

  • 首先根据己经给出的观测数据,估计出模型参数的值
  • 然后再依据上一步估计出的参数值估计缺失数据的值,再根据估计出的缺失数据加上之前己经观测到的数据重新再对参数值进行估计
  • 然后反复迭代,直至最后收敛,迭代结束。

EM算法计算流程:

![image-20191209171743726]


小结

  • EM算法是一种迭代优化策略,由于它的计算方法中每一次迭代都分两步:

    • 其中一个为期望步(E步)
    • 另一个为极大步(M步)

3.2 EM算法介绍

学习目标

  • 知道什么是极大似然估计
  • 知道EM算法实现流程

想清晰的了解EM算法,我们需要知道一个基础知识:

  • “极大似然估计”

1 极大似然估计

1.1 问题描述

假如我们需要调查学校的男生和女生的身高分布 ,我们抽取100个男生和100个女生,将他们按照性别划分为两组。

然后,统计抽样得到100个男生的身高数据和100个女生的身高数据。

如果我们知道他们的身高服从正态分布,但是这个分布的均值<span>μ\muμ</span><span>δ2\delta^2δ​2​​</span>


问题:我们知道样本所服从的概率分布模型和一些样本,我们需要求解该模型的参数.

![image-20191209172747863]

  • 我们已知的条件有两个:

    • 样本服从的分布模型
    • 随机抽取的样本。
  • 我们需要求解模型的参数。

根据已知条件,通过极大似然估计,求出未知参数。

总的来说:极大似然估计就是用来估计模型参数的统计学方法。

1.2 用数学知识解决现实问题

问题数学化:

  • 样本集 [公式]

  • 概率密度是:[公式]) 抽到第i个男生身高的概率。

  • 由于100个样本之间独立同分布,所以同时抽到这100个男生的概率是它们各自概率的乘积,也就是样本集X中各个样本的联合概率,用下式表示:

![image-20191209173210213]

  • 这个概率反映了在概率密度函数的参数是θ时,得到X这组样本的概率。

  • 我们需要找到一个参数θ,使得抽到X这组样本的概率最大,也就是说需要其对应的似然函数L(θ)最大。

    • 满足条件的θ叫做θ的最大似然估计值,记为:![image-20191209173320678]

1.3 最大似然函数估计值的求解步骤

  • 首先,写出似然函数:![image-20191209173513758]

  • 其次,对似然函数取对数:![image-20191209173548584]

  • 然后,对上式求导,令导数为0,得到似然方程。

  • 最后,解似然方程,得到的参数值即为所求。

多数情况下,我们是根据已知条件来推算结果,而极大似然估计是已知结果,寻求使该结果出现的可能性最大的条件,以此作为估计值。


链接:[极大似然函数取对数的原因]

2 EM算法实例描述

我们目前有100个男生和100个女生的身高,但是**我们不知道这200个数据中哪个是男生的身高,哪个是女生的身高,**即抽取得到的每个样本都不知道是从哪个分布中抽取的。

这个时候,对于每个样本,就有两个未知量需要估计:

(1)这个身高数据是来自于男生数据集合还是来自于女生?

(2)男生、女生身高数据集的正态分布的参数分别是多少?

具体问题如下图:

![image-20191209191437747]

对于具体的身高问题使用EM算法求解步骤如下:

![image-20191209171743726]

(1)**初始化参数:**先初始化男生身高的正态分布的参数:如均值=1.65,方差=0.15;

(2)**计算分布:**计算每一个人更可能属于男生分布或者女生分布;

(3)重新估计参数:通过分为男生的n个人来重新估计男生身高分布的参数(最大似然估计),女生分布也按照相同的方式估计出来,更新分布。

(4)这时候两个分布的概率也变了,然后重复步骤(1)至(3),直到参数不发生变化为止

3 EM算法流程

输入:

  • n个样本观察数据 [公式]) ,未观察到的隐含数据 [公式]) ,
  • 联合分布 [公式]) ,条件分布 [公式]) ,最大迭代次数<span>JJJ</span>

算法步骤:

1)随机初始化模型参数θ的初值 [公式]

2)<span>j=1,2,...,Jj=1,2,...,J j=1,2,...,J</span>

  • E步:计算联合分布的条件概率期望:

![image-20200205170052944]

  • M步:极大化 [公式]) ,得到 [公式] :

![image-20200205170259213]

  • 如果[公式] 已经收敛,则算法结束。否则继续进行E步和M步进行迭代。

**输出:**模型参数θ。


3 小结

  • 极大似然估计

    • 根据已知条件,通过极大似然估计,求出未知参数;
    • 极大似然估计就是用来估计模型参数的统计学方法。
  • EM算法基本流程

    • 1) 初始化参数;
    • 2) 计算分布;
    • 3) 重新估计参数;
    • 4) 重复1-3步,直到参数不发生变化为止。