| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 多分类任务ovo、ovr及softmax回归 -> 正文阅读 |
|
[人工智能]多分类任务ovo、ovr及softmax回归 |
多分类任务OVO、OVR及softmax回归 – 潘登同学的Machine Learning笔记文章目录简单回顾Logistic回归
Logistic回归实现多分类问题
我们想到 y ^ \hat{y} y^?的值不是有概率含义嘛, 把多分类任务转换成很多个二分类任务, 然后根据概率的大小分类; 考察如下分类任务: One-vs-all(one-vs-rest)OVR的思想就是用一个类别去与其他类别进行二分类, 然后进行多次这样的分类, 选择概率值最大的那个类别; OVR的一个核心是生成假数据集; 当对红色做二分类时, 就要将其他两个变成同一类别:
h θ ( 1 ) ( x ) = P ( y = 1 ∣ x ; θ ) h θ ( 2 ) ( x ) = P ( y = 2 ∣ x ; θ ) h θ ( 3 ) ( x ) = P ( y = 3 ∣ x ; θ ) h_{\theta}^{(1)}(x) = P(y=1|x;\theta) \\ h_{\theta}^{(2)}(x) = P(y=2|x;\theta) \\ h_{\theta}^{(3)}(x) = P(y=3|x;\theta) \\ hθ(1)?(x)=P(y=1∣x;θ)hθ(2)?(x)=P(y=2∣x;θ)hθ(3)?(x)=P(y=3∣x;θ)
实战OVR对上次的鸢尾花数据进行多分类上次我们对鸢尾花数据分类只是分为属于setosa和不属于setosa; 其实这不就是OVR的一部分嘛, 我们这次把3个类别setosa,versicolor,virginica都实现分类; 话不多说, 上代码!!!
OVO(One vs One)另外一个做多分类的思想就是把所有类别的数据, 每个分类器只挑两个类别做二分类, 得出属于哪一类; 最后把所有分类器的结果放在一起, 选择最多的那个类别;
以三分类为例
A与B进行二分类
分为A类
A与C进行二分类
B与C进行二分类
分为C类
投票选出A类
这也属于机器学习的经典范式, 就是自下而上的决策, 根据所有分类器对结果进行投票, 票数高者就是最终结果; 实战OVO对鸢尾花数据进行多分类在sklearn中, OVO的参数是’multinomial’, 话不多说, 上代码!!!
那就是Softmax!!! Softmax回归
后面还会详细讲loss函数, 先有初步感知即可; 从广义线性回归推导出 softmax像Logistic回归假设服从二项分布; softmax回归假设服从多项分布的, 可以理解为二项分布的推广, 也契合了做多分类的特点; 推导说明多项分布是指数族分布
P
(
y
;
φ
)
=
φ
1
I
{
y
=
1
}
φ
2
I
{
y
=
2
}
…
φ
k
?
1
I
{
y
=
k
?
1
}
φ
k
I
{
y
=
k
}
=
φ
1
I
{
y
=
1
}
φ
2
I
{
y
=
2
}
…
φ
k
?
1
I
{
y
=
k
?
1
}
φ
k
1
?
∑
i
=
1
k
?
1
I
{
y
=
i
}
=
e
log
?
(
φ
1
I
{
y
=
1
}
φ
2
I
{
y
=
2
}
…
φ
k
?
1
I
{
y
=
k
?
1
}
φ
k
1
?
∑
i
=
1
k
?
1
I
{
y
=
i
}
)
=
e
(
∑
i
=
1
k
?
1
I
{
y
=
i
}
log
?
φ
i
+
(
1
?
∑
i
=
1
k
?
1
I
{
y
=
i
}
)
log
?
φ
k
)
=
e
(
∑
i
=
1
k
?
1
I
{
y
=
i
}
log
?
φ
i
φ
k
+
log
?
φ
k
)
=
e
(
∑
i
=
1
k
?
1
log
?
φ
i
φ
k
T
(
y
)
i
+
log
?
φ
k
)
=
e
(
∑
i
=
1
k
log
?
φ
i
φ
k
T
(
y
)
i
+
log
?
φ
k
)
(
因
为
log
?
φ
k
φ
k
为
0
,
所
以
加
上
之
后
不
影
响
)
=
e
(
η
T
T
(
y
)
?
a
(
η
)
)
\begin{aligned} P(y;\varphi) &= \varphi_1^{I\{y=1\}}\varphi_2^{I\{y=2\}}\ldots\varphi_{k-1}^{I\{y=k-1\}}\varphi_k^{I\{y=k\}} \\ &= \varphi_1^{I\{y=1\}}\varphi_2^{I\{y=2\}}\ldots\varphi_{k-1}^{I\{y=k-1\}}\varphi_k^{1-\sum_{i=1}^{k-1}I\{y=i\}} \\ &= e^{\log (\varphi_1^{I\{y=1\}}\varphi_2^{I\{y=2\}}\ldots\varphi_{k-1}^{I\{y=k-1\}}\varphi_k^{1-\sum_{i=1}^{k-1}I\{y=i\}})} \\ &= e^{(\sum_{i=1}^{k-1}I\{y=i\}\log\varphi_i + (1-\sum_{i=1}^{k-1}I\{y=i\})\log\varphi_k)} \\ &= e^{(\sum_{i=1}^{k-1}I\{y=i\}\log\frac{\varphi_i}{\varphi_k} + \log\varphi_k)} \\ &= e^{(\sum_{i=1}^{k-1}\log\frac{\varphi_i}{\varphi_k}T(y)_i + \log\varphi_k)} \\ &= e^{(\sum_{i=1}^{k}\log\frac{\varphi_i}{\varphi_k}T(y)_i + \log\varphi_k)} (因为\log\frac{\varphi_k}{\varphi_k}为0,所以加上之后不影响)\\ &= e^{(\eta^TT(y)-a(\eta))}\\ \end{aligned}
P(y;φ)?=φ1I{y=1}?φ2I{y=2}?…φk?1I{y=k?1}?φkI{y=k}?=φ1I{y=1}?φ2I{y=2}?…φk?1I{y=k?1}?φk1?∑i=1k?1?I{y=i}?=elog(φ1I{y=1}?φ2I{y=2}?…φk?1I{y=k?1}?φk1?∑i=1k?1?I{y=i}?)=e(∑i=1k?1?I{y=i}logφi?+(1?∑i=1k?1?I{y=i})logφk?)=e(∑i=1k?1?I{y=i}logφk?φi??+logφk?)=e(∑i=1k?1?logφk?φi??T(y)i?+logφk?)=e(∑i=1k?logφk?φi??T(y)i?+logφk?)(因为logφk?φk??为0,所以加上之后不影响)=e(ηTT(y)?a(η))? 这样我们就把多项式分布写成了指数族分布, 而有了指数族分布, 就能推导出softmax回归的公式; 由指数族分布推导softmax回归
η = [ log ? φ 1 φ k log ? φ 2 φ k ? log ? φ k ? 1 φ k log ? φ k φ k ] \eta = {\begin{bmatrix} \log\frac{\varphi_1}{\varphi_k} \\ \log\frac{\varphi_2}{\varphi_k} \\ \vdots \\ \log\frac{\varphi_{k-1}}{\varphi_k} \\ \log\frac{\varphi_{k}}{\varphi_k} \\ \end{bmatrix}} η=?????????logφk?φ1??logφk?φ2???logφk?φk?1??logφk?φk????????????
η i = φ i φ k ? φ i = φ k e η i 又 ∵ ∑ i = 1 k φ i = ∑ i = 1 k φ k e η i = 1 ∴ φ k = 1 ∑ i = 1 k e η i ∴ φ i = e η i ∑ i = 1 k e η i {\eta_i = \frac{\varphi_i}{\varphi_k}} \Rightarrow {\varphi_i = \varphi_k e^{\eta_i}} \\ 又 \because \sum_{i=1}^{k}\varphi_i = \sum_{i=1}^{k}\varphi_k e^{\eta_i} = 1 \\ \therefore \varphi_k = \frac{1}{\sum_{i=1}^{k}e^{\eta_i}}\\ \therefore \varphi_i = \frac{e^{\eta_i}}{\sum_{i=1}^{k}e^{\eta_i}}\\ ηi?=φk?φi???φi?=φk?eηi?又∵i=1∑k?φi?=i=1∑k?φk?eηi?=1∴φk?=∑i=1k?eηi?1?∴φi?=∑i=1k?eηi?eηi??
softmax回归公式y i ^ = h θ ( x i ) = [ P ( y i = 1 ∣ x i ; θ ) P ( y i = 2 ∣ x i ; θ ) ? P ( y i = k ∣ x i ; θ ) ] = 1 ∑ j = 1 k e θ j T x i [ e θ 1 T x i e θ 2 T x i ? e θ k T x i ] \hat{y^i} = h_{\theta}(x^i) = {\begin{bmatrix} P(y^i=1|x^i;\theta) \\ P(y^i=2|x^i;\theta) \\ \vdots \\ P(y^i=k|x^i;\theta) \\ \end{bmatrix}} = \frac{1}{\sum_{j=1}^{k}e^{\theta_j^Tx^i}} {\begin{bmatrix} e^{\theta_1^Tx^i} \\ e^{\theta_2^Tx^i} \\ \vdots \\ e^{\theta_k^Tx^i} \\ \end{bmatrix}} yi^?=hθ?(xi)=??????P(yi=1∣xi;θ)P(yi=2∣xi;θ)?P(yi=k∣xi;θ)???????=∑j=1k?eθjT?xi1????????eθ1T?xieθ2T?xi?eθkT?xi???????? 图示softmax回归模型softmax回归的Loss函数推导的流程基本上与Logistic回归的推导类似:
取对数
取负号
最大似然估计构造损失函数
最大化正确分类的概率
将连乘变为连加
将取最大变成Loss取最小
log ? L ( θ ) = ∑ i = 1 m log ? P ( y i ∣ x i ; θ ) = ∑ i = 1 m log ? ∏ j = 1 k ( θ j T x i ∑ l = 1 k θ l T x i ) I { y i = j } \begin{aligned} \log {\Bbb{L}(\theta)} &= \sum_{i=1}^{m}\log P(y^i|x^i;\theta) \\ &= \sum_{i=1}^{m}\log \prod_{j=1}^{k} (\frac{\theta_j^Tx^i}{\sum_{l=1}^{k}\theta_l^Tx^i})^{I\{y^i=j\}} \\ \end{aligned} logL(θ)?=i=1∑m?logP(yi∣xi;θ)=i=1∑m?logj=1∏k?(∑l=1k?θlT?xiθjT?xi?)I{yi=j}?
逻辑回归和 Softmax 回归的关系逻辑回归可以看成是 Softmax 回归的特例,就是 k=2 时候的 softmax 回归,因为当 我们把 softmax 回归公式 k=2 带入的话 h θ ( x ) = 1 e θ 1 T x + θ 2 T x [ e θ 1 T x i e θ 2 T x i ] = 1 e 0 ? T x + ( θ 2 ? θ 1 ) T x [ e 0 ? T x i e ( θ 2 ? θ 1 ) T x i ] = [ 1 1 + e ( θ 2 ? θ 1 ) T x i 1 ? 1 1 + e ( θ 2 ? θ 1 ) T x i ] \begin{aligned} h_{\theta}(x) &= \frac{1}{e^{\theta_1^Tx + \theta_2^Tx}} {\begin{bmatrix} e^{\theta_1^Tx^i} \\ e^{\theta_2^Tx^i} \\ \end{bmatrix}} \\ &= \frac{1}{e^{\vec{0}^Tx + (\theta_2-\theta_1)^Tx}} {\begin{bmatrix} e^{\vec{0}^Tx^i} \\ e^{(\theta_2-\theta_1)^Tx^i} \\ \end{bmatrix}} \\ &= {\begin{bmatrix} \frac{1}{1 + e^{(\theta_2-\theta_1)^Tx^i}} \\ 1-\frac{1}{1 + e^{(\theta_2-\theta_1)^Tx^i}} \\ \end{bmatrix}} \\ \end{aligned} hθ?(x)?=eθ1T?x+θ2T?x1?[eθ1T?xieθ2T?xi?]=e0Tx+(θ2??θ1?)Tx1?[e0Txie(θ2??θ1?)Txi?]=[1+e(θ2??θ1?)Txi1?1?1+e(θ2??θ1?)Txi1??]? 此时softmax回归就是参数为 ( θ 2 ? θ 1 ) (\theta_2-\theta_1) (θ2??θ1?)的逻辑回归 实战softmax回归因为sklearn没有封装专门的softmax回归, 而是把他放进了LogisticRegression里面, 还记得前面的OVR和OVO嘛? LogisticRegression的OVO就是softmax(网上说的), 但是根据前面的原理, 他俩显然不一样, 所以这里有待考证… 关键是知道直接多分类的算法就是softmax; 算法实现好处理 就把他当作softmax吧, 话不多说, 上代码!!!
softmax回归就是这样了, 继续下一章吧!pd的Machine Learning |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/27 8:39:56- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |