之前根据概率/非概率,参数/非参数的维度划分模型,还可以根据模型处理的任务分为以下3类
- Regression回归模型:预测连续值,输出空间是无限的数字(监督学习)
- Classification分类模型:预测类别,输出是有限的类别标签(监督学习)
- 聚类模型:输出是无限的类别,与分类的区别是无需预定义类别,基于数据相似性分组(无监督学习)
线性回归
对于一维的数据分布,可以用线性回归描述这组数据,建立以下回归函数
通常将b合并到参数w中组成参数向量
在完成建模后有无穷多个参数值可以选择,我们通过挑选一个损失函数,找到w令损失函数值最小,我们便可以确定。而很自然的想法,我们选择的损失函数就是找到一个函数距离个数据点的和距离最近即为所求,而这样的拟合思想就是最小二乘法,对应的损失函数是平方损失函数
线性:我们有一组观测数据( x i , y i ),通过一些数据分析猜测目标值y和特征x之间存在线性关系,那么我们的模型就可以定为:f ( x ) = k x + b。即输入和输出在图像的表现是一次函数
回归:人们在测量事物的时候因为客观条件所限,求得的都是测量值,而不是事物真实的值,为了能够得到真实值,无限次的进行测量,最后通过这些测量数据计算回归到真实值,这就是回归的由来。
一元线性回归
一元指只有一个输入变量X,如果需要基于不止一种变量做出预测即为多元
术语:
- X:Input Variable/feature/prediction 输入变量
- \(\hat{y}\) target Variable 输出变量,对真实输出的估计
- Y:output Variable 真实输出
- m:number of traning examples
- (x,y):single training example,一组观测数据
- \((x^{(i)}, y^{(i)}) = i^{\text{th}} \text{ training example}\) 第i组观测数据
- f:模型,在此处是一元线性回归模型
- \(f_{w,b}(x) = wx + b\),w,b称为parameter参数/coefficient系数/weight权重,是可以调整的变量以让模型的损失函数最小以提高模型的性能
- 符号 w∗ 和 b∗ 通常表示最优解(optimal solution), 这里指使目标函数最小的最优参数值
平方损失函数在线性回归中使用最广泛,而用平方损失函数拟合函数的思想就是最小二乘法
最小二乘法是用平方(二乘)损失函数拟合任意函数一种思想,线性回归只是其中一个比较简单而且也很常用的函数,所以讲最小二乘法基本都会以它为例。
- 几何意义:向量空间中的投影:将数据点看作高维空间中的向量,最小二乘法其实是把实际观测值(真实数据点)投影到模型预测值(由参数张成的子空间)上。投影后的点与真实点之间的“最短距离”对应的就是误差最小的情况
- 为什么是平方和:避免正负误差相互抵消。且“误差的平方和最小”估计出来的模型可以被证明是最接近真实情形的。
误差平方和:\( J(\theta) = \|X\theta – Y\|^2 \)
这里的 \(\|X\theta – Y\|^2\) 就是向量 \( X\theta \)(预测值)与 \( Y \)(真实值)之间的欧几里得距离平方
不同的参数w对应不同的模型函数fw(x)和一个成本j(w),当遍历所有的w就能得到完整的损失函数图像,其最小值所对应的w即我们应该选择作为模型的参数。
比如在该例中,w=1时J(w)的值最小,J是衡量平方误差大小的成本函数,从而选择w=1作为模拟函数的系数。
二元线性回归
Model
\(
f_{w,b}(x) = wx + b
\)
Parameters
\(
w, \ b
\)
Cost Function
\(
J(w, b) = \frac{1}{2m} \sum_{i=1}^m \left( f_{w,b}(x^{(i)}) – y^{(i)} \right)^2
\)
Objective
Minimize the cost function \( J(w, b) \) with respect to parameters \( w \) and \( b \).
我们也可以将二维坐标图转换为等高线图,每条等高线线在三维中代表相同高度的点which is具有相同成本函数值的点集
现在,通过遍历各个参数,画出整个成本函数,观察图像找到成本函数的最低点找w和b值,从而得到最佳拟合线最小化成本函数。实际是通过梯度下降算法找到最低点参数w和b的值,省去了遍历其他对找到最小值点的无用信息。梯度下降算法的变体也被用在更复杂的模型,比如深度学习模型
多元线性回归 Mutiple linear regression
Previously: \( f_{w,b}(x) = wx + b \) \[ f_{w,b}(x) = w_1 x_1 + w_2 x_2 + w_3 x_3 + w_4 x_4 + b \]
上标为第几组观测数据,下标为第几个特征向量
可以通过点积运算(向量化 Vectorization)简化表达方式,也可以使算法更高效的运行
Gradient Decent 梯度下降算法
每次向变化率最高的方向走一步,直到走到最低点即各个方向都会导致值增加,从而找到局部最小值点。梯度算法的重要性质:不同的初始值,会导致不同的局部最小值结果
Learning rate 学习率\alpha:控制向下坡走的步大小 0<\alpha≤1
Derivative 导数:控制方向
- =在数学中有时意为判断左右是否相等,有时为赋值的含义,而前者在编程中明确表示为==
- 两者的区别在于是否更新完全部参数再计算,差别不大,但是建议使用左边的方式
还是先从一元线性回归理解梯度算法的过程,从某个初始点不断向着最低点以学习率的倍数逼近
你可能会注意到如果学习率过大从而导致步长过大,但这不会引发函数发散即局部最小值位于某个步长的中间点,因为随着梯度下降的过程导数会不断变小
线性回归的梯度算法
- f(x)是线性回归模型,其等于wx+b,黄框部分是成本函数关于w的导数,红框部分为成本函数关于b的导数。要同时更新w和b
- 成本函数前乘以1/2的原因:可以使其导数的形式变得更简洁
梯度算法的问题:通常对非凸函数(convex function)使用梯度算法寻找最佳w和b时,根据初始设置的w和b的不同会有多个局部最小值。然而线性回归的成本函数是凸函数,所以对其梯度下降算法并不会有这种问题,无论初始条件是什么都只会得到全局最小值
下面是对线性回归模型的成本函数应用梯度函数,将w设为-0.1,b设为900的过程
- Batch gradient desent 梯度下降算法指在下降的每一步中查看所有的数据集而不是训练数据的子集
用向量化重写线性回归
在线性代数的笔记中提到过,增广矩阵,是将平移这类平移变换也放入矩阵
自身向量积 -> 平方和 <- L2范数
设有 \( n \) 维向量 \( \mathbf{v} = [v_1, v_2, \ldots, v_n]^T \),其与自身的点积定义为:
\[
\mathbf{v}^T \mathbf{v} = v_1 \cdot v_1 + v_2 \cdot v_2 + \cdots + v_n \cdot v_n = \sum_{i=1}^n v_i^2
\]
向量与自身的点积等价于其分量的平方和,也等价于计算该向量的模长(范数)的平方
例如,向量 \( \mathbf{v} = [3, 4] \) 的横长为 5,其平方为 \( 3^2 + 4^2 = 25 \),与点积 \( \mathbf{v}^T \mathbf{v} = 25 \) 一致
成本函数 \( J(\theta) \) 是误差平方和: \[ J(w) = \sum_{i=1}^m (h_i – Y_i)^2 \] 将其写成向量形式即为: \[ J(w) = (Xw – Y)^\top (Xw – Y) \] 这是因为两个向量的点积展开后即为分量平方和: \[ \mathbf{v}^\top \mathbf{v} = v_1^2 + v_2^2 + \cdots + v_m^2 \] 进一步简化,用L2范数的平方表示: \[ J(w) = \|X\theta – Y\|^2 \]
线性回归的正则化
- 参数太多,即多元一般才需要正则化,因为不知道选择哪些参数,全选的话必然导致过拟合,所以可以全选,通过正则化降低每项的系数,避免模拟函数过拟合
除梯度下降,正则方程也可以计算w和b,但其只适用线性回归模型
Update for \( w_j \)
\[
w_j = w_j – \alpha \left[ \frac{1}{m} \sum_{i=1}^m \left( f_{\overline{w}, b}(\vec{x}^{(i)}) – y^{(i)} \right) x_j^{(i)} + \frac{\lambda}{m} w_j \right]
\]
Update for \( b \)
\[
b = b – \alpha \frac{1}{m} \sum_{i=1}^m \left( f_{\overline{w}, b}(\vec{x}^{(i)}) – y^{(i)} \right)
\]
线性回归的正则化只惩罚所有特征的参数w,不惩罚常数项b。这会产生一个更拟合的曲线
/lambda代表左右分配的权重,如果/lambda权重很大代表分给正则化项更多的权重,则将会把各个参数惩罚为0,只剩下b常数项从而导致欠拟合。如果\lambda权重很小,则就会出现过拟合的问题。所以要选择一个合适的\lambda值
•利⽤L2范数进⾏正则化不仅可以使模型选择 较⼩的参数,同时也避免X^T X不可逆的问题
对数几率回归(对率回归)
线性回归模型帮助我们用最简单的线性方程实现了对数据的拟合,然而,这只能完成回归任务,无法完成分类任务,那么 logistics regression 就是在线性回归的基础上添砖加瓦,构建出了一种分类模型。虽然名称是“回归”,但实际却是一中分类学习方法
如果在线性模型 \( (z = w^T x + b) \) 的基础上做分类,比如二分类任务,即 \( y \in \{0,1\} \),直觉上我们会怎么做?最直观的,可以将线性模型的输出值再套上一个函数 \( y = g(z) \),最简单的就是“单位阶跃函数”(unit-step function),如下图中红色线段所示。 \[ y = \begin{cases} 0, & z < 0; \\ 0.5, & z = 0; \\ 1, & z > 0. \end{cases} \] 也就是说 \( z = w^T x + b \) 看作为一个分割线,大于 \( z \) 的判定为类别0,小于 \( z \) 的判定为类别1。 但是,这样的分段函数数学性质不太好,它既不连续也不可微。我们知道,通常在做优化任务时,目标函数最好是连续可微的。那么如何改进呢? 这里就用到了对数几率函数(形状如图中黑色曲线所示):
总的来说,模型的完全形式如下: \[ y = \frac{1}{1 + e^{-(w^T x + b)}} \]
\( w^T \) 的作用是让权重向量 \( \mathbf{w} \) 和输入特征向量 \( \mathbf{x} \) 能够正确计算内积(点积)
- y是最终的分类结果(0或1):例如,
y=1
表示“恶性”,y=0
表示“良性”。
- 直接对分类可能性进行建模,无需事先假设数据分类;
- 不是仅预测出“类别”,而是可得到近似概率预测;
- 对率函数是任意阶可导的凸函数,有很好的数学性质。