精华内容
下载资源
问答
  • 常见的广义线性模型有:probit模型、poisson模型对数线性模型等等。对数线性模型里有:logistic regression、Maxinum entropy。本篇是对逻辑回归理论和应用的学习总结、以及广义线性模型导出逻辑回归的过程,下一...

            经典线性模型自变量的线性预测就是因变量的估计值。 广义线性模型:自变量的线性预测的函数是因变量的估计值。常见的广义线性模型有:probit模型、poisson模型、对数线性模型等等。对数线性模型里有:logistic regression、Maxinum entropy。本篇是对逻辑回归的学习总结,以及广义线性模型导出逻辑回归的过程。下一篇将是对最大熵模型的学习总结。本篇介绍的大纲如下:

    1、逻辑斯蒂分布,logit转换

    2、在二分类问题中,为什么弃用传统的线性回归模型,改用逻辑斯蒂回归?

    3、逻辑回归模型的求解过程?

    4、实际应用逻辑回归时数据预处理的经验总结。但经验有限,如果有哪位网友这块经验丰富,忘指教,先谢过

    5、为什么我们在实际中,经典线性模型的优化目标函数是最小二乘,而逻辑回归则是似然函数

    6、从最根本的广义线性模型角度,导出经典线性模型以及逻辑回归


    1、逻辑斯蒂分布,logit转换

     一个连续随机变量X,如果它的分布函数形式如下,则X服从逻辑斯蒂分布,F(x)的值在0~1之间,它的的图形是一条S型曲线

    2、在二分类问题中,为什么弃用传统的线性回归模型,改用逻辑斯蒂回归?

          线性回归用于二分类时,首先想到下面这种形式,p是属于类别的概率:

         

          但是这时存在的问题是:

          1)等式两边的取值范围不同,右边是负无穷到正无穷,左边是[0,1],这个分类模型的存在问题

          2)实际中的很多问题,都是当x很小或很大时,对于因变量P的影响很小,当x达到中间某个阈值时,影响很大。即实际中很多问题,概率P与自变量并不是直线关系。

          所以,上面这分类模型需要修整,怎么修正呢?统计学家们找到的一种方法是通过logit变换对因变量加以变换,具体如下:

            

          

            从而,        

           

            这里的P完全解决了上面的两个问题。

    3、逻辑回归模型的求解过程?

          1)求解方式

            逻辑回归中,Y服从二项分布,误差服从二项分布,而非高斯分布,所以不能用最小二乘进行模型参数估计,可以用极大似然估计来进行参数估计。

          2)似然函数、目标函数

            严谨一点的公式如下:

            

            似然函数如下:

            

            对数似然函数,优化目标函数如下:

            

             整个逻辑回归问题就转化为求解目标函数,即对数似然函数的极大值的问题,即最优化问题,可采用梯度下降法、拟牛顿法等等。

    4、实际应用逻辑回归时数据预处理的经验总结,但经验有限,如果有哪位网友这块经验丰富,忘指教,先谢过

          1)枚举型的特征直接进行binary

          2)数值型特征,可以:标准化、根据分布进行binary

          3)进行pairwise

    5、为什么我们在实际中,经典线性模型的优化目标函数是最小二乘,而逻辑回归则是似然函数

          下面公式直接从Ng notes里面复制过来。

         1) 经典线性模型的满足下面等式:

          

           这里有个假设,即最后这个误差扰动项独立同分布于均值为0的正态分布,即:

          

          从而:

          

          由于有上面的假设,从而就有下面的似然函数:

          

          从而这线性回归的问题就可转化为最大化下面的对数似然估计,由于下面公式前面的项是常数,所以这个问题等价于最小化下面等式中的最后一项,即least mean squares。

          

          2)逻辑斯蒂回归中,因变量y不再是连续的变量,而是二值的{0,1},中间用到logit变换,将连续性的y值通过此变换映射到比较合理的0~1区间。在广义线性回归用于分类问题中,也有一个假设(对应于上面回归问题中误差项独立同分布于正态分布),其中h(x)是logistic function

          

          即,给定x和参数,y服从二项分布,上面回归问题中,给定x和参数,y服从正态分布。从而。

          

                

          问题不同(一个是分类、一个是回归)对应假设也就不同,决定了logistic regression问题最优化目标函数是上面这项,而非回归问题中的均方误差LMS。

    6、从最根本的广义线性模型角度,导出经典线性模型以及逻辑回归

         1)指数家族

          

            当固定T时,这个分布属于指数家族中的哪种分布就由a和b两个函数决定。下面这种是伯努利分布,对应于逻辑回归问题

                                       

              注:从上面可知 ,从而,在后面用GLM导logistic regression的时候会用到这个sigmoid函数。

            下面这种是高斯分布,对应于经典线性回归问题

                    

          2)GLM(广义线性模型)

            指数家族的问题可以通过广义线性模型来解决。如何构建GLM呢?在给定x和参数后,y的条件概率p(y|x,θ) 需要满足下面三个假设:

            assum1)      y | x; θ ∼ ExponentialFamily(η).

            assum2)      h(x) = E[y|x]. 即给定x,目标是预测T(y)的期望,通常问题中T(y)=y

            assum3)       η = θTx,即η和x之间是线性的

           3)经典线性回归、逻辑回归

           经典线性回归:预测值y是连续的,假设给定x和参数,y的概率分布服从高斯分布(对应构建GLM的第一条假设)。由上面高斯分布和指数家族分布的对应关系可知,η=µ,根据构建GLM的第2、3条假设可将model表示成:

          
            

            逻辑回归:以二分类为例,预测值y是二值的{1,0},假设给定x和参数,y的概率分布服从伯努利分布(对应构建GLM的第一条假设)。由上面高斯分布和指数家族分布的对应关系可知,,根据构建GLM的第2、3条假设可model表示成:

            

            可以从GLM这种角度理解为什么logistic regression的公式是这个形式~


          参考资料:

          [1] NG的lecture notes,http://cs229.stanford.edu/notes/cs229-notes1.pdf

          [2] 其他网络资源

    展开全文
  • 常用的三个线性模型的原理及python实现——线性回归(Linear Regression)、对数几率回归(Logostic Regression)、线性判别分析(Linear Discriminant)。 这可能会是对线性模型介绍最全面的博客一、线性模型 ...

    常用的三个线性模型的原理及python实现——线性回归(Linear Regression)、对数几率回归(Logostic Regression)、线性判别分析(Linear Discriminant)。 这可能会是对线性模型介绍最全面的博客

    一、线性模型 (Linear Model)

    对于一个具有d个属性的对象来说,我们可以用下面这一组向量描述

    这里写图片描述

    向量中的每个值都是对象一个属性的值,由上可以看出,线性模型是一个通过属性的线性组合来进行对象判定的函数,即

    这里写图片描述

    用向量的形式可以写成

    这里写图片描述

    其中

    这里写图片描述

    当求得wb后,线性模型就得以确定。线性模型是最简单也是最常用的模型之一,同时,很多更为强大的非线性模型也是由线性模型发展来的,所以,了解掌握线性模型十分必要

    二、线性回归 (Linear Regression)

    线性回归是指,模型试图学得

    这里写图片描述

    求解模型的关键在于,如何求得wb,解决问题的落点在于,如何衡量f(x)y 差距,通常我们使用均方误差来衡量这种差距的大小,即

    这里写图片描述

    均方差有非常良好的几何意义,它对应了常用的欧几里得距离即“欧式距离”。基于均方误差最小化的原理来求解模型的方法叫做“最小二乘法”(least square method),在线性回归中,最小二乘法就是试图找到一条直线,使所有样本到直线上的欧式距离之和最小,现令

    这里写图片描述

    将其对wb分别求导,并令其导数为0,可得

    这里写图片描述

    对于更一般的情形,若样本由d个属性描述,此时我们应当求解

    这里写图片描述

    这就是我们通常所说的多元线性回归(multivariate linear regression)
    现在利用最小二乘法对w和b进行估计。将wb统一记为

    这里写图片描述

    同时也把数据集D表示为一个 *m x (d + 1)*的矩阵 X

    这里写图片描述

    将标记也写成向量形式

    这里写图片描述

    此时的求解方程可以写为

    这里写图片描述

    用上式对w进行求导,当X 的转置与其相乘为满秩矩阵或者正定矩阵时,令导数为0可得

    这里写图片描述

    最终得到的多元线性回归模型如下

    这里写图片描述

    基于上述理论,其python源码如下:

    
    '''
    1.using least square method figure out linear regression
    '''
    import numpy as np
    import matplotlib.pyplot as plt
    
    def linear_regression(x,y):     
        def preprocess(x):
            X = np.mat(x)
            b = np.mat([1]*len(x))
            X = np.hstack((X,b.T))
            return X
    
        def cal_w(x,y):
            X = preprocess(x)
            Y = np.mat(y).T
            return (X.T*X).I*X.T*Y     
        
        return preprocess(x)*cal_w(x,y),cal_w(x,y).tolist()
    

    其测试代码如下(注本文所有的代码原为一个文件,运行时,请完整复制全部代码)

    
    #visiable and output test
    x = [[0.697,0.460],[0.774,0.376],[0.634,0.264],[0.608,0.318],[0.556,0.215],[0.403,0.237],[0.481,0.149],
         [0.437,0.211],[0.666,0.091],[0.243,0.267],[0.245,0.057],[0.343,0.099],[0.639,0.161],[0.657,0.198],
         [0.360,0.370],[0.593,0.042],[0.719,0.103]]
    y = [1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0]
    yy,w = linear_regression(x,y)
    i,x1,x2 = 0,[],[]
    while i < len(x):
        x1.append(x[i][0])
        x2.append(x[i][1])
        i += 1
    
    i = 0
    plt.figure(1)
    plt.subplot(121)
    plt.title('linear regression')
    while i < len(x1):
        if y[i] == 0:
            plt.scatter(x1[i],x2[i],color = 'r')
        elif y[i] == 1:
            plt.scatter(x1[i],x2[i],color = 'g')
        i += 1
    a = -(w[2][0]/w[1][0])
    b = -(w[0][0]+w[2][0])/w[1][0]
    plt.plot([0,1],[a,b])
    

    三、对数几率回归(Logistic Regression)

    对数几率回归实质上使用Sigmoid函数对线性回归的结果进行了一次非线形的转换,Sigmoid函数如下

    这里写图片描述

    将线性模型带入可得

    这里写图片描述

    该式实际上是在用线性回归模型的预测结果去逼近真实标记的对数几率,因此,其对应的模型称为“对数几率回归”(logistic regression),将上式取常用对数,可转化为

    这里写图片描述

    现在我们开始对wb进行估计,将上式中的y视为类后验概率估计

    这里写图片描述

    则可以将模型转化为

    这里写图片描述

    显然有

    这里写图片描述
    这里写图片描述

    到这里,我们便可以使用“极大似然法”(maximum likelihood method)来估计wb,给定数据集如下

    这里写图片描述

    对率回归模型最大化“对数似然”,记为式 1

    这里写图片描述

    即令每个样本属于其真实标记的概率越大越好,现令

    这里写图片描述

    再令

    这里写图片描述

    此时,便可将之前式1里的似然项改写为

    这里写图片描述

    由此可知,式1等于

    这里写图片描述

    这是一个高阶可导连续凸函数,接下来给出牛顿法的推导公式,首先为
    这里写图片描述设置任意值
    设定允许误差,再代入下式循环求解求解

    这里写图片描述

    其中

    这里写图片描述
    这里写图片描述

    基于上述理论,其python源码如下:

    '''
    2.Newton method figure out logistic regression
    '''
    
    def logistic_regression(x,y,error,n):
        def preprocess(x,y):
            X = np.mat(x)
            b = np.mat([1]*len(x))
            X = np.hstack((X,b.T))
            w = [1]*(len(x[0])+1)
            W = np.mat(w).T
            Y = y
            return X,W,Y   
        
        def func_p(X,W):
            a = (X*W).tolist()
            b = float(a[0][0])
            temp = np.exp(b)/(1+np.exp(b))
            return temp
        
        def dfunc(X,Y,W):
            i,num,sum1 = 0,len(X),0
            while i < num:
                temp = Y[i] - func_p(X[i],W)
                sum1 += X[i]*temp
                i += 1
            return sum1*(-1)
        
        def d2func(X,Y,W):
            i,num,sum1 = 0,len(X),0
            while i < num:         
                temp = func_p(X[i],W)*(1 - func_p(X[i],W))
                sum1 += X[i]*(X[i].T)*temp
                i += 1
            sum1 = sum1.tolist()
            return float(sum1[0][0])
    
        def Newton(x,y,error,n):
            X,W,Y = preprocess(x,y)
            i = 1
            while i < n:
                d1 = dfunc(X,Y,W)
                a = (d1*d1.T).tolist()
                a = float(a[0][0])
                if a < error:
                    return W
                    break
                temp = dfunc(X,Y,W)
                W = W - temp.T*(d2func(X,Y,W)**(-1))
                i += 1
            if i == n:
                return 'error'
        
        w = Newton(x,y,error,n)
        X,W,Y = preprocess(x,y)
        yy = (X*w).tolist()
        w = w.tolist()
        return w,yy
    
    

    测试代码如下

    
    #visiable and output test           
    w,yy = logistic_regression(x,y,0.0001,1000)
    
    i,x1,x2,z = 0,[],[],[]
    while i < len(x):
        x1.append(x[i][0])
        x2.append(x[i][1])
        z.append(yy[i][0])
        i += 1
    
    i = 0
    
    plt.subplot(122)
    plt.title('logistic regression')
    while i < len(x1):
        if y[i] == 0:
            plt.scatter(x1[i],x2[i],color = 'r')
        elif y[i] == 1:
            plt.scatter(x1[i],x2[i],color = 'g')
        i += 1
    a = -(w[2][0]/w[1][0])
    b = -(w[0][0]+w[2][0])/w[1][0]
    plt.plot([0,1],[a,b])
    

    四、线性判别分析(Linear Discriminant Analysis)

    线性判别分析是一种经典的线形学习方法,最早由费舍尔(Fisher)在二分类问题上提出,所以也称为“Fisher判别分析”
    其思想非常朴素:给定训练样例集,设法将样例点投影到一条直线上,使得同类样例的投影点尽可能接近、异类样例的投影点尽可能远离;在对测试样例进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定新样本的类别。这里只讲述二分类问题的原理和求解,给定数据集

    这里写图片描述

    再分别令

    这里写图片描述

    表示i(等于0或1)类示例的集合、均值向量、协方差矩阵,将数据投影到直线w上,则两类样本的中心在直线上的投影分别为

    这里写图片描述

    若将所有样本点都投影到直线上,则两类样本的协方差分别为

    这里写图片描述

    想要使同类样例的投影点尽可能接近,可以让同类样例的协方差尽可能小,即

    这里写图片描述

    尽可能小;同时,也想要让异类样例的投影点尽可能远离,可以让类中心之间的距离尽可能大,即

    这里写图片描述

    尽可能的大,则可以定义最大化目标

    这里写图片描述

    定义类内散度矩阵(within class scatter matrix)

    这里写图片描述

    以及类间散度矩阵(between class)

    这里写图片描述

    可将最大化目标重写为

    这里写图片描述

    由拉格朗日乘法子可从上式求出

    这里写图片描述

    由此可解出二分类问题的LDA模型,基于上述理论,其python源码如下:

    '''
    3.Linear Discriminant Analysis for binary classification problem
    '''
    
    def LDA(x,y):
        def preprocess(x,y):
            i = 0
            X0,X1 = [],[]
            while i < len(y):
                if y[i] == 0:
                    X0.append(x[i])
                elif y[i] == 1:
                    X1.append(x[i])
                i += 1
            return X0,X1
        
        def average(X):
            X = np.mat(X)
            i = 1
            while i < len(X):
                X[0] = X[0] + X[i]
                i += 1
            res = X[0]/i
            return res
        
        def Sw(X0,X1,u0,u1):
            X_0 = np.mat(X0)
            X_1 = np.mat(X1)
            Sw0,i = 0,0
            temp0 = (X_0 - u0).T*((X_0 - u0))
    #        while i < len(temp0):
    #            Sw0 += float(temp0[i,i])
    #            i += 1
    #        Sw1,i = 0,0
            temp1 = (X_1 - u1).T*((X_1 - u1))
    #        while i < len(temp1):
    #            Sw1 += float(temp1[i,i])
    #            i += 1
    #        return Sw0+Sw1
            return temp0 + temp1
           
        X0,X1 = preprocess(x,y)
        u0,u1 = average(X0),average(X1)
    
        SW = Sw(X0,X1,u0,u1)
        return (SW**(-1)*numpy.mat(u0-u1).T).tolist()   
    
    #visiable and output test           
    W = LDA(x,y)
    
    i,x1,x2,z = 0,[],[],[]
    while i < len(x):
        x1.append(x[i][0])
        x2.append(x[i][1])
        i += 1
    i = 0
    plt.figure(2)
    plt.subplot(121)
    plt.title('LDA')
    while i < len(x1):
        if y[i] == 0:
            plt.scatter(x1[i],x2[i],color = 'r')
        elif y[i] == 1:
            plt.scatter(x1[i],x2[i],color = 'g')
        i += 1
    print(W)
    
    plt.plot([0,-W[0][0]],[0,-W[1][0]])
    

    五、三个模型结果对比图

    完整代码地址:https://github.com/LiangjunFeng/Machine-Learning/blob/master/1.linear_model.py

    这里写图片描述

    六、更多资源下载

    微信搜索“老和山算法指南”获取更多下载链接与技术交流群
    在这里插入图片描述
    有问题可以私信博主,点赞关注的一般都会回复,一起努力,谢谢支持。

    展开全文
  • 手写笔记,字是丑了点,仅用作个人复习。

    手写笔记,字是丑了点,仅用作个人复习。 

    展开全文
  • 前言

    前言
    这里写图片描述
    这里写图片描述
    这里写图片描述
    这里写图片描述

    展开全文
  • 对数线性回归; y的衍生物 3.1 基本形式 假设样本x有d个属性,线性模型(linear model)试图学得一个通过属性的线性组合来进行预测的函数,即f(x)=w1x1+w2x2+⋅⋯+wdxd+bf(x)=w1x1+w2x2+⋅⋯+wdxd+bf(x)=w_{1}x_...
  • 文章目录对数线性回归(波士顿房价预测)导入模块获取数据训练模型可视化 对数线性回归(波士顿房价预测) 导入模块 import pandas as pd import numpy as np import matplotlib.pyplot as plt from matplotlib.font_...
  • 对数线性模型有:最大熵模型和逻辑斯谛回归。 特征和指示特征 对数线性模型的一般形式 [概率图模型原理与技术] 某小皮 对数线性模型的不同形式 因子图 将因子转换到对数空间,成为对数线性模型...
  • 文章目录通用形式简介重要概念指数族分布线性回归简介正则化基扩展和核函数对数几率回归简介多分类策略[4]凸函数求解一些问题# 参考链接 通用形式 简介 ​ 广义线性模型(Generalized Linear Model),将线性模型...
  • 基本形式 优点:线性模型形式简单、易于建模。 很多非线性模型是在线性模型的基础上通过引入层级结构或高维映射得到...线性回归(linear regeression)试图学习一个线性模型以尽可能准确预测实值输出标记。 对...
  • 线性模型基本形式:f(x)=w1*x1+w2*x2+w3*x3+...+wd*xd+b 向量形式:f(x)=w'x+b(w'指w转置w'=(w1,w2,w3,...,wd)) 回归任务最常用均方误差作为性能度量,见下图 ...如对数线性回归:lny=w'x+b,让e^(w'x+b)逼近y ...
  • 每当我们估计回归模型时,都必须假定回归具有正确的函数形式。该假设可能会有以下几种错误:■可以从回归中忽略一个或多个重要变量。■在估计回归之前,可能需要转换一个或多个回归变量(例如,通过对变量取自然对数)...
  • 这次和上一次的内容类似,以西瓜书南瓜书为主结合统计学习方法与吴恩达机器学习,先做了一些手写的笔记,后面会精简整理成博客。
  • 线性回归、最小二乘法
  • 本文介绍对数线性分类模型,在线性模型的基础上通过复合函数(sigmoid,softmax,entropy )将其映射到概率区间,使用对数损失构建目标函数。首先以概率的方式...
  • 常见的广义线性模型有:probit模型、poisson模型对数线性模型等等。对数线性模型里有:logistic regression、Maxinum entropy。本篇是对逻辑回归的学习总结,以及广义线性模型导出逻辑回归的过程。下一篇将是对...
  • 跟着博主的脚步,每天进步一点点本文介绍对数线性分类模型,在线性模型的基础上通过复合函数(sigmoid,softmax,entropy )将其映射到概率...
  • 线性模型试图学习得到一个通过属性的线性组合来进行预测的函数,即 优点是简单,易于建模。 2、分类任务和回归任务 回归问题和分类问题的本质一样,都是针对一个输入做出一个输出预测,其区别在于输出变量的...
  • 常见的广义线性模型有:probit模型、 poisson模型对数线性模型等等。对数线性模型里有:logistic regression、Maxinum entropy。本篇是对逻辑回归的学习总结,以及广义线性模型导出逻辑回归的过程。下一篇将是对...
  • 一般线性模型和线性回归模型Interpretability is one of the biggest challenges in machine learning. A model has more interpretability than another one if its decisions are easier for a human to ...
  • 对数几率回归(logistic regression),有时候会译为逻辑回归(音译),其实是我们把回归模型应用到分类问题时,线性回归的一种变形,主要是针对二分类提出的。既然是线性回归的一种变形,那么在理解对数几率回归时,...
  • 如果是分类任务,如何使用线性回归模型呢?答案在广义线性模型的公式中,只需要找到一个单调可微函数将分类任务的真实标记y 与线性回归模型的预测值联系起来。 考虑二分类任务,输出 $y \in ${0,1} , 线性回归的预测...
  • 此时Y是连续的,所以是回归模型。 对应n维样本数据,对应的模型是这样的: 其中θ为模型参数。 一般用均方误差作为损失函数,损失函数的代数法表示如下: 用矩阵形式表示为: 采用梯度下降法,则θ的迭代...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,463
精华内容 8,985
关键字:

对数线性回归模型的解释