美文网首页程序员
对数几率回归

对数几率回归

作者: LoveToday2020 | 来源:发表于2020-03-07 21:45 被阅读0次

对数几率回归是利用广义线性模型解决二分类任务的一种方法。

对数几率回归简称对率回归,是使用Sigmoid函数作为联系函数时的广义线性模型,是广义线性模型的一个特例。

对于一个线性回归的模型我们一般都会定义为

y = W^TX + b

为了做一个二分类的估计我们可以做一个概率的判断

单位阶跃函数

但是单位阶跃函数是不连续的,难以求导,所以用对数几率函数替代

y = \frac{1}{1+e^z }

此函数最为一个激活函数在二分类的问题上简直是完美,此函数的特征

sigmoid函数

此函数有个自己的名字叫做sigmoid函数,我们可以看到在整个实数域上其结果值都限制在(0,1)中。

由此得到拟合模型

\hat{y} = \frac{1}{1+e^-(w^T+b )  }

为了简单我们设

参数替换

于是便有

使用极大似然估计对于y=1的概率,可以得到数据集每个样本的概率是

对于y_{i} \in {0,1},则有

最终损失函数

最小时的\beta 值,就可求出模型参数

最后使用梯度下降法进行拟合求出\iota 最小时\beta 的值

下面来看一个泰坦尼格号营救计划的一个实例

tensorflow 1.14.0

import pandas as pd
import numpy as np
import tensorflow as tf

一、数据准备

a.读取数据

data = pd.read_csv('./datasets/train.csv')

b.查看数据结构

train.csv

c.数据数据处理

data = data[[ 'Survived', 'Pclass', 'Sex', 'Age', 'SibSp',

      'Parch', 'Fare', 'Embarked']]

#对于null 值进行0的填充

data = data.fillna(0)

#将 pclass 数据设置成独热编码

data['p1'] = np.array(data['Pclass'] == 1).astype(np.float64)
data['p2'] = np.array(data['Pclass'] == 2).astype(np.float64)
data['p3'] = np.array(data['Pclass'] == 3).astype(np.float64)

#删除无用项

del data['Pclass']

#查看Embarked项的值分布

data.Embarked.unique()

#将 Embarked 数据设置成独热编码

data['e1'] = np.array(data['Embarked'] == 'S').astype(np.float64)

data['e2'] = np.array(data['Embarked'] == 'C').astype(np.float64)

data['e3'] = np.array(data['Embarked'] == 'Q').astype(np.float64)

del data['Embarked']

data_data = np.stack([data.Sex.values.astype(np.float64), data.Age.values.astype(np.float64), data.SibSp.values.astype(np.float64), data.Parch.values.astype(np.float64), data.Fare.values.astype(np.float64), data.p1.values, data.p2.values, data.p3.values, data.e1.values, data.e2.values, data.e3.values ]).T

data_target = np.reshape(data.Survived.values.astype(np.float64), (891,1))

二、网络设置

a.设置参数

x = tf.placeholder('float', shape=[None, 11])

y = tf.placeholder('float', shape=[None, 1])

b.输入训练数据

weights = tf.Variable(tf.random_normal([11,1]))

bias = tf.Variable(tf.random_normal([1]))

c.执行推断

output = tf.matmul(x, weights) + bias

pred = tf.cast(tf.sigmoid(output)>0.5, tf.float32)

d.计算损失

loss = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(labels=y, logits=output))

e.训练模型 

train_step = tf.train.GradientDescentOptimizer(0.001).minimize(loss)

f.评估

accuracy = tf.reduce_mean(tf.cast(tf.equal(pred, y), tf.float64))

最后开始进行训练

sess = tf.Session()

sess.run(tf.global_variables_initializer())

for i in range(10000):

    for n in range(len(data_target)//100):

        index = np.random.permutation(len(data_target))

        data = data_data[index]

        target = data_target[index]

        batch_xs = data[n:n+100]

        batch_xy = target[n:n+100]

        sess.run(train_step, feed_dict={x: batch_xs, y: batch_xy})

    if i%1000 == 0:

        print(sess.run((loss, accuracy), feed_dict={x:batch_xs, y:batch_xy}))

训练输出

相关文章

  • 对数几率回归

    对数几率回归是利用广义线性模型解决二分类任务的一种方法。 对数几率回归简称对率回归,是使用Sigmoid函数作为联...

  • 对数几率回归(logistic 回归)

    写在前面:强烈推荐阅读此文提到的思考问题。 相关定义 对数几率分布 设是连续随机变量,服从对数几率分布是具有以下分...

  • 对数几率回归(logistic回归)

    学习西瓜书关于logit回归(对数几率回归),参考一对相关内容进行了记录,参考二对其中的公式进行了推导。 Refe...

  • 线性模型——对数几率回归算法推导

    目录 一、广义线性模型 二、对数几率回归的广义线性建模推导过程 三、极大释然估值法 四、对数几率回归的参数估计 五...

  • 线性回归到对数几率回归

    一、回归(Regression) 回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的...

  • tensorflow logistic回归模型

    logistic定义 对数几率回归(也称“逻辑回归”)(英语:Logistic regression 或logit...

  • Logistic Regression (对数几率回归)

    Hi everyone,大家好, Today, let's talk about logistic regress...

  • 面经 机器学习

    1.逻辑回归(logistic Regression,LR),也称为"对数几率回归",又称为"逻辑斯谛"回归 !虽...

  • 逻辑斯蒂回归在二分类中的应用

    逻辑回归简介 逻辑斯蒂回归(logistic regression,又称“对数几率回归”)是经典的分类方法。逻辑斯...

  • 机器学习算法一览

    回归 普通最小二乘回归 线性回归 对数几率回归 逐步回归 多元自适应回归样条法 局部散点平滑估计 Jackknif...

网友评论

    本文标题:对数几率回归

    本文链接:https://www.haomeiwen.com/subject/emvhdhtx.html