吴恩达机器学习课程记录
笔记地址:http://www.ai-start.com/ml2014
线性回归
回归问题损失函数一般为误差平方函数 mse
需要注意的事项:
- 变量的归一化,以免不同的量纲不同。要保证这些特征都具有相近的尺度,这将帮助梯度下降算法更快地收敛。
- 不同的初始化,可能会得到不同的局部最优解。如果初始化就在局部最低点,则不会更新相关的参数,梯度为0
- 梯度下降算法: 学习率不用没必要自己减小,当慢慢接近局部最小值时候,梯度自然就小了
求解
- 梯度下降算法
- 正规方程(矩阵求解)
逻辑回归
从线性回归那块演变过来用于分类的算法,不是回归,是分类算法。
损失函数不再是mse,而是变为二元交叉熵损失函数。
这是由于mse形式的损失函数,套用sigmoid**函数后,整个损失函数是非凸的函数,这导致通过梯度下降算法求解到的可能是局部最优解,而不是全局最优解。
因此,逻辑回归的损失函数变换为二元交叉熵损失函数,这是一个凸函数,最终能得到全局最优解。
注意:
- 逻辑回归的特征处理也需要归一化
- 求解方法依然是梯度下降算法
- 但有更高级的优化算法:共轭梯度法BFGS、限制变尺度法LBFGS等。运行速度要远远超过梯度下降法。
- 在面临很大的机器学习问题时候,建议使用高级优化方法
- 多标签分类问题转化为多个二分类问题
- 初始化参数可以为0
正则化
- 过拟合:通过学习得到的假设可能能够非常好地适应训练集(代价函数可能几乎为 0),但是可能会不能推广到新的数据
- 欠拟合:不能很好地适应训练集
**为什么会出现过拟合 **
那些高次项导致了过拟合的产生,所以如果能让这些高次项的系数接近于 0 的话,就能很好的拟合。
解决方法
- 丢弃一些不能帮助我们正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型选择的算法来帮忙(例如 PCA)
- 正则化。 保留所有的特征,但是减少参数的大小(magnitude)
正则方法
- L0正则:模型参数中非零参数的个数,难求解
- L1正则: 各个参数绝对值之和,侧重于让其为0(LASSO)
- L2正则:各个参数的平方的和的开方值,侧重于让参数稀疏化(Ridge)
实现参数的稀疏有什么好处吗?
- 可以简化模型,避免过拟合。因为一个模型中真正重要的参数可能并不多,如果考虑所有的参数起作用,那么可以对训练数据可以预测的很好,但是对测试数据就不行了
- 参数变少可以使整个模型获得更好的可解释性
参数值越小代表模型越简单吗?
是的。为什么参数越小,说明模型越简单呢,这是因为越复杂的模型,越是会尝试对所有的样本进行拟合,甚至包括一些异常样本点,这就容易造成在较小的区间里预测值产生较大的波动,这种较大的波动也反映了在这个区间里的导数很大,而只有较大的参数值才能产生较大的导数。因此复杂的模型,其参数值会比较大。
总结
- L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。Lasso在特征选择时候非常有用,而Ridge就只是一种规则化而已
- 在所有特征中只有少数特征起重要作用的情况下,选择Lasso比较合适,因为它能自动选择特征。而如果所有特征中,大部分特征都能起作用,而且起的作用很平均,那么使用Ridge也许更合适
神经网络
-
前向后向传播算法(forward and backpropagation)
https://zhuanlan.zhihu.com/p/45190898 -
参数初始化不能都为0,初始参数为正负????之间的随机值
-
特征归一化