一、多元逻辑回归原理

1.1 多元逻辑回归问题

二元分类问题与多元分类问题如下图所示:

One-vs-all(one-vs-rest):

对于多类分类问题,可以将其看做成二类分类问题:保留其中的一类,剩下的作为另一类。例如:

1.2 多元逻辑回归常用步骤

1.2.1 构造预测函数

Logistic回归虽然名字里带“回归”,但是它实际上是一种分类方法,主要用于两分类问题(即输出只有两种,分别代表两个类别),使用Sigmoid函数,可以将任意实数映射到[0,1]区间,这样使用0.5作为阈值,可以利用回归方法解决分类问题,Sigmoid函数形式为:

Sigmoid 函数的图像为“S”形,如下图所示:

对于分类问题,确定决策边界(也叫分类边界),是非常重要的,下面左图是一个线性的决策边界,右图是非线性的决策边界。

对于线性边界的情况,边界形式如下:

构造预测函数为:

函数的值有特殊的含义,它表示结果取1的概率,因此对于输入x分类结果为类别1和类别0的概率分别为:

1.2.2 构造损失函数J

Cost函数和J函数如下,

它们是基于最大似然估计推导得到的。综合上述两式得

下面详细说明推导的过程: 将(1)式(1.2.1节最后)综合起来可以写成:

取似然函数为:

对数似然函数为:

最大似然估计就是求使 l(θ) 取最大值时的θ,其实这里可以使用梯度上升法求解,求得的θ就是要求的最佳参数。但是,在Andrew Ng的课程中将取为下式,即:

因为乘了一个负的系数-1/m,所以J(θ)取最小值时的θ为要求的最佳参数。

1.2.3 梯度下降法求的最小值

θ更新过程:

经过化简,θ更新过程可以写成:

二、基于Matlab的MNIST手写数字实验

2.1 输入输出数据处理

