Logistic逻辑回归

Logistic逻辑回归模型

线性回归模型简单,对于一些线性可分的场景还是简单易用的。Logistic逻辑回归也可以看成线性回归的变种,虽然名字带回归二字但实际上他主要用来二分类,区别于线性回归直接拟合目标值,Logistic逻辑回归拟合的是正类和负类的对数几率。

假设有一个二分类问题,输出为y∈{0,1}

定义sigmoid函数:

用sigmoid函数的输出是0,1之间,用来拟合y=1的概率,其函数R语言画图如下:

x = seq(-5, 5, 0.1)
y = 1 / (1 + exp(-1*x))
plot(x, y, type="line")

logistic逻辑回归可以拟合因变量为1的概率,最终分类的时候,我们可以一个阈值,比如0.5,大于阈值的都分为正类,向量化公式如下:

还可以换一种方式理解logistic逻辑回归,他是用多元线性函数去拟合因变量为正例与反例的比值的自然对数,推导如下:

Logistic逻辑回归算法

  • 假设自变量维度为N
  • W为自变量的系数,下标0 - N
  • X为自变量向量或矩阵,X维度为N,为了能和W0对应,X需要在第一行插入一个全是1的列。
  • Y为因变量
  • W为未知数待求解

最大似然估计法

梯度下降法迭代公式

R语言实现

使用iris数据集

> head(iris)Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa

将数据分为训练数据和测试数据

R语言使用批量梯度下降法迭代求解

iris2 = rbind(subset(iris, Species=='setosa'), subset(iris, Species=='versicolor'))
X <- cbind(rep(1, nrow(iris2)), iris2$Sepal.Length, iris2$Sepal.Width, iris2$Petal.Length, iris2$Petal.Width)
Y <- as.numeric(iris2$Species) - 1
maxIterNum <- 2000;
step <- 0.05;
W <- rep(0, ncol(X))
m = nrow(X)
sigmoid <- function(z) { 1 / (1 + exp(-z))}
for (i in 1:maxIterNum){grad <- t(X) %*% (sigmoid(X %*% W)-Y);if (sqrt(as.numeric(t(grad) %*% grad)) < 1e-8){print(sprintf('iter times=%d', i));break;}W <- W - grad * step;
}
print(W);
hfunc <- function(a) {if (a > 0.5) return(1) else return (0);}
myY = apply(sigmoid(X %*% W), 1, hfunc)
print(cbind(Y, myY))

输出后,可以看到拟合完全正确,因为本文只是为了推导一下逻辑回归的算法,所以直接用全部数据拟合,没有再抽出一部分做测试数据。

总结

  • 应该增加一部分训练数据,验证模型的正确性
  • 应该增加正则项避免过拟合,比如L2正则

更多精彩文章 http://h2cloud.org/

