机器学习-logistic逻辑回归原理 及 opencv实现

1.logistics回归原理

--吴恩达课程笔记

本笔记分成两部分:线性回归和逻辑回归,涉及概念:正规方程,过拟合,欠拟合,代价函数,梯度下降,学习率,正则化

1.1 线性回归

线性拟合即假设一个模型为多元线性方程(包括特殊的单元线性回归),回归方程可表示为:

机器学习-logistic逻辑回归原理 及 opencv实现

其中机器学习-logistic逻辑回归原理 及 opencv实现表示假设模型的参数,X表示模型的特征向量。

      模型的作用在于给定一个输入的特征向量X,预测输出值h,一个好的模型预测到的值越接近实际值越好。

对线性回归方程有两种解法:一是梯度下降,二是正规方程。

1.1.1梯度下降法

梯度下降法是通过迭代方法不断优化模型一种算法,优化目标函数成为代价函数(cost function),代价函数意味让模型预测值接近真值需要花费的代价,所以定义为:

机器学习-logistic逻辑回归原理 及 opencv实现

需要经过计算不断更新新的机器学习-logistic逻辑回归原理 及 opencv实现向量,使J沿梯度下降方向减少。当J对机器学习-logistic逻辑回归原理 及 opencv实现的偏导为0的时候,即达到局部最优。

由于这里是线性回归,则J为凸函数(可以证明),局部最优即是全局最优。每次迭代时输入的样本数据个数为m,“Batch”梯度下降,使用所有的样本数据计算J的偏导。计算过程为:

Repeat{

机器学习-logistic逻辑回归原理 及 opencv实现

}

其中j=0,1,2...,这里的机器学习-logistic逻辑回归原理 及 opencv实现要是同步更新的,即计算完所有的机器学习-logistic逻辑回归原理 及 opencv实现新值,再同时更新。机器学习-logistic逻辑回归原理 及 opencv实现为学习率,表示每次梯度下降的步长,学习率越大,梯度下降越快,但太大可能会造成无法收敛。过小则收敛会比较慢,所以选择合适的学习率比较重要。

考虑到输入的X中每一维的尺度不同,再进行回归前将其归一化到[-1,1]以内可加快收敛,这个范围只要接近就可以,如原数据范围为[-0.1,0.1]也可以不用归一化。

加快梯度下降速率的方法:

1.特征值归一化

2.合适的学习率

3.选择其他的优化模型,如BFGS,L-BFGS(共轭梯度),不需要设置学习率

4.正则化(Regularization)

正则化的概念后面再介绍

1.1.2正规方程

将线性回归问题构建成矩阵乘积:

机器学习-logistic逻辑回归原理 及 opencv实现

第一个矩阵用X表示,参数矩阵用机器学习-logistic逻辑回归原理 及 opencv实现表示,Y为输出矩阵,用极大似然估计可得到正规方程的解为:

机器学习-logistic逻辑回归原理 及 opencv实现

当m<n,或特征向量间存在线性关系时,逆矩阵无解,解决办法如下:

1.正则化

机器学习-logistic逻辑回归原理 及 opencv实现

其中机器学习-logistic逻辑回归原理 及 opencv实现为正则化系数。

2.删除一些特征值,如PCA降维

1.1.3总结

1.当n<10000时推荐使用正规方程

2.选择学习率时分两步,先按照10倍值间隔选取如

...,0.001,0.01,....

在按照3倍间隔选

1.2 Logistic回归

1.2.1 模型定义

解决分类问题,分为二分类和多分类,多分类是将n的分类转换为n个二分类解决,得到n个二分类的模型,输入特征值后,系统会计算n个模型的概率,取最大值为当前的分类,所以核心的问题为二分类模型。

问题描述:输入m个训练集   机器学习-logistic逻辑回归原理 及 opencv实现 

特征向量有n个,特征向量矩阵为n+1维,机器学习-logistic逻辑回归原理 及 opencv实现

y的值只有两个{0,1}

模型方程为机器学习-logistic逻辑回归原理 及 opencv实现

二分类问题就是找到一个决策边界将两个类别分开:

机器学习-logistic逻辑回归原理 及 opencv实现

如上图所示的将数据分成两类的决策边界,又叫拟合边界,而如上机器学习-logistic逻辑回归原理 及 opencv实现方程可以拟合任意的曲线。所以解决二分类问题是对机器学习-logistic逻辑回归原理 及 opencv实现求未知参数。机器学习-logistic逻辑回归原理 及 opencv实现可将二维的平面分成如下两个区域:

区域1:机器学习-logistic逻辑回归原理 及 opencv实现

区域2:机器学习-logistic逻辑回归原理 及 opencv实现

对二分类问题我们要求输出的值要在[0,1]的范围内,输出的值机器学习-logistic逻辑回归原理 及 opencv实现即是正样本的概率,如何保证模型的输出值是再[0,1]范围内,且要是单调递增,且h=0时,概率为0.5呢?(输出值正好在拟合边界上)

已知sigmode函数的曲线特点可用来解决此问题,

机器学习-logistic逻辑回归原理 及 opencv实现

sigmode函数为:机器学习-logistic逻辑回归原理 及 opencv实现,用h方程代替z,有

机器学习-logistic逻辑回归原理 及 opencv实现

对应优化模型为,

机器学习-logistic逻辑回归原理 及 opencv实现

加log是为了得到一个J的单调曲线,可以用极大似然推导,以后学习后补充。

1.2.2 参数拟合

仍然采用上文描述的梯度下降法,拟合出来的方程很容易出现过拟合,数据量过少,特征变量较多时容易出现。解决方案如下:

1.减少变量选择

2.选择合适的J优化算法

2.正则化

下面介绍正则化的

个人对正则化的理解:模型中包含n个未知数,每一个带求参数大小表示这个特征对模型的影响大小,受训练样本的影响,参数机器学习-logistic逻辑回归原理 及 opencv实现的值很难得到一个接近实际的值,如果有一个模型不去强调某一个特征的影响,训练时加入一个参数惩罚因子,定性考虑,可增强模型的泛化能力(一个模型应用到新样例的能力)。

正则化的作用:1.使每个参数更平均 2.不容易出现过拟合

根据正则化特点,在优化模型时要考虑两个问题:1.更好拟合模型 2.更小的参数,则优化的代价函数为

机器学习-logistic逻辑回归原理 及 opencv实现

公式末加入的惩罚因子也可以是L1,这里写的是L2。

优化时参数更新方程为:

机器学习-logistic逻辑回归原理 及 opencv实现

1.3总结

了解机器学习模型相关的概念,会对模型的参数进行调节。

2.模型练习

平台:opencv3.4.1+vs2019

内容:使用logistics回归训练手写字符模型,输入手写字符图片,输出预测结果。代码实现链接:

https://download.csdn.net/download/cjluzxyjd/12949378