Duxy's

a digged hole

机器学习思路整理-分类器

发现md+tex其实挺好的,纯文本编写blog。

本章接着玩分类器,使用分类器能够将样本数据分为2类或更多的类。

分类器

线性回归其实是可以做分类器的。

线性回归将得到一个\( math h_{\theta}(x)\),在其对应的直线上,截出若干区间,判断待分类数据\(x'\)对应的\( math h_{\theta}(x')\)在哪个区间上,即可对其分类。但是,由于线性函数拟合的结果太容易被干扰,所以分类器并不优化。因而需要用到下面的手段来实现

S形函数

使用逻辑函数(logistic function),又被称为S形函数(sigmod function):\(g(z)\)来进行划分,可以获得一个跨越区间,大部分的数据在\(g(z)\)函数的作用下,其分类结果值要么是1,要么是0,均远离0.5附近这个“说不清楚”的范围,所以分类的效果远比线性分类的效果要好得多。
通常情况下,\(g(z)\)被定义为:

\( math g(z) = \frac{1}{1+e^{-z}} \)

这个函数很接近分段函数,但又不是分段函数,这是为了能够方便计算,方便拟合以快速获得较好的结果。如果是分段函数,就很难用数学方法和程序去实现了。????(使用分段函数来实现的被称作感知机学习算法

可以看出,\(g(z)\)其实是从z=0切分的。显然,样本数据多半不从0切分,那么我们对样本数据做一个空间移动,使它变换到z=0上,就可以使用\(g(z)\)来分类了。于是,分类器中,新的\( math h_{\theta}(x) \)产生了:
\( math h_{\theta}(x) = g(\theta^Tx) \)

一开始先考虑将样本分为两类的情况,那么可以假定\( math h_{\theta}(x) \)的结果是:样本被标记为1的概率。那么,样本被标记为0的概率是:\( math 1 - h_{\theta}(x) \)。所以有:
\[
P(y=1|x; \theta) = h_{\theta}(x)\\
P(y=0|x; \theta) = 1 - h_{\theta}(x)\\
P(y|x; \theta) = (h_{\theta}(x))^y*(1 - h_{\theta}(x))^{1-y}
\]

上面的公式,在传入真正的\(x\)后,会获得一个概率P。如果分类得比较准,那么获得的概率会非常大;如果分类不准,那么就恰好取得大概率的反,也就是小概率。
举个例子:假设\( math h_{\theta}(x) \)接近1,就意味着我们的分类结果接近1。如果样本集结果为1,证明我们分类准确,此时P接近1,否则证明我们分类不准确,P接近0。对\( math h_{\theta}(x) \)接近0时有类似的证明。

那么,我们就需要尽可能的提高预测准确性,其判断依据根据似然估计:
\[
L(\theta) = p(\vec{y} | X; \theta)\\
= \prod_{i=1}^{m}{p(y^{(i)}|x^{(i)}; \theta)}
\]
计算得到log估计:
\( math l(\theta) = logL(\theta) = \sum_{i=1}^{m}{y^{(i)}logh_{\theta}(x^{(i)}) + (1-y^{(i)})log(1-h_{\theta}(x^{(i)}))} \)
通过求偏导得到:\( math \frac{\partial}{\partial \theta_j}l(\theta) = (y - h_{\theta}(x))x_j \)
所以可以利用梯度下降法求解,其中迭代变量为:\( math \theta_j := \theta_j + \alpha(y^{(i)} - h_{\theta}(x^{(i)}))x_j^{(i)} \)

得到了一个与线性回归一样的迭代方法!!!

log似然估计\(l(\theta)\)的优化

在线性回归和分类的概率模型中,都提到了\(l(\theta)。使\)l(\theta)\(最大化的\)\theta$也就是我们想要求解的对象。使用牛顿迭代方法可以加快求解速度。而使用海森矩阵(hessian Matrix)可以对牛顿迭代法进一步优化。公式就不在此推导了。

k分类-多项式分布

将样本分到k个类中,标记为\({1,2,…,k}\),称为k分类。通常使用多项式分布处理。
定义\( math \phi_i \)为分为第i类的概率,则\( math \phi_k = \sum_{i=1}^{k-1}{\phi_i}\)。
所以
\[
P(y;\phi) = \phi_1^{1\{y=1\}} \phi_2^{1\{y=2\}}…\phi_k^{1\{y=k\}}\\
= \phi_1^{1\{y=1\}} \phi_2^{1\{y=2\}}…\phi_k^{1-\sum_{i=1}^{k-1}{1\{y=i\}}}\\
=...
\]
然后中间的推导用到了指数族分布的一些性质,没弄懂。再然后得到:
\[
h_{\theta}(x) = \left[\begin{matrix}
\frac{exp(\theta_1^Tx)}{\sum_{j=1}^{k}{exp(\theta_j^Tx)}}\\
\frac{exp(\theta_2^Tx)}{\sum_{j=1}^{k}{exp(\theta_j^Tx)}}\\

\frac{exp(\theta_{k-1}^Tx)}{\sum_{j=1}^{k}{exp(\theta_j^Tx)}}\\
\end{matrix}\right]
\]
当然,\( math p(y = k | x; \theta) = 1 - \sum_{i=1}^{k-1}{\phi_i} \)
最后,就得到了log似然函数:

\( math l(\theta) = \sum_{i=1}^{m}{log\prod_{l=1}^{k}{\left(\frac{e^{\theta_l^Tx^{(i)}}}{\sum_{j=1}^{k}{e^{\theta_j^Tx^{(i)}}}}\right)^{1\{y^{(i)}=l\}}}} \)

有一句很经典的话:当你决定用多项式分布时,前面的都不用看了,直接用结论就好了。