| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 逻辑回归算法推理与实现 -> 正文阅读 |
|
[人工智能]逻辑回归算法推理与实现 |
Overview逻辑回归通常用于分类算法,例如预测某事是 逻辑回归性能在线性分类中是最好的,其核心为基于样本属于某个类别的概率。这里的概率必须是连续的并且在 学好逻辑回归,需要了解逻辑回归的概念、优势比 (OR) 、Logit 函数、Sigmoid 函数、 Logistic 函数及交叉熵或Log Loss Prerequisiteodds ratioexplainodds ratio是预测变量的影响。优势比取决于预测变量是分类变量还是连续变量。
例如,假设 X 是受影响的概率,Y 是不受影响的概率,则 O R = X Y OR= \frac{X}{Y} OR=YX? ,那么 O R = P ( 1 ? P ) OR = \frac{P}{(1-P)} OR=(1?P)P? ,P是事件的概率。 让概率的范围为 odds和probability 的区别
例如赛马,一匹马跑 100 场比赛,赢了 80 场,那么获胜的概率是 80 100 = 0.80 = 80 % \frac{80}{100} = 0.80 = 80\% 10080?=0.80=80% ,获胜的几率是 80 20 = 4 : 1 \frac{80}{20}=4:1 2080?=4:1 总结:probability 和 odds 之间的主要区别:
通过示例陈述公式假设一个体校的录取率中,10 个男生中有 7 个被录取,而10 个女生中有3个被录取。找出男生被录取的概率? 那么通过已知条件,设 P 为录取概率,Q则为未被录取的概率,那么
因此,一个男生被录取的几率为 O R = 2.33 0.42 = 5.44 OR=\frac{2.33}{0.42}=5.44 OR=0.422.33?=5.44 Logit 函数logit函数是 以一辆汽车是否出售为例,1为出售,0为不出售,则等式 P i = B 0 + B 1 ? ( P r i c e i ) + ? P_i=B_0+B_1 * (Price_i) + \epsilon Pi?=B0?+B1??(Pricei?)+? l n ( P 1 ? P ) = β 0 + β 1 X 1 + β 2 X 2 . . . + β n X N ln(\frac{P}{1-P}) = \beta_0 + \beta_1X_1+\beta_2X_2... + \beta_nX_N ln(1?PP?)=β0?+β1?X1?+β2?X2?...+βn?XN? ,对于简单的逻辑回归,有两个系数:
例如:假设简单逻辑回归模型是 L n ( o d d s ) = ? 5.5 + 1.2 ? X Ln(odds) = -5.5 + 1.2*X Ln(odds)=?5.5+1.2?X ,那么 β 0 = ? 5.5 \beta_0=-5.5 β0?=?5.5 , β 1 = 1.2 \beta_1 = 1.2 β1?=1.2 ,意味着,X=0时, o d d s ? r a t i o = 0 odds\ ratio = 0 odds?ratio=0 ,X每增加一个单位 odds ration 增加 1.2((X 增加2个单位odds ratio增加 2.4…) 求解 通过上面的公式实际上不明白这些具体是什么,就可以通过求P来找到有结果的概率与截距 β 0 β_0 β0? 之间的关系,已知 n = l o g a b n=log_ab n=loga?b , $ a^n=b$ ,那么一个简单的逻辑回归公式为 l o g ( P 1 ? P ) = β 0 + β 1 X log(\frac{P}{1-P}) = \beta_0+\beta1X log(1?PP?)=β0?+β1X ,对这个公式进行推导:
当
X
=
0
X=0
X=0 ,则
β
1
?
X
\beta_1*X
β1??X 没意义,公式为:
P
=
f
r
a
c
e
β
0
(
1
+
e
β
0
)
P = frac{e^{β_0}}{(1+e^{β_0})}
P=fraceβ0?(1+eβ0?) ,其中e是一个常数,python为 如果单纯不算概率,只看截距符号,那么满足:
通过例子来说明这点:假设研究为抽烟对心脏健康的影响,下表显示了一个逻辑回归
由表可知,截距为 -1.93,假设smoking系数为0,那么概率带入公式为:
P
=
e
β
0
1
+
e
β
0
=
P
=
e
?
1.93
1
+
e
?
1.93
=
0.126
P=\frac{e^{\beta_0}}{1+e^{\beta_0}} = P=\frac{e^{-1.93}}{1+e^{-1.93}} = 0.126
P=1+eβ0?eβ0??=P=1+e?1.93e?1.93?=0.126 如果 Smoking是一个连续变量(每年的吸烟量),在这种情况下, 再如果是吸烟者应该怎么计算,假设,每年吸烟量为3kg,那么公式为: P = e β 0 + β 1 X ( 1 + e β 0 + β 1 X ) P = \frac{e^{β0 + β_1X}}{(1+e^{β0 + β_1X})} P=(1+eβ0+β1?X)eβ0+β1?X? ,在这里 X=3,那么 P = e β 1 + β 2 X ( 1 ? e β 1 + β 2 X ) = e ? 1.93 + 0.38 ? 3 ( 1 ? e ? 1.93 + 0.38 ? 3 ) = 0.31 P=\frac{e^{\beta_1+\beta_2X}}{(1-e^{\beta_1+\beta_2X})} = \frac{e^{-1.93+0.38*3}}{(1-e^{-1.93+0.38*3})} = 0.31 P=(1?eβ1?+β2?X)eβ1?+β2?X?=(1?e?1.93+0.38?3)e?1.93+0.38?3?=0.31 ;即得出,每年3KG烟草消耗量10年后有心脏问题的概率是 31% sigmoidlogit 函数的逆函数称Sigmoid 函数,sigmoid方程来源于 logit 为: P = e l o g ( o d d s ) ( 1 ? e l o g ( o d d s ) ) = 1 e ? l o g ( o d d s ) + 1 = 1 1 + e ? z P=\frac{e^{log(odds)}}{(1-e^{log(odds)})} = \frac{1}{e^{-log(odds)+1}} = \frac{1}{1+e^{-z}} P=(1?elog(odds))elog(odds)?=e?log(odds)+11?=1+e?z1? 。 在python中,
交叉熵或对数损失交叉熵 Cross-Entropy,通常用于量化两个概率分布之间的差异。用于逻辑回归,公式为: H = ∑ x = n ( P ( x ) × l o g ( q ( x ) ) H=\sum^{x=n}(P(x) \times log(q(x)) H=∑x=n(P(x)×log(q(x)) Maximum Likelihood Estimation最大似然估计, 首先,定义一个称为 θ \theta θ theta 的参数,该参数定义概率密度函数的选择和该分布的参数。它可能是一个数值向量,其值平滑变化并映射到不同的概率分布及其参数。在最大似然估计中,我们希望在给定特定概率分布及其参数的最大化情况下从联合概率分布中观察数据的概率,形式上表示为: P ( X ∣ θ ) P(X|\theta) P(X∣θ) ,在这种情况下,条件概率通常使用分号 ; 而不是竖线 | ,因为 θ \theta θ 不是随机变量,而是未知参数。表达为 P ( X ; θ ) P(X;\theta) P(X;θ) ,或 P ( x 1 , x 2 , ? . . . ? x n ; θ ) P(x_1,x_2,\ ...\ x_n;\theta) P(x1?,x2?,?...?xn?;θ) 。 这样产生的条件概率被称为在给定模型参数 ( θ \theta θ)的情况下观察变量 X X X 的概率,并使用符号 L 来 表示似然函数。例如: L ( X ; θ ) L(X;\theta) L(X;θ)。而最大似然估计的目标是找到使似然函数最大化的一组参数 ( θ \theta θ ),例如产生最大似然值,如: m a x ( L ( X ; θ ) ) max(L(X;\theta)) max(L(X;θ)) 鉴于上述提到的变量 X X X 是由n个样本组成,可以将其定义为在给定概率分布参数 θ \theta θ 的情况下,变量 X X X 的联合概率,如这里数据样本为 x 1 , x 2 , ? . . . ? , x n x_1,x_2,\ ...\ ,x_n x1?,x2?,?...?,xn? 的联合概率,同时表示为 L ( x 1 , x 2 , ? . . . ? , x n ; θ ) L(x_1,x2,\ ...\ ,x_n;\theta) L(x1?,x2,?...?,xn?;θ) 大多数情况下,求解似然方程很复杂。会使用对数似然作为一种解决方案。由于对数函数是单调递增的,因此对数似然和似然中的最优参数是相同的。因此定义条件最大似然估计为: l o g ( P ( x i ; h ) ) log(P(x_i ; h)) log(P(xi?;h))。 用逻辑回归模型替换h,需要假设一个概率分布。在逻辑回归的情况下,假设数据样本为二项式概率分布,其中每个示例都是二项式的一个结果。伯努利分布只有一个参数:成功结果的概率 P,那么为:
那么这个平均值为: P ( y = 1 ) ? 1 + P ( y = 0 ) ? 0 P(y=1)*1+P(y=0)*0 P(y=1)?1+P(y=0)?0,给出P的值公式可以转换为: P ? 1 + ( 1 ? p ) ? 0 P*1+(1-p)*0 P?1+(1?p)?0;这种公式看似没有意义,那么通过一个小例子来了解下
运行示例会为每个案例打印类别y 和预测概率p,其中每个案例的概率是否接近;这里也可以使用对数更新似然函数, l o g ( p ) ? y + l o g ( 1 – p ) ? ( 1 – y ) log(p) * y + log(1 – p) * (1 – y) log(p)?y+log(1–p)?(1–y);最后可以根据数据集中实例求最大似然和最小似然
对于计算二项式分布的对数似然相当于计算二项式分布[交叉熵,其中 LR算法实例在研究如何从数据中估计模型的参数之前,我们需要了解逻辑回归准确计算的内容。 模型的线性部分(输入的加权和)计算成功事件的log-odds。 odds ratio: β 0 + β 1 × x 1 + β 2 × x 2 ? . . . ? β n × x n \beta_0+\beta_1 \times x_1 + \beta_2 \times x_2\ ...\ \beta_n \times x_n β0?+β1?×x1?+β2?×x2??...?βn?×xn? 该模型估计了每个级别的输入变量的log-odds。 由上面信息了解到,几率 到这里已经和逻辑回归模型很接近了,对数函数公式可以简化为,
P
=
e
l
o
g
(
o
d
d
s
)
(
1
?
e
l
o
g
(
o
d
d
s
)
)
P=\frac{e^{log(odds)}}{(1-e^{log(odds)})}
P=(1?elog(odds))elog(odds)? ,以上阐述了如何从log-odds转化为odds,然后在到逻辑回归模型。下面通过Python 中的示例来具体计算
通过这个例子,可以看到odds被转换成大约 1.4 的log-odds,然后正确地转回 0.8 的成功概率。 逻辑回归实现首先将实现分为3个步骤:
预测编写一个预测函数,在评估随机梯度下降中的候选系数值时以及在模型最终确定测试数据或新数据进行预测时。 下面是预测**predict()**函数,它预测给定一组系数的行的输出值。第一个系数是截距,也称为偏差或 b0,它是独立的,不负责输入值。
准备一些测试数据,Y代表真实的类别
这里有两个输入值,和三个系数,系数是自定义的固定值,那么预测的公式就为
完整的代码
估计系数这里可以使用我随机梯度下降来估计训练数据的系数值。随机梯度下降需要两个参数:
在每个epoch更新训练数据中每一行的每个系数。系数会根据模型产生的错误进行更新,误差为预期输出与预测值之间的差异。错误会随着epoch增加而减少 将每个都加权,并且这些系数以一致的方式进行更新,用公式可以表示为
那么整合一起为
这里跟踪了跟踪每个epoch误差平方的总和,以便我们可以在每个epoch中打印出error,实例中使用 0.3 学习率并训练100 个 epoch,每个epoch会打印出其误差平方,最终会打印总系数集 套用真实数据集糖尿病数据集 是根据基本的医疗信息,预测印第安人5年内患糖尿病的情况。这是一个二元分类,阴性0与阳性1直接的关系。采用了二项式分布,也可以采用其他分布,如高斯等。
上述是对整个数据集的预测百分比,也可以对对应的类的信息进行输出
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 2:55:13- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |