LR损失函数推导

LR的推导

LR逻辑回归是一种监督学习分类算法,其实现了给定数据集到0,1的一种映射。

给定数据集D={(x1,y1),(x2,y2),...,(xm,ym)},其中(xi,yi)表示第i个样本,其中,xi=(xi1,xi2,...,xin),即每个数据有n个特征,类别y={0,1},要求训练数据,将数据分成两类0或1。

假定xi的n个特征为线性关系,即:

                                                  

这里为了表示简洁,在数据样本xi添加一个特征x0=1,将b作为一维特征。则有:

 以上实现了用样本xi的n个特征来表示样本的表达式,现在需要寻找一个映射使得z可以转换为0或者1。

                                                                                      

可以使用阶跃函数,但是阶跃函数性质不好,不可导求解过于复杂,这里选用Sigmoid函数:

                                                                              

                                                                

当输入一个Z时,y输出一个0--1之间的数,假定y>0.5则最终结果判为1,y<0.5最终结果为0。当y=0.8时,最终结果为1,y=0.8也表征了此时输出为1的概率,令:

                                                                                

将样本特征线性表示,然后输入到Sigmoid函数,输出结果在0--1之间,并且输出结果表征了分类结果为1的概率,即有:

                                                                

因此,可求得预测值为y的概率表达式为:

                                                                    

假设样本独立且同分布,最大似然估计:

                                                            

进而求最大对数似然估计:

                                                         

那么,LR的损失函数是什么:

                                                                                          

损失函数表征预测值与真实值之间的差异程度,P(Y|X)为样本为Y的概率,数值越大说明预测值与真实值越接近即损失函数应该越小,当P(Y|X)越大的,-logP(Y|X)越小,刚好符合损失函数的定义。

在此损失函数可以取为最大似然估计函数的相反数,其次除以m这一因子并不改变最终求导极值结果,通过除以m可以得到平均损失值,避免样本数量对于损失值的影响。

这里采用随机梯度下降,损失函数求偏导:

                              

迭代公式:

                                      

损失函数:表征模型预测值与真实值的不一致程度。记为函数L(Y,f(X))

结构风险函数 = 经验风险项  +  正则项  其中损失函数为经验风险项的重要组成部分

                                                  

前半部分为经验风险项,后半部分为正则项。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LR分析法是一种自底向上的语法分析方法,它可以根据给定的文法推导出一个句子的语法分析树。在C语言编译器中,LR分析法常用于语法分析阶段。 LR分析法的实现需要以下几个步骤: 1. 定义文法:需要定义一个符号集合和一个产生式集合,符号包括终结符和非终结符,产生式指定如何将一个符号序列转换成另一个符号序列。 例如,C语言的文法可以表示为: ``` <program> ::= <declaration-list> <declaration-list> ::= <declaration> | <declaration-list> <declaration> <declaration> ::= <var-declaration> | <fun-declaration> <var-declaration> ::= <type-specifier> ID ; <fun-declaration> ::= <type-specifier> ID ( <params> ) <compound-stmt> <params> ::= <param-list> | VOID <param-list> ::= <param> | <param-list> , <param> <param> ::= <type-specifier> ID <compound-stmt> ::= { <local-declarations> <statement-list> } <local-declarations> ::= <local-declarations> <var-declaration> | ε <statement-list> ::= <statement> | <statement-list> <statement> <statement> ::= <expression-stmt> | <compound-stmt> | <selection-stmt> | <iteration-stmt> | <return-stmt> <expression-stmt> ::= <expression> ; | ; <selection-stmt> ::= if ( <expression> ) <statement> | if ( <expression> ) <statement> else <statement> <iteration-stmt> ::= while ( <expression> ) <statement> <return-stmt> ::= return ; | return <expression> ; <expression> ::= <var> = <expression> | <simple-expression> <var> ::= ID | ID [ <expression> ] <simple-expression> ::= <additive-expression> <relop> <additive-expression> | <additive-expression> <additive-expression> ::= <additive-expression> + <term> | <additive-expression> - <term> | <term> <term> ::= <term> * <factor> | <term> / <factor> | <factor> <factor> ::= ( <expression> ) | ID | NUM <type-specifier> ::= int | void <relop> ::= <= | < | > | >= | == | != ``` 2. 构建LR自动机:根据文法构建LR自动机,自动机包括状态集、转换函数和动作函数。 3. 进行分析:使用LR分析法对输入的句子进行分析,根据自动机的状态转换和动作函数,最终得到语法分析树。 C语言编译器中常用的LR分析器包括Yacc和Bison。这些工具可以自动生成LR分析器的代码,简化了实现的过程。当然,如果需要手动实现LR分析器,也需要理解以上的步骤和相关算法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值