文档章节

史上最直白的logistic regression教程 之 一

brian_2017
 brian_2017
发布于 2017/01/17 09:50
字数 1446
阅读 7
收藏 0
本系列前四篇是随手涂鸦,只为讲清问题,有口语化,且有少数符号误写,以及重复絮叨,且不打算修改:) 第5篇提供了一个严谨的学术语言的完整pdf文档,敬请下载!

Logistic Regession是什么

Logistic Regression是线性回归,但最终是用作分类器:它从样本集中学习拟合参数,将目标值拟合到[0,1]之间,然后对目标值进行离散化,实现分类。

为什么叫Logistic呢?因为它使用了Logisitic函数,形如:

f(z)=ezez+1=11+ez

这个函数有一些很有趣的性质,后面会谈到。

Logistic regression有一定的复杂度。对新人来说,最好有一个完整的推导指南,然后反复推导N遍(N>=5),直至能独立推导,再用python或者java实现这个推导,然后用这个实现解决一个实际应用,这样差不多算是掌握Logistic regression了。上述过程缺一不可,而且是成本最小的学习方案。

Logistic regression很重要,据说google的Ads广告使用的预测算法就是一个大Logistic regression模型。

Logistic regression涉及机器学习的多个重要概念,样本集,特征,向量,损失函数,最优化方法,梯度下降。如果对logistic regression能做到庖丁屠牛的程度,对未来进行模式识别和机器学习有事半功倍的收益。

我们现从一个最简单的问题开始,然后逐步增加功能,最终实现logistic regression。

先从一个最简单的问题开始

假如有一组样本,形如

{x1,y1},{x2,y2},...,{xi,yi},...{xn,yn}[1]

xi 的值决定 yi 的值,也就是说 xi 是自变量, yi 是因变量,每个 xi 对应一个 yi 。从脚标可以看出,这组样本一共有 n 个。

xi 是一个向量,也就是说, xi 里有多个元素,也就是可以表示为

xi=[xi,1,xi,2,...,xi,j,...xi,k]T[2]
显然, k 表示 xi 的第 k 维。

实际上 xi 也可以写成
xi=[xi,1,xi,2,...,xi,j,...xi,k] ,如果这样的话,后面的 W 和公式 [6] 就要做一点改动。如果推导过程很熟悉,可以将 W , xi , X , yi Y 等根据需求随意改变,不作限定。

我们拟合 xi yi 的关系,有了拟合,就可以根据 xi 计算 yi 。最简单的拟合方式是线性拟合,也就是形如:

yi=w0+w1×xi,1+w2×xi,2+...+wk×xi,k[3]

w0 看起来不够和谐,跟其他元素不太一样,对 xi 做一点修改可以解决这个问题,将所有的 xi 重新表示成

xi=[1,xi,1,xi,2,...,xi,j,...,xi,k]T[4]

那么,我们就得到:
yi=w0×1+w1×xi,1+w2×xi,2+...+wk×xi,k[5]

这个公式的好处是,我们可以用向量方式表示了:
yi=Wxi[6]

也就是说,
W=[w0,w1,...,wk]

注意,此时的 xi 不再是 k 维了,而是 k+1 维,同样 W 也是 k+1 维,以数学形式表示为 xiR(k+1)×1 WR1×(k+1) ,后面我们一直使用这种表示方式。

如果我们在公式 [1] 的样本集上做拟合,就要是公式 [6] 在公式 [1] 上误差最小。通常选择的误差形式是平方和误差,因为它求导方便,做梯度优化的时候计算便捷。误差形式如下

Loss=12i=1n(yiWxi)2[7]

公式 [7] 是二次方程,有最小值,当它取最小值的时候的 W 就是最优拟合参数。

求解优化问题

公式 [7] 的求解不难,它有精确解,但当样本量很大的时候,精确解的求解是有问题的,比如矩阵是奇异阵不能求逆。所以通常会使用梯度下降法求解。

