LR与LR?
逻辑回归与线性回归
逻辑回归 | 线性回归 | |
---|---|---|
目标函数 | $\prod_{i=1}^N[\pi(x_i)^{y_i}][(1-\pi(x_i))^{(1-y_i)}] $ | \(\frac{1}{2}\sum_{i=1}^N(\hat{y_i}-y_i)^2\) |
输出 | 离散值(分类) | 连续值(回归) |
求解 | 对似然函数求导,交叉熵 | 最小均方差求导 |
联系:
输出是从连续值到离散值的映射
\(\pi(x)=p(y=1|x)=\frac{exp(wx)}{1+exp(wx)}=\frac{1}{1+exp(-wx)}\),sigmoid激活函数将输出的连续值变成了离散值,在没有sigmoid函数时,输出就是\(wx\), 和回归的输出一样。
求解时都可以使用梯度下降
逻辑回归
1.建立目标函数
设 \(P(y=1|x) = \pi(x), P(y=0|x) = 1-\pi(x)\)
似然函数为:
\]
对数似然函数:
L(w) &= \sum y_ilog(\pi(x_i))+(1-y_i)log(1-\pi(x_i)) \\
&= \sum y_ilog(\pi(x_i))+log(1-\pi(x_i))-y_ilog(1-\pi(x_i)) \\
&= \sum y_i(log\frac{\pi(x_i)}{1-\pi(x_i)})+log(1-\pi(x_i)) \\
&= \sum y_i(wx_i)-log(1+exp(wx_i))
\end{aligned}
\]
2. 梯度求解
\nabla L(w) &= \sum y_ix_i - \frac{x_iexp(wx_i)}{1+exp(wx_i)}
\end{aligned}
\]
求极大值,用梯度上升:
\]
3. 实现
"""
只写了核心部分
"""
def fit(x,y,n_iter):
cal_gradient(x,y,alpha,n_iter)
def cal_grdient(x,y,alpha,n_iter):
"""sgd
"""
w = np.ones(len(x))
for i in range(n_iter):
for xi,yi in zip(x,y):
grdient = (xi*yi-xi*(np.exp(w*xi)/(1+np.exp(w*x_i))))
w = w + alpha*gradient
return w
def loss(y,y_hat):
pass
def predict(x):
y_hat = w*x
线性回归
1. 建立目标函数
\]
2. 求解
\nabla J(w) &= \sum (\hat y_i - y_i) \frac{\partial\hat y}{\partial w} \\
&= \sum (\hat y_i - y)x_i
\end{aligned}
\]
求极小值,使用梯度下降:
\]
3. 实现
和逻辑回归比,只改变了求梯度方法
"""
只写了核心部分
"""
def fit(x,y,n_iter):
cal_gradient(x,y,alpha,n_iter)
def cal_grdient(x,y,alpha,n_iter):
"""sgd
"""
w = np.ones(len(x))
for i in range(n_iter):
for xi,yi in zip(x,y):
grdient = xi*(w*xi-yi)
w = w + alpha*gradient
return w
def loss(y,y_hat):
pass
def predict(x):
y_hat = w*x
逻辑回归与交叉熵
熵:
信息熵:衡量信息量大小
\[H(x) = -\sum^n_{i=1}p(x_i)log(p(x_i))
\]为什么取负号?
概率值越大,信息量越小(倾向于确定事件)
相对熵(KL散度):衡量两个概率分布间差异
\[D_{KL}(p||q) =\sum^n_{i=1}p(x_i)log(\frac{p(x_i)}{q(x_i)})
\]KL散度越小,表示\(p(x)\)与\(q(x)\)的分布更加接近
交叉熵
\[H(p,q) = -\sum^n_{i=1}p(x_i)log(q(x_i))
\]为什么使用交叉熵作为损失函数?
KL散度衡量真实分布与预测之间的差异,需要最小化KL散度。
KL = 交叉熵 - 信息熵
,给定原样本分布p
时,信息熵为常量,所以最小化交叉熵即为最小化KL散度。
对 0-1 分布,假设预测概率为p,交叉熵为:
\]
而逻辑回归似然函数为
\]
极大化似然函数相当于极小化交叉熵。
references:
机器学习实战
统计机器学习
https://blog.csdn.net/b1055077005/article/details/100152102
LR与LR?的更多相关文章
- LL LR SLR LALR 傻傻分不清
[转] 一:LR(0),SLR(1),规范LR(1),LALR(1)的关系 首先LL(1)分析法是自上而下的分析法.LR(0),LR(1),SLR(1),LALR(1)是自下而上的分析法. ...
- 逻辑回归LR
逻辑回归算法相信很多人都很熟悉,也算是我比较熟悉的算法之一了,毕业论文当时的项目就是用的这个算法.这个算法可能不想随机森林.SVM.神经网络.GBDT等分类算法那么复杂那么高深的样子,可是绝对不能小看 ...
- 编译系统中的LR与LL理解
编译原理:LL(1),LR(0),SLR(1),LALR(1),LR(1)对比 LL(1)定义:一个文法G是LL(1)的,当且仅当对于G的每一个非终结符A的任何两个不同产生式 A→α|β,下面的条件成 ...
- lr各种问题以及解决办法
LR 脚本为空的解决方法: 1.去掉ie设置中的第三方支持取消掉 2.在系统属性-高级-性能-数据执行保护中,添加loadrunner安装目录中的vugen.exe文件 遇到flight界面为空的解决 ...
- 软件测试面试(2)LR篇
一:LoadRunner常见问题整理 1.LR 脚本为空的解决方法: 1.去掉ie设置中的第三方支持取消掉 2.在系统属性-高级-性能-数据执行保护中,添加loadrunner安装目录中的vugen. ...
- LR 常见问题收集及总结
一:LoadRunner常见问题整理 1.LR 脚本为空的解决方法: 1.去掉ie设置中的第三方支持取消掉 2.在系统属性-高级-性能-数据执行保护中,添加loadrunner安装目录中的vugen. ...
- (转)深入理解SP、LR和PC
网址:http://blog.csdn.net/zhou1232006/article/details/6149548 深入理解ARM的这三个寄存器,对编程以及操作系统的移植都有很大的裨益. 1.堆栈 ...
- GBDT与LR融合提升广告点击率预估模型
1GBDT和LR融合 LR模型是线性的,处理能力有限,所以要想处理大规模问题,需要大量人力进行特征工程,组合相似的特征,例如user和Ad维度的特征进行组合. GDBT天然适合做特 ...
- LR测试
LoadRunner种预测系统行性能负载测试工具通模拟千万用户实施并发负载及实性能监测式确认查找问题LoadRunner能够整企业架构进行测试通使用 LoadRunner企业能限度缩短测试间优化性能加 ...
随机推荐
- PHP cal_to_jd() 函数
------------恢复内容开始------------ 实例 把 2007 年 6 月 20 日(格利高里历法)转换为儒略日计数: <?php$d=cal_to_jd(CAL_GREGOR ...
- PHP connection_aborted() 函数
实例 创建一个函数(check_abort()),在客户机终止脚本时写入一条日志消息: <?phpfunction check_abort(){if (connection_aborted()) ...
- PHP str_shuffle() 函数
实例 随机地打乱字符串中的所有字符: <?php高佣联盟 www.cgewang.comecho str_shuffle("Hello World");?> 定义和用法 ...
- springboot2.1.x版本报错总结
我使用的是springboot 2.1.7.RELEASE springcloud Greenwich.SR2 boot和cloud对应的版本号不能搞混,对应版本请参考https://sprin ...
- 死磕HashMap
前言 HashMap是Java中最常用的集合类框架,也是Java语言中非常典型的数据结构,同时也是我们需要掌握的数据结构,更重要的是进大厂面试必问之一. 数组特点 存储区间是连续,且占用内存严重,空间 ...
- 简单python爬虫编写,Python采集妹子图!
疫情期间在家闲来无事,每天打游戏荒废了一段时间.我觉得自己不能在这么颓废下去,就立马起身写了一点python代码(本人只是python新手). 很多人学习python,不知道从何学起.很多人学习pyt ...
- 一文搞定Python正则表达式
本文对正则表达式和 Python 中的 re 模块进行详细讲解 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例的人,却不知 ...
- Vue中v-model指令的常用修饰符
v-model指令有三个可以选用的修饰符:.lazy..number以及.trim.vue官方对此的描述为: .number-输入字符串转为有效的数字 .lazy-取代input监听change事件 ...
- Win10系统Jmeter+maven+Jenkins接口自动化环境搭建(一)
Jmeter+maven+Jenkins实现接口自动化,需要使用idea或eclipse配置maven项目,这里我使用的是idea.具体步骤如下: 1.安装jmeter+jdk jmeter安装之前需 ...
- C#设计模式之16-迭代器模式
迭代器模式(Iterator Pattern) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/417 访问. 迭代器模式 ...