机器学习中的分类问题基本思路

分类

Classification and Representation

Classification

我们来讨论下分类问题。我们主要讨论的分类算法是逻辑回归,即logistic regression,它是当今最流行也是应用最为广泛的学习模型。不过,虽然这个模型名字里有”回归”字样,但它确确实实是标准的分类模型,而不是“回归”模型。这一点我们在后面详细介绍逻辑回归时再仔细讨论。

现在,让我们开始讨论分类问题吧。

这里我们有几个分类问题的例子。

在之前的课程中,我们也说过将电子邮件垃圾分类作为分类问题的例子。

另一个有意思的分类例子是,在线交易。比如我们有个电商网站。针对一笔具体的交易,我们想要知道它是不是欺诈,也就是说是不是使用了一张被盗的信用卡或者用户密码被盗了。

最后一个例子也是前面说过的例子,就是诊断肿瘤是良性的还是恶性的。

在所有的这些例子中,我们试图预测的目标变量y,它的取值,都是二值的。比如,垃圾邮件还是非垃圾邮件,欺诈交易还是正常交易,良性还是恶性。

在分类领域中,也常常使用0表示负类(negative class),使用1表示正类(positive class)。比如,0表示恶性肿瘤,1表示良性肿瘤。0表示正常邮件,1表示垃圾邮件等。不过怎么定义正类、负类其实都无所谓,它仅仅是一种标识罢了,在具体的应用中可以自由定义,只要不引起不必要的歧义就可以。比如,你说你的应用是判断邮件是否是垃圾邮件,那么最好0表示否,1表示是,否则在解释的时候需要额外地绕一下,很容易造成误解。

目前,我们先从二分类问题开始研究。然后我们再讨论下多分类,即目标变量y不仅仅是二值的,可能是0,1,2,3等。

那么,如何开发一个分类算法呢?

这里有一个样例数据集,其实也是前面我们讨论过的肿瘤是否是良性的。我们注意到,目标变量y取值是要么是0,要么是1,分别代表恶性和良性。所以,在我们现有知识下,我们能够做的就是,套用学过的算法。

使用线性回归算法来做分类问题通常并不是一个好主意。虽然在我增加这个极端样本之前,线性回归似乎可以很好地工作,但这仅仅是特殊情况的运气。通常情况下,如果真的使用线性回归在分类问题上得到了不错的效果,那么很可能就真的仅仅是走运,但确实不应该在分类问题上使用回归算法。

另外还有一点就是,线性回归算法产出的y值通常是没什么限制的,可能比1大非常多,也可能比0小非常多,虽然训练样本的标注仅仅是0或者1而已。所以,如果在这种分类问题上,算法输出的是各种天马行空的数字的话,即使对于我们而言可能也会显得很奇怪。

所以,我们下面将要介绍逻辑回归算法,它能够保证输出介于0~1之间。

不过我们呼应一下开头说一下,逻辑回归是一个分类算法,而不是回归算法。因为它的名字中含有“回归”这个词,常常会给人造成误解。但它完完全全是一个标准的分类算法,只是因为历史原因被起了个具有歧义的名字罢了。

Hypothesis Representation

现在我们开始讨论逻辑回归。

首先,我们看看当我们遇到一个分类问题时,我们的假设函数应该是什么样子。

前面我们说了,我们希望我们的分类器的输出值最好介于0到1之间。所以我们希望我们的假设函数能够满足这个条件。

当我们之前使用线性回归时,我们假设函数的形式是这样。H theta x等于theta转置乘以x。而对于逻辑回归,我们将这个式子稍作修改,再包一层函数,变成g theta转置乘以x。而函数g的形式是这样。

G(z),z是一个实数。

这个g函数被称为sigmoid函数,或者logistic函数,而“逻辑回归”这个名字就是来自与logistic函数这个名字。顺便说一下,sigmoid函数和logistic函数基本上是同义词,指的是同一个东西。所以这两个名字可以互相交换着使用,任何一个都可以用于指代我们的g函数。

我们把h theta带入g,就可以得到假设函数的另一种表示方式。

Sigmoid函数的式子并不能给我们特殊的感受,所以我们来看看它的图形。它的图形大约是这样[上图所示],这个函数的取值范围是0到1,在z=0时,函数取值为0.5,当z大于0时,函数值越来越接近于1,而当z小于0时,函数值越来越接近0。

给定这种假设函数,对于训练集合,我们要做的其实就是选择适当的参数theta,然后这个函数会计算出介于0~1的值,通过对这个值做判断,我们可以进行分类预测,比如大于0.5则预测y=1,小于0.5则预测y=0. 我们后面会讨论怎么学习得到参数theta,不过我们现在还是先来理解一下这个模型。

其实理解这个模型的重要关键在于我们怎么理解我们假设函数的输出值。

实际上,因为假设函数的输出总在0~1之间,所以我们会把这个输出值认为是对y=1的概率的估计。比如说,我们在做肿瘤诊断的工作,那么对于一个病人我们可以抽象出一些特征来表示这个病人,比如我们只使用一个特征——肿瘤大小,它是x1,而x0则像以往一样仍然是1.

假设,对于一个特定的病人,我们测量了他的肿瘤大小,然后输入到我们的模型里面,假如得到的输出值是0.7。那么我们将怎么理解这个0.7呢?它的意思是,对于肿瘤大小是这个x1的时候,我们的诊断模型会认为y=1的概率是0.7。换句话说,我们可以告诉病人,不算很坏,肿瘤是良性的概率是70%。

那么现在,大家应该对逻辑回归的基本形式和输出理解有了大概的认识。接下来,我们将进一步来理解逻辑回归的假设函数。它具体怎么处理分类问题,以及一些简单的例子以帮助大家更加感性地认识逻辑回归。

