从0开始学习机器学习--Day24--核函数

核函数(Kernelsl function)

非线性数据的决策边界

对于非线性问题来说,决策边界在很多时候都是曲线,需要我们在假设函数中加入高阶多项式来拟合原始数据,这对于算法来说需要很长的运行时间去计算这些高阶多项式,那么有没有更高效的方法呢?

假设我们在特征的坐标轴上标记三个点,设置新的输入变量为,后面三个点也是类似的计算公式,我们把相似度函数称为核函数,这里展开的核函数是其中一种,叫做高斯核函数,其中被称为欧式距离,也就是两个向量点之间距离的平方,一般记作。

虽然看起来很奇怪,但我们从函数内部的性质来剖析,就能知道为什么这个核函数可以用来解决分类问题了。假如 ,意味着,此时结果为真,相反如果和之间的距离很远,说明函数展开式中两点的距离非常大,那么,从而表示结果为假。而核函数里的分母则代表了从1下降到0的速度,分母越大,下降速度越慢,反之则越快,如下图所示:

不同的sigma对应的等高线图和凸函数图

而在放在假设函数中,假设我们已经知道了参数分别为-0.5,1,1,0,那么函数在预测时就会通过计算与三个标记点的距离,带入到假设函数与0比较大小,大于等于0即为1,否则为0,类似于下图:

核函数预测的决策边界

但我们还有另一个问题,我们该如何去定义这些标记点,尤其是对于复杂的问题来说,标记点的数量也会随之上升。

一般来说,我们会把训练集里的每个点都作为标记点,也就是说计算一个点对于所有点包括自己的,将这些特征量像我们以前做的一样组装成向量,将函数写成。

当然,在使用SVM算法的过程中,有很多细节跟之前不太一样。例如, 输入特征之前都会做归一化,毕竟有些点和标记点之间的距离本来就很大,不作归一化处理容易出现畸形的决策边界;挑选核函数,像之前由于我们的训练样本较少,函数里的特征量较多,为了避免过拟合,我们都是使用了线性核函数,也就是普通的的形式输入,但并不是所有符合情景的核函数都是能使用的,需要满足的一个规定叫默塞尔定理(对于形如2q - 1的整数,只有在q本身也是一个素数的情况下,它才有可能是素数,同理,可以要求算法在用数值技巧不要脱离对于参数的定义),要求所用的SVM算法能满足优化方法,且能快速求得参数。

还有一些可能经常会用到的核函数,一个是多项式核函数,形式写作,其中C为常数,当预测样本和标记点很接近时,k值会非常大,所以其使用的前提是样本的特征值都大于0;字符串核函数,当涉及到文本处理的时候会使用。

最后,要注意输入特征和样本都非常少的情况,这种时候应该做的是先增加或创造某些特征(这些可能是根据市场或者科学原理推导出来的),再使用逻辑回归或线性核函数。

视频学习链接:https://www.bilibili.com/video/BV1By4y1J7A5?spm_id_from=333.788.player.switch&vd_source=867b8ecbd62561f6cb9b4a83a368f691&p=75

相关推荐
小向是个Der6 小时前
嵌入式进阶——MCU上电后的动作
c语言·单片机·mcu·学习·链接脚本
辣知10 小时前
辣知·化智93 被历史尘封的鬻子
学习
每天题库12 小时前
西藏安全员 A 证备考真题题库 强化重点知识刷题提升通过率
学习·安全·考试·题库·考证
Be for thing12 小时前
PyTorch基础|Tensor张量详解,张量创建、数据类型与常用操作
pytorch·学习·1024程序员节
前进的李工12 小时前
Agent 学习笔记 02:Harness 与工作流怎么理解
笔记·学习·agent·工作流·harness
m4Rk_13 小时前
【论文阅读】Agent记忆机制(114):MemoryTax——当 Agent 能自主搜索历史,专门的记忆系统还划算吗?
论文阅读·人工智能·学习·开源·github
程序员梅雨15 小时前
【从零开始学习数据仓库 | 第一篇】:维度建模理论
大数据·数据仓库·学习·阿里云·数据分析
keyipatience16 小时前
Git学习(4)Git分布式优势与实战配置全解析
git·学习
comyccccc19 小时前
STM32F407VET6核心板的部分电路绘制学习笔记
笔记·stm32·学习
叼烟扛炮19 小时前
Linux 学习笔记(三十六):并发进阶——读写锁 vs 自旋锁,到底怎么选?
linux·运维·服务器·笔记·学习