logistic回归原理及其实现

目录

一、线性模型与回归

二、最小二乘与参数求解

三、对数线性回归

四、Logistic回归

五、Logistic实战之预测糖尿病的发作

1.数据收集

2.核心算法

3.测试运行

六、总结


一、线性模型与回归

Logistic回归是一种用于解决分类问题的线性模型,而回归则是用于解决预测连续数值的问题。尽管它们有相似的名称,但是在模型假设和应用领域上存在明显的差异。

  1. 模型假设:

    ·Logistic回归:Logistic回归基于逻辑函数(也称为Sigmoid函数)进行建模,将输入特征与概率输出之间建立关系。它假设输入特征和输出之间存在一个非线性的关系,通过将线性组合的结果转换为概率输出。

    ·回归:回归模型假设输入特征和输出之间存在一个线性关系,即输出变量是输入特征的线性组合。回归模型用于预测连续数值输出。

  2. 应用领域:

    ·Logistic回归:Logistic回归主要用于解决二分类问题,例如判断邮件是否为垃圾邮件、判断疾病是否发生等。它的输出是一个范围在0到1之间的概率值,可以根据设定的阈值对样本进行分类。

    ·回归:回归模型广泛应用于预测和建模任务,例如预测房价、销售额、股票价格等连续数值的输出。回归模型可以根据输入特征的线性组合来预测输出变量的数值。

  3. 损失函数和优化:

    ·Logistic回归:Logistic回归使用对数损失函数,也称为交叉熵损失函数,来度量模型预测结果与真实标签之间的差异。常用的优化算法是梯度下降法,通过最小化损失函数来调整模型参数。

    ·回归:回归模型通常使用平方损失函数来度量预测值与真实值之间的差异。常用的优化算法包括最小二乘法、梯度下降法等,旨在最小化损失函数并找到最佳的模型参数。

虽然Logistic回归和回归都属于线性模型,但它们的应用场景和建模假设有所不同。理解它们的区别可以帮助我们选择适当的模型来解决具体问题。

4.线性模型一般形式:

f(x)=w_{1}x_{1}+w_{2}x_{2}+...+w_{d}x_{d}+d

其中x=(x_{1}, x_{2}, ..., x_{d})是由d维属性描述的样本,其中 x_{i}是 x 在第 i 个属性上的取值。

向量形式可记为:

f(x)=w^{T}x+b,

其中w=(w_{1}, w_{2}, ..., w_{d})为待求解系数

