关于Andrew Ng的machine learning课程中,有一章专门讲解逻辑回归(Logistic回归),具体课程笔记见另一篇文章

下面,对Logistic回归做一个简单的小结:

给定一个待分类样本x,利用Logistic回归模型判断该输入样本的类别,需要做的就是如下两步:

① 计算逻辑回归假设函数的取值hθ(x),其中n是样本的特征维度

② 如果hθ(x)>=0.5,则x输入正类,否则,x属于负类

或者直接利用判别边界进行判断,即:如果θ'x>=0,则x输入正类,否则,x属于负类

所以,Logistic回归只能解决两类分类问题。

************************

这里一个很重要的问题就是,在对待分类样本进行分类之前,需要利用训练样本对该逻辑回归模型的参数θ=[θ1, θ2, ..., θn]进行求解

最优化的模型参数就是使代价函数取得最小值的参数,所以,只要利用优化,找到使得代价函数具有最小值的参数即可。

(1)给定参数theta的初始值

(2)利用函数fminunc对代价函数进行优化,求得最优化的theta值

该函数要求输入theta的初始值、梯度和代价函数的计算函数、其他设置

(3)得到最优化的theta值后,对于某一个待分类样本,计算它的假设函数取值或者是判定边界的取值,从而可以对其分类进行判别

************************

下面开始是softmax回归问题

第0步:初始化参数

①样本特征维数n (inputSize)

②样本类别数k (numClasses)

③衰减项权重  (lambda)

第一步:载人MNIST数据集

① 载入MNIST数据集

② 载入MNIST数据集的标签

在标签集中,标签0表示数字0,为了后续处理方便,将数字0的标签改为10

注1:实验中,有时为了调试方便,在调试时,可以加入合成数据;

注2:程序文件夹中,为了分类方便,将MNIST数据集和MNIST数据集的操作函数都存放在MNIST文件夹中,在使用前,加入语句addpath mnist/即可;

随机产生参数theta的初始值

它的维数是k*n,k是类别数numClasses,n是输入样本的特征维数inputSize

第二步:编写softmax函数

该函数的作用是计算代价函数及代价函数的梯度

(1)计算代价函数

① 代价函数的计算公式如下:

② 程序中的向量化计算方法如下:

(2) 计算梯度

① 梯度的计算公式如下:

② 程序中向量化计算方法如下:

第三步:梯度检验

在首次编写完softmax函数后,要利用梯度检验算法,验证编写的softmaxCost函数是否正确;直接调用checkNumericalCradient函数

第四步:利用训练样本集学习Softmax的回归参数

第五步:对于某一个待分类样本,利用求得的softmax回归模型对其进行分类

******关于向量化的程序公式的推导******

(1)已知参数的形式

① 参数θ的形式

② 输入数据x的形式

θx的乘积形式,记为矩阵M

(2)单个样本的成本函数

① 单个样本的成本函数

即:

② 单个样本的假设函数

但实际中,为了不会出现计算上的溢出,需要对假设函数的每一项都做如下调整

其中:

则有:

(3)m个样本的成本函数

m个样本的成本函数

m个样本的假设函数

其中:

(4) 计算梯度

① 单个样本的梯度计算

注1:

注2:

② m个样本梯度的计算

则有:

******按照神经网络的形式理解softmax模型******

(1)softmax模型,可以以神经网路的形式绘制,如下图所示

可以看到,softmax模型与传统的神经网络相比,只是输出层所使用的函数发生了变化:softmax模型使用的是指数函数,而神经网络使用的是sigmoid函数;

