机器学习——Logistic 回归

在线性回归中,h函数的输出值为连续值,当需要进行归类时,输出的应该是离散值,如何将连续值转换成离散值?

如果分类结果只有两个,用1,0表示。我们希望有:

image image

则可以使用函数1/(1+e^(-z)),这样就可以将函数结果限定在0~1之间。

imageimage

如果image ,则认为y=1,否则认为y=0.

Cost function

线性回归:image

Logistic回归:image

如果y=1,则h离1越近越好,h越靠近1,则log(h)越大,-log(h)越小,合理。

计算:image image

使用梯度算法来求theta,经过化简,得到:image ,与现行回归中的迭代公式是一致的,我自己没有进行证明。

多类别分类

过程如下:

对于4类的分类:A,B,C,D
对于A,令所有结果为A的记录的y值为1,其余的为0
计算针对A的h函数,其余的同理。
然后我们得到4个h函数,用于计算4类的Logistic值
对于一个新记录,如果我们需要预测它属于哪一类,我们需要用4个h函数都对他计算一遍,得到4个h值
取最高h值对应的那个类,就是预测的类

解决过拟合(overfitting)问题

这里主要是针对高次的回归,比如

在我们不确定一个参数究竟以何种形式影响最终结果的情况下,我们往往会将参数的高次形式考虑进去。当然次数越高,cost也会越好,但是如果次数特别高,拟合的特别好,不仅模型的复杂性会变大,也会出现过拟合的现象。过拟合是指对训练数据拟合很好,但是估计却不准。比如上面的h函数,如果我们将最高次数调成3次,那么就会再多出来4个参数来

我们必须想出一些平衡的策略使得h函数的次数不能太高。这里使用一种名叫Regularization的方法。为了使高次数的参数在h中起到的作用比较少,我们故意设定其对应的theta值比较小,在cost函数中增加几个参数,如下所示:image ,如果λ的值很大,则theta的值会比较小。

梯度算法也因此变成:image ,image

与之对应,标准方程也可以通过变形来解决过拟合的问题,如果λ>0,有image

Logistic变成:image ,梯度算法依此更改。

Tagged with: , ,

发表评论

邮箱地址不会被公开。 必填项已用*标注

*