机器学习-19:MachineLN之SVM(1)

你要的答案或许都在这里小鹏的博客目录

我想说:

其实很多事情,只要你想做,是肯定有方法做的,并且可以做好;

说起SVM很多人都会感觉头疼,无非就是公式多一个,其实很多时候你真是用的话,都不用你手动自己实现,你是在学习的一种机器学习的思维方式,就要比为什么要提出svm?svm解决了什么问题?svm中的kernel又是想解决线性svm解决不了的问题?svm的优势在哪里?就好比生活中不缺乏美,只是缺少发现美的眼睛,在学习中发现问题的能力及其重要,当你问题多了很多人会感觉你烦,但是没关系,解决了就会柳暗花明;并且要时常问自己从中学到了什么?再遇到问题是否可以拿来主义?还是可以从中借鉴?



说起SVM,那么我的问题:(根据MachineLN之三要素:模型、策略、算法)


(1)什么是SVM?(模型)

(2)SVM是如何学习的?(策略)

(3)SVM学习算法?(算法)

顺便后面的要写的展望一下: SVM软间隔最大化;SVM核技巧;SVM求解对偶问题的SMO算法;SVM不用提到的拉格朗日求解,使用梯度下降损失函数应该怎么设计;SVM源码:smo算法求解参数 和 使用梯度下降求解参数;

看到这里你的答案是什么?下面是我的答案:


(1)什么是SVM?(模型)

MachineLN之感知机中有提到:感知机的不足和svm的提出;

SVM(支持向量机)表达式:


那么分类超平面:


这里和感知机是一样的,不清楚的可以回过头看一下;不同的是在策略和算法上;


(2)SVM是如何学习的?(策略)

先看这么一句话,开始看可能比较难理解:下面我画个图就好理解了,一般来说,一个点距离分离超平面的远近可以表示分类预测的确信程度,在超平面wx+b=0确定的情况下,|w x+b|能够相对地表示点距离超平面的远近,看下图:


这个理解了,那么提到函数间隔应该就好理解了,在感知机章节我们就注意过wx+b与类标记符号y的问题,他俩是否一致表示分类似否正确,所以可用y(wx+b)表示分类的正确性和确信度,这就是函数间隔;

那么函数间隔 functiona lmargin:对于给定的训练数据集T和超平面(w, b),定义超平面关于样本点(xi, yi)的函数间隔为:


定义超平面(w,b)关于训练数据集T的函数间隔为超平面(w,b)关于T中所有样本点(xi, yi)的函数间隔之最小值,即:


但是把手撕那部分除以||w||作为超平面,你会发现,此时w,b成倍的改变,超平面不变,h1和h2也不变,这就引出了几何间隔,也可以直接理解为点到直接的距离。(大家不要怪学术的大牛不点透点,这些都是基础)

接下来几何间隔 geometric margin:对于给定的训练数据集T和超平面(w, b),定义超平面关于样本点(xi, yi)的函数间隔为:


定义超平面(w,b)关于训练数据集T的函数间隔为超平面(w,b)关于T中所有样本点(xi, yi)的函数间隔之最小值,即:


那么接下来就可以引出支持向量机的思想:求解能够正确分类训练集并且几何间隔最大的分类超平面,对线性可分的训练数据集而言,线性可分分离超平面有无穷多个(等价于感知机),但是几何间隔最大的分离超平面是唯一的。这里的间隔最大化又称为硬间隔(有硬就有软)最大化。

定义SVM的策略为:

(1)几何间隔最大化;

(2)并且每个样本点的几何间隔大于设最大函数间隔;

可表示为:


整理后:


你会发现成倍的增加w,b对上式没有影响,那么就可以转化为一个等价问题,将取1;整理后可得:


说到这里了就可以谈一下支持向量的由来:在线性可分情况下,训练数据集的样本点中与分离超平面跄离最近的样本点的实例称为支持向量( support vector )。支持向量是使约束条件式等号成立的点,即


对于二分类yi的取值为:[-1, 1],那么应该有表达式满足上式:


对这两个就是支持向量H1和H2,看下图:


到这里svm的原理应该大概清楚了;下面就是如何求解参数的问题了。


(3)SVM学习算法?(算法)

转为对偶问题(KKT条件成立):对于拉格朗日大家应该很熟悉,用来构建函数求解凸优化问题,svm优化问题引入拉格朗日因子后成了:


根据拉格朗日对偶性,原始问题的对偶问题是拉格朗日函数的极大极小问题:


求最值问题我们最擅长的是求导,那么接下来就手撕一下吧:


可总结为:


先聊到这里吧,接下来的内容:SVM软间隔最大化;SVM核技巧;SVM求解对偶问题的SMO算法;SVM不用提到的拉格朗日求解,使用梯度下降损失函数应该怎么设计;SVM源码:smo算法求解参数 和 使用梯度下降求解参数;更精彩!


推荐阅读:

1. 机器学习-1:MachineLN之三要素

2. 机器学习-2:MachineLN之模型评估

3. 机器学习-3:MachineLN之dl

4. 机器学习-4:DeepLN之CNN解析

5. 机器学习-5:DeepLN之CNN权重更新(笔记)

6. 机器学习-6:DeepLN之CNN源码

