(第一话:开题话)
大家好,今天开始给大家介绍机器学习世界的一种新武器——支持向量机,代号为SVM。
(1)支持向量机的出身:新贵家族“模式识别”
数说君曾经介绍过logistic回归模型(在微信公众号“数说工作室”中回复“logit1”和“logit2”查看),实际上它是一个“线性分类器”,比如,我们用客户的收入、年龄去判断该客户流失/不流失的概率:
P(Y=流失)=收入+年龄
这是一个很简单的分类模型,它试图根据某人的收入和年龄来区分他“流失/不流失”的可能性。
其实,它的原理也不是那么简单,因为我不想一开篇就说什么用梯度下降搜索方法去寻找一个可以实现“最大似然函数”blablabla这样凶残的东西。
但是现在,我不但说了,我还要介绍一个更为庞大复杂的家伙,它,叫SVM,中文名是支~持~向~量~机~。哦,好给力的名字~。
Logistic模型和SVM都属于线性分类器,线性分类器又是模式识别大家族的一种。大概的族谱如下图所示:
支持向量机就是模式识别家族的一辆分类战车,撕开一切难分的样本。
(2)SVM使命:出生就带着对抗旧世界的战斗基因
SVM是一种模式识别的新技术,相比传统的统计模式识别机器,它先进的装备可以将很多难分的样本给活生生的撕开。
SVM要求的样本数是相对比较少,仅仅用到哪些称之为“支持向量”的样本。
SVM擅长应付数据线性不可分的情况。像下面的两类点,一个线性函数是分不开的,而SVM可以将样本映射到高维空间来区分(怎么突然想到《星际穿越》了,不管怎样,在高维度空间再看原来的很多问题,都变得简单很多)。
SVM引入核函数,避免了“维数灾难”(什么是“维数灾难”?在微信公众号“数说工作室”中回复“wszn”查看),大大减小了计算量,可以处理几万维的数据。相比之下,很多其他分类器,比如KNN,需要用到所有样本,如果维数再高一位,计算量则会非常之大(关于KNN,数说君也写过,但微信上没有,可以去微博@数说工作室网站里搜)。
什么叫风险?就是真实值与拟合值的差,一个模型拟合出来的值,如果与真实值很相近,显然风险就很小。
在统计建模中,我们常常把训练出来的模型在已知样本中进行试分类,与真实值进行比较,这个差值叫做“经验风险”,一般的机器学习方法都关注这个经验风险,准确率常常能达到90%。但是把这个模型拿去真正给那些未知样本分类的时,你会发现很多模型成绩一塌糊涂——差值很大,准确率很低。也就是推广能力很差。
而SVM不仅关注经验风险,也关注模型向未知世界推广的风险——置信风险:
结构风险=经验风险+置信风险
经验风险:分类器在样本上的误差;
置信风险:表达了我们在多大程度上可以信任分类器在给定样本上分类的结果,是一个区间。
SVM的目标,是使得结构风险最小化。
(3)SVM的战场:金融、生物、互联网、工业4.0…..
因为是分类器,所以SVM的主要用途还是分类。比如在金融上,可以处理时间序列模型,判断未来股票的涨跌;在生物上,生物特征的融合识别;工业上,自适应信号处理、汽车的故障诊断、机器人的各种对准匹配确认等等。
(4)本系列
以上说了那么多,你一定很想了解这个高大上的新机器,什么是“支持向量”识别系统、什么“高维映射”技术、“核函数”子装置、风险自我识别系统等等,以及它如何应用在金融工业上,本系列下面的文章将分别介绍,力图保持数说工作室“简洁、易懂、不装逼”的传统风格,希望各位能有“读着读着,不知不觉的就把SVM给读懂了,好开心呀!”的感觉。
特别说明:这里的机,其实并不是真的机器,而是一种算法。