当前位置: 代码迷 >> 综合 >> 机器学习-Coursera-4逻辑回归
  详细解决方案

机器学习-Coursera-4逻辑回归

热度:63   发布时间:2023-12-27 20:00:17.0

假设函数

对于监督学习,有线性回归和分类两种,对于分类来说所得的结果是离散的,但是我们可以忽略y是离散值的事实来处理分类问题,并使用我们的旧线性回归的算法来尝试预测给定的x。要解决y∈{0,1}时,取大于1或小于0的值的问题,我们可以改变假设函数的形式 也就是说,满足,通过插入logistic函数来完成。

我们使用“Sigmoid函数”,也称为“逻辑函数”:

 

下图显示sigmoid函数:

此处所示的函数g(z)将任何实数映射到(0,1)区间。

展示为我们输出为1的概率。例如,=0.7,即为输出为1的概率为70%,为0的概率为30%

小结:线性回归的假设函数展示的是拟合数据集的线,逻辑回归的假设函数展示的是将数据集分类的一条线。           

决策边界

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

即如果

h(x)=g(z)>=0.5

z>=0

 >0

现在可以说

(少了x)

提示:对于,不需要一定是xianxianx线性的,非线性依然可行。

eg.

 

y=5+(-1)x1+0x2>=0

x1<=5 的区域为y=1 其余为y=0

代价函数

我们不能使用与线性回归相同的成本函数,因为Logistic函数会导致输出波动,从而出现许多局部最优解,换句话说,他不是凸函数。

我们的逻辑回归成本函数如下:

          if y = 1

   if y = 0

当y=1,得到下图:

当y=0,得到下图:

总结:

=0 if h(x)=y

 if y=0 and h(x)->1

if y=1 and h(x)->0

注意:这种方式编写成本函数可以保证逻辑回归是凸的。 

简化的成本函数:

梯度下降

使用微积分的方式进行求导,只不过h(x)与xian线性回归表达式不同

高级优化

“共轭梯度”,“BFGS”,“L-BFGS”,是更快速的 优化theta的方法,可以代替梯度下降,

简单写一个函数返回这两个值:

function [jVal, gradient] = costFunction(theta)jVal = [...code to compute J(theta)...];gradient = [...code to compute derivative of J(theta)...];
end
options = optimset('GradObj', 'on', 'MaxIter', 100);
initialTheta = zeros(2,1);
[optTheta, functionVal, exitFlag] = fminunc(@costFunction, initialTheta, options);

我们给函数“fminunc()”我们的成本函数,我们的θ值的初始向量,以及我们事先创建的“options”对象。