机器学习(1)- 概述&线性回归&逻辑回归&正则化
根据Andrew Ng在斯坦福的《机器学习》视频做笔记,已经通过李航《统计学习方法》获得的知识不赘述,仅列出提纲。
1 初识机器学习
1.1 监督学习(x,y)
分类(输出y是离散值)
回归(输入输出是连续值)
e.g.垃圾邮件、乳腺癌肿瘤好坏、是否患有糖尿病
1.2 无监督学习(x)
e.g. 新闻事件分类(谷歌新闻)、细分市场
2 单变量线性回归
2.1 模型描述
一种可能的表达方式为:\(h_\theta \left( x \right)=\theta_{0} + \theta_{1}x\),因为只含有一个特征/输入变量,因此这样的问题叫作单变量线性回归问题。
\(h\) 代表hypothesis(假设),是一个从\(x\) 到 \(y\) 的函数映射。
2.2 代价函数
\(J \left( \theta \right) = \frac{1}{2m}\sum\limits_{i=1}^m \left( h_{\theta}(x^{(i)})-y^{(i)} \right)^{2}\)
2.3 梯度下降
\({\theta_{j}}:={\theta_{j}}-\alpha \frac{\partial }{\partial {\theta_{j}}}J\left(\theta \right)\)
同步更新(采用temp值)
算法:
repeat until convergence {
\({\theta_{j}}:={\theta_{j}}-\alpha \frac{\partial }{\partial {{\theta }_{j}}}J({{\theta }_{0}},{{\theta }_{1}})\) (for j = 0 and j = 1)
}
求偏导:
\(\frac{\partial }{\partial {{\theta }_{j}}}J({{\theta }_{0}},{{\theta }_{1}})=\frac{\partial }{\partial {{\theta }_{j}}}\frac{1}{2m}{{\sum\limits_{i=1}^{m}{\left( {{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)}}^{2}}\)
\(j=0\) 时:\(\frac{\partial }{\partial {{\theta }_{0}}}J({{\theta }_{0}},{{\theta }_{1}})=\frac{1}{m}{{\sum\limits_{i=1}^{m}{\left( {{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)}}}\)
\(j=1\) 时:\(\frac{\partial }{\partial {{\theta }_{1}}}J({{\theta }_{0}},{{\theta }_{1}})=\frac{1}{m}\sum\limits_{i=1}^{m}{\left( \left( {{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)\cdot {{x}^{(i)}} \right)}\)
算法改写成:
repeat until convergence {
\({\theta_{0}}:={\theta_{0}}-\alpha \frac{1}{m}\sum\limits_{i=1}^{m}{ \left({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)}\)
\({\theta_{1}}:={\theta_{1}}-\alpha \frac{1}{m}\sum\limits_{i=1}^{m}{\left( \left({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)\cdot {{x}^{(i)}} \right)}\)
}
3 线性代数回顾
3.1 矩阵和向量
矩阵的维数即行数×列数
3.2 加法和标量乘法
矩阵/向量的加减法
矩阵/向量的标量乘法
即和实数相乘
矩阵的标量除法(即乘以一个分数)
组合运算
3.3 矩阵向量乘法(特殊)
3.4 矩阵乘法(一般)
线性代数函数库能够高效实现矩阵乘法
3.5 矩阵乘法特征
标量乘法:交换律commutative
矩阵乘法:不满足交换律、满足结合律associative
单位矩阵\(I\):主对角线上的元素均为1,以外都为0
3.6 逆和转置
矩阵的逆运算
\(A{{A}^{-1}}={{A}^{-1}}A=I\)
只有方阵才有逆运算,且|A|≠0
奇异矩阵,|A|=0
矩阵的转置运算
4 多变量线性回归
4.1 多变量
\(h_\theta \left( x \right)=\theta_{0} + \theta_{1}x_1 + \theta_{2}x_2 + \cdots + + \theta_{n}x_n\),含有多个特征/输入变量。
引入\(x_{0}=1\),\(h_{\theta} \left( x \right)={\theta_{0}}{x_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}}+...+{\theta_{n}}{x_{n}}\)
公式可以简化为:\(h_{\theta} \left( x \right)={\theta^{T}}X\)
4.2 多元梯度下降
repeat until convergence {
\({\theta_{j}}:={\theta_{j}}-\alpha \frac{1}{m}\sum\limits_{i=1}^{m}{\left({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)\cdot {{x}_j^{(i)}}}\)
}
让梯度下降在实际工作中表现更优秀(迭代次数少,快速收敛)
判断梯度下降是否收敛?
- 绘制迭代次数和代价函数\(J(\theta)\)曲线图(可以判断\(\alpha\)是否过大)
- 自动收敛测试:选取一个阈值\(\epsilon\)(比较困难),将其与变化值进行比较
特征缩放Feature Scaling
将特征的取值约束到-1 ~ 1(近似即可)之间。
e.g.将特征除以最大值
e.g.均值归一化
使得特征值具有接近0的平均值
将特征减去均值\(x_i←x_i-\mu_i\)
将特征减去均值再除以一个范围\(x_i←\frac{x_i-\mu_i}{S_i}\),其中\(S\)可以是极差,也可以是标准差
学习率\(\alpha\)
如果\(\alpha\)太小,即学习速率太小,这样就需要很多步才能到达局部最低点。
如果\(\alpha\)太大,那么梯度下降法可能会越过最低点,甚至可能无法收敛,甚至发散。
...,0.001,0.003,0.01,0.03,0.1,0.3,1...
4.3 特征和多项式回归
定义新的特征
多项式回归
线性回归并不适用于所有数据,有时需要曲线来适应数据,比如一个二次方模型:\(h_{\theta}\left( x \right)={\theta_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}^2}\) 或者三次方模型: \(h_{\theta}\left( x \right)={\theta_{0}}+{\theta_{1}}{x_{1}}+{\theta_{2}}{x_{2}^2}+{\theta_{3}}{x_{3}^3}\)
4.4 正规方程normal equation
利用正规方程解出向量 \(\theta ={{\left( {X^T}X \right)}^{-1}}{X^{T}}y\) 。
参考https://zhuanlan.zhihu.com/p/22757336
(我觉得那个例子上下标写反了?yes)
梯度下降 | 正规方程 |
---|---|
需要选择学习率\(\alpha\) | 不需要 |
需要多次迭代 | 一次运算得出 |
当特征数量\(n\)大时也能较好适用 | 需要计算\({{\left( {{X}^{T}}X \right)}^{-1}}\) 如果特征数量n较大则运算代价大,因为矩阵逆的计算时间复杂度为\(O\left( {{n}^{3}} \right)\),通常来说当\(n\)小于10000 时还是可以接受的 |
适用于各种类型的模型 | 只适用于线性模型,不适合逻辑回归模型等其他模型 |
不可逆性
设\(A=X^TX\),如果\(A\)不可逆,可能原因:
- 特征冗余:\(x_1,x_2\)线性相关,删除其中一个
- 特征太多:删除一些,或者正则化
采用\(pinv()\),即伪逆函数,这样即使\(A\)不可逆,也可以算出结果。
5 逻辑回归
分类算法
算法输出/预测值介于0 ~ 1之间
\(sigmod\)函数/\(logistic\)函数:\(g(z)=\frac{1}{1+e^{-z}}\)
假设函数\(h_\theta(x)=g(\theta^Tx)=\frac{1}{1+e^{-\theta^Tx}}\),对于输入\(x\),输出\(y\)=1的概率
决策边界
\(\theta^Tx\ge0\),\(y=1\)
自动拟合参数\(\theta\)
代价函数
(极大似然估计)
最优化:(梯度下降)
推导过程: \(J\left( \theta \right)=-\frac{1}{m}\sum\limits_{i=1}^{m}{[{{y}^{(i)}}\log \left( {h_\theta}\left( {{x}^{(i)}} \right) \right)+\left( 1-{{y}^{(i)}} \right)\log \left( 1-{h_\theta}\left( {{x}^{(i)}} \right) \right)]}\)
考虑: \({h_\theta}\left( {{x}^{(i)}} \right)=\frac{1}{1+{{e}^{-{\theta^T}{{x}^{(i)}}}}}\) 则: \({{y}^{(i)}}\log \left( {h_\theta}\left( {{x}^{(i)}} \right) \right)+\left( 1-{{y}^{(i)}} \right)\log \left( 1-{h_\theta}\left( {{x}^{(i)}} \right) \right)\) \(={{y}^{(i)}}\log \left( \frac{1}{1+{{e}^{-{\theta^T}{{x}^{(i)}}}}} \right)+\left( 1-{{y}^{(i)}} \right)\log \left( 1-\frac{1}{1+{{e}^{-{\theta^T}{{x}^{(i)}}}}} \right)\)
\(=-{{y}^{(i)}}\log \left( 1+{{e}^{-{\theta^T}{{x}^{(i)}}}} \right)-\left( 1-{{y}^{(i)}} \right)\log \left( 1+{{e}^{{\theta^T}{{x}^{(i)}}}} \right)\) 所以: \(\frac{\partial }{\partial {\theta_{j}}}J\left( \theta \right)=\frac{\partial }{\partial {\theta_{j}}}[-\frac{1}{m}\sum\limits_{i=1}^{m}{[-{{y}^{(i)}}\log \left( 1+{{e}^{-{\theta^{T}}{{x}^{(i)}}}} \right)-\left( 1-{{y}^{(i)}} \right)\log \left( 1+{{e}^{{\theta^{T}}{{x}^{(i)}}}} \right)]}]\) \(=-\frac{1}{m}\sum\limits_{i=1}^{m}{[-{{y}^{(i)}}\frac{-x_{j}^{(i)}{{e}^{-{\theta^{T}}{{x}^{(i)}}}}}{1+{{e}^{-{\theta^{T}}{{x}^{(i)}}}}}-\left( 1-{{y}^{(i)}} \right)\frac{x_j^{(i)}{{e}^{{\theta^T}{{x}^{(i)}}}}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}}}]\)
\(=-\frac{1}{m}\sum\limits_{i=1}^{m}{{y}^{(i)}}\frac{x_j^{(i)}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}}-\left( 1-{{y}^{(i)}} \right)\frac{x_j^{(i)}{{e}^{{\theta^T}{{x}^{(i)}}}}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}}]\)
\(=-\frac{1}{m}\sum\limits_{i=1}^{m}{\frac{{{y}^{(i)}}x_j^{(i)}-x_j^{(i)}{{e}^{{\theta^T}{{x}^{(i)}}}}+{{y}^{(i)}}x_j^{(i)}{{e}^{{\theta^T}{{x}^{(i)}}}}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}}}\)
\(=-\frac{1}{m}\sum\limits_{i=1}^{m}{\frac{{{y}^{(i)}}\left( 1\text{+}{{e}^{{\theta^T}{{x}^{(i)}}}} \right)-{{e}^{{\theta^T}{{x}^{(i)}}}}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}}x_j^{(i)}}\)
\(=-\frac{1}{m}\sum\limits_{i=1}^{m}{({{y}^{(i)}}-\frac{{{e}^{{\theta^T}{{x}^{(i)}}}}}{1+{{e}^{{\theta^T}{{x}^{(i)}}}}})x_j^{(i)}}\)
\(=-\frac{1}{m}\sum\limits_{i=1}^{m}{({{y}^{(i)}}-\frac{1}{1+{{e}^{-{\theta^T}{{x}^{(i)}}}}})x_j^{(i)}}\)
\(=-\frac{1}{m}\sum\limits_{i=1}^{m}{[{{y}^{(i)}}-{h_\theta}\left( {{x}^{(i)}} \right)]x_j^{(i)}}\)
\(=\frac{1}{m}\sum\limits_{i=1}^{m}{[{h_\theta}\left( {{x}^{(i)}} \right)-{{y}^{(i)}}]x_j^{(i)}}\)
仍然可以使用向量化和特征缩放
共轭梯度法、BFGS和L-BFGS:
- 不需要手动选择学习率
- 收敛比梯度下降快
- 算法更复杂
多分类
转化为多个二元分类问题
\(h_\theta^{(i)}(x)=P(y=i|x;\theta)\)
6 正则化
过拟合\(overfitting\)/高方差\(high variance\):训练集拟合得很好,不能用来预测
欠拟合\(underfit\)/高偏差\(high bias\):没有很好的拟合数据
处理过拟合问题:
- 减少选取特征变量的数量
- 手动选择保留哪些特征
- 模型选择算法
- 正则化
- 保留所有特征,但是减少量级或参数大小
- 当有很多特征时,每一个特征都对预测的值有影响
正则化
较小的参数值
- 更简单的假设函数,函数更平滑
- 不容易过拟合
代价函数
加入罚项
\(\lambda\),正则化参数,控制两个不同目标之间的取舍
- 第一项:更好地拟合数据
- 第二项:参数尽可能小
线性回归的正则化
梯度下降
repeat until convergence {
\({\theta_{0}}:={\theta_{0}}-\alpha \frac{1}{m}\sum\limits_{i=1}^{m}{\left({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)\cdot {{x}_0^{(i)}}}\)
\({\theta_{j}}:={\theta_{j}}-\alpha [\frac{1}{m}\sum\limits_{i=1}^{m}{\left({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)\cdot {{x}_j^{(i)}}}+\frac{\lambda}{m}\theta_j]\\=\theta_j(1-\alpha\frac{\lambda}{m})-\alpha \frac{1}{m}\sum\limits_{i=1}^{m}{\left({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)\cdot {{x}_j^{(i)}}}\)
}
正规方程
利用正规方程解出向量 \(\theta ={{\left( {X^T}X +\lambda A\right)}^{-1}}{X^{T}}y\) 。
其中,\(A\)为除第一列,对角线均为1,其余均为0的矩阵。
(一定可逆)
逻辑回归的正则化
repeat until convergence {
\({\theta_{0}}:={\theta_{0}}-\alpha \frac{1}{m}\sum\limits_{i=1}^{m}{\left({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)\cdot {{x}_0^{(i)}}}\)
\({\theta_{j}}:={\theta_{j}}-\alpha [\frac{1}{m}\sum\limits_{i=1}^{m}{\left({{h}_{\theta }}({{x}^{(i)}})-{{y}^{(i)}} \right)\cdot {{x}_j^{(i)}}}+\frac{\lambda}{m}\theta_j]\)
}
这里的假设函数和线性回归是不一样的!
高级优化算法的正则化:同上
本文来自博客园,作者:白芷呀,转载请注明原文链接:https://www.cnblogs.com/angelica-duhurica/p/10912097.html