sklearn前面有过一个树状图,大概说了什么情况用什么模型合适。
监督学习分类模型,主要有逻辑回归LogisticRegression,支持向量机svm,神经网络,近邻KNeighboursClassification,朴素贝叶斯naive_bayes以及集成模型,随机森林, AdaBoost等等。
这次先说逻辑回归(LR),svm。说说我的理解
在线性可分的情况下,逻辑回归和svm可以说是一个相似的模型.
先看假设函数,hypothesis,先用边界函数确定决策边界,都是一个平面。
LR将边界两边的f(x)值映射到Sigmoid函数中,得到一个概率,概率大于0.5,则认为是分类1,否则就为0。从Sigmoid函数可以看出x离0越远,分类正确的概率越大。然后通过极大似然估计得到cost function目标函数,求解这根线的参数。
而SVM是确定两根线,用于确定这两条线的点就是支持向量,在这两条线两侧的点分别是不同类别,SVM要求的是这两条线是所有线里最大间距的两条。而超平面是中间这条f(x)=0,这条线。
总的说来,我认为都是先画一条线(一个超平面),根据这个平面得到一个f(x),然后用映射函数映射成0或者1.
跟LR不同的是SVM只跟支持向量有关,删减一些离线比较远的点,不会影响超平面,计算量也会小一些,且要求|f(x)|>=1,分类效果更好。但是就对异常点比较敏感。
而LR的平面是通过所有点确定的,删减点必然会有影响。
关于SVM的目标函数
ng这样推导的svm的目标函数,根据LR的目标函数,做了一定的简化,就变成这样。粉色线的斜率都行,因为看得出在分类正确的情况下,f(x)=0,不正确的离0越远,值越大,错的越多,惩罚越大。
这实际就是hinge loss,如果被正确分类,损失是0,否则损失就是 1−mi(w) 。
用hinge 函数来表示目标函数就会成这样。可以看成是L2正则加Hinge loss之和。
y取0,1?-1,1
可以看到ng的y取值0,1,但是更多情况下,SVM的y取值为-1,1,特别是用几何来推导目标函数时。比如理解SVM的三重境界,特别提到为啥要取-1,1.
我认为是因为SVM有一个约束条件,就是y>=1时,f(x)>=1,,f(x)<=-1时,y><=-1,用-1,1就能把这两个条件合成一个
这也正是几何求解时的函数间隔,它既能表示分类的正确性,也能表示离0的距离,即x正确分类的可信度。 但是可以看到用几何求解的目标函数是
这与ng的目标函数有所差异,就是少了一坨。这就是所谓硬间隔,就是所有点都必须离超平面有1以上的距离,但是有些情况有噪点,异常点,SVM就会为了零星异常点更改超平面。
比如这样,明显看出间隔变小,并不是一个更好的边界。
于是修改了约束条件。意思是不用强行比1大,小点也行,这就是软间隔。
目标函数也就变成这样。
ng与几何推导最后也就是殊途同归了。
整理一下
线性不可分
LR对线性不可分的情况不太友好,因为对于f(x)是多项式的情况,w项太多,不好确定,一般情况线性不可分会选用SVM的核函数和神经网络。
SVM的核函数是把线性不可分的数据升维度之后就能线性可分,然后数学能通过核函数再降维。
朴素贝叶斯主要用在处理文字信息,分类垃圾信息之类,近邻KNeighboursClassification统计需验证点周围的k个已知点的类别,取多数的那个类别为该点的类别。