机器学习(2)-分类问题_Classification and Representation

来源:互联网 发布:域名代理 编辑:程序博客网 时间:2024/06/13 15:50

分类问题

1、分类问题简介

(1)例子

诸如
-垃圾邮件分类
-在线交易是否是诈骗
-肿瘤良性恶性判断

y∈{0,1}
其中
1 叫做正类用+表述
0 叫做负类用-表述

(2)不能使用线性回归算法

若运用线性回归算法,需要:
1、拟合数据
2、找到 h(x) = 0.5 的分界点
缺陷:
1、对于不规整的数据会出现极大的误差
2、线性回归h(x)会出现0~1之外的情况,但是逻辑回归h(x)的取值只会在0~1之间


2、逻辑回归模型_Logistic Regression Model


(1)假设函数

hθ(x)=g(θTx)g(z)=11+ez

其中,
g(z)称之为逻辑函数或者sigmoid(S形)函数
化简得:

hθ(x)=11+eθTx

假设函数含义:
hθ(x) 表示在x和Θ的情况下得出1的概率

(2)决策边界

假设函数

hθ(x)=g(z)g(z)=11+ezz

为了得到离散0或1分类,可以将假设函数的输出转换如下:
hθ(x)0.5y=1hθ(x)<0.5y=0

逻辑函数g的行为方式是当其输入大于或等于零时,其输出大于或等于0.5
g(z)0.5whenz0

如果我们设定的z方程为θTX这就意味着
θTx0y=1θTx<0y=0

绘制出图形z方程就是决策边界

(3)逻辑回归的代价函数

我们不能使用与线性回归相同的成本函数,因为逻辑函数会导致输出为波浪形,导致许多局部最优。换句话说,它不会是一个凸函数。

相反,我们用于逻辑回归的成本函数如下所示:

J(θ)=1mi=1mCost(hθ(x(i)),y(i))Cost(hθ(x),y)=log(hθ(x))Cost(hθ(x),y)=log(1hθ(x))if y = 1if y = 0

(4)逻辑回归的梯度下降函数

1、化简代价函数

Cost(hθ(x),y)=ylog(hθ(x))(1y)log(1hθ(x))

带入得:
J(θ)=1mi=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]

向量化后为
h=g(Xθ)J(θ)=1m(yTlog(h)(1y)Tlog(1h))

2、实现梯度下降

梯度下降的一般形式

Repeat{θj:=θjαθjJ(θ)}

使用微积分带入化简

Repeat{θj:=θjαmi=1m(hθ(x(i))y(i))x(i)j}

请注意,该算法与我们在线性回归中使用的算法相同。我们还必须同时更新theta中的所有值。

向量化后

θ:=θαmXT(g(Xθ)y⃗ )

(5)高级算法(代替梯度下降)

1、其他可以求回归问题的算法

给出以下的实现
-求出J(θ)
-求出J(θ)的偏导数

J(θ)θjJ(θ)

优化算法
-Gradient descent(梯度下降法)
-Conjugate gredient(共轭梯度法)
-BFGS(变尺度法)
-L-BFGS(限制变尺度法)
高级算法有着优点和缺点,例如,
-优点是1,不需要选择学习度α;以及2,比梯度下降更快
-而确实就是相对更复杂


在octive中使用

例子
有代价函数 J(θ)=(θ15)2+(θ25)2
明显要得到两个5,
实现
可以编写一个返回这两个返回值的函数:

function [jVal, gradient] = costFuntion(theta)    jVal = (theta(1)-5)^2 + (theta(2)-5)^2;    gradient = zeros(2,1);    gradient(1) = 2*(theta(1)-5);    gradient(2) = 2*(theta(2)-5);

调用

%  配置选项%  GradObj:设置梯度目标参数打开,你写的函数要提供一个梯度的值 %  MaxIter:设置最大的迭代次数options = optimset('GradObj','on', 'MaxIter', '100');initTheta = zersos(2,1); %初始化theta的值%  参数说明%  @costFunction函数指针%  initTheta初始化值%  options配置选项%  返回值说明%  optTheta:theta最优解%  functionVal:此时代价函数的解%  exitFlag:1代表结果已经收敛[optTheta, functionVal, exitFlag] = fminunc(@costFunction,initTheta,options);

