Week 3
3.1 logistic回归模型
分类问题
为什么分类不用回归来做?
超过0和1的部分没法解释;受个别数据的影响较大。
logistic函数
决定边界
对于logistic回归:
y取到1或0
决定边界即为=0.5的值
Cost function
为了求theta的值我们定义cost function,当函数取得最小值我们就得到了最优的参数值。logistic回归的cost function不能跟线性回归的一样定义,因为这样定义的cost function不是convex的,很容易取到local optima。
定义的cost function如下:
简化的cost function
可以把前面的cost function化简到一个式子里:
它的向量化表示为:
梯度下降应用
梯度下降算法:
问题:这里的微分怎么求???
参数更新的向量表示:
进阶优化算法
为了优化theta,除了梯度下降算法以外,还有其他的算法是"Conjugate gradient", "BFGS", 和 "L-BFGS" 。它们通常更复杂,也更快。
编写代码的思路是,先完成下面这个函数
再利用自带的 "fminunc()" optimization algorithm 和 "optimset()" function求解
3.2 多分类
多分类问题
当分类问题中类别超过两个时,分类问题可以这样描述:
我们需要分成三类时,就做三次logistic分类:
hθ(x)对于每个i是:当输入为x,取到的y为第i类的概率
x的类别为取到最大概率的y
3.3 解决过拟合问题
过拟合
下面三个图分别代表了underfiting,just right,overfitting:
通常解决方法有下面两种:
cost function
我们希望取到左图的theta而不是右图,想法是把后两个参数的系数变得很大
最后的cost function形式如下:
正则化线性回归
正则方法既可以用于线性回归,也可以用于logistic回归。
正则化后的线性回归cost function变成了:
再用梯度下降算法求它的最小值:
而用normal equation来求值,我们得到:
正则化logistic回归
同线性回归一样,对logistic回归进行正则化以后梯度下降算法变成了:
在matlab中,我们用进阶的优化算法来代替梯度下降算法: