逻辑斯蒂回归 matlab实现

article/2025/10/14 0:26:49

说明

我将试图从感知机的基础上说明逻辑回归的一般性原理和学习及预测方法,其中缺少一些必要的证明,包括了一个二分类问题的实例。其中关于感知机的实验在 机器学习 专栏中有介绍。

从感知机到逻辑斯蒂回归

感知机模型:

·应用范围:

二分类问题,线性分类模型,属于判别模型

·输入输出:

In: n维的特征空间X
Out: y={+1,-1},即类别的label

·关系:

f(x) = sign(w·x + b)
其中:·sign(x)为符号函数
·w·x + b = 0:
对应n维特征空间中的一个超平面,w对应法向量,b为截距。若选取合适,这个超平面将会把所有实例(x,y)分为两类。
·训练集:表示为T{(x1,y1),(x2,y2)…};
·判别:若数据集线性可分,则一定存在一超平面w·x + b = 0;对所有yi = 1的实例,都有w·x + b>0,对所有yi = -1的实例,都有w·x + b<0。由此通过一个“外壳” sign函数,即可进行有效分类。

·学习策略:

·Lossfunction:
·注意:选取损失函数时要保证损失函数是参数的连续可导函数,这样便于优化。可以引入误分类点到超平面的总距离这一概念,将其作为损失函数。误分类点数越少,超平面越接近“理想答案”,损失函数越小,这一思路是直观和易于接受的。
·关于距离,引入了范数的概念,并且对比函数间距 |w·x0 + b| 以及几何间距|w·x0 + b|/||w||,机器学习中常用后者,即几何间距,这样的损失函数对比例是鲁棒的。如果采用函数间距,缺陷比较明显,学习到的参数较小。误分类点到超平面S的距离为:(即高中几何距离算法)-yi(w·xi + b)/||w||
·如何选取误分类点:对于被正确分类的点,有yi·(w·x0 + b)> 0,相应的误分类点就有yi·(w·x0 + b)< 0;
·损失函数表达式:L(w,b) = -Σyi·(w·xi + b) ((xi,yi)为误分类点)
参数更新:
·梯度:用损失函数分别对w,b求导,得到梯度

·参数更新:
w <———— w + μ·yi·xi
b <———— b + μ·yi

·算法描述:

输入:
训练数据集T = {(x1,y1),(x2,y2),(x3,y3),…… },xi为n维特征空间的特征向量,yiϵ{+1,-1},i = 1,2……学习率μ(0≤μ≤1)
输出:
w,b,以及感知机模型为f(x) = sign(w·x + b);
(1) 设定w,b初始值
(2) 训练集中选取数据(xi,yi)
(3) 判断如果yi·(wi·x + b) ≤0,则更新参数
w <———— w + μ·yi·xi
b <———— b + μ·yi
(4) 转至(2)直到没有误分类点

·实验结果:

Matlab完成了感知机算法,随着训练集数据的增多,发现出现了不能找到超平面的情况,此时将学习率调低,随之又找到了合适的参数,单同时由于学习率较低,使得学习到的参数很小。
事实上,感知机存在着一个很大的弊端,即它敏感的“非黑即白”式的判断结果未免太过武断,事实上对于很多分类问题两个相距很近的点可能并没有如此之大的差距,为了使得更加细致的描绘这种点和点之间的差距,引入了逻辑斯蒂回归。

逻辑斯蒂回归模型:

·适用范围:

分类问题,二分类甚至是多分类。属于对数线性模型(输出Y=1的对数概率是输入的线性函数)

·输入输出:

In: T = { (xi,yi) | i = 1,2,3,…},xi为n维特征空间中的特征向量。Yi∈{+1,-1}
Out:逻辑斯蒂回归模型

在这里插入图片描述
·函数关系:

在这里插入图片描述

另外,定义了事件几率的表达式:
在这里插入图片描述

对于对数几率有
在这里插入图片描述

所以说,逻辑斯蒂回归模型是对数线性模型。

·学习策略(4.12.23.40)

模型参数估计采用极大似然法:
在这里插入图片描述

似然函数为: 在这里插入图片描述

对数似然函数为: 在这里插入图片描述

对ω求偏导数得到: 在这里插入图片描述

因此参数学习问题就变成了以对数似然函数为目标函数的最优化问题,常用方法为梯度下降法和牛顿法。

最大熵模型:

·适用范围

属于概率模型。最大熵原理认为要选择的概率模型首先要满足已有事实,即约束条件,而没有更多信息情况下,不确定部分是“等可能的”,由于“等可能”这个概念不方便优化操作,相反地熵可以作为优化的数值指标。
最大熵原理朴素解释为:凡是可考虑的因素之外的,均假设是均匀分布,也即等概率假设。它的原则是在所有满足约束条件的概率模型集合中选取熵最大的集合。
·熵的定义:
在这里插入图片描述