决策边界

Decision Boundary

前面,我们讨论了逻辑回归的假设函数的形式。现在让我们来看看被称为”决策边界”的概念。这个概念将有助于我们进一步理解逻辑回归的假设函数到底在计算什么。

现在我们想要更细致地理解,这个假设函数什么时候会预测y=1,什么时候又会预测y=0. 而且更进一步,如果我们有更多特征,又当如何呢?

具体来说,这个假设函数的输出是在给定输入x以及参数theta的条件下,对y=1的概率估计。所以如果我们想要预测y=1或者y=0,我们可能做的是,当假设函数输出告诉我们y=1的概率超过0.5,那么我们就认为y=1的概率要大于y=0. 相对的,如果假设函数的输出小于0.5,它表达的含义是y=1的概率要小于y=0,因此我们认为y=0. 

不过我们再进一步,什么时候假设函数的输出会大于0.5呢?如果我们看看sigmoid函数的图形,我们可以注意到,当z大于0的时候,g(z)就大于0.5。所以在图的右半部分,g的取值就必然大于0.5。

上一页,我们从数值方面细致地介绍了下逻辑回归。这里我们试图更加直观地来理解它。假设我们现在有一个如图所示的样本集合。

虽然我们暂时还没有介绍怎么计算参数theta。不过我们先假设,我们已经通过某种强大的算法计算好了参数theta。比如theta0等于-3, theta1等于1,theta2等于1。

那么现在我们来看看,这个假设是怎么预测y=1或者y=0的。

我们知道,当y=1的概率超过0.5的时候,我们会预测y=1。而当theta转置乘以x大于0的时候,才会使得这个概率大于0.5。对于我们当前的这个式子而言,-3+x1+x2,只有它大于等于0的时候,我们的假设函数的输出才会大于等于0.5。

X1+x2=3这个对应的是h theta x =0.5,x1+x2>3则h theta x > 0.5, 我们预测y=1. x1+x2<3则h theta x < 0.5,我们预测y=0.

这里,我们可以注意到,x1+x2=3这个其实表达的是一条直线,我们可以在图上看一下,它应该对应的是一条直线。在这条线右上角的将会被全部预测为y=1,它们中的任何一点的X1+x2都必然大于3。而在这条线左下角的将全部被预测为y=0,因为任意一点的x1+x2都必然小于3.

很显然,我们的这条直线,将不同的类别区分开了,因此它很特殊,我们将它称为”决策边界”。不过,请大家注意,这个决策边界是假设函数的产物,所以虽然在我们这张图里面它能够完美地将两个类别分隔开,但也仅仅是一个例子罢了。不同的theta决定了不同的假设函数,进而决定了不同的决策边界。不过决策边界仅仅是为了帮助我们理解分类算法的基本工作原理而已,当我们实际使用分类算法时,是不会画出决策边界的。

 

好,刚才我们说的,解释了决策边界怎么定性地对样本进行分类。但是怎么体现y=1的概率呢?其实我们在高中数学学过点到直线的距离,对吧。那么这个距离是什么呢?它应该是下面这个式子: 点导致线距离的公式。

现在让我们来看看更加复杂的例子。像往常一样,我们使用空心圆来表示负样本,红色的叉表示正样本,对于这样的样本集,我们如何才能使用逻辑回归来对它们进行分类呢?

可能有些同学已经想到了之前我们讲过的多项式回归。当时,我们虽然仅有几个特征,但是为了能拥有更强的对数据拟合的能力,我们在已有特征的基础上通过多项式创造出了更多的高阶特征,当我们把这些高阶特征加入到线性模型中都能拥有非线性的拟合能力。

同样的,对于我们这里的这种线性无法解决的情况,我们也需要引入更加高阶的特征。我们这个例子其实很容易看出来,它的决策边界是一个圆。我们的高中数学知识告诉我们圆的方程是ax^2+by^2=c。因此,我们很容易地就能想到,应该将x1^2和x2^2作为特征。所以,我们的假设函数就是这个式子【上图】。具体地对我们这个例子而言,我们的theta0=1,theta1-0,theta2=0,theta3=1,theta4=1。也就是参数theta向量就是[-1 0 0 1 1]。

这样,我们的决策边界就是x1^2+x2+2=1这个圆,当x1^2+x2^2>=0的时候,我们预测y=1,否则y=0。

所以,对于需要非线性决策边界的情况,我们需要引入一些多项式特征。多项式特征引入得越多,我们的决策边界就越复杂,或者说能够区分数据的能力就越强,这一点跟我们在多项式回归中讨论的完全一样。只不过,在多项式回归中,表现出的现象是拟合曲线可以扭曲得更加厉害以更好地拟合数据点。而在分类问题中,这表现为决策边界的扭曲程度。比如,我们下面的这个式子,它除了拥有二次项的特征,甚至有三次项、四次项的特征,这样它对应的决策边界就更加复杂。逻辑上,只要特征足够复杂,决策边界可以将所有的类别都正确分类,就像在多项式回归中可以完美拟合所有的样本点。但这都仅仅是针对训练集而已,对从未见过的样本可能效果就没那么好了,不过后面我们会介绍如何平衡它们。

这里我们的重点在于向大家介绍,多项式特征也可以被用在逻辑回归中,而且它的本质原理和多项式回归没有差别。

分类问题的基本铺垫就到这里了,希望大家对分类问题有了比较清楚的认识,包括什么是分类;逻辑回归作为一种分类算法,它想要表达的是什么;以及,分类算法对应出来的决策边界的含义,还有特征对决策边界的影响是怎样的。

 

 

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值