机器学习思路整理-分类器 #
Date: 2015/6/12
发现md+tex其实挺好的,纯文本编写blog。
本章接着玩分类器,使用分类器能够将样本数据分为2类或更多的类。more分类器
线性回归其实是可以做分类器的。
线性回归将得到一个mathhθ(x),在其对应的直线上,截出若干区间,判断待分类数据x′对应的mathhθ(x′)在哪个区间上,即可对其分类。但是,由于线性函数拟合的结果太容易被干扰,所以分类器并不优化。因而需要用到下面的手段来实现S形函数
使用逻辑函数(logistic function),又被称为S形函数(sigmod function):g(z)来进行划分,可以获得一个跨越区间,大部分的数据在g(z)函数的作用下,其分类结果值要么是1,要么是0,均远离0.5附近这个“说不清楚”的范围,所以分类的效果远比线性分类的效果要好得多。
通常情况下,g(z)被定义为:
mathg(z)=11+e−z
这个函数很接近分段函数,但又不是分段函数,这是为了能够方便计算,方便拟合以快速获得较好的结果。如果是分段函数,就很难用数学方法和程序去实现了。????(使用分段函数来实现的被称作感知机学习算法)
可以看出,g(z)其实是从z=0切分的。显然,样本数据多半不从0切分,那么我们对样本数据做一个空间移动,使它变换到z=0上,就可以使用g(z)来分类了。于是,分类器中,新的mathhθ(x)产生了:
mathhθ(x)=g(θTx)
一开始先考虑将样本分为两类的情况,那么可以假定mathhθ(x)的结果是:样本被标记为1的概率。那么,样本被标记为0的概率是:math1−hθ(x)。所以有:
P(y=1|x;θ)=hθ(x) P(y=0|x;θ)=1−hθ(x) P(y|x;θ)=(hθ(x))y∗(1−hθ(x))1−y
上面的公式,在传入真正的x后,会获得一个概率P。如果分类得比较准,那么获得的概率会非常大;如果分类不准,那么就恰好取得大概率的反,也就是小概率。
举个例子:假设mathhθ(x)接近1,就意味着我们的分类结果接近1。如果样本集结果为1,证明我们分类准确,此时P接近1,否则证明我们分类不准确,P接近0。对mathhθ(x)接近0时有类似的证明。
那么,我们就需要尽可能的提高预测准确性,其判断依据根据似然估计:
L(θ)=p(→y|X;θ) =m∏i=1p(y(i)|x(i);θ)
计算得到log估计:
mathl(θ)=logL(θ)=∑mi=1y(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))
通过求偏导得到:math∂∂θjl(θ)=(y−hθ(x))xj
所以可以利用梯度下降法求解,其中迭代变量为:mathθj:=θj+α(y(i)−hθ(x(i)))x(i)j
得到了一个与线性回归一样的迭代方法!!!log似然估计l(θ)的优化
在线性回归和分类的概率模型中,都提到了l(θ)。使l(\theta)最大化的\theta$也就是我们想要求解的对象。使用牛顿迭代方法可以加快求解速度。而使用海森矩阵(hessian Matrix)可以对牛顿迭代法进一步优化。公式就不在此推导了。k分类-多项式分布
将样本分到k个类中,标记为1,2,…,k,称为k分类。通常使用多项式分布处理。
定义mathϕi为分为第i类的概率,则mathϕk=∑k−1i=1ϕi。
所以
P(y;ϕ)=ϕ1y=11ϕ1y=22…ϕ1y=kk =ϕ1y=11ϕ1y=22…ϕ1−∑k−1i=11y=ik =…
然后中间的推导用到了指数族分布的一些性质,没弄懂。再然后得到:
hθ(x)=[exp(θT1x)∑kj=1exp(θTjx) exp(θT2x)∑kj=1exp(θTjx) …exp(θTk−1x)∑kj=1exp(θTjx) ]
当然,mathp(y=k|x;θ)=1−∑k−1i=1ϕi
最后,就得到了log似然函数:
mathl(θ)=∑mi=1log∏kl=1(eθTlx(i)∑kj=1eθTjx(i))1y(i)=l
有一句很经典的话:当你决定用多项式分布时,前面的都不用看了,直接用结论就好了。 Categories: 机器学习