机器学习入门(第二天)——感知机

概述

每个算法都是为了解决一类问题,或者说解决之前的问题所创造出来的,而感知机,在解决一类问题的时候也暴露了很多问题,变相的推动了以后的算法的改进方向。

知识树

苹果表示相对重要的

直观介绍

现在有一盘红豆和绿豆,怎么把红豆和绿豆分开来

当红豆和绿豆放在一起时,它们却能自己分开来,为什么呢?

我们怎么区分呢,假设我们随意花如下的线

这样是不是就完美的区分开来了,完美解决。

那么程序怎么知道x和y都大于0的豆是红豆呢?

或者说,它是怎么学会这个规则的?

那是不是只要一条直线不分错一个点,或者说尽可能的少分错点,那就是一条好的直线。

即:我们把所有分错的点和直线的距离的和(蓝色示例),求和的距离最小表示这条直线越好,因为这表示这条线分错的最少。

如图中红色线的和的距离肯定比黑色或者黄色的线大。

总结

  1. 一条直线不分错一个点,这就是好的直线。

  2. 模型要尽可能找到好的直线。

  3. 如果没有好的直线,在差的直线中找到好的直线。

  4. 判断直线多差的方式:分错的点到直线的距离求和。

感知机模型

Perceptron

确定终究目标

f(x)

我们希望一个函数,如f(x),进来一个豆,它告诉我们是红豆还是绿豆

f(x) = sign(w * x + b)

sign如图:

把w * x + b 比作x,相当于给了一个“豆”进来,就只得到两个结果,也就是红豆(+1)或者绿豆(-1)。那么w * x + b 是什么?

w * x + b是超平面

即那条黄色的分割线,且当豆在线的上面,就是红豆,在下面是绿豆。

超平面是n维欧氏空间中余维度等于一的线性子空间,也就是必须是(n-1)维度。即如果是2维,超平面就是1维,如果是3维,超平面就是2维。

w * x + b分别代表什么

w是权重,x是特征的实际值,b是偏值

比如知道豆的直径,如x1表示某个豆的直径 = w1 * x1 + b1,大于1则是红豆,小于则是绿豆

有时候一个特征不一定能区分开来,可能还需要质量,(x1,x2)计算 = (w1, w2) * (x1, x2)

亦或者还有豆的光滑度,则有x1, x2, x3 ,这样就变成3维了。

正式的说

w * x + b 是一个n维空间中的超平面S,其中w是超平面的法向量,b是超平面的截距,这个超平面将特征空间划分成两部分,位于两部分的点分别被分为正负两类。所以,超平面S称为分离超平面。

特征空间也就是整个n维空间,样本的每个属性都叫一个特征,特征空间的意思是在这个空间中可以找到样本所有的属性的组合。

感知觉的学习策略

Learning policy

求空间中任意一个点X0到超平面S的距离

函数间隔与几何间隔

函数间距:

缺点:已知wx + b = 0,当不等于0时(比如1),那如果等比例放大缩小w和b是不是就更小,等同于1/2 (wx + b) = 1/2(wx) + 1/2(b) = 1/2,超平面是没有动的,但是结果却缩小了,那么模型就觉得它知道等比例缩小就能得到更小的结果。

这时候就引入几何间距

几何间距:

加入了二范式,相当于有了一个度量的标准,即等比例缩小w时,外面的w也会等比例变化。

通俗来讲,函数间距是将你去吃饭的那段路本来要1000m,它改成1km,1就小于1000了,而几何间距就杜绝这种情况,只能都是m或者km

对于误分类数据而已,

yi表示真实是+1还是-1

w*xi+b表示预测的结果

绿豆预测成绿豆:预测结果w*xi+b < 0(绿豆),且真实为绿豆(-1)时,则- * -1(wxi + b) < 0。

绿豆预测成红豆:w*xi+b > 0,真实为绿豆-1,则- * -1 (wxi + b) > 0。

也就是说只要分错,那么数据一定是大于0

误分类点xi到超平面S的距离为:

因此,所有误分类点到超平面S的总距离为:

M:误分类点的集合

感知觉的学习策略——原始形式

Learning policy

  1. 任选一个超平面w0,b0

    随机初始化,如w0 = 1,可能有多个维度,如x0,x1,x2,那么w也会有w0,w1,w2的随机初始化

  2. 采用梯度下降法极小化目标函数

  3. L:loss

    这时候用的还是函数间隔,因为感知机的超平面的目标是不分错任何一个点。所以不存在说要某个点到超平面的距离无限的小。

    也可以用几何间隔,但是会增加计算量,没有必要,但后面基本都是用几何间隔。

    侧面反映了感知机只能在线性可分的数据集上使用,也就是线性模型。

  4. 更新w,b

例子

Example

训练数据中,正例(y=+1)点位x1 = (3,3)T,x2 = (4,3)T,负例(y=-1)为x3 = (1, 1)T,求解感知机模型f(x) = sign(w*x + b),其中w = (w1, w2)T,x = (x1, x2)T

