2.【Python】分类算法—Logistic Regression

2.【Python】分类算法—Logistic Regression


前言

逻辑回归算法一般用于二分类问题,属于典型的监督学习,此算法的复杂度低容易实现。


一、Logistic Regression模型

1.线性可分和线性不可分

在介绍Logistic Regression之前,先了解线性可分和线性不可分的概念。对于分类问题,如果样本可以用线性函数进行分类,则成为线性可分,如图1.1所示;否则成为线性不可分,如图1.2所示。
图1.1 线性可分

图1.1 线性可分(图侵删)

在这里插入图片描述

图1.2 线性不可分(图侵删)

2.Logistic Regression模型

Logistic Regression属于线性分类模型,如图1.1所示的线性函数可以表示为:

Wx+b=0

其中,W为权重,b为偏置。通过对样本的训练,可以得到两个类别的数据,利用阈值函数可以将样本映射到不同类别中,最常用的阈值函数为Sigmoid函数,公式为:
在这里插入图片描述
在这里插入图片描述

(图侵删)

如图所示,是将样本映射至值域(0,1)之间,以下为python的实现过程。

import numpy as np

def sig(x):
	'''sigmoid函数
	input:x(mat):feature*w
	output:sigmoid(x)(mat):sigmoid值
	'''
	return 1.0/(1+np.exp(-x))

3.损失函数

为了求权重w和偏置b,需要先了解损失函数。
若输入值为x,输出值为y,则样本属于y的概率应该为P(y)P(1-y),表示为:
在这里插入图片描述
σ为sigmoid函数。可以使用极大似然法对W和b进行参数估计,假设有m个训练样本,则其似然函数为:
在这里插入图片描述
为了将乘法变为加法,将使用log函数进行对数求解。在Logistic Regression算法中,通常将负的log似然函数当做损失函数,因为损失函数求出的概率越小,损失越小。
在这里插入图片描述
此时需要求min l(W,b)。

二、梯度下降法

梯度下降法是寻找最优的权重W,用的最多的是基于梯度下降的优化函数。

1.梯度下降的过程

选取初始点X0

选取梯度下降的方向,选择步长,在某一时刻到达X3

若判断没有满足终止条件,则重复以上过程,直至找到最优解(最小值)。
在这里插入图片描述

(图侵删)

注意可能存在多个局部最优解得情况,全局最优解就是某一个局部最优解。

2.基于梯度下降法训练Logistic Regression模型

∇为梯度,根据梯度下降法得到权重的更新公式表示为:
在这里插入图片描述
具体过程如下:

def lr_train_bgd(feature,label,maxcycle,alpha):
	'''利用梯度下降训练LR模型
	input:feature(mat)特征
		label(mat)标签
		maxcycle(int)最大迭代次数
		alpha(float)学习率
	output:w(mat):权重
	'''
	n = np.shape(feature)[1] #特征个数
    w = np.mat(np.ones((n, 1))) #初始化权重
    i = 0
    while i <=maxcycle: #在最大迭代次数的范围内
        i += 1 #当前的迭代次数
        h = sig(feature * w) #计算sigmoid的值
        err = label - h
        if i % 100 ==0:
            print("\t---iter="+str(i)+",train error rate="+str(error_rate(h,label)))
        w = w + alpha*feature.T * err #权重修正
    return w

利用函数lr_train_bgd对损失函数进行了优化,函数输入为样本特征、标签、最大迭代次数、学习率,输出为权重,这些都需要自己定义。

在每次迭代过程中,需要计算当前的误差,定义误差函数为error_rate,以下部分应该放在定义函数lr_train_bgd之前。

def error_rate(h,label):
    '''计算当前的损失函数值
    inp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值