logistic逻辑回归公式推导及R语言实现相关推荐

  1. 多元线性回归分析c语言,多元线性回归公式推导及R语言实现

    多元线性回归 多元线性回归模型 实际中有很多问题是一个因变量与多个自变量成线性相关,我们可以用一个多元线性回归方程来表示. 为了方便计算,我们将上式写成矩阵形式: Y = XW 假设自变量维度为N W ...

  2. 在R语言中实现Logistic逻辑回归

    逻辑回归是拟合回归曲线的方法,当y是分类变量时,y = f(x).典型的使用这种模型是给定一组预测的X预测Ÿ.预测因子可以是连续的,分类的或两者的混合.最近我们被客户要求撰写关于Logistic逻辑回 ...

  3. R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择的分类模型案例

    原文链接:http://tecdat.cn/?p=21444 逻辑logistic回归是研究中常用的方法,可以进行影响因素筛选.概率预测.分类等,例如医学研究中高通里测序技术得到的数据给高维变量选择问 ...

  4. R语言惩罚logistic逻辑回归(LASSO,岭回归)高维变量选择分类心肌梗塞数据模型案例...

    全文下载链接:http://tecdat.cn/?p=21444 在本文中,逻辑logistic回归是研究中常用的方法,可以进行影响因素筛选.概率预测.分类等,例如医学研究中高通里测序技术得到的数据给 ...

  5. 多元有序logistic回归_R语言多元Logistic逻辑回归 应用案例

    原文链接: http://tecdat.cn/?p=2640 ​tecdat.cn 可以使用逐步过程确定多元逻辑回归.此函数选择模型以最小化AIC. 如何进行多元逻辑回归 可以使用阶梯函数通过逐步过程 ...

  6. 主成分分析,充分图,聚类,主成分回归——数据分析与R语言 Lecture 11

    主成分分析,充分图,聚类,主成分回归--数据分析与R语言 Lecture 11 主成分分析 例子:求相关矩阵特征值 例子:求主成分载荷 例子:画碎石图确定主成分 例子:主成分得分-相当于predict ...

  7. 回归模型选择(R语言版)

    回归模型选择(R语言版) 选择准测: With Cp , AIC and BIC, smaller values are better, but for adjusted R2 , larger va ...

  8. r读取shape文件可视化_R语言读取空间数据以及ArcGIS中OLS工具回归结果可视化R语言版...

    前面已经介绍过R语言读取excel的方法了,当然读取数据来说,个人还是推荐csv或txt存储(针对小数据量).大数据量的数据的话建议还是用数据库,此外也可以考虑data.table包读取,这个包也是个 ...

  9. python逻辑回归aic_基于R和Python 如何使用多项式和有序逻辑回归

    原标题:基于R和Python 如何使用多项式和有序逻辑回归 基于R和Python 如何使用多项式和有序逻辑回归 我们中的大多数对于回归的知识是有限的.其中,线性和逻辑回归是我们最喜欢的一种.作为一个有 ...

最新文章

  1. android 星星流逝动画,Android Loading动画分析--续集
  2. iOS微博web网页出现的天坑 (斗鱼App 当前版本5.600有这个bug)
  3. 利用php实现删除,利用PHP实现删除目录及目录下所有文件 源代码
  4. MySQL Table--独立表空间
  5. 2020厦门大学845数据结构考研考试范围(大纲)和参考书目
  6. Facebook提出生成式实体链接、文档检索,大幅刷新SOTA!
  7. 打破气球所能获得的最大积分 Burst Balloons
  8. QT5开发及实例学习之十八显示Qt5 SVG格式图片
  9. 浅谈assert()函数的用法
  10. 优云automation实践技巧:简单4步完成自动化构建与发布
  11. 淘淘商城简介——淘淘商城(一)
  12. 数学画图软件_云山小学进行信息技术培训:画图软件的小妙用
  13. gomarket服务器位置,V712双核版机型常见问题集解答.pdf
  14. 一个蚂蚁森林能量自动收获脚本
  15. 程序员须学计算机语言,新手程序员需要学什么编程语言
  16. An insecure WebSocket connection may not be initiated from a page loaded over HTTPS.
  17. 怎么自己建网站?自己建网站要注意以下4点
  18. 01_k8s入门----部署一个应用程序
  19. 电子制作——锂电池大功率充电器
  20. 仿礼物说小程序项目实战——1.项目介绍分析

热门文章

  1. 爱创课堂每日一题-你做的页面在哪些流览器测试过?
  2. [网络安全课程实验]:基于nmap 的网络扫描和信息分析
  3. 2018 ACM-ICPC Syrian Collegiate Programming Contest
  4. 如何使用微信、支付宝提现免手续费
  5. 微信php开发包,TP5专用微信sdk使用教程
  6. 2021-2027全球与中国GPU服务器市场现状及未来发展趋势
  7. Superset系列8- 制作饼图
  8. spring框架_03
  9. PHP打印对象 用[]可以 用.不可以 不知所以然
  10. 在国企的 Java 程序员是一种什么样的体验?让我来告诉你吧!