解:

  1. 构造损失函数

  2. 梯度下降求解w,b。设步长为1

    1. 取初值w0 = 0,b0 = 0

    2. 对于x1,y1(w0 * x1 + b0) = 0未被正确分类,更新w,b。w1 = w0 + x1y1 = (3,3)T,b1 = b0 + y1 = 1 => w1 * x + b1 = 3x + 3x + 1

  3. 对x1,x2,显然yi(w1 * xi + b1) > 0,被正确分类,不做修改。对于x3,y3(w1 * x3 + b1) 应该小于0,结果是大于0被误分类,更新w,b。

  4. 以此往复,直到没有误分类点,损失函数达到极小。

总结

Summarization

  1. 感知机通过构造超平面的形式划分不同类的点。

  2. 感知机属于线性判别模型,因为它的判别边界是线性的。

  3. 函数间隔和几何间隔的区别

    大多时候是用的几何间隔,因为有“度量标准”,而感知机是误分类驱动,目标是不分错任何一个点,即结果为0,所以即使度量标准改变也没用。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 Lhotse 高效管理音频数据集

Lhotse 是一个旨在使语音和音频数据准备更具灵活性和可访问性的 Python 库&#xff0c;它与 k2 一起&#xff0c;构成了下一代 Kaldi 语音处理库的一部分。 主要目标&#xff1a; 1. 以 Python 为中心的设计吸引更广泛的社区参与语音处理任务。 2. 为有经验的 Kaldi 用户提供…

01 原神 选择题

以下这个不确定

【20年扬大真题】编写程序,功能是从键盘输入若干4位数字学号,然后输出学号中百位数字是3的学号 (输入0时结束循环)

【20年扬大真题】 编写程序&#xff0c;功能是从键盘输入若干4位数字学号&#xff0c;然后输出学号中百位数字是3的学号 &#xff08;输入0时结束循环&#xff09; #include<stdio.h> #define MaxSize 20 int BaiWei3(int x) {x x / 100;if (x % 10 3) {return 1;}els…

在 VSCode 中使用 GDB 进行 C/C++ 程序调试(图文版)

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言&#xff0c;数据结构&#xff0c;Linux基础&#xff0c;ARM开发板&#xff0c;网络编程等领域UP&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff0…

left join查询耗时太慢,添加索引解决问题

背景 因为最近自己用的小app越用感觉加载越慢&#xff0c;以为是自己app开发逻辑出现问题了&#xff0c;结果才发现是自己很早以前的代码用到的是left join多表联查&#xff0c;以前因为数据少&#xff0c;所以没有感觉&#xff0c;现在数据量稍微一大&#xff0c;耗时就非常严…

AI的未来!Salesforce发布2024年全球科技的重要预测

Salesforce领导者处于影响企业的最新趋势、技术和挑战的前线&#xff0c;通过市场分析、客户对话等方面带来专业知识和洞察力。毫无疑问&#xff0c;人工智能是本年度的最热话题&#xff0c;Salesforce关于技术和人工智能的预测值得关注。 生成式AI改变商业未来的方式 01 生…

微信公众号上怎么做微信助力活动

微信公众号微信助力活动&#xff1a;一起分享&#xff0c;一起成长 在当今社交媒体时代&#xff0c;人们之间的互动和分享变得越来越重要。微信公众号作为一个广受欢迎的社交平台&#xff0c;为人们提供了一个便捷的分享和交流渠道。而微信助力活动则是通过分享和互动&#xf…

京东数据分析报告:2023年10月京东平台大家电销售数据汇总分析

10月份&#xff0c;大家电市场的销售数据已经新鲜出炉&#xff0c;大盘销售整体向好。 鲸参谋数据显示&#xff0c;今年10月&#xff0c;京东平台大家电市场的销量为400万&#xff0c;环比增长约10%&#xff1b;销售额将近87亿&#xff0c;环比增长约11%&#xff0c;同比涨幅不…

【追求卓越01】数据结构--数组

引导 这一章节开始&#xff0c;正式进入数据结构与算法的学习过程中。由简到难&#xff0c;先开始学习最基础的数据结构--数组。 我相信对于数组&#xff0c;大家肯定是不陌生&#xff0c;因为数组在大多数的语言中都有&#xff0c;也是大家在编程中常常会接触到的。我不会说数…

steam游戏找不到steam_api64.dll,分享三个有效的解决方法

在现代科技发展的时代&#xff0c;游戏已经成为了许多人生活中不可或缺的一部分。而Steam作为全球最大的数字发行平台之一&#xff0c;拥有着庞大的游戏库和活跃的用户群体。然而&#xff0c;在使用Steam时&#xff0c;有些用户可能会遇到Steam_api64.dll丢失的问题&#xff0c…

使用Echarts.js绘制多条折线图

一、页面效果 默认tab为不限&#xff0c;渲染多条折线&#xff1a; 切换tab&#xff0c;只渲染对应tab的一条折线&#xff1a; 二、功能描述 ​ 1、tab选中不限时&#xff0c;图表中同时渲染多条折线&#xff0c;对应多种类型的数据。 ​ 2、切换tab时&#xff0c;如果选中指…

日期格式转化成星期几部署到linux显示英文

异常收集 原因&#xff1a;解决办法仰天大笑出门去&#xff0c;我辈岂是蓬蒿人 传入一个时间获取这个时间对应的是星期几&#xff0c;在开发环境&#xff08;window系统&#xff09;中显示为星期几&#xff0c;部署到服务器&#xff08;linux系统&#xff09;中会显示英文的时间…