线性回归
线性回归预测函数:
h_{theta}(x)=theta^{T}x
逻辑回归预测函数:
h_{theta}^{(x)}=frac{1}{1 e^{-theta^{T}x}}
线性回归损失函数:
J(theta)=frac{1}{2m}sum_{i=1}^m(h(theta^{(i)}-y^i))^2 frac{lambda}{2m}sum_{j=1}^mtheta_j^2
逻辑回归损失函数:
MSE直接应用到LR中会导致损失函数变成非凸函数,所以我们加入log让损失函数变成了凸函数
极大似然(二项分布中):
非二项分布:
(特定采样结果出现的概率累乘)
由于小数连乘操作可能造成下溢,一般会采用极大对数似然进行计算
极大对数似然(二项分布中):
非二项分布:
损失函数(经验损失 结构损失):
J(theta)=-frac{1}{2m}sum_{i=1}^m(y^ilog{h_theta(x^i)} (1-y^i)log(1-h_theta x^{(i)})^2 frac{lambda}{2m}sum_{j=1}^mtheta_j^2
两者损失函数求导后,除了假设函数不一样,表示形式是一样的:
损失函数中参数倍数变化并不会影响最优值的最终结果
1.1 逻辑回归LR(logistic regression)
1.1.1 LR与sigmiod
h_{theta}^{(x)}=frac{1}{1 e^{-theta^{T}x}}
其中theta是收敛之后得到的结果
根据sigmoid曲线,h_{theta}≥0时,置为1;否则置为0
1.1.1.1 决策边界
1.1.2 代价函数
当我们把线性回归的代价函数放到逻辑回归上使用时,会发现代价函数J由凸函数(convex)变成了有很多局部最大值的非凸函数,导致寻找最小值变得困难,所有我们选择了另一种能使LR变成凸函数的代价函数。
而对数函数log的曲线,能让代价函数变为凸函数的方程吗?
分析
化简
得到如下结果,使用了==极大似然法==(能够在统计学中能为不同模型快速寻找参数),并且结果是凸函数
begin{align} J(theta) & = frac{1}{m}sum_{i=1}^mCost(h_{theta}(x^{(i)},y^{(i)}))\ & = -frac{1}{m}[sum_{i=1}^my^{(i)}logh_theta(x^{(i)}) (1-y^{(i)})log(1-h_theta(x^{(i)}))] end{align}
参数梯度下降:
==可以发现,求导后线性回归和逻辑回归的公式是一样的,但是他们的假设函数h(θ)是不同的,所以两个函数梯度下降公式是不同的==
求导sigmiod得到partial_{sigmoid}=sigmoid[1-sigmoid]
1.2 高级优化
- 共轭梯度法Conjugate Gradient
- 拟牛顿法中的对称正定迭代矩阵BFGS
- 近似BFGS,L-BFGS相对BFGS能够减少空间的使用
1.2.1 优点
- 无需设定学习率,学习率自动动态调整
- 大部分情况下速度比梯度下降法快很多
1.2.2 缺点
实现比梯度下降法复杂很多,但是基本上都有封装好的库,如python中的scipy.optimize.fmin_bfgs
1.3 逻辑回归的多分类任务
训练多个逻辑回归分类器,然后将输入放到各分类器中,将输入归类为得分值最大的类别即可
1.4 过拟合和欠拟合解决
1.4.1 过拟合
- 适当减少多余的参数
- 使用正则化,适当减少参数维度(阶/次方)/大小
- 增加数据量
- dropout
- 清晰数据
- 提取终止训练
1.4.2 欠拟合
- 增加特征和数据
- 增加高阶多项式项
- 减少正则化参数
1.5 正则化惩罚项
加入惩罚项后,会降低高维参数的值,让他们趋于0(也就是==简化假设模型,限制模型参数,保持参数尽量小==),这样能让假设h函数变得更加的平滑
我们不知道哪些参数是高维的,该去降低哪些参数的维度,在代价函数中加入正则化惩罚项,对每个参数进行限制
1.5.1 惩罚项公式以及作用
公式:
==简化假设模型,限制模型参数,保持参数尽量小==,lambda作用是控制两个不同目标之间的取舍,设置合适的lambda参数防止模型欠拟合或者无明显作用