更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:
https://www.cnblogs.com/nickchen121/p/11686958.html
Softmax回归
Softmax回归属于多分类(c_1,c_2,ldots,c_k)模型,它通过估计某个样本属于(k)个类别的各自的概率达到多分类的目的。它是逻辑回归的一般形式,即当(k=2)的时候退化为逻辑回归。
一、Softmax回归详解
1.1 让步比
由于softmax回归更多的是逻辑回归的多分类形式,此处只给出softmax的定义及公式。
让步比可以理解成有利于某一特定事件的概率,可以定义为
[{frac{p}{1-p}}
]
在已知二分类问题的情况下每个分类的概率分别为(hat{y_i})和(1-hat{y_i}),可以定义logit函数,即让步比的对数形式(log-odds)为
[egin{align}
log{it}(hat{y_i}) & = log{frac{p(y=1|x,omega)}{p(y=0|x,omega)}} \
& = log{frac{hat{y_i}}{1-hat{y_i}}} \
& = log{frac{{frac{1}{1+e^{-omega^Tx}}}}{{frac{-omega^Tx}{1+e^{-omega^Tx}}}}} \
& = omega^Tx
end{align}
]
其中(log{it}(p))函数等于事件发生的概率除以不发生的概率取对数,即表示特征值和对数概率之间的线性关系。
1.2 不同类之间的概率分布
现在假设有一个(k)元分类模型,即样本的输出值为(c_1,c_2,ldots,c_k),对于某一个实例预测为(c_i)样本的概率总和为(1),即
[sum_{i=1}^k p(y=i|x,omega) =1
]
该(k)元分类模型依据让步比的对数形式可以得到
[egin{align}
& ln{frac{p(y=1|x,omega)}{p(y=k|x,omega)}} = {omega_1^T}x \
& ln{frac{p(y=2|x,omega)}{p(y=k|x,omega)}} = {omega_2^T}x \
& cdots \
& ln{frac{p(y=k-1|x,omega)}{p(y=k|x,omega)}} = {omega_{k-1}^T}x \
& ln{frac{p(y=k|x,omega)}{p(y=k|x,omega)}} = {omega_{k}^T}x = 0 \
end{align}
]
通过对上述公式化简可得
[egin{align}
& {frac{p(y=1|x,omega)}{p(y=k|x,omega)}} = e^{{omega_1^T}x} \
& {frac{p(y=2|x,omega)}{p(y=k|x,omega)}} = e^{{omega_2^T}x} \
& cdots \
& {frac{p(y=k-1|x,omega)}{p(y=k|x,omega)}} = e^{{omega_{k-1}^T}x} \
end{align}
]
[egin{align}
e^{{omega_1^T}x}+e^{{omega_1^T}x}+cdots+e^{{omega_{k-1}^T}x} & = sum_{i=1}^{k-1} e^{{omega_i^T}x} \
& = {frac{p(y=1|x,omega)}{p(y=k|x,omega)}} + {frac{p(y=2|x,omega)}{p(y=k|x,omega)}} + cdots + {frac{p(y=k-1|x,omega)}{p(y=k|x,omega)}} \
& = {frac{p(y=1|x,omega)+p(y=2|x,omega)+cdots+p(y=k-1|x,omega)}{p(y=k|x,omega)}} \
& = {frac{1-p(y=k|x,omega)}{p(y=k|x,omega)}} \
end{align}
]
既得(p(y=k|x,omega)={frac{1}{1+sum_{i=1}^{k-1} e^{{omega_i^T}x}}})
通过(p(y=k|x,omega))即可推出(p(y=j|x,omega)={frac{e^{{omega_j^T}x}}{1+sum_{t=1}^{k-1} e^{{omega_t^T}x}}} quad j=1,2,ldots,k-1),因此可以得到(k)元分类模型的(k)个类的概率分布为
[p(c=k|x,omega)=
egin{cases}
{frac{e^{{omega_j^T}x}}{1+sum_{t=1}^{k-1} e^{{omega_t^T}x}}} quad j=1,2,ldots,k-1 quad if类别为1,2,ldots,k-1 \
{frac{1}{1+sum_{i=1}^{k-1} e^{{omega_i^T}x}}} quad if类别为k \
end{cases}
]
1.3 目标函数
上一节基于({omega_k^T}x=0)计算出每个分类的概率,然而现实中往往({omega_k^T}x
eq0),可以使用上一节的推导过程假设({omega_k^T}x
eq0)则可以推导出(k)元分类模型的(k)个类的概率分布为
[p(c=k|x,omega)={frac{e^{{omega_j^T}x}}{sum_{t=1}^{k} e^{{omega_t^T}x}}} quad j=1,2,ldots,k
]
通过上述(k)个类别的概率分布可得似然函数
[egin{align}
L(omega) & = prod_{i=1}^m prod_{k=1}^k p(c=k|x_i,omega)^{{y_i}_k} \
& = prod_{i=1}^m prod_{k=1}^k ({frac{e^{({omega_k^T}x_i)}}{sum_{t=1}^k e^{{omega_t^T}x_i}}})^{y_ik}
end{align}
]
通过似然函数即可得对数似然函数即目标函数(注:该目标函数与交叉熵损失函数的形式一致,二元逻辑回归可以理解为交叉熵损失函数两个类变量的特殊形式,Softmax回归可以理解成交叉熵损失函数的多个类变量的特殊形式,交叉熵为
[egin{align}
J_m(omega) & = log{L(omega)} \
& = sum_{i=1}^msum_{k=1}^k {y_i}_k ({omega_k^T}x_i - logsum_{t=1}^k e^{({omega_t^T}x_i)})
end{align}
]
1.4 目标函数最大化
由于Softmax回归和逻辑回归都可以使用梯度上升法使得目标函数最大化,并且方式一样,因此此处只给出目标函数对参数的偏导。
[{frac{partial{J(omega)}}{partialomega_k}}=sum_{i=1}^m ({y_i}_k-p({y_i}_k|x_i,omega_k))x_i
]
二、Softmax回归优缺点
2.1 优点
- 基于模型本身可以处理多分类问题
2.2 缺点
- 计算极其复杂
(2^2)