给定数据集D={(x_{1}, y_{1}), (x_{2}, y_{2}), ..., (x_{m},y_{m}}

其中x_{i}=(, x_{i2}x_{i1}, ..., x_{id}), y_{i}\in R

线性回归(linear regression)目的:

学习一个线性模型以尽可能准确地预测实值输出标记:

f(x)=wx_{i}+b 使得      

5.离散属性处理

有“序”关系:转化为连续值

无“序”关系:有k个属性值,则转换为k维向量


二、最小二乘与参数求解

最小二乘法是一种常用的回归分析方法,用于拟合数据并估计模型参数。它通过最小化观测值与模型预测值之间的平方差来确定最佳的模型参数。

在最小二乘法中,我们假设有一个线性模型表示数据的关系:y = β0 + β1x1 + β2x2 + ... + βnxn,其中y是因变量,x1到xn是自变量,β0到βn是模型的参数。

参数求解的步骤如下:

·建立线性模型:根据问题的具体情况,选择适当的自变量和因变量,并建立线性模型。

·定义目标函数:将观测值与模型预测值之间的平方差作为目标函数,表示为S(β) = Σ(yi - β0                            - β1xi1 - ... - βn xin)^2。

·求解参数:最小二乘法的目标是找到使目标函数最小化的参数值。通过对目标函数求偏导                        数,并令其等于0,可以得到参数的估计值。

·解方程组:将目标函数对参数求偏导数,并令其等于0,得到一个包含n+1个方程(对应n+1                     参数)的方程组。通过求解这个方程组,可以得到参数的估计值。

·参数估计:通过求解方程组,得到参数的估计值。这些估计值可以用于构建最佳拟合线。

最小二乘法在回归分析中广泛应用,并且对于线性模型,可以得到解析解。然而,在某些情况下,可能存在多个解或无解的情况。此时,需要考虑模型的合理性和其他统计指标来进行参数估计和模型选择。


三、对数线性回归

对数线性回归(log-linear regression)是一种常用的回归分析方法,它可用于建立响应变量与多个预测变量之间的关系模型。在对数线性回归中,响应变量通常是计数数据,例如某一时间段内发生的事件数,而预测变量可以是连续或离散的。

对数线性回归的基本思想是将响应变量进行对数变换后,通过线性模型来描述响应变量与预测变量之间的关系。这样做的好处是可以将计数数据转化为连续数据,从而使用线性回归的方法进行建模和预测。

对数线性回归的模型表示如下:

log(y) = β0 + β1x1 + β2x2 + ... + βnxn

其中,y是响应变量(计数数据),x1到xn是预测变量,β0到βn是模型的参数。模型中的对数变换可以使数据更符合正态分布,从而提高模型的拟合度和可解释性。

对数线性回归的模型参数可以通过最小二乘法来估计。在实际应用中,还需要考虑模型的适用性和合理性,例如是否存在过拟合或欠拟合等问题。

对数线性回归在许多领域得到广泛应用,例如医学研究、社会科学、生态学等。它可以用于分析计数数据与预测变量之间的关系,并进行预测和模型选择。

例如设g(x)=ex,取y的对数,即lny,就可以得到对数线性回归模型:


四、Logistic回归

Logistic回归是一种常用的分类算法,用于预测二分类或多分类问题。它基于逻辑函数(也称为sigmoid函数)将线性模型的输出映射到一个概率值,从而进行分类。

在Logistic回归中,我们假设有一个线性模型表示输入特征与输出类别之间的关系。对于二分类问题,该模型可以表示为:

log(p / (1 - p)) = β0 + β1x1 + β2x2 + ... + βnxn

其中,p是事件发生的概率,x1到xn是输入特征,β0到βn是模型的参数。通过将线性模型的输出应用逻辑函数得到概率p,进而进行分类。

逻辑函数(sigmoid函数)定义为:

σ(z) = 1 / (1 + exp(-z))

其中,z是线性模型的输出。

Logistic回归的模型参数可以通过最大似然估计方法来估计。该方法通过最大化观测数据的似然函数,寻找最优的参数值,使得模型对观测数据的拟合度最好。

Logistic回归在许多领域广泛应用,例如医学研究、金融风险评估、市场营销等。它可以用于预测二分类或多分类问题,并提供分类概率的估计。此外,Logistic回归还可以通过引入正则化技术来防止过拟合问题。

线性模型可以衍生出一般形式:

g(∙)称为联系函数(link function),该函数一般为单调可微函数。

替代函数——逻辑斯蒂函数(logistic/sigmoid function) 单调可微、任意阶可导



五、Logistic实战之预测糖尿病的发作

1.数据收集

  数据收集来源:http://archive.ics.uci.edu/ml/index.php
  这里的数据包含了768个样本和8个属性特征。然后通过0,1来判断用户是否会换上糖尿病。
数据部分内容展示:

2.核心算法

  这里通过分类函数把样本数据分成五份,然后采用随机梯度下降法(随机下降与随机上升法核心内容一样)对这五份样本进行训练,并通过sigmoid函数对训练好的样本进行分类。

def predict(row, coefficients):
	yhat = coefficients[0]
	for i in range(len(row)-1):
		yhat += coefficients[i + 1] * row[i]
	return 1.0 / (1.0 + exp(-yhat))

def coefficients_sgd(train, l_rate, n_epoch):
	coef = [0.0 for i in range(len(train[0]))]
	for epoch in range(n_epoch):
		for row in train:
			yhat = predict(row, coef)
			error = row[-1] - yhat
			coef[0] = coef[0] + l_rate * error * yhat * (1.0 - yhat)
			for i in range(len(row)-1):
				coef[i + 1] = coef[i + 1] + l_rate * error * yhat * (1.0 - yhat) * row[i]
	return coef

def logistic_regression(train, test, l_rate, n_epoch):
	predictions = list()
	coef = coefficients_sgd(train, l_rate, n_epoch)
	for row in test:
		yhat = predict(row, coef)
		yhat = round(yhat)
		predictions.append(yhat)
	return(predictions)

3.测试运行

  这里把学习率设为0.4,训练次数设置为训练1000次,seed(1)是为了保证五份样本每次执行都能产生同一个随机数,防止结果偏差。 n_folds = 5被用于交叉验证,给每次迭代 768/5 = 条记录来进行评估。

if __name__ == '__main__':
	seed(1)#每一次执行本文件时都能产生同一个随机数
	filename = 'pima-indians-diabetes.csv'
dataset = load_csv(filename)
for i in range(len(dataset[0])):
	str_column_to_float(dataset, i)
minmax = dataset_minmax(dataset)
normalize_dataset(dataset, minmax)
n_folds = 5
l_rate = 0.4
n_epoch = 1000
scores = evaluate_algorithm(dataset, logistic_regression, n_folds, l_rate, n_epoch)
print('五份样本的正确率: %s' % scores)
print('总样本平均正确率: %.3f%%' % (sum(scores)/float(len(scores))))

 运行这个样本,为 5 次交叉验证的每一次 输出 一个分数,然后输出这五个分数的平均数。我们可以看到平均正确率为77.988%。


 

六、总结

Logistic回归是一种常用的分类算法,主要用于处理二分类问题。下面是关于Logistic回归的一些总结:

·适用范围:Logistic回归广泛应用于各种领域,特别是在医学、社会科学和金融领域中被广                       泛使用。

·模型原理:Logistic回归通过将线性模型的输出映射到[0, 1]之间,利用logistic函数(也称为                    Sigmoid函数)进行分类预测。该函数能够将任意实数映射到(0, 1)区间,表示概                    率值。

·损失函数:Logistic回归使用的损失函数通常是对数似然函数,目标是最大化观测数据的似                      然度,从而找到最佳的参数值。

·特点:Logistic回归是一个简单且高效的分类算法,易于实现和解释。它不仅可以输出分类                结果,还能够给出分类的概率。

·改进和扩展:Logistic回归可以通过正则化来防止过拟合,也可以与其他算法(如多项式特                         征、核技巧等)结合,以处理非线性问题。

总的来说,Logistic回归是一种强大而灵活的分类算法,适用于许多实际场景,并且相对容易理解和实现。但需要注意的是,对于非线性问题,可能需要考虑其他更复杂的模型。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值