机器学习----分类问题
来源:互联网 发布:用淘宝充话费怎么退款 编辑:程序博客网 时间:2024/05/17 08:53
1.简介
分类问题有许多应用,比如:判断一封邮件是否为垃圾邮件,肿瘤是否为良性?分类问题包括:两类分类和多类分类,其中多类分类用到的是两类分类的思想。在我们看来,类别这个概念是可数的,所以分类问题属于离散问题,与上一讲的回归问题不同,它属于连续问题。但与回归问题类似的是,用机器学校处理分类问题时也是找一条回归曲线,通过设置阈值把数据分为离散的类,所以这一节我们重点关注如何找这条曲线。
2. 逻辑斯谛回归(logistic regression)
总感觉这个回归的中文翻译怪怪的,下文中提到这个模型统一用英语(logistic regression)表示。下面我们来说明这条曲线是如何找到的。
2.1 分类思想
这一讲我们要处理的数据有明显的界限(boundary),这些数据如果是二维或者三维的可以明显区分出它们各自的类别,高维空间的数据虽然无法感知,但用到的思想是一样的。比如一个二维分类为问题(一般我们认为正类为1,负类为0):
我们可以看出它明显的分成两类,有了之前线性回归的思想,我们可以试着找出这样一条直线
当
这时候再以0.5为标准去找点,发现这条线把原来属于正类的点归到负类(图中绿色圈出的点),很显然上讲说的线性回归明显不work, 由于线性回归是从无穷到无穷的映射,对于两类分类问题,我们只需要得到从无穷到
这样无论在曲线左右加多少点都可以找到正确的类别。我们直接给出它的定义
即
当
函数
具有性质:
1.
2.
3. 如果
有没有发现这个曲线有点眼熟,对了,这就是我们在高中生物就学过的S型曲线,再或者是著名人口学家马尔萨斯的人口增长模型,我们把它引入去解决分类问题。注意到这只是一个特征的情况,两个特征时也可以画出类似的三维图形,但当特征多时这个模型就无法可视化了。但是我们可以用刚才得到的函数性质,并把它推广到多维空间。由于logistic回归得到的是一条回归曲线,上边说过我们通过设定阈值的方法把连续数据变成离散数据。那么,这个函数本身的意义是什么呢?对了,是概率,更准确的说是条件概率。我们来看函数的定义:
这个定义的解释就是,给定
2.2决策边界(Decision Boundary)
上边的函数性质3中说到了, 如果
1.
由决策边界的定义的出它的边界为:
2.
上述的一刀切的分类方法过于简单粗暴,有些情况下我们希望可以用曲线去分类,因此在直线的方程中加入平方项,熟悉微积分的同学可以一眼看出这种情况的decision boundary是闭合的二次曲线,当然我们举得例子是只有一个特征的二维情形。在三维情况下,加入二次项后,decision boundary是二次曲面。n维时,decision boundary是二次超曲面。我们来看这个例子(
同样的,要想让曲线(面)更自由,可以加入立方项,三次项,….,n次项,加的越多曲线的形状就会越随意,decision boundary对于训练集中的数据的分类效果就会越好(注意这里的措辞)。
2.3带价函数(Cost Function)
我们在回归问题中讨论过它的带价函数为:
如果我们把这个专题讨论的
我们把两种情况下的函数图像画出来:
这个公式看着复杂,其实意思是很简单的,如果我们想要预测正类(
如果
如果
对于分类问题y不是取1就是取0,我们用一个式子来表示这个函数:
注意公式中,前一项和后一项不能同时存在,用向量表示为:
到目前为止,我们已经把linear regression 的cost function完全搞清楚,下面要研究的就是如何最小化cost function 以求出参数
与上一讲一样,我们把logistic regress 也写成一个模型:
假设:
hθ(x)=11+eθ0+θ1x1+...+θnxn
求参数:
θ0,θ1,...,θn
带价函数:
J(θ0,θ1,...,θn)=−1m∑i=1m[y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))]
目标:
minJ(θ0,θ1,...,θn)
如何求解这个最优化问题呢?
2.4求解带价函数
有个之前的基础,我们知道可以用梯度下降法求解凸优化问题,思路就是
用数学公式表示就是:
向量表示为:
梯度下降法求解这个问题是可行的,在这里介绍一种更高效的方法。matlab中的优化工具箱中提供了共轭梯度法(conjugate gradient), BFGS, L-BFGS等这些方法来求最优解,这些方法被封装在一个fminunc(find minimization unconstrained)的函数中,再调用这个函数时需要手动编写cost function. 记住,这个cost function 输入多个变量,返回函数值,各个变量的偏导数值。
在logistic regression中:
function [J, grad] = costFunction(theta, X, y)m = length(y); h=1./(1+exp(-X*theta));J=(-y'*log(h)-(1-y)'*log(1-h))/m; %返回costfunction的值for j=1:length(theta) grad(j)=(X(:,j)'*(h-y))/m; %返回各个偏导数值endend
用optimset函数设定求解最小值的各种参数,如
options=optimset('GradObj','on','MaxIter',100)
就是说用于求最小值的函数会提供梯度,并且最大迭代次数为100
最后调用fminunc可以找出cost function 取最小值情况下的各个
[optTheta, functionVal,exitFlag]=fminunc(@costFunction,[0,0,...,0],option)
上式中的[0,0,…,0]是各个
3.多类分类问题
除了最常见的两类分类问题之外,多类分类问题也会经常遇到,我们把多类分类问题当作两类分类问题来解决。如给天气分类,天气的类别有阴晴雨雪,我们可以把整个数据分为阴天与非阴天;晴天与非晴天;雨天与非雨天;雪天与非雪天。这样就相当于对一组数据做四组两类分类问题,最后找出概率最大(上文提到
y∈{0,1,2,...,n}h(0)θ(x)=P(y=0|x;θ)h(1)θ(x)=P(y=1|x;θ)...h(n)θ(x)=P(y=n|x;θ)hθ(x)=maxi(h(i)θ(x))
有了
4.过拟合(overfit)
上文提到过,如果想要更好的区分训练样本中的数据,可以加入一些平方项,立方项等,但是有一些代数基础的同学就会知道,高阶多项式是严重病态的因为它过于敏感,就是说稍微改变一下系数函数值就会发生很大的变化,这点是很显然的。 我们把这种在训练集上表现出很好的效果,在测试集中则效果很差的现象称为过拟合(overfit),如果
减少特征向量的个数,目前有些算法可以自动选择出特征.
正规化方法(Feature Regulization),这个方法可以保留所以特征。
通过仔细分析我们发现,高阶多项式之所以会对函数值影响很大,是因为它的对应系数
对于线性回归(linear regression),新的 cost function就变为:
向量表示为:
对于logistic regression, 新的cost function变为:
向量表示为:
对于linear regression:
对于logistic regression:
同样,他们都有自己的向量表达式,即
linear regresion:
logistic regression:
一定要学会一个公式的向量表达式,这种式子对于编程来说是很便利的,这讲主要讨论了机器学习中的分类问题,用到的回归函数是linear regression, 记住它的cost function稍微有所不同,而求解cost function的方法也引入了其他的一些更高效的算法,下一讲我们研究如何把更多的linear regression组合起来的问题,即人工神经网络。
- 机器学习问题分类
- 机器学习----分类问题
- 机器学习-回归及分类问题总结
- 机器学习 非均衡分类问题
- 机器学习中的非均衡分类问题
- Android加载机器学习分类器问题
- 机器学习中的二元分类问题
- 机器学习(2) ---- 分类问题
- 【01】台大机器学习L3 机器学习分类问题
- 机器学习问题分类--机器学习基石笔记
- 机器学习的分类
- 机器学习-分类简介
- 机器学习--KNN分类
- 机器学习算法分类
- 机器学习算法分类
- 机器学习分类
- 机器学习-贝叶斯分类
- 机器学习算法分类
- 山东省第八届ACM省赛 Problem.H triangle
- abstract抽象类和抽象方法
- CTSC 2017
- 第五次上机实验--数组分离
- springmvc之定时器
- 机器学习----分类问题
- 洛谷3765总统选举暨洛谷5月月赛R1B题
- 异常:System.BadImageFormatException,未能加载正确的程序集XXX
- 省赛后
- Ubuntu下每隔几分钟自动锁屏需重新输入密码解决
- I/O流(字节流)
- Java 实例
- 用户登录
- 模板:排序(三)