梯度下降法的方式是,先随机给 W 赋值,然后沿着公式 [7] 一阶偏导的反方向计算下降量值,多次重复,最终会让公式 [7] 收敛到一个极小值。那么,这个更新公式就是:

W=W+W=WLossW[8]

公式 [8] 有些复杂,用更简单的方式,可以写成如下方式:
wi=wi+wi=wiLosswi[9]

现在,我们用最原始的方式求解 Losswj

Losswj=12[(y1(w0×1+w1× x1,1+...+wk×x1,k))2+(y2(w0×1+w1× x2,1+...+wk×x2,k))2+...+(yn(w0×1+w1× xn,1+...+wk×xn,k))2]/wi=[(y1(w0×1+w1× x1,1+...+wk×x1,k))×w1,j+(y2(w0×1+w1× x2,1+...+wk×x2,k))×w2,j+...+(yn(w0×1+w1× xn,1+...+wk×xn,k))×wn,j]=i=1n(yi(w0×1+w1×xi,1+...+wk×xi,k))×xi,j=i=1n(yi×xi,j)+i=1nWxixi,j[10]

注意我们要把公式 [10] 改写成矩阵形式,因为矩阵计算更有效率,方便实现。
yi 写成矩阵形式,令

Y=[y1,y2,...,yn][11]

xi 写成矩阵形式,令
X=11...1x1,1x2,1...xn,1x1,2x2,2...xn,2............x1,jx2,j...xn,j............x1,kx2,kxn,k[12]

显然, XRn×(k+1)
那么,公式 [10] 最后一个等式中的 ni=1(yi×xi,j) 就可以写成
i=1n(yi×xi,j)=Yx1,jx2,j...xn,j[13]

ni=1Wxixi,j 可以写成
i=1nWxixi,j=WXTx1,jx2,j...xn,j[14]

所以,公式 [10] 最终可以表示成
Losswj=(YWXT)x1,jx2,j...xn,j[15]

注意,现在有一个很有意思的地方, (YWXT) 是拟合误差,在更新 W 的过程中,每轮会进行一次计算。
根据公式 [15] ,对 W 而言,我们有了一个更为整体的计算方式:
W=(YWXT)X[16]

所以,以梯度下降法计算最优 W 的更新公式是:
W=W+(YWXT)X[17]

下一篇我们用python实现公式[17]

© 著作权归作者所有

brian_2017
粉丝 3
博文 61
码字总数 145216
作品 0
私信 提问
机器学习从零开始系列连载(1)——基本概念

作者:张 磊 编辑:赵一帆 本周内容: 1. 一些基本概念 1.1 生成式模型与判别式模型 1.2 参数学习与非参学习 1.2.1 参数学习 1.2.2 非参学习 1.3 监督学习、非监督学习与强化学习 1.3.1 监督...

szm21c11u68n04vdclmj
2017/11/21
0
0
logistic regression识别真假币

介绍 本篇实现了使用 回归进行真假币的判断,有关 的详细讲解见这里。本篇使用随机梯度下降算法 个样本, 每一个样本有 个特征。 为 表示是真钞,为 则为假钞。 本篇使用 个样本作为测试集,...

robin_Xu_shuai
2017/10/31
0
0
TensorFlow入门——Softmax Regression

Softmax Regression是Logistic回归在多分类上的推广,对于Logistic回归以及Softmax Regression的详细介绍可以参见: 简单易学的机器学习算法——Logistic回归 利用Theano理解深度学习——Log...

google19890102
2018/04/18
0
0
Orange脚本调用Data Mining Library

原文(英):http://docs.orange.biolab.si/3/data-mining-library/ Orange Data Mining Library 教程 这是一个有好的关于 Orange 脚本使用的教程, 而Orange是一个基于Python 3的数据挖掘支持...

openthings
2016/01/02
221
0
Machine Learning-week 3

Question 1 Suppose that you have trained a logistic regression classifier, and it outputs on a new examplex a prediction hθ(x) = 0.7. This means (check all that apply): Our est......

盟丫头萌檬懵
2017/04/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
783
11
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
15
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部