通常,将机器学习中的监督算法分为回归,与分类两种。

回归:透过数据最终能预测出一个值,该值为分类区间的某一个值

分类:最终得到的唯一的类别值

线性回归算法推导

线性回归算法推导

线性回归算法推导

权重参数对结果影响较大,偏置参数对最终结果影响较小

权重参数与theta的组合进行拟合平面,但误差不可避免

机器学习的目的:找出一条拟合曲线,误差最优

X0 = 1

计算:基本上基于矩阵计算

线性回归算法推导

y = wx + b

线性回归算法推导

假设去同一家银行贷款。 对于不同的银行,其分布函数可能不同。 即张三/李四同分布

贷款的规则,与张三/李四的身份无关,故张三/李四独立。

方差:服从正态分布

线性回归算法推导

线性回归算法推导

定义似然函数为各个子函数的乘积。

似然函数:根据样本去估计参数值。 用数据找出规则,即数据去估计参数值,找出最佳参数

成为真实值的可能性越大越好,即极大似然估计

线性回归算法推导

lg(a.b) = lg(a) + lg(b)

最大似然估计:现在已经拿到了很多个样本(你的数据集中所有因变量),这些样本值已经实现,最大似然估计就是去找到那个(组)参数估计值,使得前面已经实现的样本值发生概率最大。因为你手头上的样本已经实现了,其发生概率最大才符合逻辑。这时是求样本所有观测的联合概率最大化,是个连乘积,只要取对数,就变成了线性加总。此时通过对参数求导数,并令一阶导数为零,就可以通过解方程(组),得到最大似然估计值。

最左边的项目(m*log(1/根号2pai*sigma))恒正,为了使变换后越大越小,则使得最右边减法项越小越好,即J(theta)越小越好

为什么似然函数越大越好?让预测值成为真实值的可能性越大越好

为什么目标函数越小越好?因为似然函数两边取对数,展开为左右两项,左边恒为正,左边减去右边,因此右边的项/目标函数,应该越小越好

线性回归算法推导

h(x)为真实值,假设的真实值

y(i)为样本值

通常认为,偏导数为0的点,为极小值点。

目标函数为二次函数,向下凹,凸函数。凸优化概念

theta在实际工程中,并未永远可求解。线性回归,属于数学上的一个巧合。

线性回归算法推导

残差平方和:预测值与真实值之间的差异,残差项越小越好,约等于0,从而使得评估项接近于1

类似方差项:真实值与平均值之间的差异,类似于方差项目

R.^2项,越接近于1越好。

线性回归算法推导

针对凸函数,目的就是找到他的最低点。

求解过程中,下山过程,走最短路径最快,即切线方向(求偏导)

梯度上升:直接求偏导,梯度的方向

梯度下降:求梯度上升的反方向,即下山的方向

随着山坡在下降,目标函数减少,梯度方向在不停的变化。透过优化,逐渐求解,慢慢得到最优解

逐次偏导,逐次平均

线性回归算法推导

theta0/theta1为权重参数

theta0/theta1 一开始只是一个随机点

然后在开始位置,找到最优方向,走一小步,步子迈的太大,容易达到全局极小值点,而不是全局最大值点/步子迈的太大,跨过极优值点。

线性回归算法推导

批量梯度下降:计算量太大,每次计算都要批量统计所有的样本。优点:每次计算的损失函数,可以得到最佳损失函数,考虑所有样本,准确性最优,但速度较慢,运算量太大

随机梯度下降:SGD,每次随机找出一个样本进行更新,每次只找一个样本,计算快,但是结果不稳定。随机拿到的一个样本,并不一定是一个很纯的数据,容易收到离群点/异常点的影响。

小批量梯度下降Mini-Batch:综合SGD与批量梯度下降,去部分样本作为参考,实际用10个数据计算损失函数,根据损失函数进行更新。一般取2的N次方个样本作为小批量样本。

线性回归算法推导

任意起点,求偏导,更新步长:学习率

学习率:不可太大,过大,会导致梯度下降过程中不平稳。一般,设置的小一些没有太大的问题。很少设置大的学习率

一般,学习率小,则迭代速率较慢,但总的趋势是向着正确的方向发展。

通常,学习率以0.01开始,如果还不见减少,则继续减少学习率,比如0.001

可否,一开始,学习率可以稍微大一点,后面学习率随着迭代过程慢慢减少,这样,刚开始迭代快,后来迭代平稳,这样也是可以的。

batch:能选多大选多大,只要满足需求,batch尽量越大,使得最终结果稳定称多更高。一般取64

线性回归算法推导

logistic:是一个最经典的二分类算法。应用比较广

一般,拿到数据,首先做一个base model,建立基础模型,先那logistics回归,看一下什么效果

然后尝试其它算法,看是否比logistics算法更优,如果没有更优,则继续logtistics 回归

复杂算法,可视化展示/分析时,可解释性越差。

线性回归算法推导

输出取值范围【0,1】,可以近似理解为概率

将线性回归得到的实数值作为sigmoid函数的输入

sigmoid函数的功能:将预测值作为输入,得到概率值的输出。

z:相当于线性回归的输入,即最终得到的分值

最好将分值转换为概率。加入了sigmoid函数进行转换。

线性回归算法推导

任何数的0次幂等于1,1次幂等于自身

整合的目的:为了将结果方便展示。0代表一个类别,1代表另一个类别

线性回归算法推导

求极大值:梯度上升的的问题

转换为梯度下降:引入符号,正的极大值等于负的极小值

线性回归算法推导

对theta求偏导的方向,为正确的方向

j为样本的第j个特征,更新哪个theta j,就用哪个x.^j

线性回归算法推导

alpha:更新的力度/步长

最右边的求和项:更新的方向

方向*步长 = 更新的结果值

1/m:要综合考虑m个样本,利用Mini-batch做的回归

更新过程中,每一步都要计算theta j

softmax:归一化

相关文章: