机器学习——Logistic 回归
在线性回归中,h函数的输出值为连续值,当需要进行归类时,输出的应该是离散值,如何将连续值转换成离散值?
如果分类结果只有两个,用1,0表示。我们希望有:
则可以使用函数1/(1+e^(-z)),这样就可以将函数结果限定在0~1之间。
Cost function
如果y=1,则h离1越近越好,h越靠近1,则log(h)越大,-log(h)越小,合理。
使用梯度算法来求theta,经过化简,得到: ,与现行回归中的迭代公式是一致的,我自己没有进行证明。
多类别分类
过程如下:
对于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函数中增加几个参数,如下所示: ,如果λ的值很大,则theta的值会比较小。
发表评论