线性回归算法
数学概念
▒ 回归 - 回归会得到最终的计算结果, 是一个确定性的结果
▒ 分类 - 分类会进行分析给于一个结果的判断类别, 也是一个确定的结果
简单实例 - 银行贷款
实例分析
▒ 数据 - 工资和年龄 ( 2个特征 )
▒ 目标 - 预测银行会给我贷款多少钱 ( 标签 )
▒ 考虑 - 工资和年龄会如何影响到银行贷款的结果? 多大的影响? ( 参数 )
数据拟合
X1, X2 表示特征 ( 年龄, 工资 ), Y表示输出结果 ( 钱 )
我们需要对数据进行拟合
假设 θ1 是年龄的参数, θ2 是工资的参数 ( 参数表示特征对结果的影响程度 )
拟合的平面的公式表达则为
整合后为
整合详解
整合前 :
转化后结果
公式中的 θ0 表示偏置项, 给与一定程度的上下浮动, 偏置项此处可有理解为一个定值的偏置参数, 对结果不会产生较大的影响
而 θ1 和 θ2 则为权重参数, 需要组合特征数据项进行计算对结果会有较大影响
以上的式子较为长, 能简化那就简化
的内部运算原理为
问题来了, 这里的
从何而来? 因此为了能够达到这个简洁的公式, 需要填充进来一个
因此在不改变原值的情况下这个
, 设定为 1 则可以保证不会有数值上的影响
这样也需要我们的数据配合, 新添加一列 全 1 的数据, 这样完成公式的转换和数据填充
最终的结果这样更方便矩阵计算 ( 直接行 x 列计算即可 )
误差处理
概念解析
▒ 基础公式 -
▒ 误差
▨ 概念综述 - 误差
是独立并其具备相同的分布, 而且服从均值为0方差为
的高斯分布
▨ 独立 - 多人同时贷款彼此也是没有关系的, 彼此的判定分析都是独立进行互不影响的 ( 不会出现因为给A多了就给B少了的情况 )
▨ 同分布 - 多人贷款要求必须是样本规定的银行( 不同银行之间的数据不同不能视为是合理误差 )
▨ 高斯分布 - 银行多给少给, 只要浮动不是太大或者极小情况下浮动较大都是正常情况
ps: 以上的关于 独立, 同分布以及高斯分布的说明都是假设, 因为实际上的数据模型是不会完完全全的符合上述的条件要求
但是理论上的是这样的基本嵌合, 因此最终结果来说是较为科学的推断
公式推导
step0
基础公式
step1
误差服从高斯分布
带入上式
step2
此时需要引入似然函数的概念
所谓似然函数
即为 - 以某参数跟数据组合后恰好是真实值 → 目标是求参数
运用在机器学习中就是 - 在不了解内部计算机制的情况下对已知的数据反馈的结果进行反推计算的机制( 简化为参数 )
数学计算中加法是比乘要有难度一些, 因此当累乘( 表示 i 从 1到 m 进行累乘 )出现的时候最好转换为累加问题 (
)
step3
于是转换成对数似然进行化简
简化上式后为
累乘问题转换为累加问题后
和
之间依旧是个乘的关系
是个常数项, 在
的过程中本质是 m 个
的累加, 即可理解为
的
就直接省略掉, 把 分母取出来并拆分, 即为
在此简化后的式子为
step4
这里再说明一个极大自然估计, 极大自然估计是在自然估计中越大越好, 极大则为最好的估计值
因此这里计算极大值
前半段 -----
这一段的计算本质依旧是个常数, 因此不存在什么最大最小的说法, 同时这也是一个确定了的正数
后半段 -----
也可以确定是个正数 (
以及
一定是正数)
为了保证结果最大, 因此需要让后半段越小越好, 去除掉 后 得到最小二乘法既 - 目标函数
setp5
得到最小二乘法的式子之后, 可对目标函数进一步的化简
为了获取最小值可以进行求偏导, 求得导数为 0 的那个点就是最小值点
得出偏导公式后, 计算偏导等于 0 的点
计算
换位后乘上逆得到
X , y 都是确定的数据, 因此
也是可求的了
ps:
凸优化: 通常来说我们认为我们要处理的问题都是 这样子的形状, 因此求最大值都转换为了求最小值的问题
某些情况下也不一定是可求解的, 而线性回归依旧是一种尝试方法, 而不是求解方法
线性回归是提供一种较为大的可能性去求得最接近最优解的尝试算法
评估方法
最常用的评估项
, 取值越接近 1 被视为越好
梯度下降
▒ 引入 - 当我们得到一个目标函数之后, 如何进行求解? 直接求解( 并不一定可解, 线性回归可以被当做是一个特例 )?
▒ 常规套路 - 机器学习的套路就是我给机器一堆数据, 然后告诉它什么样子的学习方式是对的( 目标函数 ), 然后让它朝着这个方向去做
▒ 如何优化 - 一口吃不成胖子, 通过一次次的迭代慢慢优化
示例
▒ 目标函数
为目标函数,
为权重参数
▒ 寻找极值
计算寻找 "山谷最低点" 即什么样子的参数可以使目标函数达到极值点
▒ 迭代过程
"下山" 分几步走? ( 更新数据 )
▨ 找到当前最合适的方向
▨ 走那么一小步 ( 走快了会"跌倒" )
▨ 按照方向和步伐去更新参数
▒ 计算方式选择
▨ 批量梯度下降 - GD
容易得到最优解 (准确性可以得到保障) , 但是每次考虑所有样本, 速度很慢
▨ 随机梯度下降 - SGD
每次找一个样本, 迭代速度快, 但不一定每次都是朝着收敛的方向
▨ 小批量梯度下降 - minibatch
每次更新选择一小部分数据来算, 较为实用, 以及常用
▒ 学习率 - 步长
▨ 学习率对结果会产生巨大的影响, 一般设定较小更为精准
▨ 选择从小的时候进行开始 (目前来看从 0.01 开始就就可以) , 如果结果不满意则需要调整更小
▨ 批处理数量, 32, 64, 128 都可以, 要根据内存和效率另做考虑 ( 基本上64的就够了 )
逻辑回归
▒ 目的
分类还是回归? - 虽然名字带有回归, 但是其实是做的是分类任务并非回归到一个定值上
逻辑回归是个很经典很强大的二分类算法
▒ 机器学习的算法选择
先逻辑回归再用复杂的, 能简单的还是用简单的, 逻辑回归的原理和实现都是较为简单
在实际使用中会优先选择使用逻辑回归, 在进行其他的进行与逻辑回归的比较看是否可替换
▒ 逻辑回归的决策边界 - 可以是非线性的 (高阶)
Sigmoid 函数
▨ 公式 -
这里的 -z 就是你传入的参数, 比如线性回归的预测值
▨ 值域 - [0,1]
▨ 注释
将任意的输入的映射到 [0,1] 的区间
在线性回归中可以得到一个预测值, 再将该值映射到 Sigmoid 函数中
这样就完成了由值到概率的转换, 也就是分类任务
示例
▒ 公式整合
▨ 预测函数
其中
也就是线性回归的结果值作为这里的输入值
▨ 分类任务
这里假设就是两种类别, 分别 y=1 或者 y=0
为了保证概率的统一, 这里的 y=0 + y=1 的概率应该为 1
整合后
▨ 注释
▒ 求解
▨ 似然函数
▨ 对数函数
▨ 求最小值
此时如果直接应用梯度上升求的是最大值
引入
转换为梯度下降任务
▨ 求导
i 表示第几个样本, j 表示此样本的第几个特征
▨ 参数更新
α 是学习率 ( 0.01 的那个) ,
- 是转变为 最小值
是小批量下降的计算方式选择
这样 每次 每次都会去减一点一点的改变朝着正确的方向去前进
▨ 多分类的 softmax
▨ 总结
逻辑回归是个用途非常广泛而且很方便使用的方式, 可以说是非常好用的王道