7. 机器学习-7:MachineLN之激活函数

8. 机器学习-8:DeepLN之BN

9. 机器学习-9:MachineLN之数据归一化

10. 机器学习-10:MachineLN之样本不均衡

11. 机器学习-11:MachineLN之过拟合

12. 机器学习-12:MachineLN之优化算法

13. 机器学习-13:MachineLN之kNN

14. 机器学习-14:MachineLN之kNN源码

15. 机器学习-15:MachineLN之感知机

16. 机器学习-16:MachineLN之感知机源码

17. 机器学习-17:MachineLN之逻辑回归

18. 机器学习-18:MachineLN之逻辑回归源码




<think>嗯,用户想了解Excel中的VLOOKUP函数的用法和参数含义。首先,我需要回忆一下VLOOKUP的基本结构。VLOOKUP是垂直查找函数,用于在表格的首列查找指定的值,然后返回该行中指定列的数据。它的四个参数分别是查找值、表格范围、列索引号和匹配模式。 接下来,我得确认每个参数的具体作用。第一个参数是lookup_value,也就是用户要查找的值,比如产品ID或者姓名。第二个参数是table_array,即查找的范围,这里要注意的是,查找值必须位于这个范围的第一列,否则函数无法正确工作。第三个参数是col_index_num,也就是用户想要返回的数据在表格范围中的第几列,这个列数是从表格范围的第一列开始算起的,不是整个工作表的列。第四个参数是range_lookup,决定是精确匹配还是近似匹配,通常用FALSE或0来指定精确匹配,避免错误。 然后,用户可能需要一个具体的例子来理解如何使用。比如,假设有一个产品价格表,用户想根据产品ID查找对应的价格。这时候,VLOOKUP就可以在ID列查找,然后返回价格列的数据。同时,要提醒用户注意表格范围最好使用绝对引用,比如$A$2:$C$100,这样在拖动公式时范围不会变化。 可能遇到的问题也需要考虑。比如,如果查找值不在表格的第一列,或者列索引号超过了表格的列数,函数会返回错误。此外,数据格式不一致也可能导致问题,比如查找值是数字,而表格中是文本格式的数字,这时候需要统一格式。还有,当出现#N/A错误时,可能是查找值不存在,或者匹配模式设置不正确,需要检查参数是否正确。 用户可能还会问到如何避免常见的错误,比如部分数据匹配出错的情况。这时候需要检查是否有多余的空格,或者数据格式不一致,或者表格范围没有锁定导致拖动时偏移。此外,XLOOKUP作为VLOOKUP的升级版,可能在某些情况下更方便,比如可以向左查找或者返回多列数据,这也是可以提及的内容。 最后,整理步骤,从基础语法到参数说明,再到具体案例,逐步引导用户理解如何使用VLOOKUP函数。同时,提供常见错误和解决方法,帮助用户在实际应用中避免问题。如果有必要,还可以比较VLOOKUP和其他查找函数的区别,比如HLOOKUP或XLOOKUP,但根据用户的问题,主要集中在VLOOKUP本身即可。</think>### Excel VLOOKUP函数详解 #### 一、基础语法与参数说明 VLOOKUP函数的语法为: $$=VLOOKUP(lookup\_value, table\_array, col\_index\_num, [range\_lookup])$$ 包含4个参数: 1. **lookup_value**(必填):要查找的值(如单元格引用或具体值) 2. **table_array**(必填):包含数据的表格范围(必须包含查找列和返回列) 3. **col_index_num**(必填):返回值所在列的序号(从table_array第一列开始计数) 4. **range_lookup**(可选):匹配类型 - `TRUE`/`1`:近似匹配(默认值,需数据升序排列) - `FALSE`/`0`:精确匹配(常用选项) [^1][^2] #### 二、使用步骤演示(工资表查询案例) 假设需要根据员工编号查询工资: 1. 建立查询单元格(如`B12`) 2. 输入公式: ```excel =VLOOKUP(A12, $A$2:$D$100, 4, 0) ``` - `A12`:待查询的员工编号 - `$A$2:$D$100`:锁定数据区域(绝对引用) - `4`:返回第4列(工资列) - `0`:精确匹配 [^2][^3] #### 三、常见错误与解决方法 | 错误现象 | 原因 | 解决方案 | |---------|------|---------| | #N/A | 查找值不存在 | 检查数据源或改用`IFERROR`容错 | | #REF! | 列序号超出范围 | 确认col_index_num ≤ 表格列数 | | 部分匹配失败 | 数据格式不一致 | 统一数值/文本格式 | | 结果错位 | 表格未锁定 | 使用`$`符号固定区域引用 | [^3][^4] #### 四、进阶技巧 1. **多条件查询**: 使用辅助列合并多个条件字段 ```excel =VLOOKUP(A2&B2, $D$2:$F$100, 3, 0) ``` 2. **通配符匹配**: `"*"`匹配任意字符,`"?"`匹配单个字符 ```excel =VLOOKUP("张*", $A$2:$C$100, 3, 0) ``` 3. **跨表查询**: 引用其他工作表数据 ```excel =VLOOKUP(A2, Sheet2!$A$2:$D$100, 4, 0) ``` [^1][^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MachineLP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值