摘要:本文主要介绍使用深度学习框架Pytorch实现简单的Logistic回归模型,进而实现简单的分类问题。
一.逻辑回归简述
逻辑回归实质上是线性回归,把特征线性求和(一阶)之后再使用Sigmoid函数将结果映射到[0,1]区间,得到分类结果为1的概率大小。具体表达式如下:
h(w,x) =1/(1+exp(-(w*x+b)))
其中x为特征向量,可以表示为[x1,x2,....,xN],的取值范围为[0,1]表示分类结果为1的概率大小。通过公式可以看出,逻辑回归可以理解为单层的全连接网络加上sigmoid激活函数的神经网络结构,具体如下:
其中f(x)为sigmoid函数,函数图像为:
二.Pytorch简述
Pytorch是一个Python优先的深度学习框架,支持GPU加速、支持动态图构建。你可以将它理解为类似Numpy的数学库,换句话理解,Pytorch是GPU上运行的Numpy,主要包的模块有:torch.autograd支持动态微分;torch.nn支持建立神经网络;torch.optim定义了各种优化函数;torch.multiprocessing支持多线程;torch.utils支持数据导入或处理。详情可以参见:http://pytorch.org
三.数据简述
本文实现逻辑回归的二分类,主要使用UCI的机器学习数据,German信用数据,选择numeric类型的数据。数据地址:https://archive.ics.uci.edu/ml/machine-learning-databases/statlog/german/。 数据主要有24个属性,两个类别(1表示GoodMan, 2表示Bad Man).数据格式如下:(1000*25,1000组数据,24个属性,1个类别)
四.具体实现
(1)数据预处理
对于数据主要进行去中心化和标准化处理,避免不同属性由于数值大小不同对分类结果产生偏差。
(2)模型定义
使用Pytorch的nn模块,定义LR模型,使用Linear定义线性网络,再使用Functional的sigmoid函数来激活,具体如下。
(3)训练与测试
训练过程:定义损失函数为交叉熵函数,优化算法为SGD算法,使用backward进行迭代优化
测试过程:
(4)结果
领取 专属20元代金券
Get大咖技术交流圈