回归主要分为线性回归和逻辑回归。线性回归主要解决连续值预测问题,逻辑回归主要解决分类问题。但逻辑回归输出的是属于某一类的概率,因此常被用来进行排序。
1. 线性回归的原理
假定输入
χ
和输出
y
之间有线性相关关系,线性回归就是学习一个映射
然后对于给定的样本 x ,预测其输出:
现假定 x=(x0,x1…xn) ,则预测值为:
在特征 x 中加上一维
2. 损失函数
为了找到最好的权重参数
θ
,令
X
到
其中
为了评价模型拟合的效果,对于一个特定的数据集 (X,y) 定义一个损失函数来计算预测值与真实值之间的误差:
即总体误差是所有样本点误差平方和的均值,其中 (x(i),y(i)) 表示的是第 i 个样本点。现在给定数据集
3. 梯度下降
假设有一堆样本点
(x1,y1)(x2,y2)…(xn,yn)
,定义函数
hθ(x)
来模拟
y
。假设最后的拟合函数为
- 首先随机初始化 θ ,例如令 θ⃗ =0⃗ 。
不断变化 θ⃗ 的值来改变 J(θ) 的值,使其越来越小。改变的规则为:
θi:=θi−α∂J(θ)∂θi
∂J(θ)∂θi=∑j=1m(hθ(x(j))−y(j))x(j)i
因此对于所有的 m 个样本点求和,有:
θi:=θi−α∑j=1m[(hθ(x(j))−y(j))⋅x(j)i]
其中 x(j),y(j) 表示第 j 个样本点,x(j) 是一个向量, x(j)i 表示第 j 个样本点x(j) 的第 i 个分量,是一个标量。不断重复上述过程,直到最后收敛(例如最后发现损失函数
Jθ(X) 基本不再变化)。
整个过程当中,
θ,hθ(x),Jθ(X)
都会不断变化,但是
hθ(x)
会越来越接近
y
,因此
4. 利用最小二乘拟合的方法来计算 θ
为了计算函数 Jθ(x) 在指定的计算步骤内达到的最小值,每次我们都沿当前点下降最快的方向移动。最快的方向即梯度方向:
假设
z
是一个向量,
故
则
要求梯度,令
求得
最终 θ⃗ 是一个 m×1 的向量。这样对于简单的线性回归问题,就不需要用前面的迭代方法啦。
如果 xTx 是不可逆的,说明 x <script type="math/tex" id="MathJax-Element-67">x</script>当中有特征冗余,需要去掉某些特征。