数据来自THE MNIST DATABASEof handwritten digits网站(

每一张图片包含28像素X28像素。可以用一个数字数组来表示这张图片,把这个数组展开成一个向量,长度是 28x28 = 784。从这个角度来看,MNIST数据集的图片就是在784维向量空间里面的点, 并且拥有比较复杂的结构。

在MNIST训练数据集中,mnist.train.images 是一个形状为 [60000, 784] 的张量,第一个维度数字用来索引图片,第二个维度数字用来索引每张图片中的像素点。在此张量里的每一个元素,都表示某张图片里的某个像素的强度值,值在0-255之间,归一化后,值介于0和1之间。

相对应的MNIST数据集的标签是介于0到9的数字,用来描述给定图片里表示的数字,为了方便训练,需要对输出 one-hot 编码 ,使标签数据是"one-hot vectors"。一个one-hot向量除了某一位的数字是1以外其余各维度数字都是0。所以在此教程中,数字n将表示成一个只有在第n维度(从0开始)数字为1的10维向量。比如,标签0将表示成([1,0,0,0,0,0,0,0,0,0,0])。因此, mnist.train.labels 是一个 [60000, 10] 的数字矩阵。

2.2 假设模型的选择

采用逻辑回归模型 h(w)=g(w’X+b),其中g(z)=1/(1+exp(z));  x为输入数据,28*28=784*1维数的向量 。

2.3 算法实现过程%%加载训练数据===============================

Load data;

%加载图片,784*60000的矩阵,表示60000张图片

train_images=data.train_images;

%加载标签数据,表示60000*1的矩阵,表示60000个标签

train_labels=data.train_images;

%%训练过程================================

%初始化参量w,b

w=zeros(784,10);

b=zeros(10,1);

%进行10次逻辑回归训练得到多个参量,再进行组装

for (i=1 to 10)

{

%两类逻辑分类训练,k为迭代次数,a为学习速率

[w1,b1]=BinLogistRrgressionTrain( train_images,train_labels,k,a);

w=joint(w,w1);

b=joint(b,b1);

}

%%仿真测试===========================

y=predict(test_images,w,b);

s=test(y,test_labels);%测试正确率

三、实验结果与数据分析

3.1 训练数据个数对准确率的影响

在迭代次数k=200,学习速率为a=0.5时的测试数据

由图可知,随着训练数据的增多,训练准确率也在增加,当训练数据很小时,准确率增加幅度较大,当训练数据很大时,准确率增长幅度减缓。但随着数据量的增加,计算量增加,训练时间也会增加。由此,可以选择训练数据量n=2000以上比较合适。

3.2 学习速率对准确率的影响

在训练数据为n=1000,迭代次数k=200时的测试数据

由图可知,当学习速率a<1时,随着学习速率a的增大,训练准确率也在增加,当学习速率啊a>1时,准确率幅度变化不大,轻微波动。由此,可以选择学习速率a=1左右比较合适。

3.3 迭代次数对准确率的影响

在训练数据为n=1000,学习速率a=0.5,a=1时的测试数据

由图可知,学习速率不同时,迭代次数的效果不同,当迭代次数k<300时,随着迭代次数k的增大,训练准确率也在增加,当学习速率啊k>300时,准确率幅度变化不大,甚至降低。由此,可以选择迭代次数k=300左右比较合适。

3.4 总结及选择合适参数

参考上述参数建议,选取一下几组数据进行训练与测试

由此可以选择参数训练数据个数n=6000,学习速率a=1,迭代次数k=200进行训练.。

3.5 本次实验结论及心得

通过采用简单的多类逻辑回归分类模型,使手写数字识别的准确率达到了89.2%,尽管不是很高,但也基本上实现了一个简单图像识别的功能,学到了一些经验,如,当要适当减少迭代次数以加快训练时间,可以适当增加学习速率,以至于准确率不会降低太多。

其次在该过程中,也遇到了不少问题,如当训练样本过多时(总训练样本有60000),训练时间太长,不能迅速得到模型,这是该方法的一个弊端。

参考资料:coursera课程:《机器学习》(由斯坦福大学Andrew NG讲授)

matlab逻辑回归两次成绩录取查询,【多元逻辑回归分类】基于matlab的MNIST实践相关推荐

  1. matlab应用于机械的实例,机械工程前沿著作系列:基于MATLAB的机械故障诊断技术案例教程(附光盘)简介,目录书摘...

    编辑推荐: 内容全面:涵盖基础篇.信号处理篇和模式识别篇,MATLAB使用方法和工程应用尽在掌握,一本书相当于三本书! 方法新颖:综合展示了作者团队多年来在机械故障诊断领域的新研究成果! 上手容易:采 ...

  2. matlab交通标志检测与分类,基于MATLAB的道路交通标志识别.doc

    基于MATLAB的道路交通标志识别摘要:本文介绍用MATLAB强大的计算功能和各种功能齐全的函数,图像工具箱来进行道路交通标志的识别.介绍基于LAB颜色模型的颜色特征提取和基于radon变换的形状特征 ...

  3. matlab信号分析实验报告,信号分析及处理实验报告(基于MATLAB).doc

    WORD 格式 整理 PAGE 学习 参考 资料 分享 武 汉 工 程 大 学 电气信息学院 专业班级 14通信3班 实验时间 12-16周周二上午 学生学号 1404200529 实验地点 4B31 ...

  4. 基于matlab的信号与系统实例,华南理工大学信号与系统实验基于Matlab的信号处理实例...

    第2讲基于Matlab的信号处理实例实验内容(1) (1) 读取给定的3D加速度信号文件,绘出信号波形: 程序源代码: function sy2 fid = fopen('run 100m_TROUS ...

  5. 2021年河北省高考成绩录取查询结果,2021年河北高考一本录取结果查询和录取通知书发放时间...

    河北高考一本录取结果查询和录取通知书发放时间从河北教育考试院获悉,河北高考成绩查询时间已经确定.同时,考生.家长关心的各批次录取时间也已出炉.其中,本科一批高等学校录取时间安排如下:本科一批第一志愿录 ...

  6. 计算机仿真技术-基于matlab的电子信息类课程课后答案,计算机仿真技术:基于MATLAB的电子信息类课程(第4版)...

    目 录 第1章 MATLAB语言概述\t1 1.1 MATLAB语言及特点\t1 1.2 MATLAB的工作环境\t2 1.2.1 MATLAB系统的安装\t2 1.2.2 MATLAB系统的启动\t ...

  7. 基于matlab的电机运行分析,电机模型分析及拖动仿真:基于MATLAB的现代方法

    第1章绪论 1.1MATLAB概述 1.2Simulink平台与MATLAB工具箱 1.2.1Simulink平台 1.2.2MATLAB工具箱 1.2.3SimPowerSystems工具箱 1.3 ...

  8. matlab 矩阵jocobi迭代_第6章 解线性方程组的迭代法(基于MATLAB)

    前面我们已经知道对于线性方程组,一般有两种数值解法:直接法和迭代法.直接法前面已经写过了,没看的同学可以移步阅读:直接法.本次主要讲述迭代法及其相应的MATLAB代码. 考虑线性方程组 当 为低阶稠密 ...

  9. 基于matlab的光学薄膜特性分析,基于matlab的光学薄膜特性分析

    <基于matlab的光学薄膜特性分析>由会员分享,可在线阅读,更多相关<基于matlab的光学薄膜特性分析(17页珍藏版)>请在金锄头文库上搜索. 1.目录1 技术指标 .12 ...

  10. matlab调幅举例,基于MATLAB的单边带调幅和解调的实现设计.doc

    基于MATLAB的单边带调幅和解调的实现设计 数字通信原理课程设计报告书 课题名称单边带调幅SSB和解调的实现设计姓 名学 号 院 系物理与电信工程系专 业通信工程指导教师 2010年 1月 15日 ...

最新文章

  1. C语言基础语法总结(一)
  2. C++STL的deque容器
  3. 学习 vuex 源码整体架构,打造属于自己的状态管理库
  4. 使用Prometheus监控Cloudflare的全球网络
  5. ci php view,CI映射(加载)数据到view层的方法,ciview_PHP教程
  6. OpenShift / RHEL / DevSecOps 汇总目录
  7. iPad上的Cookie到底有多长?
  8. 在Objective-C中分类对象和方法
  9. Axure 下载教程
  10. 51单片机Proteus仿真+Keil工程-实验5-单片机串行口中断实验
  11. 2014年第五届蓝桥杯C++B组第四题:史丰收速算
  12. 软件工程考研笔记整理(三小时速成)(1)
  13. 什么是初效过滤器_初效过滤器作用与原理
  14. c#拼图碎片形状_1-3拼图碎片
  15. 01.什么是数学建模
  16. TCPUDP压力测试工具
  17. c语言与编程语言的区别,C语言与其他编程语言的区别
  18. ACRO2010__系统性综述: 达到缓解的AS患者能否停用TNF拮抗剂
  19. No servers available for service: renren…。 Gateway 网关报503错误 ,已解决
  20. 电报电话的原理和作用

热门文章

  1. Python注释符号(多行注释和单行注释)用法详解
  2. 《墨菲定律》读书笔记之第一章——成功学的秘密
  3. 木瓜移动每日出海快讯0428:谷歌发布Q1财报
  4. 短时间提高英语口语方法
  5. 无人驾驶全局路径规划之路径平滑(贝塞尔曲线)
  6. ios 扫描本地音乐_iOS 获取 媒体资料库里的音乐(本地音乐)
  7. 2020.10.25丨全长转录组结构分析之可变剪切、lncRNA预测
  8. 深蓝词库转换2.5发布——支持微软五笔,支持Linux和macOS和更多命令行功能
  9. 远程接入Linux、unix、Windows工具-opentext ETX
  10. defy+me525+android2.3.6官方镜像包,V大DEFY/DEFY+ ME525 ME525+ 2.3.6巅峰优化版0.86(红头)...