week three知识点总结——logistic regression & regularization

昨天把week three的内容和测试都做完了,编程部分必须?。今天就学到的东西做一个梳理和分享~

week three 有两大块知识重点:

1)Classification with logistic regression algorithem

用logistic regression算法解决分类问题

2)Soving pverfitting problem

解决训练过拟合问题

让我们来逐一击破吧?

一、用logistic regression算法解决分类问题

week two学习的主要是如何通过linear regression来解决目标值为连续数值的回归预测问题,比如根据过去十天的天气平均值温度,预测明天的气温是多少度。显而易见,除了连续值的预测,还有一种预测的目标输出是离散的,那就是分类预测。举个栗子,根据过去十天的天气情况,如何预测明天的天气是晴天、多云还是下雨呢?是不是根据实际的例子就可以感受到这两个都为预测任务却有挺多的不同之处呢?其实说到底最本质的区别就是输出值是连续还是离散的问题了。

Andrew老师举的例子是根据tumor(肿瘤)的大小来预测其为malignant(恶性的)还是benign(良性的)。并通过下图证实了用linear regression来解决classification问题的不合理性,重点在于这些点的分布本来就不是线性的,所以当出现一个比较偏离的点时,threshold(临界点,也就是纵坐标的值为0.5的位置)对应的tumor size就会很大,从而导致tumor size小于这个值的malignant tumor都被误判为benign,这个误差是很大的。

所以logistic regression就在此时闪亮登场了!

其实它也没有那么神秘,也就是蒙上了一层sigmoid function面纱而已,从而将linear regression实数范围内的输出映射到[0,1]范围之内,表达logistic regression的hypothesis的含义是:输出值为1的概率。所以当hypothesis的值<0.5时,说明预测的结果是0;当hypothesis的值>=0.5是,预测的结果则是1,由此解决分类问题。

看完了hyphothesis之后接着看下灰常重要的cost function

它是一个分段函数,并可以通过下边这个表达式进行简化

最后是最重要的gradient descent表达式,Andrew老师并没有进行完成的数学公式推导,而是直接列出了表达式(如果想知道数学公式部分的推导,推荐看李宏毅老师的公开课哦!http://speech.ee.ntu.edu.tw/~tlkagk/

其实表达式和linear regression推导出来的是一样的!

划重点!!!这里要提醒一下大家,因为logistic regression的hypothesis表达式是non-linear的,所以它的cost function是用的log函数而不是linear regression的简单square error的处理,这样做的目的其实就是为了保证cost function没有local minimum,只有global minimum,所以logistic regression的cost function是convex的!我就在测验的一道题中踩了坑!请切记!(如果不加log函数,那cost function就是non-convex,不是我们想要的bowl shape)

二、generalization解决训练过拟合问题

好了,介绍完logistic regression的hypothesis,cost function和gradient descent之后,就一起来看一下在不管是linear还是logistic regression算法来拟合训练数据的时候都有可能遇到的一个比较麻烦的称之为overfitting的问题吧~

Andrew老师给的栗子是根据房子的大小来预测房子的价格,从左到右的三张图依次展示了不同的hypothesis拟合训练集的一个状态,最左边是拟合的不太好,称之为underfit(欠拟合,和overfit正好相反),或者high bias(我个人对high bias的理解是输入值的大幅度变化对预测结果变化的影响很小,这就意味着与特征相乘的权重的值很小,所以整个输出的值大比例由w0提供,由此称之为high bias);中间的则是拟合效果很好的,可以形容为just right;从最右边的图上可以看到,所有训练集的数据都落在曲线上,但整个曲线跌宕起伏上上下下,明显对于未知房子价格的预测结果会不合实际,这个称之为overfit(过拟合)或者high variance(和high bias是相对的,我个人的理解是与每个特征相乘的权重值过大,所以特征的取值稍微变化一点点,输出的值就变化极大,整个曲线不够smooth)。

所以overfitting到底是什么呢?就是如果我们有太多输入特征,训练得到的hypothesis可能会将训练集的数据拟合地非常好,但却不能很好地预测在训练集中未见过的新的数据。

logistic regression也是如此

既然出现了问题,那就要采取合理的解决方案

Addressing overfitting

两个可选的方法:

  • Reduce number of features(减少特征的数量)
    • Manually select which features to keep 手动选择保留哪些特征
    • Modle selection model 通过算法确定保留哪些特征
  • Regularization(正规化)
    • keep all the features, but reduce magnitude of parameters theta 保留所有的特征,但是减少它们对应相乘权重的值,也就是参数theta的值
    • Works well when we have a lot of features, each of which contributes a bit to predicting y 当有很多特征的时候regularization方法的使用效果很好,每一个特征在预测y值的时候只贡献一点

由于不管是手动还是通过相关算法减少特征的数量都会导致信息的丢失,所以regularization方法会比较建议首先考虑用于解决overfitting的问题。

Regularization

其实正规化处理就是在原来cost function表达式的基础上加上一个小尾巴,从而达到训练好的hypothesis的参数theta值不要过大。这里要注意的是,后面的小尾巴是不加上bias的,也就是j的取值是从1开始,而不是0。

这里还需要非常特别关注的是参数lambda的取值,如果取值过大,那么就会出现underfit(high bais)的情况,可以考虑theta的值除了bais之外全趋近于0的极端情况,但如果过小又会没啥效果了。

cost function看完,下一步老规矩,gradient descent。

其实很简单,也是加上一项就好了,依旧要注意theta_0的更新公式和theta_j(j>0)的更新公式有所不同。我在代码实现这个regularized linear regression gradient descent计算公式的时候,还是用的一个公式,通过vectorization一起更新的,只需要新创建一个theta,theta_0换成0就好,cost fucntion和gradient descent的计算都可以用,很方便。

 

theta当然也可以通过normal equation计算得到,括号里面加上一项即可。因为当the number of training examples <= the number of features的时候,原来表达式括号里面的矩阵是不可逆的(non-invertible),但加上lambda×左对角线上除了第一个元素为0其他都为1,剩余部分全部由0填充的大小为(n+1)的矩阵后,theta还是可以通过公式求解出来,复习一下在octave中是使用pinv()方法。

Regularized logistic regression也是依葫芦画瓢

Gradient descent的计算公式如下图所示。

好啦,今天码字2个半小时的分享就到这里结束啦!回顾一下今天分享的两大块内容,第一是用于解决分类问题的logistic regression算法;第二部分是用于解决训练出现的overfitting过拟合问题的regularization正规化方法。改天再见?拜~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值