专栏首页算法channel机器学习逻辑回归:原理解析及代码实现

机器学习逻辑回归:原理解析及代码实现

前到现在为止,我们通过大约1周的时间初步对机器学习是怎么一回事算是有一些基本的理解了,从最基本的线性回归入手,讨论了如何在拿到一堆数据时,先进行数据预处理(暂时未详细阐述,会在以后某个时间段详细论述),然后再假设模型(model)为线性模型,再带入数据通过直接求解法和梯度下降法求解模型的各个特征的权重参数,最后用脊回归和套索回归优化了普通最小二乘法回归,对L1和L2正则化有了进一步地认识。我们的整体思路是从工程应用角度直接切入主题,务实,代码模拟实践。在这些基础上,接下来将讨论一些分类算法,其中最基本的逻辑回归是应用最广泛,也是最重要的算法之一。

01 逻辑回归是回归还是分类?

逻辑回归从字面上看是一个回归问题,很容易和回归分析联系到一起。这是字面意思给人的错觉,其实它不是回归问题!它是最典型的分类问题,经典的二分类,比如检查邮件是否是垃圾邮件,检查一个零件是否是合格件,判断一个西瓜是否成熟等等,这些日常生活中经常用于判断是非黑白的问题,都能用到这个经典的二分类之逻辑回归。

通常在我们拿到一个分类任务的时候,还是坚持那项基本原则:能用简单的分类模型就能得到一个很好的预测结果的,就坚决不用复杂的模型来做分类,这样简单的模型,不仅有利于对我们的模型求解,更有利于我们解释这个模型。

02 逻辑回归和回归没有一丁点关系?

逻辑回归和之前阐述的线性回归等回归任务还是有一定关系的,这种关系正是通过一种神奇的映射曲线做到的,比如它将做回归分析的模型的因变量的取值映射为概率值,我们都知道概率值的取值范围为0~1,所以通过设定一个0~1的阈值,小于这个阈值的就是A类,其他的都是非A类,这不就是二分类吗。

03 那条神奇的线

逻辑回归最神奇的那个映射函数长什么样子呢? 这个前人都给我们想好了,直接拿过来用就行,这就是站在巨人的肩上啊,感谢他们。

在Jupyter Notebook中绘制了这个函数: f(x) = 1/(1+np.exp(-x)),简称为Sigmoid函数,它的自变量取值范围为负无穷到正无穷,值域为0~1,其中f(0) = 0.5 。

通常在做二分类时,设定一个阈值 gamma,如果小于gamma,设为 1 类,否则为 0类,如下图所示:设定阈值为0.3,则小于0.3的都为 1 类,大于0.3的都为 0 类。

04 从线性回归模型到Sigmoid映射后的模型

线性回归模型的模型如下:

逻辑回归的模型定义(需要借助Sigmoid函数):

将上述线性回归的模型带入到g(x)中,得到最终的逻辑回归的模型:

为什么习惯在某个模型中都用h呢,因为hypothesis的首字符是h,我猜测是这样吧。

这就是从线性回归模型映射到最终的逻辑回归模型的预测表达式,我们的最终任务是二分类吧,假定上个表达式是等于类 1 的概率,自然等于类 0 的概率等于1减去等于类 1 的概率,如下所述:

这里有个小的trick,就是将上面两个式子整合为下面一个公式:

这就是终极的逻辑回归的模型了,一个公式搞定了两种情况。

05 逻辑回归模型的梯度下降推导

这部分与线性回归模型梯度下降,带入已有数据样本,然后求解模型的权重参数的解决思路是一致的,请参考推送消息: 最小二乘法原理(后):梯度下降求权重参数。仍然是先求出由所有样本组成的似然函数,转化为对数似然,转化为梯度下降,根据梯度下降的方向更新迭代权重参数,选取代价函数本次与上次的差小于某个阈值的迭代思路求解。

其中,似然函数为,m表示样本个数

对数似然如下:

然后,利用对数极大似然估计,即求上式的极大值,引入因子 -1/m,转化为求下式的极小值:

对上式求偏导后的结果如下,在此不一 一详细写出推导过程了,但是说明下式的参数含义,其中theta_j表示第i个样本的第j个特征的权重参数,注意如果有100个特征,自然地就有100个权重参数,等号左边是对theta_j求偏导的,因此这个式子相当于对某个样本的所有特征参数都适应于下面的公式。

06 逻辑回归的参数梯度下降的python实现

请见明天的推送,谢谢您的阅读!

让我们看一下远边的大海,和巍峨的高山,放松一下吧!

本文分享自微信公众号 - 算法channel(alg-channel),作者:alg-flody

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-11-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 回归分析简介

    在介绍机器学习中回归分析的基本概念,包括什么是回归分析,线性回归,别忘了还有非线性回归,OLS能很好地解决特征间无线性相关性的问题,但是对多重线性回归任务会失真...

    double
  • 普林斯顿博士:手写30个主流机器学习算法,全都开源了!

    NumPy 作为 Python 生态中最受欢迎的科学计算包,很多读者已经非常熟悉它了。它为 Python 提供高效率的多维数组计算,并提供了一系列高等数学函数,...

    double
  • 案例实战|泰坦尼克号船员获救预测(XGBoost提交结果)

    01 — 回顾 泰坦尼克号的案例系列已经推送了2个,分别解决了数据预处理:特征工程,数据清洗等,包括模型的BaseLine阶段的求解,关于这两篇文章,请参考: ...

    double
  • 【机器学习笔记】:从零开始学会逻辑回归(一)

    逻辑回归是一个非常经典,也是很常用的模型。之前和大家分享过它的重要性:5个原因告诉你:为什么在成为数据科学家之前,“逻辑回归”是第一个需要学习的

    用户2769421
  • 业界 | 数据科学家要先学逻辑回归?图样图森破!

    大数据文摘
  • 【机器学习笔记】:从零开始学会逻辑回归(一)

    逻辑回归是一个非常经典,也是很常用的模型。之前和大家分享过它的重要性:5个原因告诉你:为什么在成为数据科学家之前,“逻辑回归”是第一个需要学习的

    1480
  • 机器学习-线性回归(Linear Regression)介绍与python实现

    本文讨论了线性回归的基础知识及其在Python编程语言中的实现。线性回归是一种统计方法,用于建模具有给定自变量集的因变量之间的关系。注意:在本文中,为简单起见,...

    亚乐记
  • 【干货】机器学习中的五种回归模型及其优缺点

    线性和逻辑斯蒂(Logistic)回归通常是是机器学习学习者的入门算法,因为它们易于使用和可解释性。然而,尽管他们简单但也有一些缺点,在很多情况下它们并不是最佳...

    昱良
  • 白话机器学习算法 Part 1

    作为Flatiron School数据科学训练营(Data Science Bootcamp)的一名应届毕业生,我收到了大量关于如何在技术面试中取得好成绩的建议...

    AiTechYun
  • sublime Text 开发工具

    1、创建方法:Tools(工具)- > New Snippet(新代码片段),会看到以下结构

    py3study

扫码关注云+社区

领取腾讯云代金券