这篇笔记整理下逻辑回归(logisitic regression)的相关知识点。 逻辑回归,是用来处理二分类问题的一种数学模型。逻辑回归的输出值为离散值0或者1。 逻辑回归与线性回归的相似之处,是两者都是寻找合适的参数构成的直线(下图中的红线)。不同之处在于,逻辑回归中,该直线作为边界将数据集分为两类,直线上方为1,下方为0(或者相反)。 线性回归中,需要使得数据集尽量靠近该直线。 ? 与线性回归相比,逻辑回归其需要将线性回归产生的概率预测值z转换为0或者1。z (z=theta*x)需要通过Sigmoid函数映射为0和1。 逻辑回归的数学模型为, ? 其代价函数定义为, ? 需要找到一组theta值,使得J(theta)取极小值。使用梯度下降法,对应的计算过程为, ? 对于更复杂的曲线,可以采用正则化逻辑回归的方案。
逻辑回归模型 模型的假设:数据服从伯努利分布。 \boldsymbol{x}_{n}\right) \\ &=\sum_{n=1}^{N}\left(y_{n}-p\right) \boldsymbol{x}_{n} \end{aligned} 逻辑回归的决策边界 逻辑回归的决策边界如下: \frac{1}{1+e^{-\boldsymbol{w}^{T} \boldsymbol{x}}}=0.5 简一下上面的曲线公式,得到: e^{-\boldsymbol 代码 逻辑回归+L2范数正则化代码 class LogisticRegression(): """ A simple logistic regression model with L2 regularization 对于逻辑回归,这里所说的对数损失和极大似然是相同的。
参考链接: 了解逻辑回归 Python实现 逻辑回归定义 logistic回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域。 逻辑回归为发生概率除以没有发生概率再取对数,且因变量为二分类的分类变量或某事件的发生率。 例如,探讨引发疾病的危险因素,并根据危险因素预测疾病发生的概率等。 ***摘自百度百科 逻辑回归的使用 逻辑回归属于回归算法,但个人感觉这是一个分类的算法,可以是二分类,或者多分类,多分类不太好解释,而且如果自变量中含有分类变量,需要我们转化成虚拟变量(也叫哑元变量 逻辑回归的实现 下面是一个我在网上查看到的二分类逻辑回归案例,数据是自己生成的,稍微改了几处地方,使用python3,或者anaconda。 此图代表了逻辑回归的生长曲线,趋势基本是一致的; 机器学习分类算法有很多,回归模型我目前常用的就是多元回归和逻辑回归了,都是监督学习类别。
使用Numpy实现逻辑回归 sigmoid 函数 g(z)=\frac{1}{(1+e^{−z} )} # sigmoid 函数 def sigmod(z): return 1/(1+np.exp ,bias,dw,db,rate): weights=weights-rate*dw bias=bias-rate*db return weights,bias 实现逻辑回归 逻辑回归公式 h_θ (x)=\frac{1}{(1+e^{−θ^T X} )} #逻辑回归 def logistic(X,y,rate,iterations): count,col=X.shape y = (X[:, 0] > X[:, 1]).astype(int) # 添加偏置项 X_with_bias = np.c_[np.ones((X.shape[0], 1)), X] # 训练逻辑回归模型 y = (X[:, 0] > X[:, 1]).astype(int) # 添加偏置项 X_with_bias = np.c_[np.ones((X.shape[0], 1)), X] # 训练逻辑回归模型
1 逻辑回归的介绍和应用 1.1 逻辑回归的介绍 逻辑回归(Logistic regression,简称LR)虽然其中带有"回归"两个字,但逻辑回归其实是一个分类模型,并且广泛应用于各个领域之中。 逻辑回归模型的优劣势: 优点:实现简单,易于理解和实现;计算代价不高,速度很快,存储资源低; 缺点:容易欠拟合,分类精度可能不高 1.2 逻辑回归的应用 逻辑回归模型广泛用于各个领域,包括机器学习,大多数医学领域和社会科学 条件随机字段是逻辑回归到顺序数据的扩展,用于自然语言处理。 逻辑回归模型现在同样是很多分类算法的基础组件,比如 分类任务中基于GBDT算法+LR逻辑回归实现的信用卡交易反欺诈,CTR(点击通过率)预估等,其好处在于输出值自然地落在0到1之间,并且有概率意义。 很多时候我们也会拿逻辑回归模型去做一些任务尝试的基线(基础水平)。
2 逻辑回归 2.1 从线性回归到逻辑回归 分类问题可以通过 线性回归+阈值 去解决吗? image 分类问题 在有噪声点的情况下,阈值偏移大,健壮性不够 image 2.2 逻辑回归决策边界 在逻辑回归(Logistic Regression)里,通常我们并不拟合样本分布,而是确定决策边界 image 要点总结 逻辑回归 线性回归+阈值 解决分类问题鲁棒性不OK Sigmoid函数与决策边界 Sigmoid函数:压缩至0-1之间 根据阈值,产生对应的决策边界 损失函数 最大似然到对数损失 梯度下降 沿着损失函数梯度方向逐步修正参数 二分类到多分类 one vs one one vs rest 3. 工程应用经验 3.1 逻辑回归 VS 其他模型 LR 弱于 SVM/GBDT/RandomForest... ?
Sigmoid 函数 回归 概念 假设现在有一些数据点,我们用一条直线对这些点进行拟合(这条直线称为最佳拟合直线),这个拟合的过程就叫做回归。 因此,为了实现 Logistic 回归分类器,我们可以在每个特征上都乘以一个回归系数(如下公式所示),然后把所有结果值相加,将这个总和代入 Sigmoid 函数中,进而得到一个范围在 0~1 之间的数值 在逻辑回归中, 损失函数和似然函数无非就是互为正负关系。 只需要在迭代公式中的加法变成减法。因此,对应的公式可以写成 ? 局部最优现象 (Local Optima) ? Logistic 回归 工作原理 每个回归系数初始化为 1 重复 R 次: 计算整个数据集的梯度 使用 步长 x 梯度 更新回归系数的向量 返回回归系数 Logistic 回归 开发流程 收集数据: 采用任意方法收集数据 使用算法: 首先,我们需要输入一些数据,并将其转换成对应的结构化数值;接着,基于训练好的回归系数就可以对这些数值进行简单的回归计算,判定它们属于哪个类别;在这之后,我们就可以在输出的类别上做一些其他分析工作
逻辑曲线在z=0时,十分敏感,在z>>0或z 逻辑回归其实是在线性回归的基础上,套用了一个逻辑函数。上图的g(z)就是这个逻辑函数(或称为Sigmoid函数)。 因此对于输入点x,分类结果为类别1和类别0的概率分别为如下公式**(3)**: 对于训练数据集,特征数据x=和对应的分类数据y=。构建逻辑回归模型f,最典型的构建方法便是应用极大似然估计。 2 多元逻辑回归 二元逻辑回归可以一般化为多元逻辑回归用来训练和预测多分类问题。对于多分类问题,算法将会训练出一个多元逻辑回归模型, 它包含K-1个二元回归模型。 3 逻辑回归的优缺点 优点:计算代价低,速度快,容易理解和实现。 缺点:容易欠拟合,分类和回归的精度不高。 4 实例 小提示:代码块部分可以左右滑动查看噢 下面的例子展示了如何使用逻辑回归。 计算分为两种情况,即二元逻辑回归的情况和多元逻辑回归的情况。虽然多元逻辑回归也可以实现二元分类,但是为了效率,compute方法仍然实现了一个二元逻辑回归的版本。
在读研期间,一直在帮导师做技术开发,甚至偶尔做一做美工(帮导师和实验室博士生画个图啥的),算法还是较少接触的,其实,我发现,算法还是蛮好玩的,昨晚看了B站一个美女算法工程师讲了线性回归和逻辑回归两种算法 3)总结(3部) 1.构造预测函数(也就是构造那个拟合的直线,这里是多维线性回归) 2.构造损失函数 3.最小化损失函数 ? 概念3:逻辑回归详解。 细说:逻辑回归是在线性回归的基础上嵌套了一个sigmoid函数,目的是将线性回归函数的结果映射到sigmoid函数中(如下图)。 逻辑回归的出发点就是从这来的。 ? 3)J(θ)函数的值越小表示预测函数越准确,所以这一步是找出最小的J(θ)。
仍然是 动手学尝试学习系列的笔记,原文见:多类逻辑回归 — 从0开始 。 , b] 18 19 #附加梯度,方便后面用梯度下降法计算 20 for param in params: 21 param.attach_grad() 这与之前的 机器学习笔记(1):线性回归 ]); print(x,x.mean(),(1+2+3+4+5+6)/6.0) 输出如下: [ 1. 2. 3. 4. 5. 6.] 如上图,假如有3个指标,预测对了2个,第三行,一个都没预测对,那么准确率为2/3,即0.6666左右 五、训练 1 #学习率 2 learning_rate = .1 3 4 #开始训练 5 epoch, train_loss / len(train_data), train_acc / len(train_data), test_acc)) 训练过程与之前的机器学习笔记(1):线性回归
逻辑回归(Logistic Regression)是一种广义的线性回归分析模型,常用于数据挖掘、疾病自动诊断、经济预测等领域。它根据给定的自变量数据集来估计事件的发生概率。 它是基于自我引用和递归定义的思想,将逻辑和计算理论相结合,形成了一种强有力的推理工具。例如,下图为逻辑回归曲线图,显示了考试通过概率与学习时间的关系。 通过逻辑回归分析,可以得到自变量的权重,从而可以大致了解到底哪些因素是胃癌的危险因素。同时根据该权值可以根据危险因素预测一个人患癌症的可能性。 需要注意的是,逻辑递归的推理过程可能面临一些挑战,如悖论和无限循环等。因此,在使用逻辑递归进行推理时,需要注意对递归定义和推理规则的合理限制,以避免逻辑矛盾和无穷循环的问题。 逻辑递归在逻辑学和计算理论中有广泛的应用。它被用于形式系统的研究,证明理论中的定理和推理规则,以及计算机科学中的递归算法和程序设计等领域。
如果只能学习一个算法的话,我选择逻辑回归。 讲个笑话,逻辑回归既不讲逻辑,也不是回归。 本文目的是以大白话的方式介绍逻辑回归。我们先简要以公式的方式回顾什么是逻辑回归,如何训练。 然后,我们用大白话的方式重新解释一次逻辑回归。最后,我们介绍逻辑回归和大脑的关系。是的,两者有关系。 逻辑回归的数学描述 什么是逻辑回归 逻辑回归,是个二分类算法,即给定一个输入,输出true/false判断是否属于某个类别,同时还能给出属于这个类别的概率。 大体可以回归到David Cox在1958年首先提出逻辑回归算法的思路上来。 逻辑回归大白话 前面讲了一大堆公式。这里我们对逻辑回归进行大白话解释,力求让外行小白也能听懂。 假设我们是一家银行,手里有很多人的收入信息,同时手里还有这些人是否按时还房贷的信息。
问题 你想要运用逻辑回归分析。 方案 逻辑回归典型使用于当存在一个离散的响应变量(比如赢和输)和一个与响应变量(也称为结果变量、因变量)的概率或几率相关联的连续预测变量的情况。 x可以预测y一样,只不过是两个连续变量,而逻辑回归中被预测的是离散变量),逻辑回归可能适用。 # 执行逻辑回归 —— 下面两种方式等效 # logit是二项分布家族的默认模型 logr_vm <- glm(vs ~ mpg, data=dat, family=binomial) logr_vm # 执行逻辑回归 logr_va <- glm(vs ~ am, data=dat, family=binomial) # 打印模型信息 logr_va #> #> Call: glm(formula # 执行逻辑回归,下面两种方式等效 logr_vmai <- glm(vs ~ mpg * am, data=dat, family=binomial) logr_vmai <- glm(vs ~ mpg
前言 线性回归模型可以用于回归模型的学习,当我们需要用线性模型实现分类问题比如二分类问题时,需要用一个单调可微函数将线性回归的连续结果映射到分类回归真实标记的离散值上。 但是线性回归模型产生的预测值是实值z,因此我们需要将实值 ? 转化为 的离散值,最理想的函数就是“单位阶跃函数”unit-step function: ? 即当预测值 ? 作为正例的相对可能性,对几率取对数则得到“对数几率”(log odds,也叫做logit) 由于“对数几率”的取值是实值,因此我们相当于用线性回归方法的预测结果去逼近真实标记的对数几率。 逻辑回归优点 直接对分类可能性建模,无需实现假设数据分布,这样就避免了假设分布不准确所带来的问题 不仅能够预测类别,而且可以得到不同分类的概率预测,对许多需利用概率辅助决策的任务很有用。
说到逻辑回归(Logistic Regression),其实他解决的并不是回归问题(Regression),而是分类问题(Classification)。 这时候我们就需要一个特殊的函数来近似的处理离散的分类问题,这就引入了我们著名的逻辑函数(Logistic Function),又称Sigmoid函数: S(t)=\frac{1}{1+e^{-\theta 决策边界(Decision Boundary) 使用了逻辑函数作为拟合函数后,我们就可以写出我们的预测函数了: h_\theta(x)=S(\theta^Tx) S函数里面的其实就是一个线性方程,很明显 没错,最终的表达式跟线性回归的计算方法几乎一模一样(注意少了一个分母上的m)!这就是Sigmoid函数的强大之处。 优化算法 对于逻辑回归算法,有一些高级的优化算法比如Conjugate gradient、BFGS、L-BFGS等,这些跑起来快,但是难学。。。这里就不提了。
在实际问题中,我们不仅需要得出具体的预测数值,我们还需要将数据的类别进行判断和分类。
# LogisticRegression定义 logistic回归,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域。 一般来说逻辑回归用来做分类任务,本文列举的是以线性的2分类为例, 除此之外还可以拓展到多更多参数实现非线性分类,以及多分类问题等。 red', marker='s') # 0类用蓝色标识 ax.scatter(xcord2, ycord2, s=30, c='blue') # 生成一个ndarray数组范围从-3到 3,步长为0.1 x = np.arange(-3, 3, 0.1) ''' 这里设置了sigmoid函数的取值为1/2,也就是说取阈值为0.5来划分最后预测的结果 根据 format(round(float(sigmoid(dataMat[i]*theta))*100,2))+"%") plotBestFIt(theta) # 运行结果 D:\Anaconda3\
在本章我们主要学习逻辑回归的应用场景了解逻辑回归的原理,掌握逻辑回归的损失函数和优化方案,最后,在介绍完分类评估指标后,我们应用逻辑回归模型实现 电信客户流失预测 案例。 1.逻辑回归的应用场景 逻辑回归(Logistic Regression)是机器学习中的 一种分类模型 ,逻辑回归是一种分类算法,虽然名字中带有回归。 逻辑回归就是解决二分类问题的利器 2.逻辑回归的原理 要想掌握逻辑回归,必须掌握两点: 逻辑回归中,其输入值是什么 如何判断逻辑回归的输出 2.1输入 逻辑回归的输入就是一个线性方程 3.损失以及优化 3.1损失 逻辑回归的损失,称之为 对数似然损失 ,公式如下: 分开类别: 其中y为真实值, 为预测值,怎么理解单个的式子呢? 4.小结 逻辑回归概念 解决的是一个二分类问题 逻辑回归的输入是线性回归的输出 逻辑回归的原理 输入:线性方程 激活函数:sigmoid函数,把线性方程的值域映射到[0,1],再设置一个阈值
https://blog.csdn.net/haluoluo211/article/details/78761582 逻辑回归模型所做的假设是: ? y=1,if P(y=1|x)>0.5 (实际应用时特定的情况可以选择不同阈值,如果对正例的判别准确性要求高,可以选择阈值大一些,对正例的召回要求高,则可以选择阈值小一些) 那么,给定一个逻辑回归模型 dtype={'A': np.float64, 'B': np.float64, 'C': np.int64}) # add bias w0 (添加逻辑回归的第一项即偏置 -0.017612 14.053064 0 1 1 -1.395634 4.662541 1 1 2 -0.752157 6.538620 0 1 3
这天聊Logistics回归。 Logistics回归是大多数初学者接触机器学习时,要学习的第一款分类学习算法。中文一般译作逻辑回归。 实话实说,这个名字很容易引起错乱。 有监督学习呢,又具体分几类问题,最最主要的有两类,一类叫回归问题,一类叫分类问题。 看到这里,看明白了吧? 回归问题和分类问题根本是两类问题。 总之,这个Logistics回归虽然叫逻辑回归,但既无逻辑,又非回归,有些中译取音译叫逻辑斯蒂回归,看了让人直挠头。 那我们就不由得想问了,为啥两样八字对不上的玩意非要凑到一起呢? 其实,Logistics回归作为分类问题的新手装,说也简单,结构就是线性回归套上Logistics函数,图像是这样: Logistics函数是非线性函数,图像呈S型,看着简单,里面大有文章。 这样做还有一个好处:线性回归好用呀,本身是一款成熟的机器学习模型,拟合数据的能力那称得上有口皆碑,和具有阶跃能力的Logistics回归强强联手,Logistics回归自然也就具备了拟合数据的能力,也就是学习能力