贝叶斯分类(二)

标签:机器学习与数据挖掘
## 1.数据平衡
  在欺诈调查中,如果数据集中仅有一小部分事务存在欺诈问题,则算法将会简单地忽略此类事务,仅考虑无欺诈事务,这样做的正确率仍然能够达到99.99%。但是,这样的话,就没法打到我们的目的。因此,平衡采样方法可用于缩小出现在训练数据中的目标类的差距。我们可以选择采用的两种数据平衡的办法:
- 重采样稀疏记录
- 取消部分非稀疏记录
(这个博客系列里,我们就暂时只考虑这两种方法,更多的可以参阅:https://www.leiphone.com/news/201706/dTRE5ow9qBVLkZSY.html)

## 2.朴素贝叶斯分类
  上一节中,我们采用的MAP方法,也采取的一个比较简单的仅有两个类的数据集,计算起来,问题不大。我们仅需要发现4个概率就好:$P(I \cap V | C)$、$P(C)$、$P(I \cap V | \overline{C})$、$P(\overline{C})$。
  但实际上,对于一个普通的数据集,我们要计算的概率的数值应为 $k^m$ ,其中 $k$ 是目标变量的类的数目,$m$ 是预测变量的数目。比如,我们预测的是一个人的婚姻状态(k=5:单身、已婚、离异、寡居、分居),且有 $m=10$ 个统计预测边来那个。那么我们需要计算的概率的数量是:$k^{m}=5^{10}=9765625$。入股利用每个单元的最少10条记录估计相对频率,并假设数组中的记录具有正态分布,则我们最少需要1亿条记录。
  显然,这要求过高。

  我们再次查看MAP分类的公式:
$$
\arg _{\theta} \max p(\mathrm{X} | \theta) p(\theta)=\arg _{\theta} \max p\left(X_{1}=x_{1}, X_{2}=x_{2}, \ldots, X_{m}=x_{m} | \theta\right) p(\theta)
$$
  我们要试图简化它。我们发现,使计算变的困难的不在于 $p(\theta)$ ,因为通常包含的类的数量较小。问题在于可能产生的维度灾难,即,为所有可能存在的X变量(预测变量)的组合发现$p\left(X_{1}=x_{1}, X_{2}=x_{2}, \ldots, X_{m}=x_{m} | \theta\right)$。这样会产生组合空间爆炸的问题。所以,我们发现了问题之所在,就聚焦于此来解决。
  假设我们简化假设,使预测变量之间存在条件独立关系,并给定目标变量予以具体结果(比如:流失情况=假)。
  如果对于任意给定的事件 $C$ ,有$p(A \cap B | C)=p(A | C) \cdot p(B | C)$,则两个事件$A$和$B$被认为是非条件依赖的。例如,非条件依赖指出,对流失的客户来说,在两个套餐(I或V)之一的成员不会影响其他套餐中的成员的概率。类似地,该思想可以同理到非流失客户。
  我们给予定义,一般来说,条件独立性假设可以表示如下:
$$
p\left(X_{1}=x_{1}, X_{2}=x_{2}, \ldots, X_{m}=x_{m} | \theta\right)=\prod_{i=1}^{m} p\left(X_{i}=x_{i} | \theta\right)
$$
  这不难理解,这大家学概率论都学过,因此,此时的朴素贝叶斯的分类为:$\theta_{\mathrm{NB}}=\arg \max _{\theta} \prod_{i=1}^{m} p\left(X_{i}=x_{i} | \theta\right) p(\theta)$
  当条件独立性假设有效的时候,朴素贝叶斯分类与MAP分类相同。为此,我们看一下我们之前采用的那个 数据集 是否满足条件依赖假设。
  对于两个套餐都参加了的新客户来说,有:
$$
p(I | C) \cdot p(V | C) \cdot p(C)=(0.0470) \cdot(0.1449)=0.0068
$$
针对非流失客户,有:
$$
p(I | \overline{C}) \cdot p(V | \overline{C}) \cdot p(\overline{C})=(0.0193) \cdot(0.8551)=0.0165
$$
  由于 $0.0165>0.0068$ ,因此对参加两个套餐的新客户的贝叶斯分类结果是“流失情况=假“。同理,我们剩下的三种情况都计算一下,返回的贝叶斯分类结果都是“假“。在进行数据平衡之后,与MAP分类器类似,参与国际套餐的用户的流失情况为真。
  用朴素贝叶斯分类的时候需要顾及的概率数量相对少得多,仅为$k\cdot m$,相比于MAP分类器的 $k^m$,显然要好很多。比如,婚姻有5种不同的状态,设计10个预测边来那个,需要计算的概率数量为 $k/cdot m= 5 /codt 10=50种,而MAP分类器需要计算的概率数量为9765625种。每个单元10个记录,意味着仅仅需要500条记录,而MAP需要1亿条记录。
  这说明朴素贝叶斯分类比MAP计算简单的多!此外,如果是在这些条件假设独立的情况之下,朴素贝叶斯分类与MAP分类的结果是一样的。不过,在实际的实践中,条件独立性假设通常会限制贝叶斯分类器的优化能力。
  这里,我们计算检查数据集的独立性假设。
![1564384549413](assets/1564384549413.png)
  所以我们不能盲目地使用条件独立性假设,例如,预测变量的关联性总是会违背条件独立性假设。这里需要小心地处理和构建。

## 3.对数后验概率比
  我们考虑对数后验概率比,对数后验概率比可为我们提供一种有关每个变量对分类厥词贡献程度的直接度量。形式如下:
$$
\frac{p\left( \theta _{\text{c}}|\text{X} \right)}{p\left( \theta _{\text{c}}|\text{X} \right)}=\frac{p\left( \text{X|}\theta _{\text{c}} \right) \cdot p\left( \theta _{\text{c}} \right)}{p\left( \text{X|}\bar{\theta}_{\text{c}} \right) \cdot p\left( \bar{\theta}_{\text{c}} \right)}
\\
=\frac{p\left( X_1=x_1,X_2=x_2,...,X_m=x_m|\theta \right) \cdot p\left( \theta _c \right)}{p\left( X_1=x_1,X_2=x_2,...,X_m=x_m|\bar{\theta} \right) \cdot p\left( \bar{\theta}_c \right)}
\\
\overset{\text{条件独立性假设}}{=}\frac{\prod_{i=1}^m{p}\left( X_i=x_i|\theta \right) \cdot p\left( \theta _c \right)}{\prod_{i=1}^m{p}\left( X_i=x_i|\bar{\theta} \right) \cdot p\left( \bar{\theta}_c \right)}
$$

接着我们考虑概率比的对数。乘积的对数等于对数和,由此我们有:
$$
\log \left[ \frac{\prod_{i=1}^m{p}\left( X_i=x_i|\theta \right) \cdot p\left( \theta _c \right)}{\prod_{i=1}^m{p}\left( X_i=x_i|\overline{\theta } \right) \cdot p\left( \overline{\theta }_c \right)} \right] 
\\
=\log \left( \prod_{i=1}^m{p}\left( X_i=x_i|\theta \right) \right) +m\log p\left( \theta _c \right) -\log \left( \prod_{i=1}^m{p}\left( X_i=x_i|\overline{\theta } \right) \right) -m\log p\left( \bar{\theta}_c \right) 
\\
=m\log \frac{p\left( \theta _c \right)}{p\left( \overline{\theta }_c \right)}+\sum_{i=1}^m{\log}\left( \frac{p\left( X_i=x_i|\theta \right)}{p\left( X_i=x_i|\overline{\theta } \right)} \right) 
$$
  从解释的观点来说对数后验概率比的这种形式是有用的,因为每个项都涉及相加贡献,对每个属性来说,要么是正,要么是负。
  同样举个例子。对于国际套餐我们有:
$$
\log \left(\frac{p(I | C)}{P(I | \overline{C})}\right)=\log \left(\frac{0.2836}{0.0653}\right)=0.6378
$$
  对于语音套餐我们有:
$$
\log \left(\frac{p(V | C)}{P(V | \overline{C})}\right)=\log \left(\frac{0.1656}{0.2954}\right)=-0.2514
$$
  我们看到,国际套餐成员对待特定客户流失的效果的似然的贡献为正,而语音套餐为负。这就是说,国际套餐这个因素加强了客户流失,语音邮件套餐降低了流失的概率。
## 4.处理零单元问题
  如果在我们使用朴素贝叶斯方法的时候,出现一个频率为0的单元,会有什么情况?比如,在483个流失的客户之中,没有参加语音邮件套餐的人员,则$p(V | C)=\frac{0}{483}=0.0$。实际上,真正的问题是,由于条件独立性假设意味着我们需要获得边际概率的乘积,$p(V|C)$ 为0 将对结果产生支配作用。因为朴素贝叶斯分类包含$\prod_{i=1}^{m} p\left(X_{i}=x_{i} | \theta\right)$,如果乘积中有一个0的因子,这将导致结果为0,这带来的后果是灾难性的。
  为避免出现这样的问题,我们假设有一个额外数量的“虚拟”样例,为 零频率单元提供概率调整估计:
$$
\frac{n_{\mathrm{e}}+n_{\text { equiv }} \cdot p}{n+n_{\text { equiv }}}
$$
(其中,n表示该目标类总的记录数,$n_c$表示这n个记录中包含感兴趣属性值的数量,p为要估计概率的先验估计,$n_{equiv}$是一个表示相等样例大小的常量。)
  常量$n_{equiv}$ 表示用于发现调整概率的虚拟样例的附加数量,用于控制调整的权重。在缺乏相关信息的情况下,可以制定先验概率估计p的值。通常无信息先验概率为$p=\frac{1}{k}$,其中,k是目标变量包含的类的数量。为此,附加样例包含$n_equiv$个,分布满足p,以此来计算概率。
  针对我们之前案例说的情况,$n=483, n_c=0, 且p=\frac{1}{2}$。我们选择 $n_{equiv}=1$ 以使干预的影响最小化。调整后$p(P|V)$零概率单元的概率估计为:
$$
\frac{n_{c}+n_{\text { equiv }} \cdot p}{n+n_{\text { equiv }}}=\frac{0+1 \cdot(1 / 2)}{483+1}=0.0010
$$
  这样一来,就不会使得整个结果都是0了。
## 5.贝叶斯对于连续性变量的处理
  假定我们知道相关的概率分布,则贝叶斯分类可以从范畴性变量扩展到连续性预测变量。比如,在我们的客户流失数据集中,我们新增通话时长的变量,同时,无论客户流失与否,它的分布皆为正态分布。流失客户总通话时间的均值为 $\mu_{churn}=635$ 分钟,标准差为  $\sigma_{\mathrm{churn}}=111$ 分钟。非流失客户总通话时间的均值为 $\mu_{non-churn}=585$ 分钟,标准差为 $\sigma_{non-churn}=84$ 分钟。总结一下,我们得到流失客户的总通话时间的分布为正态分布(635,111),非流失客户总的通话时间为正态分布(585,84)。
  设 $T_churn$ 表示流失客户总通话时间的随机变量,则:
$$
p\left( T_{\text{ctum}}=t \right) \cong f_{\text{TC}}
\\
\begin{array}{l}
    =\frac{1}{\sqrt{2\pi}\sigma _{\,\,\text{churm }}}\exp \left( \frac{-1}{2\sigma ^2\,\,\text{chum }}\left( t-\mu _{\,\,\text{chum }} \right) ^2 \right)\\
    =\frac{1}{\sqrt{2\pi}\left( 111 \right)}\exp \left( \frac{-1}{2\left( 111 \right) ^2}\left( t-635 \right) ^2 \right)\\
\end{array}
$$
(此处, 用 $exp(y)$ 表示 $e^y$)。
  假设,我们现在要预测一个通话时长为800分钟,且两个套餐都参加了的新客户,对流失的情况有:
$$
\begin{aligned} p(I \cap V \cap T=800 | C) \cdot P(C) &=P(I | C) \cdot P(V | C) \cdot f_{n c}(800) \cdot P(C) \\ &=(0.2836) \cdot(0.1656) \cdot(0.001191) \cdot(0.1449) \\ &=0.000008105 \end{aligned}
$$
对非流失客户我们有:
$$
\begin{aligned} p(I \cap V \cap T=800 | \overline{C}) \cdot P(\overline{C}) &=P(I | \overline{C}) \cdot P(V | \overline{C}) \cdot f_{n c}(800) \cdot P(\overline{C}) \\ &=(0.0653) \cdot(0.2954) \cdot(0.0001795) \cdot(0.8551) \\ &=0.00002961 \end{aligned}
$$
  由此,我们对比大小,将其归类与流失客户之中。这也我们之前预测的两个套餐客户“流失情况=假”有了反转,当然我们需要保证的是我们我们的正态分布的假设是正确的。这时可以用正态概率点图来检验是否是正态分布。
>
>  但是,如果我们的数据压根不是正态分布的呢?正态假设检验的P值比较大呢?我们可以尝试数据转换,比如:
>- (1)对数转换:$y_{i}=\ln \left(x_{i}\right)$
>
>- (2)平方根转换:$y_{i}=\sqrt{x_{i}}$
>
>- (3)倒数转换:$y_{i}=\frac{1}{x_{i}}$
>
>- (4)平方根后倒数转换:$y_{i}=\frac{1}{\sqrt{x_{i}}}$
>
>- (5)平方根后再取正反弦:$y_{i}=\operatorname{Arcsin}\left(\sqrt{x_{i}}\right)$
>  &emsp;&emsp;在一些情况下(P值<0.003)上述方法很难实现正态化处理,所以**优先使用Box-Cox转换**,但是当 P值>0.003 时,这些方法可以优先考虑。
>
>  <font color=#85433f>注:**关于P值**:</font>
>&emsp;&emsp;<font color=#85433f>假设检验中常见到 P值(P-Value,Probability,Pr),P值是进行检验决策的另一个依据。
>&emsp;&emsp;**P值即概率,反映某一事件发生的可能性大小。**统计学根据显著性检验方法所得到的 P值,一般以 P<0.05为有统计学差异,P<0.01为有显著统计学差异,P<0.001为有极其显著的统计学差异。其含义是样本间的差异由抽样误差所致的概率小于0.05、0.01、0.001。实际上,P值不能赋予数据任何重要性,只能说明某事件发生的几率。统计结果中显示Pr>F,也可写成Pr(>F),P=P{F0.05>F}或 P= P{F0.01>F}。统计学上一般 P值大于0.05我们可认为该组数据是符合正态分布。
></font>
>此段参考:https://www.cnblogs.com/king-lps/p/7843395.html
>作者:三年一梦

&emsp;&emsp;这里呢,我们使用Box-Cox转换方法,$T(y)=\frac{\left(y^{\lambda}-1\right)}{\lambda}$来满足我们的正态假设。
&emsp;&emsp;或者,我们干脆完全放弃正态分布假设,选择直接利用从流失或非流失客户总通话时长观察到的经验分布。我们感兴趣的是比较每个分布情况的p(T=800)。因此,为何不能直接通过估计每个段的分布的 $p(798 \leqslant T \leqslant 802)$来获得相关的概率呢?结果是有3个流失客户通话时长在798与802之间,而有一个非流失客户总通话时长在798与802之间。由此,对流失客户的概率估计为$p(T=800 | C) \cong \frac{3}{483}=0.006211$,对非流失客户的概率估计为$p(T=800 | \overline{C}) \cong \frac{1}{2850}=0.0003509$。
&emsp;&emsp;对流失客户计算朴素贝叶斯分类为:
$$
\begin{aligned} p(I \cap V \cap T=800 | C) \cdot P(C) &=P(I | C) \cdot P(V | C) \cdot \hat{f}_{T|c}(800) \cdot P(C) \\ &=(0.2836) \cdot(0.1656) \cdot(0.006211) \cdot(0.1449) \\ &=0.00004227 \end{aligned}
$$
&emsp;&emsp;对非流失客户:
$$
\begin{aligned} p(I \cap V \cap T=800 | \overline{C}) \cdot P(\overline{C}) &=P(I | \overline{C}) \cdot P(V | \overline{C}) \cdot \hat{f}_{T|C}(800) \cdot P(\overline{C}) \\ &=(0.0653) \cdot(0.2954) \cdot(0.0003509) \cdot(0.8551) \\ &=0.000005788 \end{aligned}
$$
(这里,用 $\hat{f}_{T|C}(800)$ 表示对$f_{T|C}(800)$的经验估计)。
&emsp;&emsp;对比结果,我们将这个通话时长为800分钟,且订购了两套套餐的客户归类为“流失情况=真”,其后验概率比:$\frac{0.00004227}{0.000005788}=7.30$ 。这样,我们就不再承担正态分布假设的风险了。
&emsp;&emsp;这里讨论的经验概率估计方法应该在一个边际误差范围内验证。上述示例中,我们在两个记录的误差边际内(798≤T≤802)发现记录数。读者可以验证,在期望为800分钟,误差范围为5分钟的情况下,包含8个流失客户,3个非流失客户。在期望为800分钟,误差范围为10分钟的情况下,包含15个流失客户,5个非流失客户。在分布函域内,流失客户与非流失客户记录的比率近似稳定在3:1。


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值