和Andrew Ng漫步于机器学习 - 第三周

分类问题

  • 分类问题满足二元判断,根据计算机二进制原理,只有0,1两种情况,比如有/无,对/错,是/否等
  • 分类问题需要设定阈值,高于/低于阈值对应二元分类问题的两种情况
    由于线性回归曲线容易收到异常值的影响而导致同一阈值产生较大的偏差(曲率改变),因此不适合用于分类问题

假设方程

既然线性回归不合适,我们需要构建新的假设方程来解决分类问题,即逻辑方程,故称逻辑回归:

g(z)=11+ezg(z) = \dfrac{1}{1 + e^{-z}}
其中应用于机器学习时:
hθ(x)=g(θTx)z=θTx假设方程:h_\theta (x) = g(\theta^T x )\newline 其中:z = \theta^T x \newline

和Andrew Ng漫步于机器学习 - 第三周

逻辑方程曲线分布在0,1范围内,实现了数据规模的统一,且直观地表现了概率,其表达式满足:
hθ(x)=P(y=1x;θ)=1P(y=0x;θ)P(y=0x;θ)+P(y=1x;θ)=1h_\theta(x) = P(y=1 | x ; \theta) = 1 - P(y=0 | x ; \theta) \newline P(y = 0 | x;\theta) + P(y = 1 | x ; \theta) = 1

决策边界

  1. 选定阈值,如threshold = 0.5则:
    hθ(x)0.5y=1hθ(x)<0.5y=0h_\theta(x) \geq 0.5 \rightarrow y = 1 \newline h_\theta(x) < 0.5 \rightarrow y = 0则此时:θTx0y=1θTx<0y=0\theta^T x \geq 0 \Rightarrow y = 1 \newline \theta^T x < 0 \Rightarrow y = 0 \newline
  2. 求解θTx=0.5(threshold)\theta^Tx = 0.5(threshold),其解即为决策边界,在图形上表示为一条分离数据集的曲线,其两侧则为分类后不同类的数据集

逻辑回归模型

代价函数

我们不能套用线性回归的回归方程计算,事实上,我们需要采用一套99新的算法:
J(θ)=1mi=1mCost(hθ(x(i)),y(i))Cost(hθ(x),y)=log(hθ(x))  if y = 1Cost(hθ(x),y)=log(1hθ(x))  if y = 0J(\theta) = \dfrac{1}{m} \sum_{i=1}^m \mathrm{Cost}(h_\theta(x^{(i)}),y^{(i)}) \newline \mathrm{Cost}(h_\theta(x),y) = -\log(h_\theta(x)) \;\text{if y = 1} \newline\mathrm{Cost}(h_\theta(x),y) = -\log(1-h_\theta(x)) \;\text{if y = 0}

  • 当分类结果y=1时:
    和Andrew Ng漫步于机器学习 - 第三周
    假设方程输出1,代价方程结果为0
    假设方程输出0,代价方程逼近无限
  • 当分类结果y=0时:
    和Andrew Ng漫步于机器学习 - 第三周
    假设方程输出0,代价方程结果为0
    假设方程输出1,代价方程逼近无限

不考虑分类情况,我们可以对代价函数用一个公式统一表示:

J(θ)=1mi=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]J(θ)=\dfrac{1}{−m}\sum_{i=1}^m ​ [y^{(i)}log(h_θ(x^{(i)}))+(1−y^{(i)})log(1−h_θ(x^{(i)}))]
矢量表达式即为:
h=g(Xθ)J(θ)=1m(yTlog(h)(1y)Tlog(1h))h = g(X\theta)\newline J(\theta) = \frac{1}{m} \cdot \left(-y^{T}\log(h)-(1-y)^{T}\log(1-h)\right)

梯度下降

原理相同:Repeat  {  θj:=θjαθjJ(θ)}Repeat \; \lbrace \newline \; \theta_j := \theta_j - \alpha \dfrac{\partial}{\partial \theta_j}J(\theta) \newline \rbrace
求偏导项:Repeat  {  θj:=θjαmi=1m(hθ(x(i))y(i))xj(i)}Repeat \; \lbrace \newline \; \theta_j := \theta_j - \frac{\alpha}{m} \sum_{i=1}^m (h_\theta(x^{(i)}) - y^{(i)}) x_j^{(i)} \newline \rbrace
矢量化:θ:=θαmXT(g(Xθ)y)θ:=θ− \dfrac{\alpha}{m}X^T(g(Xθ)−\vec{y})

高级优化

参数优化方法

  • 梯度下降(Gradient Descent)
  • 共轭梯度下降(Conjugate Gradient)
  • BFGS(Broyden–Fletcher–Goldfarb–Shanno)
  • L-BFGS(Limited-memory BFGS)
    梯度下降不是唯一的优化参数的方法

