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())

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

公众号的菜单已分为“分布式”、“机器学习”、“深度学习”、“NLP”、“Java深度”、“Java并发核心”、“JDK源码”、“Tomcat内核”等,可能有一款适合你的胃口。

鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以购买。感谢各位朋友。

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

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

这里写图片描述

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

【TensorFlow】TensorFlow 的 Logistic Regression

前面提到了使用 TensorFlow 进行线性回归以及学习率、迭代次数和初始化方式对准确率的影响,这次来谈一下如何使用 TensorFlow 进行 Logistics Regression(以下简称L...

TensorFlow训练单特征和多特征的线性回归

线性回归线性回归是很常见的一种回归,线性回归可以用来预测或者分类,主要解决线性问题。相关知识可看“相关阅读”。主要思想在TensorFlow中进行线性回归处理重点是将样本和样本特征矩阵化。单特征线性回...

【TensorFlow】TensorFlow的线性回归

前面有篇博文讲了讲Ubuntu环境下安装TensorFlow,今天来说一说在TensorFlow中如何进行线性回归。 训练数据本次使用的训练数据是美国房价数据,做了一些预处理,完整数据可从这里下载,原...

Tensorflow实现线性回归

Tensorflow实现线性回归之前有一篇文章已经写过如何使用tensorflow实现linear regerssion,使用的是官方提供的例程,这次我在原来基础上改写了一些问题,并加入了tensor...

线性回归、梯度下降以及运用TensorFlow进行简单实现

参考: 机器学习入门:线性回归及梯度下降 TensorFlow线性回归Demo 线性回归属于监督学习,因此方法和监督学习应该是一样的,先给定一个训练集,根据这个训练集学习出一个线性函数,然后测试...

深度学习框架TensorFlow学习(三)----线性回归

在开始给大家讲这个东西之前呢,我先说一下我在这个程序中遇到的一个小问题。我电脑配置是 Ubuntu 14.04 python版本是2.7.0 都是装系统时候自带的那些,好多东西是没有包含进来的,都需要...

TensorFlow深度学习笔记 逻辑回归 实践篇

Practical Aspects of Learning 转载请注明作者:梦里风林 Github工程地址:https://github.com/ahangchen/GDLnotes 欢迎s...
  • jdbc
  • jdbc
  • 2016年07月10日 22:50
  • 3056

Tensorflow 多任务学习

之前在caffe上实现了两个标签的多任务学习,如今换到了tensorflow,也想尝试一下,总的来说也不是很复杂。建立多任务图多任务的一个特点是单个tensor输入(X),多个输出(Y_1,Y_2.....
  • Yan_Joy
  • Yan_Joy
  • 2017年03月15日 20:24
  • 2187

TensorFlow——训练自己的数据(三)模型训练

参考:Tensorflow教程-猫狗大战数据集 文件training.py 导入文件 import os import numpy as np import tensorflow as tf im...

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

一、逻辑回归介绍 逻辑回归(Logistic Regression)是机器学习中的一种分类模型,由于算法的简单和高效,在实际中应用非常广泛。本文主要从Tensorflow框架下代码应用去分析这个模型...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TensorFlow训练Logistic回归
举报原因:
原因补充:

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