当前位置: 首页 > news >正文

机器学习第7天:逻辑回归

文章目录

介绍

概率计算

逻辑回归的损失函数

单个实例的成本函数

整个训练集的成本函数

鸢尾花数据集上的逻辑回归

Softmax回归

Softmax回归数学公式

Softmax回归损失函数

调用代码

参数说明

结语


介绍

作用:使用回归算法进行分类任务

思想:将回归值转为概率值,然后找到一个适当的数值,当概率大于这个值时,归为一类,当小于这个值时,归为另一类


概率计算

p=\sigma (x^{T}w)

函数的输入值为特征的加权和 x^{T}w

\sigma是sigmoid函数,公式为

\sigma(t) =\frac{1}{1+e^{(-t)}}

函数图像为

可见它输出一个0-1的值,我们可以将这个值当作概率 

则我们可以通过这个概率来分类,设定一个值,在这个值的两端进行分类


逻辑回归的损失函数

单个实例的成本函数

当p>=0.5时

c(w)=-log(p)

当p<0.5时

c(w)=-log(1-p)


整个训练集的成本函数

J(w)=\frac{1}{m}\sum_{i=1}^{m}[y^{i}log(p^{i})+(1-y^{i})log(1-p^{i})]

这个损失函数也是一个凸函数,可以使用梯度下降法使损失最小化


鸢尾花数据集上的逻辑回归

鸢尾花数据集是机器学习中一个经典的数据集,它有花瓣和花萼的长和宽,任务是用它们来判断鸢尾花的种类

看代码和效果

from sklearn import datasets
from sklearn.linear_model import LogisticRegression
import matplotlib.pyplot as plt
import numpy as npiris = datasets.load_iris()x = iris["data"][:, 3:]
y = (iris["target"] == 2)model = LogisticRegression()
model.fit(x, y)x_new = np.linspace(0, 3, 1000).reshape(-1, 1)
y_proba = model.predict_proba(x_new)
plt.plot(x_new, y_proba[:, 1], "g-", label="Iris virginica")
plt.plot(x_new, y_proba[:, 0], "b--", label="Not Iris virginica")plt.xlabel("Petal width")
plt.ylabel("probability")plt.legend()
plt.show()

可以看见,当花瓣长度变化的时候,两种花种类的概率随之变化

简单介绍一下新的代码,predict.proba方法返回样本为可能的两种花的概率。


Softmax回归

上述方法主要用于二分类任务,我们再来看一种多分类方法,Softmax回归


Softmax回归数学公式

Softmax(s_{i})=\frac{e^{s_{i}}}{\sum_{j=1}^{n}e^{s_{j}}}

Softmax函数也叫指数归一化函数,它对x进行指数处理再进行归一化得出一个概率

这个函数的自变量为一个分数s,这个s由我们的数据的转置矩阵与一个参数相乘得来

s = x^{T}\theta

对于不同的类,参数\theta都不相同,模型训练的任务就是拟合这个参数


Softmax回归损失函数

L = -\frac{1}{m}\sum_{i=1}^{m}\sum_{K}^{k=1}y_{k}^{i}log(p_{k}^{i})

当k=2时(二分类),此成本函数等于sigmoid逻辑回归的成本函数


调用代码

model = LogisticRegression(multi_class="multinomial", solver="lbfgs", C=10)
model.fit(x, y)

参数说明

multi_class="multinomial": 表示采用多类别分类,即多类别的逻辑回归问题,与二元逻辑回归不同。

solver="lbfgs": 表示使用LBFGS(Limited-memory Broyden–Fletcher–Goldfarb–Shanno)优化算法进行求解。

C=10: 表示正则化参数,控制模型的正则化强度,C值越小,正则化强度越高。


结语

逻辑回归是一种简单的分类方法,二分类任务就用第一种方法,多分类任务就用第二种方法

http://www.lryc.cn/news/234306.html

相关文章:

  • 努力奋斗,遇上对的人
  • 基于单片机音乐弹奏播放DS1302万年历显示及源程序
  • ceph学习笔记
  • SQLSERVER 遍历循环的两种方式很详细有源码(2)
  • flutter背景图片设置
  • 【运维 监控】Grafana + Prometheus,监控Linux
  • Sentinel底层原理(下)
  • 竞赛选题 疫情数据分析与3D可视化 - python 大数据
  • macos 配置ndk环境
  • 【linux】进行间通信——共享内存+消息队列+信号量
  • PlantUML基础使用教程
  • Redis:新的3种数据类型Bitmaps、HyperLoglog、Geographic
  • promise时效架构升级方案的实施及落地 | 京东物流技术团队
  • es的使用方法以及概念
  • WPF xaml Command用法介绍
  • 微信小程序动态生成表单来啦!你再也不需要手写表单了!
  • 顺序表(数据结构与算法)
  • 【大连民族大学C语言CG题库练习题】——判断一个矩阵是另一个矩阵的子矩阵
  • C#WPF控制模板实例
  • MATLAB Simulink和S7-1200PLC MOBUSTCP通信
  • 五、函数的介绍
  • 【广州华锐互动VRAR】VR元宇宙技术在气象卫星知识科普中的应用
  • F. Alex‘s whims Codeforces Round 909 (Div. 3) 1899F
  • 面试题-5
  • 车载以太网-ARP
  • Kafka学习笔记(三)
  • JVM-HotSpot虚拟机对象探秘
  • 大模型技术的发展:开源和闭源,究竟谁强谁弱又该何去何从?
  • Python学习笔记--自定义元类
  • 软件测试 —— 常见的自动化测试架构!