机器学习公开课备忘录(一)回归问题
机器学习公开课备忘录(一)回归问题
回归问题属于监督学习类(supervised learning),其中线性回归针对预测值是连续值的问题,而逻辑回归针对的预测值是离散值的问题,换而言之,逻辑回归只是延续了“回归”的称呼,本质上是分类问题。
线性回归
问题描述
- 给定m个样本,假设每个样本有n个特征(特征代表影响最终输入的因素),第i个样本输入与输出可表示为: \((x_1^{(i)},x_2^{(i)}......x_n^{(i)})\) 与 \(y^{(i)}\)
(例如研究房价,y为最终房子的价格,影响房子的价格可选取房子的大小、卧室数等等,因此可以用 \(x_1\) 代表房子大小,\(x_2\) 代表卧室数……依次类推) - 假定 \(h_{\theta}(x) = \theta_0+\theta_1*x_1+\theta_2*x_2+......\)
是给定一组输入\((x_1,x_2......x_n)\)下的输出,线性回归,即是求一组\(\theta_0,\theta_1,\theta_2......\) 参数,使得 \(h_{\theta}(x)\) 与已知的输出误差最小,并进而可以用这个函数预测其它输入情况下的输出值。 - 所谓的误差最小,是通过代价函数来描述的,代价函数的值是由\(\theta_0,\theta_1,\theta_2......\) 决定的,可以表示为\(\vec \theta\),代价函数表示为:$$J(\vec\theta) = \frac{1}{2m} \sum_{i=1}m(h_{\theta}(x)-y{(i)})2$$
算法求解(梯度下降法)
以 \(y = f(x)\) 的一元函数为例,对于任意一点,假设斜率为k,则有:\(f(x - k\alpha) < f(x),\alpha\)为较小的正实数,即对于任意一个函数,当其自变量沿着其导数的反方向变化时,函数值变小;这个结论对于多元函数也是成立的,可以通过这种算法求解代价函数最小值时,\(\theta\) 的取值。
伪代码描述
Repeat until convergence{
\(\theta_j = \theta_j - \alpha\frac{\partial}{\partial\theta_j}J(\theta)\)
$ = \theta_j - \alpha\frac{1}{m}\summ_{i=1}(h_\theta(x-y{(i)}))x_j$
}
将上述的j个 \(\theta\) 值写成矩阵形式为:\(\theta = \theta - \alpha\frac{1}{m}X^T(X\theta-y)\)
(另外可以通过矩阵化的正规方程直接求解,公式为 \(\theta = (X^TX)^{-1}X^Ty\))
使用技巧
- 当各特征的范围波动太大时(例如房间数量是个位数,房间面积往往有三位数),往往采用特征缩放,将各特征归一化到正常区间,常见转化公式:\(x = \frac{x - avr}{max - min}\)
- 组合选用特征,例如用不同特征的加减乘除或者某个特征的乘方、开方等构造新特征
- 利用\(J(\theta)\)与迭代次数的曲线判断算法是否正常工作,若正常工作函数是递减的,否则\(\alpha\)过大
- 为防止过拟合,常使用正则化,此时:
\[J(\vec\theta) = \frac{1}{2m} (\sum_{i=1}^m(h_{\theta}(x^{(i)})-y^{(i)})^2 + \lambda\sum^n_{j=1}\theta_j^2)
\]
参数更新公式演变为:
\[\theta_j = \theta_j - \alpha\frac{1}{m}\sum^m_{i=1}(h_\theta(x^{(i)})-y^{(i)})x_j^{(i)} - \alpha\frac{\lambda}{m}\theta_j 当且仅当j不为零,j为零时无正则项
\]
逻辑回归
问题描述
- 逻辑回归的输入同线性回归,但其输出为离散值,逻辑回归更确切地说是分类问题。
- 当 \(y \in \{0,1\}\) 时,也被称作二分类问题,1为正类,0为负类;同理,y的取值集合也可以有多个值。
- 逻辑回归的假设函数是引入了sigmod函数对结果进行映射: $$ g(z) = \frac{1}{1+e^{-z}}$$ $$h_\theta(x) = g( \theta_0+\theta_1x_1+\theta_2x_2+......)$$ 此时,假设函数的输出在[0 1]之间,通常选取0.5作为阈值,大于阈值的认为输出是1;同时,假设函数的值也可以看作概率
- 逻辑回归的代价函数也有一定差异,即:$$J(\vec\theta) = \frac{1}{2m} (\sum_{i=1}^m(-ylog(h_\theta(x))-(1-y)log(1-h_\theta(x))) + \lambda\sumn_{j=1}\theta_j2)$$ 但对其求导后会发现,它的更新规则形式和线性回归相同,都是:$$ \theta_j = \theta_j - \alpha\frac{1}{m}\summ_{i=1}(h_\theta(x)-y{(i)})x_j - \alpha\frac{\lambda}{m}\theta_j $$ 只是公式当中的 \(h_\theta(x)\) 函数发生了变化
算法求解
- 算法的思路和求解伪代码同线性回归
- 对于多分类问题,以三分类为例,假设给定的样本中 \(y \in \{ 0,1,2\}\) ,可以看作三个二分类问题,即\(y = 0和y \neq 0、y = 1和y \neq 1、y=2和y\neq2\)三类,对于某个输入,可以分别预测其等于0、等于1、等于2的概率,取概率最高的值作为其输出

浙公网安备 33010602011771号