当前位置: 首页 > 工具软件 > clj-ml > 使用案例 >

ML Algorithm

裴硕
2023-12-01

朴素贝叶斯

参考[1]

事件A和B同时发生的概率为在A发生的情况下发生B或者在B发生的情况下发生A

P(A∩B)=P(A)∗P(B|A)=P(B)∗P(A|B)

所以有:

P(A|B)=P(B|A)∗P(A)P(B)

对于给出的待分类项,求解在此项出现的条件下各个目标类别出现的概率,哪个最大,就认为此待分类项属于哪个类别

工作原理

1、假设现在有样本x=(a1,a2,a3,…an)这个待分类项(并认为x里面的特征独立)
2、再假设现在有分类目标Y={y1,y2,y3,y4..yn}
3、那么max(P(y1|x),P(y2|x),P(y3|x)..P(yn|x))就是最终的分类类别
4、而P(yi|x)=p(x|yi)∗P(yi)P(x)
5、因为x对于每个分类目标来说都一样,所以就是求max(P(x|yi)∗p(yi))
6、P(x|yi)∗p(yi)=p(yi)∗∏i(P(ai|yi))
7、而具体的p(ai|yi)和p(yi)都是能从训练样本中统计出来
p(ai|yi)表示该类别下该特征出现的概率
p(yi)表示全部类别中这个这个类别出现的概率
8、好的,就是这么工作的^_^

工作流程

1、准备阶段

确定特征属性,并对每个特征属性进行适当划分,然后由人工对一部分待分类项进行分类,形成训练样本。

2、训练阶段

计算每个类别在训练样本中的出现频率及每个特征属性划分对每个类别的条件概率估计

3、应用阶段

使用分类器进行分类,输入是分类器和待分类样本,输出是样本属于的分类类别

属性特征

1、特征为离散值时直接统计即可(表示统计概率)
2、特征为连续值的时候假定特征符合高斯分布:g(x,n,u)
那么p(ak|yi)=g(xk,ni,ui)

Laplace校准(拉普拉斯校验)

当某个类别下某个特征划分没有出现时,会有P(a|y)=0,就是导致分类器质量降低,所以此时引入Laplace校验,就是对没类别下所有划分的计数加1。

遇到特征之间不独立问题

参考改进的贝叶斯网络,使用DAG来进行概率图的描述

优缺点

朴素贝叶斯的优点:

对小规模的数据表现很好,适合多分类任务,适合增量式训练。

缺点:

对输入数据的表达形式很敏感(离散、连续,值极大极小之类的)。

逻辑回归和线性回归

LR回归是一个线性的二分类模型,主要是计算在某个样本特征下事件发生的概率,比如根据用户的浏览购买情况作为特征来计算它是否会购买这个商品,抑或是它是否会点击这个商品。然后LR的最终值是根据一个线性和函数再通过一个sigmod函数来求得,这个线性和函数权重与特征值的累加以及加上偏置求出来的,所以在训练LR时也就是在训练线性和函数的各个权重值w。

hw(x)=11+e−(wTx+b)

关于这个权重值w一般使用最大似然法来估计,假设现在有样本{xi,yi},其中xi表示样本的特征,yi∈{0,1}表示样本的分类真实值,yi=1的概率是pi,则yi=0的概率是1−pi,那么观测概率为:
p(yi)=pyii∗(1−pi)1−yi

则最大似然函数为:
∏(hw(xi)yi∗(1−hw(xi))1−yi)

对这个似然函数取对数之后就会得到的表达式
L(w)=∑i(yi∗loghw(xi)−(1−yi)∗log(1−hw(xi)))=∑i(yi∗(wTxi)−log(1+ewTxi))

估计这个L(w)的极大值就可以得到w的估计值。

实际操作中一般会加个负号 改为求最小

所以求解问题就变成了这个最大似然函数的最优化问题,这里通常会采样随机梯度下降法和拟牛顿迭代法来进行优化

梯度下降法

LR的损失函数为:
J(w)=−1NN∑i=1(yi∗log(hw(xi))+(1−yi)∗log(1−hw(xi)))

这样就变成了求min(J(w))

其更新w的过程为
w:=w−α∗▽J(w)w:=w−α∗1N∗N∑i=1(hw(xi)−yi)∗xi)

其中α为步长,直到J(w)不能再小时停止

梯度下降法的最大问题就是会陷入局部最优,并且每次在对当前样本计算cost的时候都需要去遍历全部样本才能得到cost值,这样计算速度就会慢很多(虽然在计算的时候可以转为矩阵乘法去更新整个w值)

所以现在好多框架(mahout)中一般使用随机梯度下降法,它在计算cost的时候只计算当前的代价,最终cost是在全部样本迭代一遍之求和得出,还有他在更新当前的参数w的时候并不是依次遍历样本,而是从所有的样本中随机选择一条进行计算,它方法收敛速度快(一般是使用最大迭代次数),并且还可以避免局部最优,并且还很容易并行(使用参数服务器的方式进行并行)
w:=w−α∗(hw(xj)−yj)∗xi);j∈1 Nandrandomly

这里SGD可以改进的地方就是使用动态的步长
α=0.04∗(1.0+n+i)+r

其他优化方法

拟牛顿法(记得是需要使用Hessian矩阵和cholesky分解)
BFGS
L-BFGS

优缺点:无需选择学习率α,更快,但是更复杂

关于LR的过拟合问题:

如果我们有很多的特性,在训练集上拟合得很好,但是在预测集上却达不到这种效果

1、减少feature个数(人工定义留多少个feature、算法选取这些feature)
2、正则化(为了方便求解,L2使用较多)
添加正则化之后的损失函数为: J(w)=−1N∑Ni=1(yi∗log(hw(xi))+(1−yi)∗log(1−hw(xi)))+λ||w||2
同时w的更新变为w:=w−α∗(hw(xj)−yj)∗xi)−2α∗wj
注意:这里的w0不受正则化影响

关于LR的多分类:softmax

假设离散型随机变量Y的取值集合是{1,2,..,k},则多分类的LR为
P(Y=a|x)=exp(wa∗x)(∑ki=1(wi∗x));1

 类似资料:

相关阅读

相关文章

相关问答