算法实践

高级优化太高级了,非专业人士不建议自己写算法,寻找其它已经存在的算法库进行计算更加现实,如在Octave中:
和Andrew Ng漫步于机器学习 - 第三周
照本宣科,注意fminunc为高级优化算法,参数@costFunction为计算代价函数的回调方法

多类分类

当分类问题输出结果y的类型>2,我们称此为多类分类问题,此时,采取计算机传统的二元判断已经无法满足需求

一对多模型

专业解决多类分类问题一百年
和Andrew Ng漫步于机器学习 - 第三周

  1. 通过训练集(一直分类),为每个类都建立一个逻辑回归分类模型,和其它模型进行区分,即回到了二元判断模型,有n类就要建立n个模型
  2. 为每一个样本,计算出它的概率值(逻辑方程的解,不是代价函数值)
  3. 选择概率最高的分类,将样本归于此类,重复此步直到分类完成

过拟合

什么是过拟合

欠拟合 很不错 过拟合
高偏差 刚刚好 高方差

和Andrew Ng漫步于机器学习 - 第三周

  • 减少样本集特征数:

    • 人为筛选特征量
    • 使用特征选择模型
  • 正则化:保留所有特征,大幅减小参数θj\theta_j,适用于大量存在都有点用的特征量的情况

正则化原理

和Andrew Ng漫步于机器学习 - 第三周
代价函数公式:
minθ12mi=1m(hθ(x(i))y(i))2+λj=1nθj2min_θ\dfrac{1}{2m}\sum_{i=1}^{m}(h_θ(x_{(i)})−y_{(i)})^2+λ\sum_{j=1}^{n}θ_j^2

  • λj=1nθj2λ\sum_{j=1}^{n}θ_j^2为正则项,正则项不包括θ0\theta_0
  • 其中lambda是一个较大值,如1000,此时进行梯度下降时,要使代价函数值小,相应的特征值就要小,从而能够避免高方差,实现惩罚(penalize)
    惩罚究竟使如何实现的呢?答案就在于求偏导。对代价函数求偏导后,θ\theta在梯度下降时就会多减一个值,从而实现惩罚
  • lambda过大,曲线接近于直线,欠拟合高偏差
  • lambda过小,反作用

正则化线性回归

梯度下降

Repeat {    θ0:=θ0α 1m i=1m(hθ(x(i))y(i))x0(i)    θj:=θjα [(1m i=1m(hθ(x(i))y(i))xj(i))+λmθj]          j{1,2...n}}{Repeat}\ \lbrace \newline \ \ \ \ \theta_0 := \theta_0 - \alpha\ \frac{1}{m}\ \sum_{i=1}^m (h_\theta(x^{(i)}) - y^{(i)})x_0^{(i)} \newline \ \ \ \ \theta_j := \theta_j - \alpha\ \left[ \left( \frac{1}{m}\ \sum_{i=1}^m (h_\theta(x^{(i)}) - y^{(i)})x_j^{(i)} \right) + \frac{\lambda}{m}\theta_j \right] \ \ \ \ \ \ \ \ \ \ j \in \lbrace 1,2...n\rbrace\newline \rbrace
与正则化代价函数相同,θ0\theta_0也不包括在正则化范围内,换言之,θ0\theta_0不受正则化影响

θj\theta_j项简单处理:
θj:=θj(1αλm)α1mi=1m(hθ(x(i))y(i))xj(i)θ_j:=θ_j(1−α\dfrac{λ}{m})−α\dfrac{1}{m}\sum_{i=1}^m(h_θ(x^{(i)})−y^{(i)})x_j^{(i)}
其中(1αλm)(1−α\dfrac{λ}{m})项<1,使得θj\theta_j不断减小,实现惩罚

正态方程

同样将λ\lambda引入正态方程
θ=(XTX+λL)1XTywhere  L=[0111]\theta = \left( X^TX + \lambda \cdot L \right)^{-1} X^Ty \newline \text{where}\ \ L = \begin{bmatrix} 0 & & & & \newline & 1 & & & \newline & & 1 & & \newline & & & \ddots & \newline & & & & 1 \newline\end{bmatrix}
数组中的值都排列在在对角线上,显示不出来

  • L为(n+1)×(n+1)矩阵,n为样本特征量
  • m < n, XTXX^TX不可逆,加上λ.L\lambda.L后就可逆了
  • m > n, XTXX^TX可逆

正则化逻辑回归

正则化代价函数

和Andrew Ng漫步于机器学习 - 第三周

同样排除θ0\theta_0,正则项也是相同的

正则化梯度下降

和Andrew Ng漫步于机器学习 - 第三周
除公式外的原理相同,多减去的正则项也相同,没什么好多说的