您的位置:首页 > 其它

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

2017-05-13 22:16 225 查看

分类问题

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+e−z

其中,

g(z)称之为逻辑函数或者sigmoid(S形)函数

化简得:hθ(x)=11+e−θTx

假设函数含义:

hθ(x) 表示在x和Θ的情况下得出1的概率

(2)决策边界

假设函数

hθ(x)=g(z)g(z)=11+e−zz为我们设定的决策边界方程

为了得到离散0或1分类,可以将假设函数的输出转换如下:

hθ(x)≥0.5→y=1hθ(x)<0.5→y=0

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

g(z)≥0.5whenz≥0

如果我们设定的z方程为θTX这就意味着

θTx≥0⇒y=1θTx<0⇒y=0

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

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

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

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

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

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

1、化简代价函数

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

带入得:

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

向量化后为

h=g(Xθ)J(θ)=1m⋅(−yTlog(h)−(1−y)Tlog(1−h))

2、实现梯度下降

梯度下降的一般形式

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

使用微积分带入化简

Repeat{θj:=θj−αm∑i=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(θ)=(θ1−5)2+(θ2−5)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)−α1m∑i=1m(hθ(x(i))−y(i))x(i)j

上述方程式的第一项,1−αλm将始终小于1。直观地,您可以看到它在每次更新时将θj的值减少一些。

另外,第二项现在与以前完全相同。

(2)正规方程法

θ=(XTX+λ⋅L)−1XTywhere L=⎡⎣⎢⎢⎢⎢⎢⎢⎢011⋱1⎤⎦⎥⎥⎥⎥⎥⎥⎥

正规化不仅可以避免过渡拟合,还可以避免出现不可逆的情况。

回想一下,如果m小于n,那么XTX将不可逆。但是现在加上了λ⋅L,XTX+λL变得可逆。

5、正规化逻辑回归

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

(1)代价函数

回想一下,我们的逻辑回归的成本函数是:

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

现在可以通过在末尾添加一项来正规化这个方程:

J(θ)=−1m∑i=1m[y(i) log(hθ(x(i)))+(1−y(i)) log(1−hθ(x(i)))]+λ2m∑j=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}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