R----简述logistic回归

本文介绍了逻辑回归的基本原理及其在R语言中的实现方法。重点讲解了sigmoid函数的作用及如何通过逻辑回归模型进行二分类预测,并提供了ROC曲线验证模型效果的方法。
逻辑回归是用来解决二分类问题的,即案例标签不是A就是B,只有二中可能。
这里先提一下sigmiod函数:f(x)=1/1+e^(-x)
此函数是一个S型曲线,在0附近变化很大,两端趋近0,1。
在逻辑回归中可以看成是一个if函数(if x>0.5,1,0)这里0.5就是阈值,可以根据实际需要调整。


R中的基本函数glm就可以提供逻辑回归算法的实现
l_m<-glm(y~.,famliy=binomial(link='logit'),data,control=list(maxit=50))#其中 control=list(maxit=50) 是 迭代次数,默认25(可不写)
l_pred <- predict(data,type = 'response')
模型需要ROC曲线验证一下,有ROCR包、pROC 包,具体内容详参:

http://www.cnblogs.com/nxld/p/6170690.html
http://blog.jobbole.com/88521/

### 回归分析与逻辑回归的特点及差异 #### 一、回归分析的特点 回归分析是一种统计学上的分析方法,用于研究两个或多个变量之间的关系。其主要特点如下: 1. **目标** 回归分析的目标通常是预测连续型因变量的值。它通过建立一个数学模型来描述自变量和因变量之间的关系[^1]。 2. **适用场景** 当数据中的因变量是连续数值时(如房价、温度等),通常采用回归分析。常见的回归模型包括线性回归、多项式回归等[^2]。 3. **假设条件** 回归分析一般假定误差项服从正态分布,并且各观测值之间相互独立。此外,在多元线性回归中还要求不存在多重共线性等问题[^3]。 4. **解释能力** 回归系数可以直接反映自变量变化对因变量的影响程度及其方向(正值代表正向影响,负值反之)。这种直观性强的结果便于理解和应用。 --- #### 二、逻辑回归的特点 逻辑回归虽然名字中有“回归”,但它主要用于分类问题而非传统意义上的数值预测。以下是它的几个重要特性: 1. **目标** 逻辑回归旨在估计离散类别标签的概率分布情况,特别是当响应变量只有两种取值(即二分类问题)时最为常见。 2. **Sigmoid函数的应用** 它利用 Sigmoid 函数将线性组合映射到 (0,1) 范围内作为事件发生的可能性大小表示形式之一;具体表达式为 \( P(Y=1|X=x)=\frac{e^{(\alpha+\beta X)}}{1+e^{(\alpha+\beta X)}} \)。 3. **优势所在** - 对于处理具有非线性边界的两类区分任务效果较好; - 输出的是概率值而不是具体的类标记本身,这使得我们可以设定不同的阈值得到更灵活的结果判定标准。 4. **局限之处** 如果存在过多无关特征或者样本量不足的情况下可能会导致过拟合现象发生;另外对于多分类情形需要扩展成一对其余(Multinomial Logistic Regression 或者 One-vs-Rest Strategy)[^1]. --- #### 三、两者的主要区别对比 | 方面 | 回归分析 | 逻辑回归 | |--------------|-----------------------------------|----------------------------------| | 数据类型 | 连续型 | 类别型 | | 响应变量性质 | 数值 | 概率 | | 预测目的 | 描述并量化输入输出间的关系 | 计算某一特定结果出现的可能性 | | 使用范围 | 房价预测、销售数量预估 | 是否患病诊断、邮件垃圾与否判断 | | 结果呈现方式 | 自变数每单位改变引起依变数平均增减幅度 | 给定条件下某件事情成功的几率百分比 | --- ### 示例代码展示 下面分别给出简单线性回归以及二元逻辑回归的一个Python实现例子供参考学习: ```python # 线性回归示例 import numpy as np from sklearn.linear_model import LinearRegression X = [[1], [2], [3]] y = [2, 4, 6] model_lr = LinearRegression().fit(X,y) print(f'Linear Coefficient:{model_lr.coef_[0]} Intercept:{model_lr.intercept_}') ``` ```python # 逻辑回归示例 from sklearn.datasets import make_classification from sklearn.linear_model import LogisticRegression import matplotlib.pyplot as plt X, y = make_classification(n_samples=100,n_features=2,n_redundant=0, n_informative=2,class_sep=2, random_state=1,flip_y=0) clf = LogisticRegression(random_state=0).fit(X, y) plt.scatter(X[:,0][y==0],X[:,1][y==0]) plt.scatter(X[:,0][y==1],X[:,1][y==1]) xx_min, xx_max = X[:,0].min()-1,X[:,0].max()+1 yy_min, yy_max = X[:,1].min()-1,X[:,1].max()+1 xx, yy = np.meshgrid(np.linspace(xx_min,xx_max),np.linspace(yy_min,yy_max)) Z = clf.predict_proba(np.c_[xx.ravel(),yy.ravel()])[:,1] Z = Z.reshape(xx.shape) plt.contourf(xx,yy,Z,alpha=.8,cmap=plt.cm.RdBu_r) plt.show() ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值