美文网首页
4.6 应用实例

4.6 应用实例

作者: 操作系统 | 来源:发表于2017-04-07 15:55 被阅读0次

    4.6.1 香农熵的计算

    在学习决策树时,最重要的步骤是构建决策树。其中,最重要的步骤是根据属性划分数据集,其中先使用哪个属性,后使用哪个属性,是决定决策树构建的好坏的重要标准。其中,使用属性构建数据集,最重要的参考标准,就是使划分后的信息增益最大。
    这里就使用到一个概念:香农熵。熵表示随机变量不确定性,即混乱程度的量化指标。熵越大,不确定性越大,越无序;越小,确定性越大,越有序。同理,一条信息的信息量大小,与不确定性直接相关。不确定性越大,信息量越大,熵越大;确定性越大,信息量越小,熵越小。
    熵的单位是bit。不计算信息量等,直接存储一个文件,需要的是正常的存储空间大小。通过压缩算法,仅保留有用信息的情况下,存储的是文件的信息量。两者数量上的差距,是冗余度。由此可见:冗余度越大,可压缩的空间越大。反之,亦然。
    香农熵的计算公式为:

    香农熵计算公式

    注意公式的负号,P(x)表示随机变量某个取值的概率。通过SciPy中stats模块里entropy(),可以计算出每种元素的香农熵,示例代码:

    from scipy import stats
    shannon_entropy = stats.entropy(ij/sum(ij), base=None)
    print(shannon_entropy)
    

    4.6.2 二项分布

    二项分布是最重要的离散概率分布之一。假设有一种只有两个结果的试验,其成功概率为p,那么二项分布描述了进行n次这样的独立试验,成功k次的概率。二项分布的概率质量函数公式如下:
    ** f(k;n,p) = (n! / k!(n-k)!)pk(1-p)n-k **

    例如,可以通过二项分布的概率质量公式计算投掷5次骰子出现3次6的概率。投掷一次骰子,点数为6的概率(即试验成功的概率)为p=1/6,试验次数为5。使用二项分布的概率质量函数pmf()可以很容易计算出现k次6点的概率。和概率密度函数pdf()类似,pmf()的第一个参数为随机变量的取值,后面的参数为描述随机分布所需的参数。对于二项分布来说,参数分别为n和p,而取值范围则为0到n之间的整数。下面的程序计算k为0到6时对应的概率,示例代码:

    from scipy import stats
    stats.binom.pmf(range(6), 5, 1/6.0)
    

    运行结果:

    array([  4.01877572e-01,   4.01877572e-01,   1.60751029e-01,
             3.21502058e-02,   3.21502058e-03,   1.28600823e-04])
    

    由结果可知:出现0或1次6点的概率为40.2%,而出现3次6点的概率为3.215%。

    4.6.3 泊松分布

    在二项分布中,如果试验次数n很大,而每次试验成功的概率p很小,乘积np比较适中,那么试验成功次数的概率可以用泊松分布近似描述。
    泊松分布适合描述单位时间内随机事件发生的次数的分布情况。在泊松分布中使用λ描述单位时间(或单位面积)中随机事件的平均发生率。如果将二项分布中的试验次数n看作单位时间中所做的试验次数,那么它和事件出现的概率p的乘积就是事件的平均发生率λ,即λ = n p。泊松分布的概率质量函数公式如下:
    ** f(k;λ) = eλk / k! **

    下面的程序分别计算二项分布和泊松分布的概率质量函数,程序中的事件平均发生率λ恒等于10。根据二项分布的试验次数n,计算每次事件出现的概率p=λ/n。示例代码:

    import numpy as np
    from scipy import stats
    lambda_ = 10.0
    x = np.arange(20)
    n1, n2 = 100, 1000
    y_binom_n1 = stats.binom.pmf(x, n1, lambda_/n1)
    y_binom_n2 = stats.binom.pmf(x, n2, lambda_/n2)
    y_poisson = stats.poisson.pmf(x, lambda_)
    print(np.max(np.abs(y_binom_n1 - y_poisson)))
    print(np.max(np.abs(y_binom_n2 - y_poisson)))
    

    运行结果:

    0.00675531110335
    0.000630175404978
    

    由结果可知,随着试验次数的增大,二项分布与泊松分布分别求得的概率误差越来越小。
    当试验次数n=100时,绘图代码:

    import pylab as pl
    pl.plot(x,y_binom_n1, color="green",label = "binom")
    pl.plot(x,y_poisson , color="yellow",label = "poisson")
    pl.legend(loc = "best")
    pl.show()
    

    绘图结果:

    n=100

    当n=1000时,绘图代码:

    import pylab as pl
    pl.plot(x,y_binom_n2, color="green",label = "binom")
    pl.plot(x,y_poisson , color="yellow",label = "poisson")
    pl.legend(loc = "best")
    pl.show()
    

    绘图结果:

    n=1000

    同样的,由以上两图对比可知,当n足够大时,二项分布和泊松分布二者十分接近。

    t分布和t检验

    统计检测是决策指示。例如,我们有两个样本集,我们假设它们由高斯过程生成。我们可以使用T检验来决定是否两个样本值显著不同:

    a = np.random.normal(0, 1, size=100)
    b = np.random.normal(1, 1, size=10)
    stats.ttest_ind(a, b)
    

    运行结果

     (array(-2.4119199601156796), 0.01755485116571583) 
    

    输出结果由以下部分组成:
    T统计量:它是这么一种标志,与不同两个随机过程之间成比例并且幅度和差异的显著程度有关。p值:两个过程相同的概率。如果接近1,这两个过程是几乎完全相同的。越靠近零,两个过程越可能有不同的均值。

    相关文章

      网友评论

          本文标题:4.6 应用实例

          本文链接:https://www.haomeiwen.com/subject/wazzottx.html