干货 | 对数线性模型之 Logistic 回归、SoftMax 回归和最大熵模型

对数线性模型(Logistic回归算法) 1.Logistic分布: logistic分布定义:设X是连续随机变量,X服从logistic分布,即为X具有下列分布函数和密度函数:     其中,mu为位置参数,r>0为形状参数; logistic分布的分布函数F(x)的图形与密度函数f(x)的图形如下所示:   分布函数 密度函数 分布函数的图形是一条S形曲线,该曲线是以(mu,1/2)为中心对称,在曲线中心 阅读详情

本文介绍对数线性分类模型,在线性模型的基础上通过复合函数(sigmoid,softmax,entropy )将其映射到概率区间,使用对数损失构建目标函数。首先以概率的方式解释了logistic回归为什么使用sigmoid函数和对数损失,然后将二分类扩展到多分类,导出sigmoid函数的高维形式softmax函数对应softmax回归,最后最大熵模型可以看作是softmax回归的离散型版本,logistic回归和softmax回归处理数值型分类问题,最大熵模型对应处理离散型分类问题。

作者 | 文杰

编辑 | yuquanle

Logistic回归

A、Logistic回归

分类问题可以看作是在回归函数上的一个分类。一般情况下定义二值函数,然而二值函数构成的损失函数非凸,一般采用sigmoid函数平滑拟合(当然也可以看作是一种软划分,概率划分):从函数图像我们能看出,该函数有很好的特性,适合二分类问题。至于为何选择Sigmoid函数,后面可以从广义线性模型导出为什么是Sigmoid函数。

逻辑回归可以看作是在线性回归的基础上构建的分类模型,理解的角度有多种(最好的当然是概率解释和最小对数损失),而最直接的理解是考虑逻辑回归是将线性回归值离散化。即一个二分类问题(二值函数)如下:



Sigmoid函数:

640?wx_fmt=png

0-1损失的二分类问题属于一种硬划分,即是与否的划分,而sigmoid函数则将这种硬划分软化,以一定的概率属于某一类(且属于两类的加和为1)。

Sigmoid函数将线性回归值映射到 的概率区间,从函数图像我们能看出,该函数有很好的特性,适合二分类问题。 因此逻辑回归模型如下:


这里对于目标函数的构建不再是最小化函数值与真实值的平方误差了,按分类原则来讲最直接的损失因该是0-1损失,即分类正确没有损失,分类错误损失计数加1。但是0-1损失难以优化,存在弊端。结合sigmoid函数将硬划分转化为概率划分的特点,采用概率的对数损失(概率解释-N次伯努利分布加最大似然估计),其目标函数如下:

同样采用梯度下降的方法有:

又:

所以有:


B、概率解释

逻辑回归的概率解释同线性回归模型一致,只是假设不再是服从高斯分布,而是服从0-1分布,由于 ,假设随机变量y服从伯努利分布是合理的 。即:

所以最大化似然估计有:

logistic采用对数损失(对数似然函数)原因:

1) 从概率解释来看,多次伯努利分布是指数的形式。由于最大似然估计导出的结果是概率连乘,而概率(sigmoid函数)恒小于1,为了防止计算下溢,取对数将连乘转换成连加的形式,而且目标函数和对数函数具备单调性,取对数不会影响目标函数的优化值。

2)从对数损失目标函数来看,取对数之后在求导过程会大大简化计算量。


Softmax回归


A、Softmax回归

Softmax回归可以看作是Logistic回归在多分类上的一个推广。考虑二分类的另一种表示形式:

当logistic回归采用二维表示的话,那么其损失函数如下:

其中,在逻辑回归中两类分别为,二在softmax中采用,两个随机变量组成二维向量表示,当然隐含约束.为了更好的表示多分类问题,将(不一定理解为的取值为,更应该理解为可以取类)多分类问题进行如下表示:

其中向量的第位为1,其他位为,也就是当 时将其映射成向量时对应第位为。采用多维向量表示之后,那么对于每一维就变成了一个单独的二分类问题了,所以softmax函数形式如下:

