斯坦福机器学习课程笔记week2&3 线性/逻辑斯蒂回归

来源:互联网 发布:交换机如何共享数据库 编辑:程序博客网 时间:2024/06/01 09:09

斯坦福机器学习课程笔记

第二讲 多变量线性回归

feature scaling

为何要做feature scaling:
直观的几何解释: feature的scale相差过大时, cost function J(theta)的等高线图为细长的椭圆形,而梯度下降过程中,每一步均是沿着等高线的切线(即梯度的负方向)方向下降,偏离函数的全局最小值方向,其路线为之字形,收敛速度很慢。当做了feature scaling后,等高线接近圆形,负梯度方向指向全局最小值,收敛速度会大大加快。

本质原因: learning rate为一个全局的统一的标量。只有当各个特征的均值,取值范围差不多在一个区间时,才可以保证以较高的效率收敛到全局最小值

如何确定learning rate:

画出cost function与迭代次数的关系图。如果cost function的值没有随着迭代次数增加而趋于减小,说明learning rate选择不对。可以选择一系列的learning rate值, 0.001, 0.003, 0.01, 0.03, 0.1…, 从中挑选可以让cost function下降最快的learning rate值。
疑问: 实际的做法通常是选择一个epsilon, 当前后两次迭代cost function差值减小比例小于epsilon时认为收敛。

迭代次数没有随着cost function增加而减小通常是learning rate选择过大导致, learning rate选择过大可能导致两种后果,一是 导致不收敛, 二是cost function值来回震荡,虽然收敛,但是收敛速度会大大减慢。

第三讲 logistic regression

logistic regression

linear regression不适用于二分类任务, 原因:

  • 二分类任务的output为 0 or 1, 而linear regression的output取值区间为[-无穷大,+无穷大]
  • linear regression的分类能力太弱: 只能以 直线的某一点 左右侧做类别区分

y=1/(1+e-x)称为sigmoid函数或者logistic 函数。sigmoid函数有两个主要的优点:

  • 取值范围(0,1), 和概率的取值区间一致
  • 求导简单: 令y=f(x), 则y’ = f(x)(1-f(x))

按照ng的说法,logistic regression属于classification 而不是regression。通过logistic函数计算出得值可以作为分类的概率。
疑问: 业界比较成熟的用lr预测广告点击率,input为广告的曝光数/点击数,output为取值为实数区间的广告点击率,这种情况下logistic regression是否应该算作 回归任务

decision boundary: 通常使用logistic regression做classification的方法是计算出概率值后,选定一个阈值,大于阈值属于正类,小于阈值属于负类。在不做特征组合的情况下,logistic regression得出的decision boundary为 线性分界面,为了解决线性不可分的问题,需要对特征做处理(多项式变形,特征组合等),使得线性的分界面变为非线性的分界面。

cost function:
为何使用y =1时 -log(1/1+e-x), y=0时 -(1-log(1/1+e-x) 作为logistic regression的cost function, 为何不使用线性回归的square 作为cost function:

-1/1+e-x是log-convex的函数,也即 log(1/1+e-x) 是一个凸函数, 而线性回归的square方法得到的函数不是凸函数,通常有很多局部最优解,不方便求最优值(注: 当函数的二阶导数存在且大于0时,则函数为凸函数,不难证明logistic regression的二阶导数>0)
- 直观解释: 以y=1时为例, 当predict值也为1时, cost为0, 当predict值趋向于0时, cost趋向无穷大,不难证明y=1时同理

高级优化技巧:
gradient descent属于比较简单的优化方法,对于大规模的machine learning task,用的比较多的三种优化方法

  • conjugate gradient
  • bfgs
  • lbfgs

这三种优化方法的主要优点是:

  • 不需要选择学习率,可以通过linear search方法自动选择学习率(why?)
  • 通常比gradient descent快

主要缺点就是实现比较复杂。

logistic regression 也可以用于多分类任务(one-vs-all)

0 0
原创粉丝点击