熵满足不等式

在这里插入图片描述
其中|X|为X取值的个数,当X分布式均匀分布时,H ( P ) 才取得最大值。

·最大熵模型的定义

最大熵应用到分类问题时,假设了这个模型是一个条件概率分布p(Y|X),即输入为x的条件下,输出为y的概率。
·输入输出
In:T={(x1,y1),(x2,y2),(x3,y3)……}
Out:P(Y|X)
·函数关系
根据训练数据集可以获得联合分布P(X,Y)与P(X)的经验分布

在这里插入图片描述

代表样本中x的频数。

·梯度下降法补充

在感知机时,我们应用了梯度下降作为优化算法,并第一次感受到数值迭代的方式解得最佳参数的快感。在逻辑斯蒂回归模型中,我们把优化目标划归成了求解使得似然函数最大值的参数,我们不妨将求解似然函数最大值问题当成优化目标,习惯上取其相反数作为损失函数,我们便可以继续应用梯度下降法进行优化了。
Tips:
为了应对过拟合,我们可以对损失函数进行正则化
在这里插入图片描述

,即损失函数中加入正则项。

在这里插入图片描述
其中,
在这里插入图片描述
即为正则项
注意:
1.引入正则项是为了应对过拟合,倾向于让模型参数更小。
2.模型参数小的时候,意味着模型更为“平滑”,这样输入改变的时候,输出的变化不会很剧烈,所以正则化后应该更加鲁棒。
3.参数问题:λ如果选的过大,那么损失函数会更倾向于考虑正则项,导致模型过于“平滑”,也会使得模型变得不准确,对train_data的准确率大大下降。

牛顿法

输入:特征函数f1,f2,f3,…,fn;经验分布P‘(x,y),目标函数f(ω),模型
在这里插入图片描述

输出:最优参数值 在这里插入图片描述;最优模型 在这里插入图片描述

(1)对所有i∈{1,2,…,n},取初值 =0;

(2)对每一i∈{1,2,…,n},
(a) 令 在这里插入图片描述是方程
在这里插入图片描述

的解,这里

(b)更新 : 在这里插入图片描述

(3)如果不是所有 都收敛,重复步(2)

拟牛顿法

在这里插入图片描述
在这里插入图片描述

算法实现:

不失一般性也为了方便数据可视化,随机生成300个具有3个特征的数据。对数据进行某种函数关系映射,按照函数关系分为两类,一类label为1,一类为0;并将数据等分成两份一份用于训练,一份用于测试。随后用梯度下降法进行参数学习;运行结果如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