其中函数值是一个维的向量,同样采用对数损失(N元伯努利分布和最大似然估计),目标函数形式是logistic回归的多维形式。

其中表示第个样本的标签向量化后第维的取值或者.可以看出Softmax的损失是对每一类计算其概率的对数损失,而logistic回归是计算两类的回归,其本质是一样。Logistic回归和Softmax回归都是基于线性回归的分类模型,两者无本质区别,都是从伯努利分结合最大对数似然估计。只是Logistic回归常用于二分类,而Softmax回归常用于多分类。而且Logistic回归在考虑多分类时只考虑类。

概率解释(求导推导):

二分类与多分类可以看作是二元伯努利分布到多元伯努利分布的一个推广,概率解释同Logistic回归一致。详细解释放到广义线性模型中。


B、二分类转多分类思想

对于多分类问题,同样可以借鉴二分类学习方法,在二分类学习基础上采用一些策略以实现多分类,基本思路是“拆解法”,假设N个类别,经典的拆分算法有“一对一”,“一对多”,“多对多”,

一对一的基本思想是从所有类别中选出两类来实现一个两分类学习器,即学习出个二分类器,然后对新样本进行预测时,对这 个分类器进行投票最终决定属于那一类。

一对多的基本思想是把所有类别进行二分类,即属于类和非两类,这样我们就需要N个分类器,然后对新样本进行预测时,与每一个分类器比较,最终决定属于哪一类。这其实就是Softmax的思想,也是SVM多分类的思想。

最大熵模型

很奇怪,为什么会把最大熵模型放到这,原因很简单,它和Logistic回归和SoftMax回归实在是惊人的相似,同属于对数线性模型。

A、熵的概念

640?wx_fmt=png

信息熵:熵是一种对随机变量不确定性的度量,不确定性越大,熵越大。若随机变量退化成定值,熵为0。均匀分布是“最不确定”的分布 。

假设离散随机变量X的概率分布为,则其熵为:

其中熵满足不等式,为取值数。

联合熵:对于多个随机变量的不确定性可以用联合熵度量。

假设离散随机变量的联合概率分布为,则其熵为:

条件熵:在给定条件下描述随机变量的不确定性。

假设离散随机变量,在给定的条件下的不确定性为条件熵H(X|Y),也就等于。

互信息:衡量两个随机变量相关性的大小。

相对熵(KL散度):衡量对于同一个随机变量两个概率分布的差异性。

有互信息和相对熵的定义有下式:

关于熵的介绍就到此,不细究,虽然上面的这些定义在机器学习中都会遇到,不过后面涉及到的主要还是熵和条件熵,互信息。

B、最大熵模型

最大熵原理是概率模型学习中的一个准则。最大熵原理认为,学习概率模型时,在所有可能的概率模型分布中(满足所有条件下),熵最大的模型是最好的模型。熵最大即为最均匀的分布,从某种角度讲均匀分布总是符合我们理解的损失风险最小,也就是“不要不所有的鸡蛋放到一个篮子里,均匀的放置”。

给定训练集:


假设表示输入,表示输出,分类模型是一个以条件概率分布输出,也就是说在满足条件的所有可能集中,条件熵最大的模型即为最好的模型。其中条件为隐藏在数据的期望。

一般来讲,最大熵模型常用于处理离散化数据集,定义随机变量的特征模板,从数据中统计他们的期望作为最大熵模型的条件

特征函数:

和满足某一事实否则

约束条件:对于任意的特征函数,我们可以统计其在数据中的经验分布的期望:

特征函数关于模型和先验的条件期望:

所以,满足约束条件的模型集合为:

因此最大熵模型的形式化表示如下:

由拉格让日乘子法,引入拉格让日乘子,定义拉格让日函数:

根据拉格朗日乘子法,,当且仅当满足拉格朗日乘子法的所有必要条件等式成立,原问题也就是一个最小化最大问题:

里层是最大化,外层的最小化。

对偶问题是:

求解对偶问题,第一步最小化内部:

是关于的函数,最优解记为:

那么外层最大化目标函数为:

为了求解,根据KKT条件对求偏导:

求解得:

