经典机器学习法---感知模型机

优质博文:IT-BLOG-CN

1、模型形式

感知机模型主要用于解决二分类问题,即响应变量Y是个二分类变量(如性别)。其基本思想是拟找出一个超平面S,将样本空间中的训练集分为两个部分,使得位于超平面S合一侧的点具有相合的Y值。

模型的具体形式如下:在这里插入图片描述
其中sign(.)为符号函数:在这里插入图片描述
该模型本质上和统计学中的线性模型类似,只不过我们通常用线性模型解决回归问题(即响应变量Y为连续变量),用广义线性模型(GLM,如Logistic模型)解决分类问题。
显然运用感知机模型的前提是训练样本空间是线性可分的:即存在某个超平面S可以将训练样本空间中的两类样本点完全正确地划分到S的两侧。

也说明了在后面运用梯度下降法求最优参数时,一旦当前参数满足这个前提条件就可以停止对参数的更新迭代了。

2、损失函数

给出模型的具体形式后,为了求最优参数还需设定相应的损失函数。分类问题中损失函数的一个自然选择是误分类点的总数,但是考虑到这样的损失函数对于参数w,b而言并非是个连续可导函数,而针对某个误分类点有:

该指标被称为函数距离(函数间隔),显然所有误分类点的函数距离和在一定程度上可以反映出模型分类效果的好坏(越小模型越好)。因此定义感知机模型的损失函数为:

其中M表示在当前超平面S下被误分类的点集合。

3、模型求解

这里采用梯度下降法Gradient descent求解感知机模型中的最优参数。对损失函数L求导得到梯度向量:在这里插入图片描述

接着采用随机梯度下降法,给定学习率k后,在误分类点集M中随机抽取一个点对参数进行更新:在这里插入图片描述

需要注意的是,使用上述损失函数的感知机模型如果采用不同的参数初始值或选取不合的误分类点就会得到不合的参数最优解(存在不止一个超平面S可以完全正确划分训练样本空间)。
综上所述,下面给出感知机模型的具体算法步骤:
输入:训练数据集T,学习率k
输出:wb以及模型y=wx+b
(1)选取初始化参数w0b0
(2)遍历训练集中的数据(x0,y0)
(3)如果yi(wxi+b)<0,则对当前参参数进行整:在这里插入图片描述

跳转至(2),直至训练集中没有误分类点停止迭代并输出当前参数w,b

上述算法中的一些细节步骤还是与之前理论部分有差别:比如理论中的随机梯度下降法是使用一个随机误分类点进行优化参数,这就要求每次迭代前都要找出当前参数下的误分类点集,然后在这些点中随机抽取一个样本点更新参数。但在上述的算法中把查找误分类点和跟新参数合步进行,即在遍历训练集时每找到一个误分类点就马上利用该点更新参数。这么做的原因在于:一方面如果采取先找误分类点集再随机抽取的方式,查找那些未参与参数更新时的误分类点所耗的时间白白浪费;另一方面边遍历边更新参数的做法可以保证在给定训练样本和参数初始值的情况下,输出的解唯一。

除了上述的算法,感知机模型还有一个对偶形式的算法,可以参考李航老师的《统计学习方法》。

4、代码实现

下面给出一个有关感知机例子的python代码,主要使用numpy库和pandas库。以鸢尾花数据前100行观测作为样本空间。(数据来源参考了https://www.cnblogs.com/scikit-learn/p/6973497.html

取第 1列和第3列构造一个二维特征变量X,取第5列作为响应变量Y
在这里插入图片描述

数据的具体形式如下:
在这里插入图片描述

还要写一个在当前参数下判断是否为误分类点的函数cal()
在这里插入图片描述

以及一个用于更新参数的函数update()
在这里插入图片描述

最后通过样本数据集计算感知机模型的参数:
在这里插入图片描述

最织得到如下结果:
在这里插入图片描述

对应的感知机模型为:在这里插入图片描述

然后将散样本点投影至Y=0平面,并画出超平面不Y=0平面的交线,使结果更加直观:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/587136.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

启发式搜索算法4 -遗传算法实战:吊死鬼游戏

相关文章: 启发式搜索算法1 – 最佳优先搜索算法 启发式搜索算法2 – A*算法 启发式搜索算法2 – 遗传算法 有一个小游戏叫吊死鬼游戏&#xff08;hangman&#xff09;&#xff0c;在学习英语的时候&#xff0c;大家有可能在课堂上玩过。老师给定一个英文单词&#xff0c;同学们…

2024深圳杯数学建模竞赛A题(东三省数学建模竞赛A题):建立火箭残骸音爆多源定位模型

更新完整代码和成品完整论文 《2024深圳杯&东三省数学建模思路代码成品论文》↓↓↓&#xff08;浏览器打开&#xff09; https://www.yuque.com/u42168770/qv6z0d/zx70edxvbv7rheu7?singleDoc# 2024深圳杯数学建模竞赛A题&#xff08;东三省数学建模竞赛A题&#xff0…

前端性能优化知识梳理

1.重要性 当我们面试的时候&#xff0c;前端性能优化方面算是必考的知识点&#xff0c;但是工作中我们又很少会重点的对项目进行前端优化&#xff0c;它真的不重要吗&#xff1f; 如果我们可以将后端响应时间缩短一半&#xff0c;整体响应时间只能减少5%~10%。而如果关注前端…

手把手实现一个简约酷美美的版权声明模块

1. 导语 版权声明在很多网站都有用到&#xff0c;出场率还是很高的。所以今天就实现一个属于自己分风格的版权声明模块&#xff0c;技术上采用原生的前端三剑客: HTMLCSSJavaScript(可能会用到) 比如CSDN的版权声明是这样的 2. 需求分析 先看看成品吧&#xff0c;这篇文字结…

翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习一

合集 ChatGPT 通过图形化的方式来理解 Transformer 架构 翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习一翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习二翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深…

强网杯 2019]随便注解题方式

