分类问题
问题的一种实现方式是,使用,对于所有的预测结果,以某个值作为分界。比如小于0.5意味着0,大于0.5意味着1。然而,这种方法不够好,因为分类问题并不能用线性方程表示。
逻辑回归
假设函数
为了推导分类问题的假设函数。我们可以先忽略y其实是离散值这个事实,尝试使用线性回归模型来预测y。所不同的是,我们试图将y限制在如下范围:
决策边界
观察上面公式,不难发现
是一条将y分割成两部分的线,一边是0,一边是1。决策边界由假设函数决定。
例如:
如上图,由
再比如:
观察上图的假设函数,不难发现这是个半径为1的圆形组成的决策边界,圆内部的(X1,X2)将使得y=0,反之,圆外部的(x1,x2)将使得y=1。
因此,假设函数形成了决策边界,不同的输入被假设函数落入不同的区域,从而得到分类的结果。所以,分类问题也是回归问题,只不过回归的结果是一组离散的值,并且我们采用上面的logistic函数来实现,因此,这种回归方法称为逻辑回归(logistic regression)。
代价函数
与线性回归一样,为了得到最优的假设函数,我需要先定义代价函数来衡量分类器的精度。但是我们不能直接使用线性回归中的代价函数,因为这会产生很多局部最优解,从而难以得到全局最优解,我们称这种函数为non-convex函数(convex这个术语在中文翻译中可能歧义,所以这里不做翻译)。下图展示了non-convex和convex的区别:
针对逻辑回归问题,定义如下的代价函数:
通过这样代价函数设计,我们可以保证代价函数是函数。
逻辑回归梯度的下降
上一节,我们定义了逻辑回归的代价函数,但是这个函数被分成了两部分:
为了方便进行算法设计,需要将两部分合二为一:
其他算法
,,算法可以用来代替梯度下降算法,因为这些算法在寻找最优的过程中往往更高效和精确。我们无需自己编写这些算法实现,而是直接使用现成的库,因为这些库在实现上已经做过高度优化和大量测试了。octave也支持这些算法。
从中我们发现,在使用时,我们无需手动设定学习速率参数。
下面是一个例子:
多级分类
上面我们讨论的分类问题最终的预测结果非0即1,也就是说,只有两种分类可能。在许多实际的问题中,分类结果有多种可能。例如:
将邮件分为工作、朋友、家庭等类
将天气分为晴天、阴天、雨天、下雪天
由于,我们可以把问题分割成个二值分类问题,每个二值分类问题计算当前预测的y属于其中一个分类的概率。
这种方式也叫,例如下面一个3级分类问题:
首先可以创建一个二值分类器,计算样本为三角形和非三角形的概率;然后创建一个二值分类器,计算样本为长方形和非长方形的概率;然后创建一个二值分类器,计算样本为叉和非叉的概率;最后将这三个分类其中概率最大的作为结果。每次我们考察其中一个分类,跟其他分类的概率,从而把多级问题转化为多个二值化分类器。
夏洛克 AIOps
Make Data Think
人工智能 | 机器学习 | IT运维
领取专属 10元无门槛券
私享最新 技术干货