这里,虽然我们不知道,但是由于,所以分母一定是对的所有可能的归一化因子:

因此,的最优解为:

代回,我们可以得到最终的分类模型,同样我们发现最大熵模型也是一个对数线性模型。

回顾对偶函数,内部最小化求解得到了,回到外部目标,将代回拉格朗日函数有:



C、概率解释

已知训练集的经验概率分布,条件概率分布的对数似然函数为:

其中,我们发现对数似然函数与条件熵的形式一致,最大熵模型目标函数前面有负号(这与最大化对数似然函数完全相反),同时最大熵模型中有约束条件。也正是因为约束条件,我们将原问题转化为对偶问题后发现,在满足约束条件的对偶函数的极大化等价于最大化对数似然函数。

当条件概率满足约束条件,在对偶问题求解过程中我们有:

代入到对数似然函数,同样有:

最后,我们再来看对偶函数表达式,我们发现,第一项其实是的联合熵,第二项是的信息熵,回看熵的示意图,我们发现,我们的目标还是最大化条件熵。

640?wx_fmt=png

下面再来对比下Logistic回归,SoftMax回归,最大熵模型:

1)同属于对数线性模型。

2)Logistic回归和SoftMax回归都基于条件概率,满足一个伯努利分布,N重伯努利分布;而最大熵模型以期望为准,没有该假设。

3)由于都采用线性模型,三者都假设特征之间是独立的。

最大熵模型的优化问题:

最大熵模型从拉格朗日乘子法最大化对偶函数,还是从最大化对数似然函数,其目标函数如下:

常用的梯度优化算法都可以,另外对于最大熵模型也有专门的算法有GIS IIS 算法 。

代码实战

A、Logistic回归

int LogReg()
{
    const char *file="data\\LogReg.txt";
    const string model="gradAscent";
    const double alpha=0.01;
    Matrix x;
    cout<<"loadData"<<endl;
    cout<<"----------------------"<<endl;
    x.LoadData(file);
    Matrix y;
    y=x.getOneCol(x.col-1);
    x.deleteOneCol(x.col-1);

    if(model=="gradAscent")
        gradAscent_Log(x,y);
    if(model=="stoGradAscent")
        stoGradAscent_Log(x,y);

    return 0;
}

  int gradAscent_Log(Matrix x,Matrix y)  
      {
          if(y.col!=1)
          {
              cout<<"logReg is two class"<<endl;
              return -1;
          }
          Matrix weights(x.col,y.col,0.1,"T");
          Matrix xT = x.transposeMatrix();
  
          float alpha=0.01;///迭代步长
          float error=0;///记录错误率
          int iter=0;
          int i,j;
          Matrix z(y.row,y.col,0,"T");//最好确定矩阵的大小
          Matrix grad(x.col,y.col,0,"T");
          for(iter=0; iter<5000; iter++)
          {
              z = x * weights;
              for(i=0; i<z.row; i++)
              {
                  z.data[i][0]=sigmoid(z.data[i][0]);
              }
              z = y - z;
              error=0;
              for(i=0; i<x.row; i++)///统计错误率
                  error+=z.data[i][0];
              grad = xT * z;///计算负梯度方向
              for(i=0; i<grad.row; i++)
                  grad.data[i][0]*= alpha;///负梯度方向与步长的乘积确定迭代值
              weights = weights + grad;///往负梯度方向走一个步长
          }
  
          /**
          验证算法的正确性
          **/  
          int er1=0,er2=0;
          Matrix train=x * weights;
          cout<<"test"<<endl;
          for(i=0; i<y.row; i++)
          {
              if(train.data[i][0]>0)
              {
                  cout<<1-y.data[i][0]<<endl;
                  er1+=(1-y.data[i][0]);
              }
              else  
              {
                  cout<<0-y.data[i][0]<<endl;
                  er2-=(0-y.data[i][0]);
              }
          }
      }

B、SoftMax回归

int SoftMaxReg()
{
    const char *file="data\\LogReg.txt";
    const string model="gradAscent";
    const double alpha=0.01;
    Matrix x;
    cout<<"loadData"<<endl;
    cout<<"----------------------"<<endl;
    x.LoadData(file);
    Matrix y;
    y=x.getOneCol(x.col-1);
    y=one_hot(y,2);
    x.deleteOneCol(x.col-1);

    if(model=="gradAscent")
        gradAscent_SoftMax(x,y);
    if(model=="stoGradAscent")
        stoGradAscent_SoftMax(x,y);

    return 0;
}


  /**
      随机梯度下降与梯度下降法不同的是在负梯度方向的确定,梯度下降是根据所有的样本来确定负梯度方向,
      而随机梯度下降每次只看一个样本点来确定负梯度方向,虽然不完全可信,但随着迭代次数增加,同样收敛
        
 **/  
int stoGradAscent_SoftMax(Matrix x,Matrix y)//随机梯度下降每一次选择m个样本进行求梯度下降方向,该代码中只选择一个样本进行求解梯度下降方向与数值
      {
          Matrix xOneRow(1,x.col,0,"T");
          Matrix xOneRowT(x.col,1,0,"T");
  
          Matrix weights(x.col,y.col,0.1,"T");
          Matrix z(1,y.col,0,"T");//最好确定矩阵的大小
          Matrix grad(x.col,y.col,0,"T");
          double zRowSum=0;
          double alpha=0.001;///步长
          double error;
          int i,j,k,iter;
          for(iter=0; iter<5000; iter++)
          {
              for(i=0; i<x.row; i++)
              {
                  xOneRow=x.getOneRow(i);///随机选择一个样本点,这里没有作随机选择,而是按序选择
                  z = xOneRow * weights;
                  zRowSum=0;
                  for(j=0;j<z.col;j++)
                  {
                      z.data[0][j]=sigmoid(z.data[0][j]);
                      zRowSum+=z.data[0][j];//求和
                  }
                  for(j=0;j<z.col;j++)
                  {
                      z.data[0][j]/=zRowSum;//归一化
                      if(iter%1000==0)
                          cout<<z.data[0][j] <<" s ";
                  }
                  if(iter%1000==0)
                      cout<<endl;
                  for(j=0;j<y.col;j++)
                  {
                      z.data[0][j]=y.data[i][j]-z.data[0][j];
                  }
                  xOneRowT = xOneRow.transposeMatrix();
                  grad = xOneRowT * z;///根据一样样本的预测误差来确定负梯度方向
                  for(k=0; k<grad.row;k++)
                  {
                      for(j=0;j<grad.col; j++)
                      {
                          grad.data[k][j]*= alpha;///负梯度方向与步长的乘积确定迭代值
                      }
                  }
                  weights = weights + grad; ///迭代
              }
          }
          //验证算法的正确性
          /**
          验证算法的正确性
          **/  
          Matrix test=x * weights;
          cout<<"test"<<endl;
          for(i=0; i<y.row; i++)
          {
              if(test.data[i][0]>test.data[i][1])
                  cout<<0-y.data[i][1]<<" ";
              else  
                  cout<<1-y.data[i][1]<<" ";
              cout<<endl;
          }
      }

完整代码:

https://github.com/myazi/myLearn/blob/master/LineReg.cpp

欢迎扫码关注:

640?wx_fmt=other

