精华内容
下载资源
问答
  • logistic回归公式推导

    2018-06-05 21:03:33
    替换成logistic回归 C o s t ( h ( θ ) , y ) = { − l o g ( h θ ( x ) ) , y = 1 − l o g ( 1 − h θ ( x ) ) , y = 0 C o s t ( h ( θ ) , y ) = { − l o g ( h θ ( x ) ) , y = 1 − l o g ( 1 − h...

    假设函数

    h(θ)=11+eθTX

    为什么使用sigmod

    这个网上有很多文章,但是还是不太看懂。大概就是0-1之间增函数,还有是指数分布簇。

    代价函数

    J(θ)=1mi=1m[yilog(hθ(xi))+(1yi)log(1hθ(xi))]

    代价函数推导

    伯努利分布

    P(X=n)={1p,n=0p,n=1

    求p的最大似然估计量

    P{X=x}=px(1p)1p=0,1

    x1,x2,,xn是给定的样本值

    对应的似然函数

    L(p)=i=1npxi(1p)1xi(0<p<1) 求L(p)的最大值点

    取对数

    lnL(p)=i=1nln[pxi(1p)1xi]

    =i=1n[xilnp+(1xi)ln(1p)]

    替换成logistic回归

    Cost(h(θ),y)={log(hθ(x)),y=1log(1hθ(x)),y=0
    (价函数
    J(θ)=1m[I=1myiloghθ(xi)+(1yi)log(1hθ(xi))]

    代价函数求导

    J(θ)=1m[I=1myiloghθ(xi)+(1yi)log(1hθ(xi))]
    θj=1mI=1mθj[yiloghθ(xi)+(1yi)log(1hθ(xi))]
    =1mI=1m[yiloghθ(xi)]+[(1yi)log(1hθ(xi))] ……….((u+v)=u+v)
    =1mI=1m[yiloghθ(xi)]+[(1yi)log(1hθ(xi))] ……….((uv)=uvuv)
    =1mI=1m[(yi)loghθ(xi)+yi(loghθ(xi))]+[(1yi)log(1hθ(xi))+(1yi)log(1hθ(xi))]
    =1mI=1m[(yi)loghθ(xi)+yi(loghθ(xi))]+[(1yi)log(1hθ(xi))+(1yi)log(1hθ(xi))]……….(h(θ)=11+eθTX带入)
    =1mI=1m[yi(log(11+eθTxi)]+[(1yi)log(1+eθTxi11+eθTxi)] ……….((Cu)=Cu,(log(u))=1uu)
    =1mI=1m[yi(1+eθTxi)(11+eθTxi)]+[(1yi)(1+eθTxieθTxi)(eθTxi1+eθTxi)] ……….((uv)=uvuvv2,(eCx)=CeCx)
    =1mI=1m[yi(1+eθTxi)(0(1+eθTxi)(1+eθTxi)2)][(1yi)(1+eθTxieθTxi)((eθTxi)(1+eθTxi)2)]
    =1mI=1m[yi((1+eθTxi)(1+eθTxi))][(1yi)(xi(1+eθTxi))]……….((eCx)=CeCx)
    =1mI=1myixeθTxix+xyi1+eθTxi
    =1mI=1myi(1+eθTxi1)1+eθTxixj
    =1mI=1myi(1+eθTxi1)1+eθTxixj
    =1mI=1myi11+eθTxixi
    =1mI=1m[yihθ(xi)]xj

    展开全文
  • 代价函数得来 首先确定: hθ(x)=g(θTx)=11+e−θTx h_{\theta}(x)=g\left(\theta^{T} x\right)=\frac{1...函数hθ(x)h_{\theta}(x)hθ​(x)即logistic回归公式。 为了得到一个凸函数,logistic回归似然函数: L(...

    代价函数得来

    首先确定:
    hθ(x)=g(θTx)=11+eθTx h_{\theta}(x)=g\left(\theta^{T} x\right)=\frac{1}{1+e^{-\theta^{T} x}}
    函数hθ(x)h_{\theta}(x)即logistic回归的公式。
    为了得到一个凸函数,logistic回归似然函数:
    L(θ)=i=1mP(yixi;θ)=i=1m(hθ(xi))yi((1hθ(xi)))1yi L(\theta)=\prod_{i=1}^{m} P\left(y_{i} | x_{i} ; \theta\right)=\prod_{i=1}^{m}\left(h_{\theta}\left(x_{i}\right)\right)^{y_{i}}\left(\left(1-h_{\theta}\left(x_{i}\right)\right)\right)^{1-y_{i}}
    取对数:
    l(θ)=logL(θ)=i=1m(yiloghθ(xi)+(1yi)log(1hθ(xi))) l(\theta)=\log L(\theta)=\sum_{i=1}^{m}\left(y_{i} \operatorname{logh}_{\theta}\left(x_{i}\right)+\left(1-y_{i}\right) \log \left(1-h_{\theta}\left(x_{i}\right)\right)\right)
    其中mm为样本个数
    代价函数为:J(θ)=1ml(θ)J(\theta)=-\frac{1}{m} l(\theta)
    梯度的推导首先要明白一个公式(对θ\theta求导):hθ(x)=g(θTx)=g(θTx)(1g(θTx))xh_{\theta}(x)&#x27; = g(\theta^{T}x)&#x27; = g(\theta^{T}x)(1-g(\theta^{T}x))x
    代价函数导数为:
    δδθjJ(θ)=1m(i=1myi(1hθ(xi)xi(1yi)hθ(xi)xi))=1m(i=1m(yihθ(xi)xi))=1m(i=1m(hθ(xi)yi)xi))\frac{\delta}{\delta_{\theta_{j}}} J(\theta) = -\frac{1}{m}(\sum_{i=1}^{m}y^{i}(1-h_\theta(x^i)x^i - (1-y^i)h_\theta(x^i)x^i))\newline =-\frac{1}{m}(\sum_{i=1}^m(y^i - h_\theta(x^i)x^i))\\ =\frac{1}{m}(\sum_{i=1}^m(h_\theta(x^i)-y^i)x^i))
    每次只要更新θj=θjα1mi=1m(hθ(xi)yi)xji)\theta_j = \theta_j - \alpha\frac{1}{m}\sum_{i=1}^m(h_\theta(x^i)-y^i)x_j^i)
    下面是python实现代码:

    # coding: utf-8
    
    import numpy as np
    import pandas as pd
    
    # change 3 kinds of Iris to 1,2,3
    # add a feature x0 = 1 (w * x + b to (b.w)*(x0,x))
    def transform_classification(Iris_df):
        Iris = Iris_df.copy()
        classification = {}
        for i,c in enumerate(Iris.iloc[:,-1]):
            if c not in classification:
                classification[c] = len(classification) + 1
                Iris.iloc[i,-1] = len(classification)
            else:
                Iris.iloc[i,-1] = classification[Iris.iloc[i,-1]]
        Iris.insert(4,'10',pd.DataFrame(np.ones(len(Iris)+1)))
        return Iris
    
    # def predict function
    def predict(theta, x):
        a = [- (theta * x[i].T) for i in range(len(x))]
        h_theta = 1/(1 + np.exp(a))
        return h_theta
    
    # define loss function
    def eval_loss(theta, x, y):
        J_theta = -np.array([y[i] *np.log(predict(theta, x[i])) + (1 - y[i]) *np.log(1 - predict(theta, x[i])) for i in range(len(x))])
        clf = np.where(J_theta >= 0.5, 1, 0)
        correct_rate = (clf == y).mean()
        return J_theta.mean(), correct_rate
    
    # calculate gradient
    def get_gradient(y_pred, y_real, x):
        d_theta = np.array([((y_pred - y_real) *x[:,i]).mean() for i in range(x.shape[1])])
        return d_theta
    
    # update theta
    def update_theta(batch_x, batch_y, theta, lr):
        batch_y_pred = predict(theta, batch_x)
        d_theta = get_gradient(batch_y_pred, batch_y, batch_x)
        theta -= lr*d_theta
        return theta
    
    # train function
    def train(x, y, batch_size, epoch, lr):
        x = np.mat(x)
    #     give theta a random value
        theta = np.random.random(x.shape[1])
        for epo in range(epoch):
    #         chose samples randomly
            ids = np.random.choice(len(x), batch_size)
            batch_x = x[ids]
            batch_y = y[ids]
            theta = update_theta(batch_x, batch_y, theta, lr)
            loss, accuracy = eval_loss(theta, batch_x, batch_y)
            print('epoch:{}\nθ:{}\nloss = {}\naccuracy = {}\n'.format(epo+1, theta, loss, accuracy))
        return theta
    
    def run():
        Iris = pd.read_csv('data/Iris.csv',index_col=0)
        Iris = transform_classification(Iris)
        Iris.iloc[:,-1] = np.where(Iris.values[:,-1] == 1, 1, 0)
    #     split data to train 
        data = Iris.values
        idxs = np.array(list(range(len(data))))
        np.random.shuffle(idxs)
        k = int(1*len(idxs))
        train_x = data[idxs[:k],:-1]
        train_y = data[idxs[:k],-1]
        test_x =  data[idxs[k:],:-1]
        test_y =  data[idxs[k:],:1]
        
        lr = 0.001
        batch_size = 100
        epoch = 100
    #     train
        theta = train(train_x[:,:], train_y, batch_size, epoch, lr)
    
    if __name__ == '__main__':
        run()
    
    展开全文
  •  本文首先阐述Logistic回归的定义,然后介绍一些最优化算法,其中包括基本的梯度上升法和一个改进的随机梯度上升法,这些最优化算法将用于分类器的训练,最好本文将给出一个Logistic回归的实例

    1,引言

    logistic回归是机器学习中最常用最经典的分类方法之一,有人称之为逻辑回归或者逻辑斯蒂回归。虽然他称为回归模型,但是却处理的是分类问题,这主要是因为它的本质是一个线性模型加上一个映射函数Sigmoid,将线性模型得到的连续结果映射到离散型上。它常用于二分类问题,在多分类问题的推广叫softmax。
      本文首先阐述Logistic回归的定义,然后介绍一些最优化算法,其中包括基本的梯度上升法和一个改进的随机梯度上升法,这些最优化算法将用于分类器的训练,最好本文将给出一个Logistic回归的实例,预测一匹病马是否能被治愈。
      在我们的日常生活中遇到过很多最优化问题,比如如何在最短时间内从A点到达B点?如何投入最少工作量却获得最大的效益?如何设计发动机使得油耗最少而功率最大?可见,最优化的作用十分强大,所以此处我们介绍几个最优化算法,并利用它们训练出一个非线性函数用于分类。
      现在假设有一些数据点,我们用一条直线对这些点进行拟合(该线称为最佳拟合直线),这个拟合过程就称作回归。利用logistic回归进行分类的主要思想是:根据现有数据对分类边界线建立回归公式,以此进行分类,这里的“回归”一词源于最佳拟合,表示要找到最佳拟合参数集。训练分类器时的做法就是寻找最佳拟合参数,使用的是最优化算法,下面我们首先介绍一下这个二值型输出分类器的数学原理。
    那么逻辑回归与线性回归是什么关系呢?
    逻辑回归(Logistic Regression)与线性回归(Linear Regression)都是一种广义线性模型(generalized linear model)。逻辑回归假设因变量 y 服从伯努利分布,而线性回归假设因变量 y 服从高斯分布。 因此与线性回归有很多相同之处,去除Sigmoid映射函数的话,逻辑回归算法就是一个线性回归。可以说,逻辑回归是以线性回归为理论支持的,但是逻辑回归通过Sigmoid函数引入了非线性因素,因此可以轻松处理0/1分类问题。

    2,Logistic回归的一般过程

    • (1)收集数据:采用任意方法收集数据

    • (2)准备数据:由于需要进行距离计算,因此要求数据类型为数值型。另外,结构化数据格式则最佳

    • (3)分析数据:采用任意方法对数据进行分析

    • (4)训练算法:大部分时间将用于训练,训练的目的是为了找到最佳的分类回归系数

    • (5)使用算法:首先,我们需要输入一些数据,并将其转换成对应的结构化数值;接着,基于训练好的回归系数就可以对这些数值进行简单的回归计算,判定他们属于哪个类别;在这之后,我们就可以在输出的类别上做一些其他分析工作。

    3,Logistic回归的优缺点

    **优点:**计算代码不多,易于理解和实现,计算代价不高,速度快,存储资源低
      **缺点:**容易欠拟合,分类精度可能不高
      **适用数据类型:**数值型和标称型数据

    4,基于Logistic回归和Sigmoid函数的分类

    **我们想要的函数应该是:能接受所有的输入,然后预测出类型。**例如,在两个类的情况下,上述函数输出0或1。该函数称为海维赛德阶跃函数(Heaviside step function),或者直接称为单位阶跃函数。然而,海维赛德阶跃函数的问题在于:该函数在跳跃点上从0瞬间跳跃到1,这个瞬间跳跃过程有时很难处理。幸好,另一个函数也有类似的性质(可以输出0或者1),且数学上更易处理,这就是Sigmoid函数。Sigmoid函数具体的计算公式如下:在这里插入图片描述
      自变量取值为任意实数,值域[0, 1]
      图5-1给出了Sigmoid函数在不同坐标尺度下的两条曲线图。当x为0时,Sigmoid函数值为0.5。随着x的增大,对应的Sigmoid值将逼近于1;而随着x的减少,Sigmoid值将逼近于0.如果横坐标刻度足够大,Sigmoid函数看起来很像一个阶跃函数。
    在这里插入图片描述

    **解释Sigmoid函数:**将任意的输入映射到了 [0, 1]区间,我们在线性回归中可以得到一个预测值,再将该值映射到 Sigmoid函数中这样就完成了由值到概率的转换,也就是分类任务。
      因此,为了实现Logistic回归分类器,我们可以在每个特征上都乘以一个回归系数,然后把所有的结果值相加,将这个总和带入Sigmoid函数中,进而得到一个范围在0~1之间的数值。任何大于0.5的数据被分入1类,小于0.5即被归入0类,所以,Logistic回归也可以被看成是一种概率估计。
      确定了分类器的函数形式之后,现在的问题变成了:最佳回归系数是多少?如何确定其大小。

    5,基于最优化方法的最佳回归系数确定

    Sigmoid函数的输入记为z,由下面公式得到:
    在这里插入图片描述

    如果采用向量的写法,上述公式可以写成 z = wTx ,它表示将这两个数值向量对应元素相乘,然后全部加起来即得到z值。
    在这里插入图片描述
      其中的向量x是分类器的输入数据,向量w也就是我们要找到的最佳参数(系数),从而使得分类器尽可能的准确,为了寻找该最佳参数,需要用到最优化理论的一些知识。
      然后再看看我们的Logistic回归模型的公式:
    在这里插入图片描述
      这里假设 W>0,Y与X各维度叠加的图形关系,如下图所示(x为了方便取1维):
    在这里插入图片描述
      下面首先学习梯度上升的最优化方法,我们将学习到如何使用该方法求得数据集的最佳参数,接下来,展示如何绘制梯度上升法产生的决策边界图,该图将梯度上升法的分类效果可视化的呈现出来,最后我们将学习随机梯度上升算法,以及如何对其进行修改以获得很好地结果。

    • 可能我们最常听到的是梯度下降算法,它与这里的梯度上升算法是一样的,只是公式中的加法需要变成减法,梯度上升算法用来求函数的最大值,而梯度下降算法是用来求函数的最小值

    6,梯度上升法

    梯度上升法基于的思想是:要找到某函数的最大值,最好的方法是沿着该函数的梯度方向探寻,如果梯度记为,则函数 f(x,y) 的梯度由下面式子表示:
    在这里插入图片描述

    这个梯度意味着要沿着x的方向移动在这里插入图片描述
    ,沿着y方向移动在这里插入图片描述
    ,其中函数f(x,y)必须要在待计算的点上有定义并且可微,一个具体的函数例子见图5-2:
    在这里插入图片描述
      上图中的梯度上升算法沿梯度方向移动了一步,可以看出,梯度算子总是指向函数值增长最快的方向。这里所说的移动方向,而未提到移动量的大小。该量值称为步长,记为。用向量来表示的话,梯度算法的迭代公式如下:
    在这里插入图片描述
      该公式将一直被迭代执行,直至达到某个停止条件为止,比如迭代次数达到某个指定值或算法达到某个可以允许的误差范围。
      基于上面的内容,我们来看一个Logistic回归分类器的应用例子,从图5-3可以看到我们采用的数据集。
    在这里插入图片描述
    梯度上升法的公式推导(LR 损失函数)
      在LR中,应用极大似然估计法估计模型参数,由于Sigmoid函数的特性,我们可以做如下的假设:
    在这里插入图片描述

    上式即为在已知样本X和参数θ的情况下。样本X属性正类(y=1)和负类(y=0)的条件概率,将两个公式合并成一个,如下:
    在这里插入图片描述
      假定样本与样本之间相互独立,那么整个样本集生成的概率即为所有样本生成概率的乘积(也就是n个独立样本出现的似然函数如下):
    在这里插入图片描述
      为了简化问题,我们对整个表达式求对数(即为LR 损失函数):
    在这里插入图片描述
      满足似然函数(θ)的最大的θ值即时我们需要求解的模型。
      那么梯度上升法就像爬坡一样,一点一点逼近极值,而上升这个动作用数学公式表达即为:
    在这里插入图片描述
      其中,α 为步长。

    回到Logistic回归问题,我们同样对函数求偏导。在这里插入图片描述
    对这个公式进行分解,先看:
    在这里插入图片描述
      我们可以看到,对函数求偏导,分解为三部分,然后我们对这三部分分布求导。

    其中:
    在这里插入图片描述
    再由:
    在这里插入图片描述

    可得:
    在这里插入图片描述

    接下来:在这里插入图片描述
    最后:
    在这里插入图片描述
    综合三部分即得到:
    在这里插入图片描述
      如果上面链式分解不好理解的话,可以看下面直接求导(结果是一样的):
    在这里插入图片描述
      注意上面是将梯度上升求最大值,转换为梯度下降了,本质没变。
    因此梯度迭代公式为:
    在这里插入图片描述
    如果为梯度下降,我们注意符号的变化,如下:
    在这里插入图片描述

    7,训练算法:使用梯度上升找到最佳参数

    上图有100个样本点,每个点包含两个数值型特征:X1和X2,在此数据集上,我们将通过使用梯度上升法找到最佳回归系数,也就是拟合出Logistic回归模型的最佳参数。

    所以我们的目标:建立分类器,求解出theta参数
      设定阈值,根据阈值判断结果

    8 Python中的sklearn.linear_model.LogisticRegression

    sklearn.linear_model.LogisticRegression官方API:http://scikitlearn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html

    class sklearn.linear_model.LogisticRegression(penalty='l2', dual=False, tol=0.0001, C=1.0,fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None,solver='liblinear', max_iter=100, multi_class='ovr', verbose=0,warm_start=False, n_jobs=1)
    

    ogistic回归(aka logit,MaxEnt)分类器。

    在多类情况下,如果将“ multi_class”选项设置为“ ovr”,则训练算法将使用“一对多休息”(OvR)方案;如果将“ multi_class”选项设置为“多项式”,则使用交叉熵损失’。(当前,只有“ lbfgs”,“ sag”,“ saga”和“ newton-cg”求解器支持“多项式”选项。)

    该类使用“ liblinear”库,“ newton-cg”,“ sag”,“ saga”和“ lbfgs”求解器实现正则逻辑回归。请注意,默认情况下将应用正则化。它可以处理密集和稀疏输入。使用C排序的数组或包含64位浮点数的CSR矩阵可获得最佳性能;其他任何输入格式将被转换(并复制)。

    “ newton-cg”,“ sag”和“ lbfgs”求解器仅支持带有原始公式的L2正则化,不支持正则化。'liblinear’求解器支持L1和L2正则化,仅针对L2罚分采用对偶公式。仅“ saga”求解器支持Elastic-Net正则化。
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述
    笔记

    底层的C实现在拟合模型时使用随机数生成器选择特征。因此,对于相同的输入数据具有略微不同的结果并不罕见。如果发生这种情况,请尝试使用较小的tol参数。

    在某些情况下,预测输出可能与独立liblinear的输出不匹配。请参见 叙述文档中与liblinear的区别。

    参考文献

    L-BFGS-B –大规模约束优化软件
    朱次有,理查德·伯德,豪尔赫·诺德达尔和何塞·路易斯·莫拉莱斯。 http://users.iems.northwestern.edu/~nocedal/lbfgsb.html

    LIBLINEAR –大型线性分类的库
    https://www.csie.ntu.edu.tw/~cjlin/liblinear/

    凹陷-马克·施密特(Mark Schmidt),尼古拉斯·勒·鲁(Nicolas Le Roux)和弗朗西斯·巴赫(Francis Bach)
    用随机平均梯度最小化有限求和 https://hal.inria.fr/hal-00860051/document

    SAGA – Defazio,A.,Bach F.和Lacoste-Julien S.(2014)。
    SAGA:一种支持非强凸复合物镜的快速增量梯度方法 https://arxiv.org/abs/1407.0202

    于祥富,黄芳兰,林志仁(2011)。双坐标下降
    逻辑回归和最大熵模型的方法。机器学习85(1-2)
    :41-75。 https://www.csie.ntu.edu.tw/~cjlin/papers/maxent_dual.pdf

    例子

    >>> from sklearn.datasets import load_iris
    >>> from sklearn.linear_model import LogisticRegression
    >>> X, y = load_iris(return_X_y=True)
    >>> clf = LogisticRegression(random_state=0).fit(X, y)
    >>> clf.predict(X[:2, :])
    array([0, 0])
    >>> clf.predict_proba(X[:2, :])
    array([[9.8...e-01, 1.8...e-02, 1.4...e-08],
           [9.7...e-01, 2.8...e-02, ...e-08]])
    >>> clf.score(X, y)
    0.97...
    

    在这里插入图片描述

    • 使用实例sklearn.linear_model.LogisticRegression
      在这里插入图片描述
      在这里插入图片描述
    展开全文
  • logistic回归模型是一种线性生成模型。本文将介绍logistic回归模型相关的知识,为了更好地理解模型的决策边界函数,本文同时分析了多元变量的协方差对概率分布的影响。本文脉络:logistic回归模型的含义logistic模型...

    374abf6aca827cb920ed948f6165aa5b.png

    logistic回归模型是一种线性生成模型。本文将介绍logistic回归模型相关的知识,为了更好地理解模型的决策边界函数,本文同时分析了多元变量的协方差对概率分布的影响。

    本文脉络:

    1. logistic回归模型的含义
    2. logistic模型的决策边界函数分析
    3. logistic模型的参数最优化
    4. logistic回归模型与感知机模型的比较
    5. 总结

    logistic回归模型的含义

    我们把分类模型分成两个阶段,推断阶段和决策阶段,推断阶段对联合概率分布建模,然后归一化,得到后验概率。决策阶段确定每个新输入x的类别。

    我们用推断阶段的方法来推导logistic回归模型,首先对类条件概率密度

    和类先验概率分布
    建模,然后通过贝叶斯定理计算后验概率密度。

    考虑二分类的情形,类别C1的后验概率密度;


    则:

    式中的

    就是logistic函数

    因此,logistic回归的值等于输入变量为x的条件下类别为C1的概率

    (1) 当

    分类结果为C1

    (2) 当
    分类结果为C2

    结论:logistic回归值表示所属类的后验概率,无论是二分类还是多分类,分类结果都是后验概率最大所对应的类。

    logistic的决策边界函数分析

    决策边界函数,简而言之,就是函数的两侧是不同的分类结果。

    可定性的分析协方差的三种情况与分布图的关系。

    (a) 图表示正常的协方差矩阵的高斯分布图。
    (b) 图表示协方差矩阵是对角矩阵的高斯分布图。
    (c) 图表示协方差矩阵是对角矩阵且对角元素都相等的高斯分布图。

    ad9ea359bb47cbb3bdc7c6c39423ac09.png

    936330e2cd2c6346ed82135782de893c.png

    e72da02aba4ffe7419fd159bd952c814.png

    logistic的决策边界函数分析

    logistic曲线如下图,红色直线(a=0)表示决策边界函数:

    9e5bce09408da618c19fa9acd4a11618.png

    假设类条件概率密度是高斯分布,即P(x|Ck),然后求解后验概率的表达式,即P(Ck|x)。我们知道,logistic回归值就是所求的后验概率。

    假设类条件概率密度的协方差相同,类条件概率密度为:

    由上面的推导公式得后验概率为:

    其中:

    由后验概率

    的表达式可知,当类条件的协方差矩阵相等时,决策边界函数是随x线性变化的直线。

    结论:如下图,若两类的条件概率密度的协方差相同时(如C1和C2的协方差相同),则决策边界函数是直线;若两类的条件概率密度的协方差不相同时(如C1和C3,C2和C3),则决策边界函数是曲线。判断协方差矩阵是否相同可以根据分布图形形状是否相同来判断,如C1和C2的协方差相同,C3和C1、C2的协方差不相同。

    6d04500c2766dd231cfe2601a7f535d6.png

    假设类条件概率密度符合高斯分布且具有相同的协方差矩阵,则决策边界函数是一条直线;若类条件概率密度符合更一般的指数分布且缩放参数s相同,决策边界函数仍然是一条直线。

    logistic模型的参数最优化

    logistic模型损失函数

    logistic回归模型的含义是后验概率分布,因此可以从概率的角度去设计损失函数。

    考虑两分类情况,假设有N个训练样本,logistic模型是

    表示后验概率y=1的概率,则
    表示y=0的概率,变量
    取值1或0,且分别代表模型

    因此,似然函数

    损失函数

    logistic模型的参数最优化

    损失函数最小化等价于模型参数的最优化,如下图:

    利用梯度下降法求最优解,学习速率

    :

    具体求法本文不介绍,只给出算法的思想。
    为了避免过拟合问题,则在原来的损失函数增加正则项,然后利用梯度下降法求最优解,这里也不展开。

    logistic模型与感知机模型的比较

    logistic模型与感知机模型的相同点

    由上面的分析可知,假设类条件概率分布的协方差相同,则logistic模型的决策边界函数是随x线性变化的直线,因此,感知机模型与logistic模型的分类策略一样,即决策边界函数是一样的。如下图:

    09fc61613a115014cafb7dd150d85481.png

    感知机模型:当点落在直线上方,y>0,则分类结果为C1;反之为C2。
    logistic模型:当点落在上方,y>0,则后验概率P(C1|X)>0.5,分类结果为C1;反之为C2。

    考虑到对输入变量x进行非线性变换

    ,感知机和logistic模型的分类策略仍一样,决策边界函数相同,如下图:

    6b1f55a5e0037a2193325ff35c82fc17.png

    感知机模型:当点落在圆外,y>0,则分类结果为C1;反之为C2。
    logistic模型:当点落在圆外,y>0,则后验概率P(C1|X)>0.5,分类结果为C1;反之为C2。

    logistic模型与感知机模型的异同点

    (1) logistic回归模型限制值的范围在0~1,感知机模型对值范围没有限制,因此logistic模型相比感知机模型,对异常点有更强的鲁棒性。如下图,当有异常数据时,logistic模型要好于感知机模型。

    ce81747f5a30675211edadc505746645.png

    (2) 感知机模型用误分类点到超平面的距离衡量损失函数,而logistic模型则从概率角度去衡量损失函数。

    总结

    logistic回归的含义是后验概率分布,用概率的角度去设计似然函数,logistic模型相比于感知机模型对异常数据具有更好的鲁棒性。

    展开全文
  • 今天下午碰到一个老师咨询我有关Logistic回归结果解读的问题,我觉得有必要给大家整理分享一下。首先,我们要先了解什么是Logistic回归logistic回归主要用来预测离散因变量(分类因变量)与一组解释变量(自变量)之间...
  • Logistic分布设X是连续随机变量,Logistic分布指的是一种连续型的概率分布,其分布函数Logistic分布分布函数和密度函数分别如图所示。Logistic分布密度函数其中,μ是位置参数,γ(γ>0)是形状参数。密度函数f(x)...
  • 在我们做统计分析之前,面对大量杂乱无章的数字往往会做个散点图,以对数据有直观的了解。例如,某超市的销售主管想要知道,顾客的收入水平是否对购买新的智能手机有影响。...因此可得以下回归直线:P=...
  • 因变量为无序多分类资料,或者因变量虽为有序多分类但不满足比例优势假定(平行性检验P>0.05),可采用无序多分类的logistic...无序多分类的logistic回归模型与有序多分类的logistic回归模型不同。有序多分类的logi...
  • 编者按logistic回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断等领域。例如,探讨引发疾病的危险因素,并根据危险因素预测疾病发生的概率等。以胃癌病情分析为例,选择两组...
  • Logistic回归原理及公式推导
  • Logistic 回归数学公式推导

    千次阅读 2018-11-16 12:26:38
    1.&nbsp;引言 此前的博客中,我们已经介绍了几个分类算法。...逻辑斯蒂回归。 他凭借易于实现与优异的性能,拥有着十分广泛的使用,他不仅可以进行二分类问题的解决,也可以解决多分类问题,简单起见,...
  • Logistic回归为概率型非线性回归模型,是研究二分类观察结果与一些影响因素之间关系的一种多 变量分析方法。通常的问题是,研究某些因素条件下某个结果是否发生,比如医学中根据病人的一些症状来判断它是 否患有...
  • Logistic回归

    2019-01-28 23:02:10
    Logistic回归损失函数的极大似然推导:西瓜书公式3.27怎么推来的? Logistic回归损失函数的最优化算法:什么是牛顿法、拟牛顿法? 为什么不用线性回归做分类? Logistic回归为什么不像线性回归那样用平方损失函数...
  • 最近学习Logistic回归算法,在网上看了许多博文,笔者觉得这篇文章http://blog.kamidox.com/logistic-regression.html写得最好。但其中有个关键问题没有讲清楚:为什么选择-log(h(x))作为成本函数(也叫损失函数)。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 987
精华内容 394
关键字:

logistic回归公式