其中initTheta必须是2维以上的向量

(6)多分类问题

当有两个以上的类别时,将接近数据分类。而不是y = {0,1},我们将扩展定义,使得y = {0,1 … n}。

由于y = {0,1 … n},我们将问题划分为n + 1(+1,因为索引从0开始)二分类问题;在每个类中,我们预测“y”是我们其中一个类的成员的概率。

y{0,1...n}h(0)θ(x)=P(y=0|x;θ)h(1)θ(x)=P(y=1|x;θ)h(n)θ(x)=P(y=n|x;θ)prediction=maxi(h(i)θ(x))


将多分类转化为2分类问题,
对于h(0)θ,将y=0映射为正类,其他映射为负类。运行二分类问题的算法得到的假设函数即为h(0)θ
对于新输入,max(maxi(h(i)θ(x)))时i的值就是该输入的分类结果

3、过度拟合问题

1、拟合的一些概念

-欠拟合、高偏差:模型不能很好的拟合数据
-过度拟合、高方差:训练的假设函数参数过多,如果没有足够的训练数据,来约束参数,输出参数总能很好的拟合数据,代价函数非常接近于0,输出的模型不是泛化的,不能正确的对新数据产生正确的输出
-恰好拟合:可以很好拟合数据,输出模型是泛化的可以很好的进行预测

2、过度拟合解决方法

  • 选择尽量少的特征变量数(舍弃了一些信息)
    • 人工选择特征
    • 模型选择算法
  • 正规化
    • 保留所有特征,减少参数θj大小
    • 当我们有很多有用的特征时,正则化效果很好。

3、正规化与代价函数

如果我们从假设函数中过度拟合,我们可以通过增加代价函数的项,来减少我们函数中的一些参数的权重

改变我们的代价函数为:

minθ 12m i=1m(hθ(x(i))y(i))2+λ j=1nθ2j

其中λ是正则化参数,它决定了我们的θ参数的成本是多少。

使用上述成本函数与额外的求和,我们可以平滑我们的假设函数的输出,以减少过拟合。如果选择λ太大,可能会使过于平滑,导致欠拟合。如果λ= 0,或者太小,将可能发生过度拟合

4、正规化线性回归

(1)梯度下降法
我们将修改梯度下降函数,将θ0与其余参数分开,因为我们不想惩罚θ0。

Repeat {θ0:=θ0α 1m i=1m(hθ(x(i))y(i))x(i)0θj:=θjα [(1m i=1m(hθ(x(i))y(i))x(i)j)+λmθj]}j{1,2...n}

变形后:
θj:=θj(1αλm)α1mi=1m(hθ(x(i))y(i))x(i)j

上述方程式的第一项,1αλm将始终小于1。直观地,您可以看到它在每次更新时将θj的值减少一些。
另外,第二项现在与以前完全相同。

(2)正规方程法

θ=(XTX+λL)1XTywhere  L=0111

正规化不仅可以避免过渡拟合,还可以避免出现不可逆的情况。
回想一下,如果m小于n,那么XTX将不可逆。但是现在加上了λ⋅L,XTX+λL变得可逆。

5、正规化逻辑回归

我们可以使用与正规化线性回归相似的方法对逻辑回归正规化,来避免过渡拟合。

(1)代价函数
回想一下,我们的逻辑回归的成本函数是:

J(θ)=1mi=1m[y(i) log(hθ(x(i)))+(1y(i)) log(1hθ(x(i)))]

现在可以通过在末尾添加一项来正规化这个方程:
J(θ)=1mi=1m[y(i) log(hθ(x(i)))+(1y(i)) log(1hθ(x(i)))]+λ2mj=1nθ2j

第二个求和项,nj=1θ2j明确的排除偏差项θ0。θ矢量从0到n(保持n + 1个值,θ0到θn),这个和通过从1到n跳过0来明确地跳过θ0。因此,当计算公式时,我们应该连续更新两个方程

(2)梯度下降

和线性回归形式上相类似

Repeat {θ0:=θ0α 1m i=1m(hθ(x(i))y(i))x(i)0θj:=θjα [(1m i=1m(hθ(x(i))y(i))x(i)j)+λmθj]}j{1,2...n}

0 0
原创粉丝点击