机器学习---对数几率回归 (0,1)内,这个函数称为Logistic函数(logistic function),也称为Sigmoid函数(sigmoid。做的是找到J(θ)函数的最小值。首先,找一个合适的预测函数,一般表示为h函数,该函数就是需要找的分类函数,它用来预。最直观的,可以将线性模型的输出值再套上一个函数y = g(z),最简单的就是“单位阶跃函数”现,当真实值y=0时,第一项为0,当真实值y=1时,第二项为0,所以,这个损失函数其实在每次。然后,构造一个Cost函数(损失函数),该函数表示预测的输出(h)与。 阅读详情

相关推荐

Maven证书信任危机:PKIX path building failed的全面解析与实战修复

本文全面解析了Maven构建中常见的`PKIX path building failed`证书验证错误。该错误通常在使用特定镜像仓库或自建仓库时,因SSL/TLS证书不被JDK默认信任而触发。文章深入剖析了错误根源,对比了临时忽略检查与永久导入证书等不同修复方案的安全性与适用场景,并推荐通过`keytool`将证书导入JDK信任库的根治方法,以保障构建安全与稳定。

zzz56的博客 508

softmax和最大熵

最大熵

gldzkjdxwzs的博客 985

Android中的Service:Binder,Messenger,AIDL(2)

前言前面一篇博文介绍了关于Service的一些基本知识,包括service是什么,怎么创建一个service,创建了一个service之后如何启动它等等。在这一篇博文里有一些需要前一篇铺垫的东西,建议没有看过前一篇博文的同学先去看一下前一篇: Android中的Service:默默的奉献者 (1) 。但是在前一篇博文中也有一些遗漏的东西——主要是关于bindService()这一块的具体细节。由于这

lypeer的专栏 5万+

【机器学习基础】对数几率回归(logistic回归)

对数几率回归,也称为逻辑回归,是一种广义线性模型。在逻辑回归中,通过使用sigmoid函数,将线性回归的输出映射到0和1之间,表示样本属于某一类的概率。所以它属于分类模型。逻辑回归模型的训练通常通过最大化似然函数来完成,常用的解决方法是使用梯度下降算法进行模型优化,通过迭代调整模型参数,使得模型的预测结果逐渐接近实际标签。逻辑回归可以表示为一个关于θ的函数hθ(x),即hθ(x) = P(y=1|x;θ),表示给定特征x和参数θ的条件下,样本属于正例的概率。

z135733的博客 2975

智能车竞赛飞檐走壁组赛道制作全攻略:从电磁线铺设到立体元素搭建

本文提供了智能车竞赛飞檐走壁组赛道制作的完整指南。从电磁线选材、电流控制与精准铺设等基础入手,详细解析了垂直墙面、圆筒、跷跷板等核心立体元素的构建技巧与过渡处理。重点分享了确保赛道稳定、符合规则且便于调试的实战经验,帮助参赛队伍搭建可靠的立体赛道,为车模算法调试奠定坚实基础。

weixin_29292535的博客 1294

R语言实战:5分钟搞定相加交互效应分析(逻辑回归/Cox回归/GLMM/GEE全支持)

本文详细介绍了如何利用R语言中的`scitable`包快速实现相加交互效应分析,支持逻辑回归、Cox回归、GLMM和GEE等多种模型。通过自动化计算RERI、AP和SI等指标,大幅提升临床研究和流行病学分析的效率与准确性,特别适合处理多因素联合作用的复杂场景。

fanta的博客 672

【机器学习-西瓜书】三、线性回归;对数线性回归

墙裂推荐阅读:y的衍生物 关键词:最小二乘法;正则化;对数线性回归; y的衍生物 3.1 基本形式 假设样本x有d个属性,线性模型(linear model)试图学得一个通过属性的线性组合来进行预测的函数,即f(x)=w1x1+w2x2+⋅⋯+wdxd+bf(x)=w1x1+w2x2+⋅⋯+wdxd+bf(x)=w_{1}x_{1} + w_{2}x_{2}+\cdot \cdo...

人工智能技术学习与分享 1万+

易康eCognition9.0分类|规则集和机器学习的方法的面向对象的多尺度分割分类

基于易康eCognition9.0软件的规则集和机器学习的方法的面向对象的多尺度分割分类

weixin_46493028的博客 1万+

对数线性模型之一(逻辑回归), 广义线性模型学习总结

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

玉心sober 5万+

别再只看pLDDT了!AlphaFold预测结果解读保姆级指南:pLDDT、PAE、pTM、ipTM到底怎么看?

本文详细解析了AlphaFold预测结果中的关键指标pLDDT、PAE、pTM和ipTM,帮助用户从单一依赖pLDDT进阶到全面理解蛋白质结构预测。通过实际案例和技巧,指导如何正确解读这些指标,避免常见错误,并提供了从预测到发表的实用建议。

weixin_29100399的博客 357

在 Zynq 7010 上运行 VxWorks 7.0 的详细流程【持续更新】

本文介绍了在Zynq 7010开发板上运行VxWorks 7.0的完整流程。主要包括:1)使用Vivado创建硬件设计,配置Zynq模块并生成比特流文件;2)通过Workbench 4创建VxWorks工程,配置启动参数并生成镜像;3)下载运行步骤。此外还讲解了使用Workbench 4开发VSB和VIP工程的方法,包括工程创建、配置和调试流程。文中提供了关键操作截图和注意事项,为开发者提供了完整的Zynq 7010平台VxWorks开发解决方案。

weixin_45397344的博客 1224

envi最大似然分类_干货 | 对数线性模型之 Logistic 回归、SoftMax 回归和最大熵模型...

点击上方“AI有道”,选择“星标”公众号重磅干货,第一时间送达本文介绍对数线性分类模型,在线性模型的基础上通过复合函数(sigmoid,softmax,entropy )将其映射到概率区间,使用对数损失构建目标函数。首先以概率的方式解释了logistic回归为什么使用sigmoid函数和对数损失,然后将二分类扩展到多分类,导出sigmoid函数的高维形式softmax函数对应softma...

weixin_39861627的博客 529

泛微OA集成阿里云短信(E9保姆教程)

泛微OA集成阿里云短信(E9保姆教程)

技术分享 517

02-09 对数线性回归(波士顿房价预测)

文章目录对数线性回归(波士顿房价预测)导入模块获取数据训练模型可视化 对数线性回归(波士顿房价预测) 导入模块 import pandas as pd import numpy as np import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties from sklearn.linear_m...

小猿取经 960

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

用最大熵搞懂Softmax

先前我们学习到的sigmoid函数它可以用来解决单一分类问题, 因为sigmoid函数本质上就是把感知机的输出投影到一个区间在\([0,1 ]\)的概率分布中, 但问题是如果我们的分类有多个那么就不能使用sigmoid了, 因为我们虽然可以把每个感知机输出的结果归一但我们无法把整层所以感知机的输出做归一化。这里我们就要引出softmax函数了, 那么它是证明计算的呢?...

Kevin_Carpricron的博客 1038

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

机器学习-对数几率回归(逻辑回归)算法

对数几率回归(Logistic Regression),也称逻辑回归,虽然名字中含有回归,但其实是一种分类算法。找一个单调可微函数将分类任务中的真实标记与线性回归模型的预测值联系起来,是一种广义线性回归。

有一分热,发一分光。 4383

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【王木头学科学|深度学习】7. softmax、最大熵,两者有什么关系?最大熵对机器学习为什么如此重要?

笔记来源于B站UP主@王木头学科学 笔记来源https://www.bilibili.com/video/BV1cP4y1t7cP 问题引入 sigmoid函数 如果数值恰好落在这个绿色区域的话,这里梯度是非常小的,如果这个梯度再方向传播,传播到前面几层,那几乎不剩啥了,这就叫做梯度消失,为解决这个问题,就需要换成ReLu函数。 ReLu函数 ReLu函数如果是大于0,就是一条直线各个地方梯度保持一致,这个就能避免梯度消失问题。但是ReLU函数它的最大值可以是无穷大的,而神经网络的损失函数不论是极大

阿飞的博客 1818

softmax与最大熵——学习笔记

问题:sigmoid参数只能处理二分类问题,比如对某个对象的概率的计算结果是0.6,但对多个对象计算结果之和就不一定为一。所以要解决多分类问题,就要求激活函数满足以下条件:1,计算结果>=02,计算结果和为一如上图,softmax函数就解决了上述问题,用e作为底,使结果始终大于零,再用累加的方法,使所有结果之和始终为一。上述图片为softmax计算损失函数的过程。

2403_88971056的博客 368

机器学习-对数几率回归

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 与一元线性回归、多元线性回归任务不同,此文中涉及到的对数几率回归,意在实现分类任务,对比回归任务意在预测一个实际的数值。思路均来源于周志华老师《机器学习》第三章后半部分的内容。 一、对数几率回归 1.1 算法原理 1.1.1 广义线性模型 对于线性模型,虽然简单直接,但有很多种变化。对于...

