机器学习初学者,原本是写来自己看的,写的比较随意。难免有错误,还请大家批评指正!对其中不清楚的地方可以留言,我会及时更正修改
回归与分类问题
单特征量线性回归问题
线性代数基础
矩阵通常表示做
Rm×n
向量Vector是一个
n×1
矩阵,记做
Rn
identity Matrix: 单位矩阵,对角线全为1的矩阵。记做
In×n
对单位矩阵有
A×I=I×A=A
Matrix inverse: 矩阵的逆,如果
A
是一个
matlab or Octava 基础
多元线性回归问题
n
= 特征量features的个数
x(i)j
= 第i个训练数据的第j个特征值
则预测函数可以表示为
方便起见,定义 x0=1 ,则
此时,预测函数可写作
代价函数cost function记做
则此时的梯度下降(Gradient descent)算法更新为
Repeat{
θj:=θj−α∂∂θjJ(θ)=θj−α1m∑mi=1(hθ(x(i))−y(i))x(i)j when n≥0
}
或者直接写成向量的形式:
θ:=θ−α1m∑mi=0(hθ(x(i))−yi)x(i)∈Rn+1
注:当上式可以写成 θ:=f(α)θ=(1−g(α))θ 的形式时,通常要求 0<f(α)<1/2 时的 α 是比较合适的,它不会有振荡
特征缩放 Feature Scaling
当特征值的量级相差很大时(如房子尺寸与居室数目),代价函数的轮廓图会变成瘦长的椭圆形,导致梯度下降算法运行十分缓慢(来回振荡)。在这种情况下,一种有效的方法就行进行特征缩放,如将特征量的取值范围控制在 [0,1] ,通常情况下,控制每个参数在大约 [−1,1] 的范围内。
其中, μj 可以理解为平均值或取值范围的中间值, sj 为该特征量的取值范围大小。
学习速率 Learning Rate
一个典型的收敛判别是一次迭代的差值小于 10−3 ,实际上,选取一个这样的阈值是很困难的。
在选取学习速率 α ,通常选取一个较小的 α ,然后3倍增加,如
…. 0.001, 0.003, 0.01, 0.03, 0.1, 0.3, 1, ….
特征和多项式回归(Polynomial regression)
正规方程(Normal Equation)
其提供了一种求
θ
的解析方法,相比于使用迭代的方法,可以一次性求解
θ
的最优值。
在最小化
J(θ)
过程中,一种数学方式是使
∂∂θjJ(θ)=0
θ=(XTX)−1XTy
,其中
Xm×(n+1), ym×1
对于m个训练数据,n个特征的情况
构造完 X和y 后,就可以使用上面的公式计算 θ 了。
使用这里的 X和y ,也可以用来计算代价函数:
J(θ)=12m(Xθ−y)T(Xθ−y)
使用正规方法时,可以不对特征量进行归一化
Gradient Descent | Normal Equation |
---|---|
需要选择参数 α | 不需要选择参数 |
需要很多次迭代 | 不需要迭代 |
适合n比较大的情况 | 需要进行矩阵运算,不适合b比较大的情况 |
特征量小于1w时,通常可使用正规方法,大于1w时,使用梯度下降方法
-正规方程不可逆-
不可逆的情况很少见,在octava中,有两个函数pinv() 和 inv() 用来求逆。
不可逆的常见两种原因:
1 冗余特征:如房间的平方英尺和平方米。
2 太多特征:例如m
分类问题
逻辑回归算法
逻辑回归算法的输出值满足:
0≤hθ≤1
,实质上是一个分类算法。
g(z)称为S型函数(sigmoid function)或逻辑函数(logistic function),即
解释: hθ(x) =对于新输入样本x,y=1的概率。即
hθ(x)=P(y=1 | x;θ)
- 决策边界(decision boundary)-
当 z=θTx≥0 时, g(z)≥0.5 ,即预测函数 hθ(x)≥0.5 ,对应的预测结果是1。
样本分界线称为决策边界
- 代价函数-
一般的,代价函数可写作:
对于线性回归问题,有
Cost(hθ(x),y)=12(hθ(x)−y)2 ,由于 hθ(x) 是线性的,所以代价函数是一个凸函数。但对于逻辑回归来说, hθ(x) 显然是非线性的,因此要寻找一个不同的代价函数,方方便我们使用相关算法找到最优解。即
为了避免将代价函数写成两行,新的代价函数可以表示为
亦即
接下来,我们寻找合适的 θ ,使得 minθJ(θ) ,同样的
Repeat{
θj:=θj−α∂∂θjJ(θ)=θj−α1m∑mi=1(hθ(x(i))−y(i))x(i)j when n≥0
}
多类别分类问题
比如有k个类别,对应的分类y值为{1,2,3…k}。把每个y=i看做一个正类别,求出 h(i)θ(x) ,对于每个输入x做分类预测,选择满足 maxih(i)θ(x) 的类别。
高级优化方法
过度拟合问题
解决过度拟合问题的常用方法
-减少特征数目-手动选择保留部分特征或使用模型选择算法
正则化
-线性回归的正则化-
通过在代价函数上加上对参数的惩罚项,在不需要减少参数数量的情况达到正则化的目的。
对线性回归问题,有
对应的梯度下降计算 θ 的方法为:
Repeat{
θ0:=θ0−α1m∑mi=1(hθ(x(i))−y(i))x(i)0
θj:=θj−α[(1m∑mi=1(hθ(x(i))−y(i))x(i)j)+λmθj]
=θj(1−αλm)−α1m∑mi=1(hθ(x(i))−y(i))x(i)j
}
可以看到,在前面一项中 1−αλm<1 ,第二项和不适用正则化的梯度下降算法是相同的。
- 正规方程-
使用正则化之后的正规方程变为
θ=(XTX+λL)−1XTy
其中,L是一个 (n+1)×(n+1) 的矩阵,且
如果 m<n 的话, XTX 是不可逆的,但加上 λL 后, XTX+λL 是可逆的
- 逻辑回归的正则化-
使用正则化后的逻辑回归的代价函数写作
同样的,我们需要分开计算 θ0 和剩余的参数
Repeat{
θ0:=θ0−α1m∑mi=0(hθ(x(i))−y(i))x(i)0
θj:=θj−α[(1m∑mi=1(hθ(x(i))−y(i))x(i)j+λmθj)]j∈{1,2⋯n}
}