机器学习算法原理解析 - 回归
1.线性回归
简述:
在统计学中,线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合(自变量都是一次方)。只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归。
1.1 举个例子说明线性回归
- 数据:工资和年龄(2个特征,即2个自变量)
- 目标:预测银行会贷款给我多少钱(标签)
- 考虑:工资和年龄都会影响最终银行贷款的结果,那么它们各自有多大的影响呢?(参数)
通俗解释:
- X1,X2就是我们的两个特征(年龄、工资),Y是银行最终会借给我们多少钱
- 找到最合适的一条线(想象一个高维)来最好的拟合我们的数据点
1.2 数学公式:
- 假设θ1是年龄X1的参数,θ2是工资X2的参数
- 拟合的平面:
(θ0是偏置项,即权重项)
- 整合:
,即hθ(x) = θ0x0 + θ1x1 + θ2x2 + ... + θnxn ,n指n个特征
1.3 误差:
- 真实值和预测值之间肯定是要存在差异的(用ε来表示该误差)
- 对于每个样本:
,i指第i个样本
- 误差
是独立并且具有相同的分布,并且服从均值为0、方差为
的高斯分布
注意:
①独立指张三和李四一起来贷款,他俩没关系;同分布指他俩都来的是我们假定的这家银行;高斯分布指银行可能会多给,也可能会少给,但是绝大多数情况下这个浮动不会太大,极小情况下浮动会比较大,符合正常情况。
②高斯分布又名正态分布,其概率密度函数为。
1.3.1 误差公式、似然函数与目标函数推导:
这里主要通过最小二乘法作为切入点的。
- 真实值、预测值与误差:
,y(i)是真实值,θTx(i)是预测值,ε(i)是误差,i是第i个样本。
- 由于误差服从高斯分布:
,exp即为指数函数e。
- 将(1)式带入(2)式:
,又可表达为
,i是第i个样本。
- 似然函数:
,∏是累乘符号,i是第i个样本
解释:什么样的参数跟我们的数据组合后恰好是真实值
-
对数似然:
解释:乘法难解,加法就容易了,对数里面乘法可以转换成加法,即累乘∏变成了累加∑
-
展开化简:
-
目标:让似然函数(对数变换后也一样)越大越好
(最小二乘法)
解释:是常量,
也是常量,要使似然函数越大,则
要最小,即得到目标函数
-
目标函数:
-
求偏导:
-
偏导等于0:
1.3.1.1 评估方法
- 最常用的评估项R2:
,
- R2的取值越接近于1,我们认为模型拟合的越好。
是预测值,yi是真实值,
是平均值,i为第i个样本
解释:要使R2越接近于1,而为常量值,则
要最小,同样是最小二乘法
1.3.2 梯度下降
这里采用的是与最小二乘法不同的方式,即梯度下降。
- 引入:当我们得到了一个目标函数后,如何进行求解?直接求解?(并不一定可解,线性回归可以当做是一个特例)
- 常规套路:机器学习的套路就是我交给机器一堆数据,然后告诉它什么样的学习方式是对的(目标函数),然后让它朝着这个方向去做
- 如何优化:一口吃不成个胖子,我们要静悄悄的一步步的完成迭代(每次优化一点点,累积起来就是个大成绩了)
- 目标函数:
-
寻找山谷的最低点,也就是我们的目标函数终点(什么样的参数能使得目标函数达到极值点)
- 下山分几步走呢?(更新参数)
- :找到当前最合适的方向
- :走那么一小步,走快了该“跌倒”了
- :按照方向与步伐去更新我们的参数
梯度下降,目标函数:
- 批量梯度下降:
,
(容易得到最优解,但是由于每次考虑所有样本,速度很慢)
-
随机梯度下降:
(每次找一个样本,迭代速度快,但不一定每次都朝着收敛的方向)
-
小批量梯度下降法:
(每次更新选择一小部分数据来算,实用!)
梯度下降:
- 学习率(步长):对结果会产生巨大的影响,一般小一些,为什么要有学习率?
- 如何选择:从小的时候,不行再小
- 批处理数量:32,64,128都可以,很多时候还得考虑内存和效率
2.逻辑回归Logistic regression
- 目的:分类还是回归?经典的二分类算法!
- 机器学习算法选择:先逻辑回归再用复杂的,能简单还是用简单的
- 逻辑回归的决策边界:可以是非线性的
Sigmoid函数
- 公式:
- 自变量取值为任意实数,值域[0,1]
- 解释:将任意的输入映射到了[0,1]区间,我们在线性回归中可以得到一个预测值,再将该值映射到Sigmoid函数中,这样就完成了由值到概率的转换,也就是分类任务。
- 预测函数:
,其中
-
分类任务:
,整合:
-
解释:对于二分类任务(0,1),整合后y取0只保留
,y取1只保留
- 似然函数:
- 对数似然:
- 此时应用梯度上升求最大值,引入
转换为梯度下降任务,批量梯度下降
- 求导过程:
- 参数更新:
,参数为什么要更新?
- 多分类的softmax:
- 总结:逻辑回归真的真的很好很好用