逻辑回归——详细概述

栏目: 数据库 · 发布时间: 6年前

内容简介:逻辑回归在20世纪早期被用于生物科学。它后来被用于许多社会科学应用。因变量(目标)为分类变量时采用Logistic回归。例如,

逻辑回归——详细概述

逻辑回归在20世纪早期被用于生物科学。它后来被用于许多社会科学应用。因变量(目标)为分类变量时采用Logistic回归。

例如,

  • 预测电子邮件是垃圾邮件(1)还是(0)
  • 肿瘤是否恶性(1)(0)

考虑一个场景,我们需要对电子邮件是否为垃圾邮件进行分类。如果我们用线性回归来解决这个问题,就需要设置一个阈值,根据这个阈值可以进行分类。假设实际类为恶性,预测连续值为0.4,阈值为0.5,则将数据点划分为非恶性,会导致严重后果。

从这个例子可以推断线性回归不适合分类问题。线性回归是无界的,这将逻辑回归引入图像。它们的值严格从0到1。

简单线性回归

完整的源代码:

https://github.com/SSaishruthi/LogisticRegression_Vectorized_Implementation/blob/master/Logistic_Regression.ipynb

模型 输出:0或者1 假设:Z=WX+B 逻辑回归——详细概述

如果Z→∞,Y(预测值)= 1,如果Z→-∞,Y(预测值)= 0。

假设分析

假设的输出是估计的概率。这是用来推断当给定输入x时,预测值是实际值的可信度。

X = [x0 x1] = [1 IP-Address]

根据x1值,假设我们得到的估计概率是0。8。这说明电子邮件有80%的可能是垃圾邮件。

数学可以写成:

逻辑回归——详细概述

这说明了“逻辑回归”这个名称的合理性。数据拟合为线性回归模型,再通过logistic函数对目标分类因变量进行预测。

逻辑回归的类型

  1. 二元逻辑回归:分类反应只有两种可能结果。例子:垃圾邮件或非垃圾邮件
  2. 多项逻辑回归:三个或更多的类别,没有排序。例子:预测哪种食物更受欢迎(素食,非素食,纯素食)
  3. 顺序逻辑回归:三个或更多类别的排序。例子:电影分级从1到5

决策边界

为了预测数据点属于哪个类别,可以设置一个阈值。根据这个阈值,将获得的估计概率划分为类别。

如果predicted_value≥0.5,电子邮件邮件分类为垃圾邮件反之不是。 决策边界可以是线性的,也可以是非线性的。多项式阶增加以获得复杂的决策边界。

代价函数

逻辑回归——详细概述

为什么用于线性的代价函数不能用于逻辑回归?

线性回归以均方误差为代价函数。如果将其用于逻辑回归,则为参数的非凸函数。只有当函数为凸函数时,梯度下降才收敛到全局最小值。

逻辑回归——详细概述

代价函数的解释

逻辑回归——详细概述

逻辑回归——详细概述

简化的代价函数

逻辑回归——详细概述

为什么这是代价函数

逻辑回归——详细概述 逻辑回归——详细概述

这个负函数是因为当我们训练时,我们需要通过最小化损失函数来最大化概率。假设样本来自相同独立分布,降低成本会增加样本的最大似然。

推导梯度下降算法的公式

逻辑回归——详细概述 逻辑回归——详细概述

Python实现

def weightInitialization(n_features):
    w = np.zeros((1,n_features))
    b = 0
    return w,b
def sigmoid_activation(result):
    final_result = 1/(1+np.exp(-result))
    return final_result

def model_optimize(w, b, X, Y):
    m = X.shape[0]
    
    #Prediction
    final_result = sigmoid_activation(np.dot(w,X.T)+b)
    Y_T = Y.T
    cost = (-1/m)*(np.sum((Y_T*np.log(final_result)) + ((1-Y_T)*(np.log(1-final_result)))))
    #
    
    #Gradient calculation
    dw = (1/m)*(np.dot(X.T, (final_result-Y.T).T))
    db = (1/m)*(np.sum(final_result-Y.T))
    
    grads = {"dw": dw, "db": db}
    
    return grads, cost
def model_predict(w, b, X, Y, learning_rate, no_iterations):
    costs = []
    for i in range(no_iterations):
        #
        grads, cost = model_optimize(w,b,X,Y)
        #
        dw = grads["dw"]
        db = grads["db"]
        #weight update
        w = w - (learning_rate * (dw.T))
        b = b - (learning_rate * db)
        #
        
        if (i % 100 == 0):
            costs.append(cost)
            #print("Cost after %i iteration is %f" %(i, cost))
    
    #final parameters
    coeff = {"w": w, "b": b}
    gradient = {"dw": dw, "db": db}
    
    return coeff, gradient, costs
def predict(final_pred, m):
    y_pred = np.zeros((1,m))
    for i in range(final_pred.shape[1]):
        if final_pred[0][i] > 0.5:
            y_pred[0][i] = 1
    return y_pred

成本与迭代次数

逻辑回归——详细概述

系统的训练和测试精度为100% 此实现用于二元逻辑回归。对于超过两个类的数据,必须使用softmax回归。 完整的代码:

**https://github.com/SSaishruthi/LogisticRegression_Vectorized_Implementation/blob/master/Logistic_Regression.ipynb **

作者:Saishruthi Swaminathan 原文链接 : https://towardsdatascience.com/logistic-regression-detailed-overview-46c4da4303bc

版权声明: 作者保留权利。文章为作者独立观点,不代表数据人网立场。严禁修改,转载请注明原文链接:http://shujuren.org/article/789.html

数据人网: 数据人学习,交流和分享的平台,诚邀您创造和分享数据知识,共建和共享数据智库。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Python Algorithms

Python Algorithms

Magnus Lie Hetland / Apress / 2010-11-24 / USD 49.99

Python Algorithms explains the Python approach to algorithm analysis and design. Written by Magnus Lie Hetland, author of Beginning Python, this book is sharply focused on classical algorithms, but it......一起来看看 《Python Algorithms》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具