先来看题 这里只有一个提交&#xff0c;那我们就先提交看看情况找找思路 这里提交以后发现也没有什么有用的信息 这样我们只能根据我们的经验先试试 输入1发现有报错 有报错信息就可以试试报错注入了&#xff0c;但是这种ctf题通常会有限制字符所以我使用 1 select 1,2# 来…

c#数据库: 4.修改学生成绩

将4年级的学生成绩全部修改为100分,。修改前的学生信息表如图所示: using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Text; using System.Threading.Tasks;namespace StudentUpdate {internal class Program{s…

Apache SeaTunnel k8s 集群模式 Zeta 引擎部署指南

SeaTunnel提供了一种运行Zeta引擎(cluster-mode)的方法&#xff0c;可以让Kubernetes在本地运行Zeta引擎&#xff0c;实现更高效的应用程序部署和管理。在本文中&#xff0c;我们将探索SeaTunnel k8s运行zeta引擎(cluster-mode模式)的更多信息&#xff0c;了解如何更好地利用Ze…

JavaScript基础(二)

JS语法结构——引入方式 js很明显可以是一个后缀名为js的文件&#xff0c;js的引入方式和css一样&#xff0c;也有三种方式。 1.外部 使用script表现&#xff0c;只不过增加一个src属性&#xff0c;把js文件的路径src属性中。 <script src "js文件路径">&l…

h5+Vant左滑删除

介绍&#xff1a;这是一个上拉加载下拉刷新的列表&#xff0c;外加左滑删除。废话不多说&#xff0c;直接上代码&#xff01;&#xff01;&#xff01;&#xff01; <template><div class"info-list"><div class"top-bar"><van-nav-…

深入解析Floyd Warshall算法:原理、Java实现与优缺点

Floyd Warshall算法的简介 在我们的日常生活中&#xff0c;常常会遇到需要找出两点之间最短路径的问题。比如&#xff0c;从家到公司的最短路线&#xff0c;或者在旅行时&#xff0c;从一个景点到另一个景点的最快路线。 为了解决这类问题&#xff0c;科学家们设计出了许多算法…

利用大型语言模型提升数字产品创新:提示,微调,检索增强生成和代理的应用

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

code-server容器webpack的ws无法连接解决方法

TLDR 通过指定client的wsrul去连接ws devServer.client.webSocketURL ‘wss://<Forwarded uri>/ws’ 拓扑 1、code-server: 用于编写代码、启动webpack dev-server 服务&#xff1b;[https://<domain>:8001] 2、webpack: 用于浏览dev-server服务&#xff1b;[ht…

spring-boot示例

spring-boot版本&#xff1a;2.0.3.RELEASE 数据库: H2数据库 &#xff08;嵌入式内存性数据库&#xff0c;安装简单&#xff0c;方便用于开发、测试&#xff0c;不适合用于生产&#xff09; mybatis-plus框架&#xff0c;非常迅速开发CRUD

如何去掉引用网址的小尾巴

引用文章的链接时会出现很长冗余信息&#xff0c;删&#xff0c;删&#xff0c;删……&#xff0c;直到从平流层删到地平线 使用 Neat URL&#xff08;支持 google 系、Firefox&#xff09;扩展中的【拦截参数】可以去除的这类百无聊赖的小尾巴。 安装后&#xff0c;点击【Pr…

C语言——单链表实现数据增删查改

一.前言 嗨嗨嗨&#xff0c;我们又见面了。前面我们已经学习了关于数据结构中的顺序表&#xff0c;今天我们来学习数据结构中的单链表。废话不多说让我们直接开始吧。 二.正文 1.1链表的概念 链表是一种物理存储结构上非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺…

【C#】基础知识

0.参考 C#语言入门详解 1.几种打印hello_world的方式 1.1 console控制台 新建一个console&#xff0c;直接打印&#xff1a; Console.WriteLine("Hello_world");启动一闪而过&#xff0c;在vs调试中选择开始执行不调试&#xff08;without debug&#xff09;。 …

算法效率的判断及一些典型例题的讲解

一.算法效率 1.用处&#xff1a;判断算法的好坏&#xff0c;好的算法应该是高效的 2算法效率取决于时间复杂度和空间复杂度 <1>时间复杂度 1.1概念&#xff1a;算法中基本操作的执行次数就是算法的时间复杂度 1.2表示&#xff1a;大O的渐进表示法&#xff0c;例如O(N)…

java技术栈快速复习02_前端基础知识总结

前端基础 经典三件套&#xff1a; html&#xff08;盒子&#xff09;css&#xff08;样式&#xff09;JavaScript&#xff08;js&#xff1a;让盒子动起来&#xff09; html & css HTML全称&#xff1a;Hyper Text Markup Language(超文本标记语言)&#xff0c;不是编程语…

记一次生产事故的排查和解决

一. 事故概述 春节期间, 生产系统多次出现假死不可用现象, 导致绝大部分业务无法进行. 主要表现现象为接口无法访问. 背景为900W客户表和近实时ES, 以及春节期间疫情导致的普通卖菜场景近似秒杀等. 二. 排查过程 优先排查了info, error, catalina日志, 发现以下异常: 主要的…