UFLDL教程(四)之Softmax回归的更多相关文章

  1. 从头学pytorch(四) softmax回归实现

    FashionMNIST数据集共70000个样本,60000个train,10000个test.共计10种类别. 通过如下方式下载. mnist_train = torchvision.dataset ...

  2. 【分类器】感知机+线性回归+逻辑斯蒂回归+softmax回归

    一.感知机     详细参考:https://blog.csdn.net/wodeai1235/article/details/54755735 1.模型和图像: 2.数学定义推导和优化: 3.流程 ...

  3. UFLDL教程笔记及练习答案三(Softmax回归与自我学习***)

    :softmax回归 当p(y|x,theta)满足多项式分布,通过GLM对其进行建模就能得到htheta(x)关于theta的函数,将其称为softmax回归. 教程中已经给了cost及gradie ...

  4. Deep Learning 6_深度学习UFLDL教程:Softmax Regression_Exercise(斯坦福大学深度学习教程)

    前言 练习内容:Exercise:Softmax Regression.完成MNIST手写数字数据库中手写数字的识别,即:用6万个已标注数据(即:6万张28*28的图像块(patches)),作训练数 ...

  5. UFLDL深度学习笔记 (二)SoftMax 回归(矩阵化推导)

    UFLDL深度学习笔记 (二)Softmax 回归 本文为学习"UFLDL Softmax回归"的笔记与代码实现,文中略过了对代价函数求偏导的过程,本篇笔记主要补充求偏导步骤的详细 ...

  6. Deep Learning 8_深度学习UFLDL教程:Stacked Autocoders and Implement deep networks for digit classification_Exercise(斯坦福大学深度学习教程)

    前言 1.理论知识:UFLDL教程.Deep learning:十六(deep networks) 2.实验环境:win7, matlab2015b,16G内存,2T硬盘 3.实验内容:Exercis ...

  7. Deep Learning 7_深度学习UFLDL教程:Self-Taught Learning_Exercise(斯坦福大学深度学习教程)

    前言 理论知识:自我学习 练习环境:win7, matlab2015b,16G内存,2T硬盘 练习内容及步骤:Exercise:Self-Taught Learning.具体如下: 一是用29404个 ...

  8. Deep Learning 10_深度学习UFLDL教程:Convolution and Pooling_exercise(斯坦福大学深度学习教程)

    前言 理论知识:UFLDL教程和http://www.cnblogs.com/tornadomeet/archive/2013/04/09/3009830.html 实验环境:win7, matlab ...

  9. Softmax 回归 vs. k 个二元分类器

    如果你在开发一个音乐分类的应用,需要对k种类型的音乐进行识别,那么是选择使用 softmax 分类器呢,还是使用 logistic 回归算法建立 k 个独立的二元分类器呢? 这一选择取决于你的类别之间 ...

随机推荐

  1. C++中this指针的使用方法.

    this指针仅仅能在一个类的成员函数中调用,它表示当前对象的地址.以下是一个样例: void Date::setMonth( int mn ) { month = mn; // 这三句是等价的 thi ...

  2. 1032 - Intersecting Dates

    A research group is developing a computer program that will fetch historical stock market quotes fro ...

  3. linux进程间通讯-System V IPC 信号量

    进程间通信的机制--信号量.注意请不要把它与之前所说的信号混淆起来,信号与信号量是不同的两种事物.有关信号的很多其它内容,能够阅读我的还有一篇文章:Linux进程间通信--使用信号.以下就进入信号量的 ...

  4. android开发之Bundle使用

    android开发中,我们经常需要在两个activity之间传递数据,最常用的莫过于使用intent.putXXX(),可是很多时候我们也会这样: Bundle bundle = new Bundle ...

  5. GUI编程笔记(java)09:GUI控制文本框只能输入数字字符案例

    1.首先我们看看我的需求,如下: 控制文本框只能输入数字字符   2.源代码: package cn.itcast_07; import java.awt.FlowLayout; import jav ...

  6. Js的History对象

    History回顾 window.history表示window对象的历史记录 window.history的简单回顾 历史记录中前进/后退,移动到指定历史记录点 window.history.bac ...

  7. 每日陌生php函数

    1,date_default_timezone_set(PRC) 设定一个脚本中所有日期函数的默认时区,PRC设置中国时区 2,microtime(true) 返回当前unix微秒时间戳 139868 ...

  8. 基于.net 职责链来实现 插件模式

    插件式的例子 QQ电脑管家,有很多工具列表,点一下工具下载后就可以开始使用了 eclipse ,X Server 等等 插件式的好处 插件降低框架的复杂性,把扩展功能从框架中剥离出来 让第三方有机会来 ...

  9. Tuning “enq:TX – row lock contention” events

    enq是一种保护共享资源的锁定机制,一个排队机制 排它机制从一个事务的第一次改变直到rollback or commit 结束这个事务, TX等待mode是6,当一个session 在一个表的行级锁定 ...

  10. linux下安装多个mysql实例(摘自国外:How to create multiple mysql instance in CentOS 6.4 and Red Hat 6.4)

    How to create multiple mysql instance in CentOS 6.4 and Red Hat 6.4 from:http://sharadchhetri.com/20 ...