TensorFlow训练Logistic回归

原创 2017年04月22日 20:05:56

Logistic回归

在用线性模型进行回归训练时,有时需要根据这个线性模型进行分类,则要找到一个单调可微的用于分类的函数将线性回归模型的预测值关联起来。这时就要用到逻辑回归,之前看吴军博士的《数学之美》中说腾讯和谷歌广告都有使用logistics回归算法。

如下图,可以清晰看到线性回归和逻辑回归的关系,一个线性方程被逻辑方程归一化后就成了逻辑回归。.

这里写图片描述

Logistic模型

对于二分类,输出y{0,1},假如线性回归模型为z=θTx,则要将z转成y,即y=g(z)。于是最直接的方式是用单位阶跃函数来表示,即

y=0,0.5,1,z<0;z=0;z>0;

如图,
这里写图片描述

但阶跃函数不连续,于是用sigmoid函数替代之,为

y=11+ez

如图,
这里写图片描述
则有,
y=11+e(θTx)

即logistics函数,可化为,
lny1y=θo+θ1x1+θ2x2+...+θmxm

此即为对数几率回归模型,其中y看成是样本x正例的概率,1-y则为样本x负例的概率,则
lnp(y=1|x)1p(y=1|x)=θTx

现在要解决的问题是如何求得θ。对于给定样本集{(xi,yi)}mi=1,每个样本出现的概率为,

p(yi,xi)=p(yi=1|xi)yi(1p(yi=1|xi))1yi

其中yi为1或0。则样本集出现的似然函数为
L(θ)=i=1mp(yi,xi)=i=1mp(yi=1|xi)yi(1p(yi=1|xi))1yi

对数似然为:

l(θ)=i=1mlnp(yi,xi)

=i=1myilnp(yi=1|xi)+(1yi)ln(1p(yi=1|xi))

=i=1myilnp(yi=1|xi)1p(yi=1|xi)+i=1mln(1p(yi=1|xi))

=i=1myiθTxii=1mln(1+eθTxi)

求对数似然最大化的θ。其中通过求导没办法求得解,所以肯定要用迭代去逼近最优解,可以用梯度下降法或者牛顿法求的解。

实现代码

import tensorflow as tf
from numpy import *

x_train = [[1.0, 2.0], [2.0, 1.0], [2.0, 3.0], [3.0, 5.0], [1.0, 3.0], [4.0, 2.0], [7.0, 3.0], [4.0, 5.0], [11.0, 3.0],
           [8.0, 7.0]]
y_train = [1, 1, 0, 1, 0, 1, 0, 1, 0, 1]
y_train = mat(y_train)

theta = tf.Variable(tf.zeros([2, 1]))
theta0 = tf.Variable(tf.zeros([1, 1]))
y = 1 / (1 + tf.exp(-tf.matmul(x_train, theta) + theta0))

loss = tf.reduce_mean(- y_train.reshape(-1, 1) * tf.log(y) - (1 - y_train.reshape(-1, 1)) * tf.log(1 - y))
train = tf.train.GradientDescentOptimizer(0.01).minimize(loss)

init = tf.initialize_all_variables()

sess = tf.Session()
sess.run(init)
for step in range(1000):
    sess.run(train)
print(step, sess.run(theta).flatten(), sess.run(theta0).flatten())

========广告时间========

鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以到 https://item.jd.com/12185360.html 进行预定。感谢各位朋友。

为什么写《Tomcat内核设计剖析》

=========================
欢迎关注:

这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

逻辑回归之tensorflow实现

逻辑回归是机器学习中很简答的一个栗子,这篇文章就是要介绍如何使用tensorflow实现一个简单的逻辑回归算法。 逻辑回归可以看作只有一层网络的前向神经网络,并且参数连接的权重只是一个值,而非矩阵。公...

TensorFlow实现 Logistic Regression

下面是用TensorFlow实现Logistic Regression,都做了标注。#encoding:utf-8import tensorflow as tf # 装在MNIST数据 from te...
  • Yaphat
  • Yaphat
  • 2016-11-26 11:19
  • 1401

深度学习笔记——深度学习框架TensorFlow(七)[TensorFlow广度&深度教程]

学习网站: https://www.tensorflow.org/versions/r0.12/tutorials/wide_and_deep/index.html#tensorflow-wide-...

TensorFlow 使用之 Logistics Regression

这篇文章主要讲使用 TensorFlow 进行 Logistics Regression 训练。 本文要解决的问题是使用逻辑回归解决一个二分类问题,即给定了人口普查的数据如人的年龄,性别,教育程度和职...

深度学习框架Tensorflow学习(五)-----多层感知器模型

一、多层感知器多层感知器(MLP,Multilayer Perceptron)是一种前馈人工神经网络模型,其将输入的多个数据集映射到单一的输出的数据集上。可以实现非线性判别式,如果用于回归,可以逼近输...

tensorflow tutorials(二):用tensorflow建立岭回归模型

声明:版权所有,转载请联系作者并注明出 岭回归模型与线性回归模型的不同点在于损失函数加了权重的范数 from __future__ import pri...

深度学习框架Tensorflow学习(四)----逻辑回归

一、逻辑回归介绍 逻辑回归(Logistic Regression)是机器学习中的一种分类模型,由于算法的简单和高效,在实际中应用非常广泛。本文主要从Tensorflow框架下代码应用去分析这个模型...

深度学习框架TensorFlow学习(一)------关于Tensorflow的简介和配置

1. 简介 百度百科:TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据...

TensorFlow学习笔记(3)--实现Softmax逻辑回归识别手写数字(MNIST数据集)

基于MNIST数据集的 逻辑回归模型做十分类任务 没有隐含层的Softmax Regression只能直接从图像的像素点推断是哪个数字,而没有特征抽象的过程。多层神经网络依靠隐含层,则可以组合出高阶...
  • lwplwf
  • lwplwf
  • 2017-03-06 22:15
  • 3003

TensorFlow实现逻辑回归分类器

TensorFlow是谷歌推出的深度学习框架,之前也看过官网的技术手册,但想着“纸上得来终觉浅”,于是决定自己编程实现一下,并把实现过程中遇到的问题记录下来,以便自己随时翻看。本文是关于逻辑回归分类器...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)