close;
clear;
clc;
% 作者 M宝可梦
% 引用请注明出处 谢谢合作
%% 二分类:数据生成
data_num = 500;
Features=3;
data=rand(data_num,Features);
label=zeros(data_num,1);
data=[data,ones(data_num,1)];
% 数据预处理:通过设定某种关系进行预先二分类,打乱循序使得每次运行训练集和测试集和不同
for i = 1:data_numif 2*data(i,1)-data(i,2)+2*data(i,3)<1.5    % 代码可精简:label(2*data(:,1)-data(:,2)<0.5)=1; % 通过逻辑判断label(i)=1;end
end
randIndex = randperm(data_num);
data_new=data(randIndex,:);
label_new=label(randIndex,:);%一半训练  一半测试
k=0.8*data_num;
train_data=data_new(1:k,:);
train_label=label_new(1:k,:);
test_data=data_new(k+1:end,:);
test_label=label_new(k+1:end,:);
[m1,n1] = size(train_data);
[m2,n2] = size(test_data);%% 训练
%设定学习率delta;正则项系数;迭代次数;模型参数
delta=0.05; 
lambda=0.0001; 
num = 200;
theta=rand(1,Features+1);% 除w之外多一个偏置b
L=zeros(1,num);
for I = 1:numdt=zeros(1,Features);loss=0;for i=1:m1Data_Features=train_data(i,1:Features+1);Data_Label=train_label(i,1);h=1/(1+exp(-(theta * Data_Features'))); % h为P(Y=1|X) = exp(w·x)/[1+exp(w·x)]dt=(Data_Label-h) * Data_Features;   % 对数似然函数对w的求导theta=theta + delta*dt-lambda*theta; % 梯度下降法更新参数wloss=loss + Data_Label*log(h)+(1-Data_Label)*log(1-h);% 对数似然函数end% 由于问题划归为由极大似然估计估计参数,是对似然函数求极大值% 统一起见应用梯度下降法,归为对极大似然函数相反数的极小值求解,此处除以了样本数量,为平均损失loss=-loss/m1;L(I) = loss;% 作损失函数图if loss<0.001break;end
end%% 作图
figure(1);
plot(L);
title('损失函数');
figure(2);
subplot(211);
plot3(data(label==1,1),data(label==1,2),data(label==1,3),'ro');
axis([0 1 0 1]);
title('正样本分类显示');
subplot(212);
plot3(data(label==0,1),data(label==0,2),data(label==0,3),'go');
axis([0 1 0 1]);
title('负样本分类显示');
figure(3);
plot3(data(label==1,1),data(label==1,2),data(label==1,3),'ro');
hold on;
plot3(data(label==0,1),data(label==0,2),data(label==0,3),'go');
axis([0 1 0 1]);
title('总体样本分类显示');
grid on%% 测试准确率
acc=0;
for i=1:m2Data_Features=test_data(i,1:Features+1)';Data_Label=test_label(i);P_Y1=1/(1+exp(-theta * Data_Features));% P(Y=1|X) = exp(w·x)/[1+exp(w·x)]if P_Y1>0.5 && Data_Label==1acc=acc+1;elseif P_Y1<=0.5 && Data_Label==0acc=acc+1;end
endfprintf('训练测试完成!\n应用模型:逻辑斯蒂回归\n优化算法:梯度下降\ntest_acc:%6.2f',acc/m2)

引用请注明出处 谢谢合作


http://chatgpt.dhexx.cn/article/tVoECA9i.shtml

相关文章

Lecture6 逻辑斯蒂回归(Logistic Regression)

目录 1 常用数据集 1.1 MNIST数据集 1.2 CIFAR-10数据集 2 课堂内容 2.1 回归任务和分类任务的区别 2.2 为什么使用逻辑斯蒂回归 2.3 什么是逻辑斯蒂回归 2.4 Sigmoid函数和饱和函数的概念 2.5 逻辑斯蒂回归模型 2.6 逻辑斯蒂回归损失函数 2.6.1 二分类损失函数 2.…

机器学习之逻辑斯蒂回归

目录 一、分类与回归 二、逻辑回归不是回归 三、生成式逻辑回归 四、判别式逻辑回归 五、逻辑回归为什么不用均方误差做损失函数 六、判别模型与生成模型的比较 七、写在最后 一、分类与回归 回归与分类是机器学习的基本问题。回归是预测连续值&#xff0c;分类是预测…

逻辑斯蒂回归算法

目录 逻辑斯蒂分布 二元逻辑斯蒂回归模型 二元逻辑斯蒂回归的损失函数及优化方法 二元逻辑斯蒂回归的正则化 多元逻辑斯蒂回归 逻辑斯蒂回归小结 LR的优点 LR的缺点 LR将连续特征离散化的原因 逻辑回归和线性回归的区别和联系 LR和SVM的关系 scikit-learn 逻辑回归…

逻辑斯蒂回归以及它的梯度下降法

文章目录 前言逻辑斯蒂分布 模型二项逻辑斯蒂回归模型多项逻辑斯蒂回归模型 策略算法如何求对数似然函数的最大值梯度下降法算法思想推导公式 注意 前言 预测任务分为&#xff1a; 回归问题&#xff1a;输入、输出变量为连续变量。分类问题&#xff1a;输出变量为有限个离散变…

逻辑斯蒂回归分类算法

逻辑斯蒂回归分类算法 首先来看一个线性回归来进行分类的问题&#xff1a; 怎样判断肿瘤是否恶性&#xff1f; 很明显线性回归用于分类问题无法处理边界点的位置。 同时&#xff0c;线性回归健壮性不够&#xff0c;一旦有噪声&#xff0c;立刻“投降” 使用逻辑斯蒂回归 ——…

逻辑斯蒂回归(二分类算法)理论+Python代码实现

逻辑斯蒂回归&#xff08;二分类算法&#xff09;理论Python代码实现 文章目录 逻辑斯蒂回归&#xff08;二分类算法&#xff09;理论Python代码实现一、理论基础&#xff08;一&#xff09; 基于 Logistic 回归和 Sigmoid 函数的分类&#xff08;二&#xff09; 模型训练与代价…

逻辑斯蒂回归 逻辑回归_逻辑回归简介

逻辑斯蒂回归 逻辑回归 Logistic regression is a classification algorithm, which is pretty popular in some communities especially in the field of biostatistics, bioinformatics and credit scoring. It’s used to assign observations a discrete set of classes(ta…

Logistic Regression 逻辑斯蒂回归

文章目录 5、Logistic Regression 逻辑斯蒂回归5.1 回归任务5.1.1 MNIST Dataset5.1.2 CIFAR-10 Dataset 5.2 Regression vs Classification 回归 vs 分类5.3 Sigmoid functions5.3.1 Logistic Function [0, 1]5.3.2 Other Functions [-1, 1] 5.4 Model 模型5.5.1 torch.sigmoi…

机器学习-逻辑斯蒂回归(Logistic Regression)

注&#xff1a;内容转自https://github.com/NLP-LOVE/ML-NLP/tree/master/Machine%20Learning&#xff0c;略有修改。 目录 逻辑 1. 什么是逻辑斯蒂回归 2. 什么是Sigmoid函数 3. 损失函数是什么 4.可以进行多分类吗&#xff1f; 5.逻辑斯蒂回归有什么优缺点 6. 逻辑斯…

逻辑斯蒂回归

一&#xff1a;二元逻辑回归模型 二项逻辑斯蒂回归模型是如下的条件概率分布&#xff1a; 其中&#xff0c;Y为输出&#xff0c;w称为权值向量&#xff0c;b称为偏置。逻辑斯蒂回归比较两个条件概率值的大小&#xff0c;将实例x分到概率值较大的那一类。 一个事件的几率是指该…

【笔记】逻辑斯蒂回归

一、逻辑斯蒂回归概述 &#xff08;1&#xff09;逻辑斯蒂回归的目的&#xff1a;分类。 逻辑斯蒂回归常常解决分类问题&#xff0c;特别是二分类问题。 &#xff08;2&#xff09;逻辑斯蒂回归的过程&#xff1a;回归。 计算结果是0~1之间的连续值&#xff0c;代表发生的可…

逻辑斯蒂回归java_逻辑斯蒂回归模型

http://blog.csdn.net/hechenghai/article/details/46817031 主要参照统计学习方法、机器学习实战来学习。下文作为参考。 第一节中说了&#xff0c;logistic 回归和线性回归的区别是&#xff1a;线性回归是根据样本X各个维度的Xi的线性叠加(线性叠加的权重系数wi就是模型的参数…

逻辑斯蒂回归算法详解

逻辑斯蒂回归算法可用于分类问题&#xff0c;其本质是在线性回归的算法上用sigmoid函数进行模型变换&#xff0c;使得目标值介于0-1之间。本文用于对逻辑斯蒂回归算法&#xff08;Logistics Regression&#xff09;进行详细讲述。 逻辑斯蒂回归基本假设 我们知道线性回归的基…

【机器学习实验五】逻辑斯蒂回归

目录 一、逻辑斯蒂回归基本概念 1.1、基本概念 1.2、特点 1.3、Logistic分布 1.4、逻辑斯蒂回归模型 二、利用逻辑斯蒂模型进行分类测试 2.1、数据准备 2.2、编写代码查看数据集的分布情况 2.3、训练分类算法 2.4、绘制决策边界 三、从疝气病症状预测病马的死亡率 …

Logistic regression(逻辑斯蒂)回归分析

Logistic regression &#xff08;逻辑回归&#xff09;是当前业界比较常用的机器学习方法&#xff0c;用于估计某种事物的可能性。比如某用户购买某商品的可能性&#xff0c;某病人患有某种疾病的可能性&#xff0c;以及某广告被用户点击的可能性等。&#xff08;注意这里是&a…

逻辑斯谛回归(Logistic回归)最详解

Logistic回归学习思路 一.逻辑回归模型的原理与定义&#xff08;主要思想&#xff09; 逻辑斯谛回归是经典的分类方法&#xff0c;它属于对数线性模型&#xff0c;原理是根据现有的数据对分类边界线建立回归公式&#xff0c;以此进行分类。&#xff08;主要思想&#xff09; …

常用服务器型号整理

转载于:https://www.cnblogs.com/quzq/p/11285548.html

查看linux cpu 内存 服务器型号 序列号 磁盘 raid信息

安装dmidecode&#xff1a;yum -y install dmidecode 查看cpu的型号: 查看cpu的颗数&#xff1a; dmidecode -t processor |grep "Version" dmidecode -t processor |grep "Socket" 查看内存最大容量&#xff1a; 查看内存插槽数量&#xff1a; 查看内存大…

浪潮官网服务器型号,浪潮服务器有哪些型号,哪位了解?

NF8520系列市场价格&#xff1a;&#xffe5;152000-175000 浪潮英信NF8520采用全新QPI架构高速互联技术的四路服务器&#xff0c;支持最新英特尔至强处理器E7系列&#xff0c;成四个具备IOAT2VMDQ技术的高性能千兆网卡&#xff0c;在全面提升网络IO能力的同时&#xff0c;对虚…

服务器内存怎么看型号,怎么查看服务器内存的型号

怎么查看服务器内存的型号 内容精选 换一换 设备实时状态查询是检测设备在运行过程中的状态信息。用户可任选以下指令之一查看设备实时状态查询命令的可用参数。ascend-dmi -i -hascend-dmi -i --help各参数解释如表1所示。以查看芯片的详细信息为例。ascend-dmi -i -dt若推理服…