qq_46250749的博客 3350

对数线性模型:逻辑斯谛回归和最大熵模型

http://blog.youkuaiyun.com/pipisorry/article/details/52788947 对数线性模型log linear model 对数线性模型有:最大熵模型和逻辑斯谛回归。 特征和指示特征 对数线性模型的一般形式 [概率图模型原理与技术] 某小皮 对数线性模型的不同形式 因子图 将因子转换到对数空间,成为对数线性模型。 ...

皮皮blog 5059

机器学习笔记_ 最大熵模型

熵的概念 引例: 如果随机变量x的可能取值为 X=x1,x2,...,xkX={x_1,x_2,...,x_k}。若用n位的y: y1,⋯,yn(每个y有c种取值)y_1,\cdots, y_n(每个y有c种取值)表示,则n的取值期望。∑i=1kp(x=xi)log1p(x=xi)logc\sum\limits_{i=1}^{k}p(x=x_i) \frac {log\frac{1}{p(x=x

LandscapeMi 1673

机器学习之 线性回归,lasso,ridge回归,对数几率回归(逻辑回归),线性判别分析

@机器学习之 线性回归,对数几率回归(逻辑回归),线性判别分析 属性特征处理: 二值离散特征(0和1) 有序连续特征(1,2,3对应小 中 大) 无序离散特征(one-hot编码) 线性回归 均方误差最小化(最小二乘估计) 几何意义上是预测值和实际值的差平方(并不是垂直距离的误差,那样成了正交差) aigmin(w,b) 求最小值的w和b 极大似然估计(估计概率分布的参数值) 问:线性回归中怎么能利用极大似然估计去估计y(预测值)的分布呢 将误差代替之后,y就是原概率密度函数中独立同分布的随机变

qq_42524215的博客 1508

04 ,线性回归 : 目标函数推导,对数求解,求导结果,θ 求出来了,真实情况

1 ,目的 : 求 θ 不要忘了 : 一切的目的,都是求 θ 似然函数 : 只要 θ 能使似然函数最大,这个 θ ,就是最优解,距离现实最近的解 2 ,似然函数最大值 : 似然函数 : 思考 : 1 ,乘法不好算,想使用对数来算 2 ,可行性 : 反正求最大值,只要对数取到了最大值,似然函数整体就也是最大值 3 ,为什么用 log : 因为求导以后,就变成了加法,容易计算 对数求解 : 3 ,累乘 =》 累加 : 使用对数,对函数进行变换 转化 : 目的 : 让这个函数去到最大值 剔除无关项

孙砚秋的博客 1286

对线性回归、逻辑回归、各种回归的概念学习

回归问题的条件/前提: 1) 收集的数据 2) 假设的模型,即一个函数,这个函数里含有未知的参数,通过学习,可以估计出参数。然后利用这个模型去预测/分类新的数据。 1. 线性回归 假设 特征 和 结果 都满足线性。即不大于一次方。这个是针对 收集的数据而言。 收集的数据中,每一个分量,就可以看做一个特征数据。每个特征至少对应一个未知的参数。这样就形成了一个线性模型函数,向量表示形

viewcode的专栏 28万+

机器学习笔记(七)线性回归与对数几率回归

线性模型即用线性代数中的线性方程表示一个模型,诸如fx=wTx+b的形式。 其中训练得出w和b后,模型就得以确认。 其中w其实就是代表各个属性的权重值。 线性模型有三种任务,分别为回归任务、二分类任务和多分类任务。 1.线性回归 试图学得fx=wTx+b ≈ y y即实际值。在输出的所有(w,b)中,采用均方误差最小的原则来选取最好的性能度量。 更一般的情形是如本节开头的数据集D,样例

HwJh*MSNAuC% 3101

机器学习教程 之 线性模型:线性回归、对数几率回归、线性判别分析

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

冯良骏 的 博客 6064
上一篇: 华为的员工为什么愿意艰苦奋斗?
下一篇: 数值数据的特征预处理|ML基础
机器学习算法那些事
博客等级 码龄9年 1633粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值