逻辑回归与线性回归

逻辑回归 线性回归
目标函数 $\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)\)

似然函数为:

\[\prod_{i=1}^N[\pi(x_i)^{y_i}][(1-\pi(x_i))^{(1-y_i)}]
\]

对数似然函数:

\[\begin{aligned}
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. 梯度求解

\[\begin{aligned}
\nabla L(w) &= \sum y_ix_i - \frac{x_iexp(wx_i)}{1+exp(wx_i)}
\end{aligned}
\]

求极大值,用梯度上升:

\[w = w + \alpha \nabla L(w)
\]

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. 建立目标函数

\[J(w) = \frac{1}{2}\sum(\hat y - y)^2
\]

2. 求解

\[\begin{aligned}
\nabla J(w) &= \sum (\hat y_i - y_i) \frac{\partial\hat y}{\partial w} \\
&= \sum (\hat y_i - y)x_i
\end{aligned}
\]

求极小值,使用梯度下降:

\[w = w - \alpha \nabla J(w)
\]

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,交叉熵为:

\[-\sum ylog(p)+(1-y)log(1-p)
\]

而逻辑回归似然函数为

\[L(w) = \sum [y_ilog(\pi (x_i))+(1-y_i)log(1-\pi(x_i))]
\]

极大化似然函数相当于极小化交叉熵。

references:

机器学习实战

统计机器学习

https://blog.csdn.net/b1055077005/article/details/100152102

LR与LR?的更多相关文章

  1. LL LR SLR LALR 傻傻分不清

    [转] 一:LR(0),SLR(1),规范LR(1),LALR(1)的关系     首先LL(1)分析法是自上而下的分析法.LR(0),LR(1),SLR(1),LALR(1)是自下而上的分析法.   ...

  2. 逻辑回归LR

    逻辑回归算法相信很多人都很熟悉,也算是我比较熟悉的算法之一了,毕业论文当时的项目就是用的这个算法.这个算法可能不想随机森林.SVM.神经网络.GBDT等分类算法那么复杂那么高深的样子,可是绝对不能小看 ...

  3. 编译系统中的LR与LL理解

    编译原理:LL(1),LR(0),SLR(1),LALR(1),LR(1)对比 LL(1)定义:一个文法G是LL(1)的,当且仅当对于G的每一个非终结符A的任何两个不同产生式 A→α|β,下面的条件成 ...

  4. lr各种问题以及解决办法

    LR 脚本为空的解决方法: 1.去掉ie设置中的第三方支持取消掉 2.在系统属性-高级-性能-数据执行保护中,添加loadrunner安装目录中的vugen.exe文件 遇到flight界面为空的解决 ...

  5. 软件测试面试(2)LR篇

    一:LoadRunner常见问题整理 1.LR 脚本为空的解决方法: 1.去掉ie设置中的第三方支持取消掉 2.在系统属性-高级-性能-数据执行保护中,添加loadrunner安装目录中的vugen. ...

  6. LR 常见问题收集及总结

    一:LoadRunner常见问题整理 1.LR 脚本为空的解决方法: 1.去掉ie设置中的第三方支持取消掉 2.在系统属性-高级-性能-数据执行保护中,添加loadrunner安装目录中的vugen. ...

  7. (转)深入理解SP、LR和PC

    网址:http://blog.csdn.net/zhou1232006/article/details/6149548 深入理解ARM的这三个寄存器,对编程以及操作系统的移植都有很大的裨益. 1.堆栈 ...

  8. GBDT与LR融合提升广告点击率预估模型

    1GBDT和LR融合      LR模型是线性的,处理能力有限,所以要想处理大规模问题,需要大量人力进行特征工程,组合相似的特征,例如user和Ad维度的特征进行组合.      GDBT天然适合做特 ...

  9. LR测试

    LoadRunner种预测系统行性能负载测试工具通模拟千万用户实施并发负载及实性能监测式确认查找问题LoadRunner能够整企业架构进行测试通使用 LoadRunner企业能限度缩短测试间优化性能加 ...

随机推荐

  1. PHP array_values() 函数

    实例 返回数组中所有的值(不保留键名): <?php$a=array("Name"=>"Peter","Age"=>&qu ...

  2. luogu P3180 [HAOI2016]地图 仙人掌 线段树合并 圆方树

    LINK:地图 考虑如果是一棵树怎么做 权值可以离散 那么可以直接利用dsu on tree+树状数组解决. 当然 也可以使用莫队 不过前缀和比较难以维护 外面套个树状数组又带了个log 套分块然后就 ...

  3. 一本通 高手训练 1788 爬山 dp 斜率 凸包

    LINK:爬山 很早以前看的题目 发现自己想的完全不对 这道题还是比较有价值的. 先不考虑走的路线问题 考虑某个点能看到的最高的山. 分左边和右边来考虑 考虑左边 利用单调栈存长度单调递减的山 不能直 ...

  4. Latex—参考文献

    在写文章的最后最让我头疼的就是参考文献的问题了.网上的资料也有很多,这里整合了很多资料得出了一个用bib文件的方法. 1.  显示确定参考文献(一句没什么用的废话). 2.  利用谷歌学术(镜像),如 ...

  5. 【NOI2017】游戏 题解(2-SAT+缩点)

    题目链接 题目大意:有四种场地$a,b,c,x$和三种赛车$A,B,C$,$a$不能跑$A$,$b$不能跑$B$,$c$不能跑$C$,$x$都可以跑.给定$n$个场地和$m$个四元组$(i,h_i,j ...

  6. Nginx配置SSL证书,提高网络安全性

    首先区别Http与Https HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高 ...

  7. 什么是XML? 什么是DTD?

    XML XML称为Extensible Markup Language,意思是可扩展的标记语言.XML语法上和HTML比较相似,但HTML中的元素是固定的,而XML的标签是可以由用户自定义的. W3C ...

  8. Java—匿名对象/内部类/访问修饰符/代码块

    匿名对象 匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量. //创建一个普通对象 Person p = new Person(); //创建一个匿名对象 new Pers ...

  9. Linux学习日志第一天——基础命令①

    文章目录 前言 命令的作用及基本构成 关于路径 命令 ls (list) 命令 pwd (print working directory) 命令cd (change directory) 命令 mkd ...

  10. Android 开发学习进程0.12 自定义view activity的属性

    设置类似钉钉或tel的圆形用户名首字母头像 设置有两种方法,一是使用已有的库或自定义的view组件,但如果确定只是文字头像,也可使用textview的backgrou属性,调整资源文件使textvie ...