精华内容
下载资源
问答
  • 概率论与数理统计 数理统计与机器学习有什么关系呢?哪些地方需要用到数理统计? 实际上,二者关心的是同一件事,即我们从数据中学到了什么。...确定性和随机性可能来自多个方面,使用概率论来量化确定性。 ...

    概率论与数理统计

    数理统计与机器学习有什么关系呢?哪些地方需要用到数理统计?

    实际上,二者关心的是同一件事,即我们从数据中学到了什么。事件的概率是衡量该事件发生的可能性的量度。虽然在一次随机试验中某个事件的发生是带有偶然性的,但那些可在相同条件下大量重复的随机试验却往往呈现出明显的数量规律。
    机器学习除了处理不确定量,也需处理随机量。不确定性和随机性可能来自多个方面,使用概率论来量化不确定性。 概率论在机器学习中扮演着一个核心角色,因为机器学习算法的设计通常依赖于对数据的概率假设。

    例如,在机器学习(Andrew Ng)的课中,会有一个朴素贝叶斯假设,就是条件独立的一个例子。该学习算法对内容做出假设,用来分辨电子邮件是否为垃圾邮件。假设无论邮件是否为垃圾邮件,单词xx出现在邮件中的概率条件独立于单词yy。很明显这个假设是非一般性的,因为某些单词几乎总是同时出现。然而,最终结果是,这个简单的假设对结果的影响并不大,且无论如何都可以让我们快速判别垃圾邮件。

    拓展概括,更直白的说吧:

    • 线性代数提供了数据的表示;
    • 概率论与统计提供了问题的假设;
    • 微积分提供了问题的解决方案。

    目前为止,我们已经知道了数据的表示及变换等,接下来进入第二个环节,有关问题的假设,即数理统计部分。

    1. 什么是统计?什么是概率?

    从一个不搞笑的笑话开始吧

    某次生物课考试,有一道题是看动物的脚,猜该动物的名称,一考生实在是不会做,愤怒的把试卷撕掉就往外走,老师见了,抓住他大声说道:“你哪个班的,这么嚣张”。该学生把裤腿一提,说道:“你猜呀,你猜呀”!扬长而去~

    工科男就是笑点低,这也能叫做笑话~服气🎃,不管怎样,这个学生绝对是个统计高手。啊哈哈哈

    辣么,统计是什么,统计就是给你一个黑盒子,里面装着猫和狗,只让你看到他们的腿,然后让你猜哪个腿是猫的:

    在这里插入图片描述

    你可能会问,这怎么猜?

    在统计里会总结过去的数据,然后对这些数据进行总结归纳。就像刚才的例子,我们要判断出哪个腿属于猫。需要收集所有猫的腿(也就是过去的数据),然后总结这些腿的特征(总结归纳)。当图片里的腿出现时,你可以根据之前的总结归纳来判断出这腿是不是猫的腿。当然,你也不会无聊到判断哪只腿是猫,哪只腿是狗的,更多时候你可能喜欢看的是美女的腿~😍😍。

    所以,统计是对过去数据进行“总结归纳”,表示如下图

    在这里插入图片描述

    那概率又是什么呢?

    **概率是用数值来表示事情发生的可能性大小。**举个例子,小马想创业,去找投资人王思聪要钱。王思聪可不是傻X。然后就派人去调查小马过去的经历(看他有什么创业的条件),然后预测他可能成功的概率是多大。经过深入调查发现小马他爸是马云(给定条件),得出小马创业概率成功率是99%(预测未来)。

    如果我们用猫和狗这个例子来举例,就是给了你猫和狗的行为特征(给定条件),然后预测猫和狗明天撕逼的可能性多大。

    所以,概率是给定条件,对“数据”进行预测,可以用下图来表示:

    在这里插入图片描述

    小结

    用简单的话来总结:
    统计=回顾过去,进行归纳总结
    概率=给定条件,对未来进行预测

    用稍微专业一点的话来总结:
    统计=样本(回顾过去的数据)归纳出总体(总结)
    概率率=总体(给定条件)对样本进行预测

    辅助理解:

    统计学:根据手中信息,猜猜桶里有啥?(样本归纳总结出总体)

    概率论:根据桶中信息,猜猜手里有啥?(总体对样本进行预测)

    在这里插入图片描述

    2. 随机变量与概率分布

    上文介绍了概率的本质:某件事发生的可能性。如下图

    在这里插入图片描述

    • 概率的值永远在0-1范围之间。
    • 如果某件事不可能发生,则其概率为0,对应的就是这条直线上最左端的位置。
    • 如果某件事肯定会发生,则其概率为1,,对应的就是这条直线上最右端的位置,也就是那个点赞的大拇指

    那…怎么计算概率呢?

    • 在网上查找前人计算的经验值。

    • 用数据分析来计算出事件发生的数目,然后除以总数目。

    关于概率的具体表现形式,还得从概率分布说起,为了搞明白什么是概率分布,还得从数据类型分布说起,为了…,打住打住,环环相扣何时了,行吧,就从数据类型走起。

    数据类型,也就是我们的随机变量,有两种:离散数据和连续数据。

    随机变量(random variable)

    表示随机现象(在一定条件下,并不总是出现相同结果的现象称为随机现象)中各种结果的实值函数(一切可能的样本点)。例如某一时间内公共汽车站等车乘客人数,电话交换台在一定时间内收到的呼叫次数等,都是随机变量的实例。
    ​随机变量与模糊变量的不确定性的本质差别在于,后者的测定结果仍具有不确定性,即模糊性。

    变量与随机变量的区别:

    当变量的取值的概率不是1时,变量就变成了随机变量;当随机变量取值的概率为1时,随机变量就变成了变量。

    比如:
    ​ 当变量xx值为100的概率为1的话,那么x=100x=100就是确定了的,不会再有变化,除非有进一步运算。
    ​ 当变量xx的值为100的概率不为1,比如为50的概率是0.5,为100的概率是0.5,那么这个变量就是会随不同条件而变化的,是随机变量,取到50或者100的概率都是0.5,即50%。

    离散数据根据名称很好理解,就是数据的取值是不连续的。例如掷硬币就是一个典型的离散数据,因为抛硬币的就2种数值(也就是2种结果,要么是正面,要么是反面)。

    你可以把离散数据想象成一块一块垫脚石,你可以从一个数值调到另一个数值,同时每个数值之间都有明确的间隔。

    在这里插入图片描述

    连续数据正好相反,它能取任意的数值。例如时间就是一个典型的连续数据1.25分钟、1.251分钟,1.2512分钟,它能无限分割。连续数据就像一条平滑的、连绵不断的道路,你可以沿着这条道路一直走下去。

    在这里插入图片描述

    那什么是分布呢?

    数据在统计图中的形状,叫做它的分布:

    在这里插入图片描述

    不好意思,楼上放错了,(冰岛雷克雅未克大教堂,其实很类似-直观),是下面这个(还不如楼上)

    在这里插入图片描述

    其实我们生活中也会聊到各种分布。比如日常“开车”的时候,不同季节男人的目光分布如下图(憋住,不要流鼻血):

    在这里插入图片描述

    也即是

    在这里插入图片描述

    各位老铁,测测你目光分布在哪儿~

    在这里插入图片描述

    好了,美女也看了,醒醒,专心学习吧。

    现在,我们已经知道了两件事:

    1)数据类型(也叫随机变量)有2种:离散数据类型(例如抛硬币的结果),连续数据类型(例如时间) 2)分布:数据在统计图中的形状。

    而我们的概率分布就是二者(数据类型+分布)的结合:概率分布就是在统计图中表示概率,横轴是数据的值,纵轴是横轴上对应数据值的概率。

    在这里插入图片描述

    很显然的,根据数据类型的不同,概率分布分为两种:离散概率分布,连续概率分布。

    小结

    随机变量与概率分布的联系—Part1

    一个随机变量仅仅表示一个可能取得的状态,还必须给定与之相伴的概率分布来制定每个状态的可能性。用来描述随机变量或一簇随机变量的每一个可能的状态的可能性大小的方法,就是 概率分布(probability distribution).

    随机变量可以分为离散型随机变量和连续型随机变量,相应的描述其概率分布的函数是:

    概率质量函数(Probability Mass Function, PMF):描述离散型随机变量的概率分布,通常用大写字母 PP表示。

    概率密度函数(Probability Density Function, PDF):描述连续型随机变量的概率分布,通常用小写字母pp表示。

    辣么,问题就来了。为什么你要关心数据类型呢?

    因为数据类型会影响求概率的方法。

    对于离散概率分布,我们关心的是取得一个特定数值的概率。例如抛硬币正面向上的概率为:P(x=)=1/2P(x=正面)=1/2

    而对于连续概率分布来说,我们无法给出每一个数值的概率,因为我们不可能列举每一个精确数值。

    例如,你在咖啡馆约妹子出来,你提前到了。为了给妹子留下好印象,你估计妹子会在5分钟之内出现,有可能是在4分钟10秒以后出现,或者在4分钟10.5秒以后出现,你不可能数清楚所有的可能时间,你更关心的是在妹子出现前的1-5分钟内(范围),因为你想把发型重新整理下(虽然你因为加班头发已经秃顶了,但是…气质得有,发型不能乱),给妹子留个好印象。所以,对于像时间这样的连续型数据,你更关心的是一个特定范围的概率是多少。

    在这里插入图片描述

    小结

    随机变量与概率分布的联系—Part2

    1.离散型随机变量和概率质量函数

    PMF 将随机变量能够取得的每个状态映射到随机变量取得该状态的概率。

    • 一般而言,P(x)P(x) 表示时X=xX=x的概率.
    • 有时候为了防止混淆,要明确写出随机变量的名称P(P(x=x)=x)
    • 有时候需要先定义一个随机变量,然后制定它遵循的概率分布x服从P(P(x))

    PMF 可以同时作用于多个随机变量,即**联合概率分布(joint probability distribution) **P(X=x,Y=y)P(X=x,Y=y)*表示 X=xX=xY=yY=y同时发生的概率,也可以简写成 P(x,y)P(x,y).

    如果一个函数PP是随机变量 XX 的 PMF, 那么它必须满足如下三个条件

    • PP的定义域必须是的所有可能状态的集合
    • x∀x∈x, 0P(x)10 \leq P(x) \leq 1.
    • xXP(x)=1∑_{x∈X} P(x)=1. 我们把这一条性质称之为 归一化的(normalized)

    2.连续型随机变量和概率密度函数

    如果一个函数pp是x的PDF,那么它必须满足如下几个条件

    • pp的定义域必须是 x 的所有可能状态的集合。
    • xX,p(x)0∀x∈X,p(x)≥0. 注意,我们并不要求p(x)1p(x)≤1,因为此处 p(x)p(x)不是表示的对应此状态具体的概率,而是概率的一个相对大小(密度)。具体的概率,需要积分去求。
    • p(x)dx=1∫p(x)dx=1, 积分下来,总和还是1,概率之和还是1.

    注:PDFp(x)p(x)并没有直接对特定的状态给出概率,给出的是密度,相对的,它给出了落在面积为 δxδx的无线小的区域内的概率为p(x)δxp(x)δx. 由此,我们无法求得具体某个状态的概率,我们可以求得的是 某个状态 xx 落在 某个区间[a,b][a,b]内的概率为abp(x)dx\int_{a}^{b}p(x)dx.

    概率分布是怎么得出来的呢?

    当统计学家们开始研究概率分布时,他们看到,有几种形状反复出现,于是就研究他们的规律,根据这些规律来解决特定条件下的问题。几种经常出现的形状就是就是日常常见的几种特殊分布。

    这些特殊分布有什么用呢?回想一下高考的时候,准备的那几篇英语作文“万能模板”,虽然你最后也没用上吧😂😹,但是万一呢,岂不是爽翻!

    2.2.3 常见概率分布

    接下里我们就聊聊几种常见的分布。

    • 3种离散概率分布:二项分布,泊松分布,几何分布
    • 1种连续概率分布:正态分布

    介绍之前,提前引入两个知识点:

    期望:概率的平均值

    标准差:衡量数据的波动大小

    二项分布

    预期解决以下三个问题:

    1.二项分布有啥用? 2.如何判断是不是二项分布? 3.二项分布如何计算概率?

    二项分布有啥用?

    当你遇到一个事件,如果该事件发生次数固定,而你感兴趣的是成功的次数,那么就可以用二项分布的公式快速计算出概率来。

    比如,你5家公司的股票(谷歌,Facebook,苹果,阿里巴巴,腾讯),为了保底和计算投入进去多少钱,你想知道其中3只股票帮你赚到钱(成功的次数)的概率多大,那么这时候就可以用二项分布计算出来。

    在这里插入图片描述

    如何判断是不是二项分布?

    首先,为啥叫二项,不叫三项,或者二愣子呢?故明思义,二项代表事件有2种可能的结果,把一种称为成功,另外一种称为失败。生活中有很多这样2种结果的二项情况,例如,你表白是二项的,一种成功,一种是失败。

    那满足什么条件可判断事件符合二项分布呢?只要符合下面几个特点就可以判断某事件是二项分布了:

    • 做某件事的次数(也叫试验次数)是固定的,用n表示。

    例如,抛硬币3次,投资5支股票。

    • 每一次事件都有两个可能的结果(成功,或者失败)

    例如,每一次抛硬币有2个结果:正面表示成功,反面表示失败。每一次投资美股有2个结果:投资成功,投资失败。

    • 每一次成功的概率都是相等的,成功的概率用p表示

    例如,每一次抛硬币正面朝上的概率都是1/2。你投资了5家公司的股票,假设每一家投资盈利成功的概率都相同。

    • 你感兴趣的是成功xx次的概率是多少。那么就可以用二项分布的公式快速计算出来了。

    例如,你已经知道了前面讲的5家美股的赚钱概率最大,所以你买了这5家公司的股票,假设投资的这5家公司成功的概率都相同,那么你关心其中只要有3个投资成功,你就可以赚翻了,所以想知道成功3次的概率。

    根据这几个特点,我们就知道抛硬币是一个典型的二项分布,还有你投资的这5支股票也是一个典型的二项分布(在假设每家公司投资成功的前提下)。

    二项分布如何计算概率?

    怎么计算符合二项分布事件的概率呢?例如:你抛硬币3次,2次正面朝上的概率是多少? 你买了这5家公司的股票,3支股票赚钱的概率是多大?

    根据特点中的符号表示,可通过如下公式进行计算:

    P(x)=Cnxpx(1p)nx(1)P(x)=C^x_np^x(1-p)^{n-x} \tag{1}, 其中nn为事件发生次数,而xx为成功的次数。

    例如,抛硬币5次(nn),恰巧有3次正面朝上(x=3x=3,抛硬币正面朝上概率p=1/2p=1/2),可以用式(1)计算出概率为31.25%。

    二项分布的期望与标准差

    期望:E(x)=npE(x)=np,表示某事件发生nn次,预期成功多少次。

    标准差:σ(x)=np(1p)\sigma(x)=\sqrt{np(1-p)},表示数据波动大小

    知道这个期望有啥用呢?

    做任何事情之前,知道预期结果肯定对你后面的决策有帮助。比如你抛硬币5次,每次概率是1/21/2,那么期望E(x)=51/2=2.5E(x)=5*1/2=2.5次,也就是有大约3次你可以抛出正面。

    再比如你之前投资的那5支股票,假设每支股票帮你赚到钱的概率是80%,那么期望E(x)=580%=4E(x)=5*80\%=4,也就是预期会有4只股票投资成功帮你赚到钱。

    几何分布

    其实我一直把几何分布,叫做二项分布的孪生兄弟,因为他两太像了。只有一点不同,就像海尔兄弟只有内裤不同一样。

    在这里插入图片描述

    我们还是从下面这个套路聊起来一起找出这个不同的“劲爆点”:

    1.几何分布有啥用? 2.如何判断是不是几何分布? 3.几何分布如何计算概率?

    几何分布有啥用?

    如果你想知道尝试多少次能取得第一次成功的概率,则需要几何分布。

    如何判断是不是几何分布?

    只要符合下面几个特点就可以判别事件符合几何分布了:

    • 做某事件次数(也叫试验次数)是固定的,用n表示

    例如,抛硬币3次,表白5次

    • 每一次事件都有两个可能的结果(成功,或者失败)

    例如,每一次抛硬币有2个结果:正面表示成功,反面表示失败。每一次表白有2个结果:表白成功,表白失败。

    • 每一次“成功”的概率都是相等的,成功的概率用p表示

    例如,每一次抛硬币正面朝上的概率都是1/2。假设你是初出茅庐的小伙子,还不是老油条,所以你表白每一次成功的概率是一样的。

    • 你感兴趣的是,进行x次尝试这个事情,取得第1次成功的概率是多大

    例如,你在玩抛硬币的游戏,想知道抛5次硬币,只有第5次(就是第1次成功)正面朝上的概率是多大。你表白你的暗恋对象,你希望知道要表白3次,心仪对象答应和你手牵手的概率多大(第一次成功之后就没有后续了)。

    从中可以看出,几何分布与二项分布只有最后一点,也就是解决问题的目的不同。

    几何分布如何计算概率?

    计算公式如下:

    P(x)=(1p)x1pP(x)=(1-p)^{x-1}p,其中pp为每次成功的概率,即为了在第xx尝试后取得第1次成功,首先你要失败x1x-1次。

    假如在表白之前,你计算出即使你尝试表白3次,在最后1次成功的概率还是小于50%,还没有抛硬币的概率高,那你就要考虑换个追求对象;或者首先提升下自己,提高自己每一次表白的概率,比如,下班后晚上去做个头发呀😝😝

    几何分布的期望与标准差

    期望:E(x)=1/pE(x)=1/p

    标准差:σ(x)=(1p)p2\sigma(x)=(1-p)p^2

    知道这个期望有啥用呢?

    假如你每次表白的成功概率是60%,同时你也符合几何分布的特点,期望:E(x)=1/p=1/0.6=1.67E(x)=1/p=1/0.6=1.67,这意味着什么?意味着极有可能一次成功不了😂

    但是,你可以期望自己表白1.67次(约等于2次)会成功,这是不是让你信心倍增,起码你不需要努力上100次才能成功,2次还是能做到的,有必要尝试下。

    泊松分布

    还是同样的套路,从以下几个方面入手:

    1.泊松分布有啥用? 2.如何判断是不是泊松分布? 3.泊松分布如何计算概率?

    泊松分布有啥用?

    如果你想知道某个时间范围内,发生某件事情xx次的概率是多大。这时候就可以用泊松分布轻松搞定。比如一天内中奖的次数,一个月内某机器损坏的次数等。

    *知道这些事情的概率有啥用呢?*当然是根据概率的大小来做出决策了。

    比如,你搞了个抽奖活动,最后算出来一天内中奖10次的概率都超过了90%,然后你顺便算了下期望,再和你的活动成本比一下,发现要赔不少钱,那这个活动就别瞎搞了。

    泊松分布的形状会随着平均值的不同而有所变化,无论是一周内多少人能赢得彩票,还是每分钟有多少人会打电话到呼叫中心,泊松分布都可以告诉我们它们的概率。

    在这里插入图片描述

    如何判断是不是泊松分布?

    • 事件是独立事件

    对于事件AA与事件BB,如果P(AB)=P(A)P(B)P(AB)=P(A)P(B),则事件AA与事件BB独立。类似于抽奖这类的就是独立事件。

    • 在任意相同的时间范围内,事件发的概率相同

    例如,1天内中奖概率,与第2天内中奖概率相同。

    • 你想知道某个时间范围内,发生某件事情xx次的概率是多大

    例如,你搞了个促销抽奖活动,想知道一天内10人中奖的概率。

    泊松分布如何计算概率?

    计算公式如下:

    P(x)=uxeux!P(x)=\frac{u^xe^{-u}}{x!},其中xx代表事件发生次数(例如10个人中奖),uu代表给定时间范围内事件发生的平均次数(例如你搞的抽奖活动1天平均中奖人数是5人)。

    例如,你搞了个促销抽奖活动,只知道1天内中奖的平均个数为5个,你想知道1天内恰巧中奖次数为7的概率是多少?

    此时x=7u=5x=7,u=5(区间内发生的平均次数),代入公式求出概率为10.44%。

    泊松分布的期望与标准差

    期望:E(x)=uE(x)=u

    标准差:σ(x)=u\sigma(x)=u

    正态分布

    上述分布都是离散概率分布,当随机变量是连续型时,情况就完全不一样了。因为离散概率的本质是求x取某个特定值的概率,而连续随机变量不行,它的取值是可以无限分割的,它取某个值时概率近似于0。连续变量是随机变量在某个区间内取值的概率,此时的概率函数叫做概率密度函数。

    正态概率分布(The Normal Distribution),也叫高斯分布(Gaussian Distribution),是连续型随机变量中最重要的分布。世界上绝大部分的分布都属于正态分布,人的身高体重、考试成绩、降雨量等都近似服从。

    为什么叫正太分布,我也不理解,因为英文单词“Normal”意思是“常见的,典型的”,不应该叫常态分布么😂😹(湾湾好像就是这么翻译的😶😶)

    正态分布如同一条钟形曲线。中间高,两边低,左右对称。想象身高体重、考试成绩,是否都呈现这一类分布态势:大部分数据集中在某处,小部分往两端倾斜。

    正太概率密度函数为:

    f(x;μ,σ)=1σ2πe(xμ)2/2σ2(2)f(x;\mu,\sigma)=\frac{1}{\sigma\sqrt{2\pi}}e^{-(x-\mu)^2/2\sigma^2} \tag{2}

    其中,μ\mu代表均值,σ\sigma代表标准差,不同的取值将会形成不同形状的正态分布。均值决定分布的左右偏移,标准差决定分布曲线的宽度和平坦,值越大曲线越平坦。如下图所示,正态随机变量有69.3%的值在均值加减一个标准差的范围内,95.4%的值在两个标准差内,99.7%的值在三个标准差内。这条经验法则可以帮助我们快速计算数据的大体分布。

    在这里插入图片描述

    当均值μ=0\mu=0,标准差σ=1\sigma=1时,正态分布被叫做标准正态分布。它的随机变量用zz表示,它是统计推理的基础。并可进一步简化公式:

    f(z)=12πez2/2f(z)=\frac{1}{\sqrt{2\pi}}e^{-z^2/2}

    现在可以使用简化的公式计算概率密度了,为什么这么说呢,因为所有的正态分布都可以转换为标准正态分布,只需z=(xμ)/σz=(x-\mu)/\sigma即可。

    何时采用正态分布?

    缺乏实数上分布的先验知识, 不知选择何种形式时, 默认选择正态分布总是不会错的, 理由如下:

    1. 中心极限定理告诉我们, 很多独立随机变量均近似服从正态分布, 现实中很多复杂系统都可以被建模成正态分布的噪声, 即使该系统可以被结构化分解。
    2. 正态分布是具有相同方差的所有概率分布中, 不确定性最大的分布, 换句话说, 正态分布是对模型加入先验知识最少的分布。

    概率分布扩展

    Bernoulli分布

    Bernoulli分布是单个二值随机变量分布, 单参数ϕ\phi∈[0,1]控制,ϕ\phi给出随机变量等于1的概率. 主要性质有:
    P(x=1)=ϕP(x=0)=1ϕP(x=x)=ϕx(1ϕ)1x\begin{aligned}P(x=1) &= \phi \\P(x=0) &= 1-\phi \\P(x=x) &= \phi^x(1-\phi)^{1-x} \\\end{aligned}
    其期望和方差为:
    Ex[x]=ϕVarx(x)=ϕ(1ϕ)\begin{aligned} E_x[x] &= \phi \\ Var_x(x) &= \phi{(1-\phi)} \end{aligned}
    Multinoulli分布也叫范畴分布, 是单个k值随机分布,经常用来表示对象分类的分布. 其中kk是有限值.Multinoulli分布由向量p[0,1]k1\vec{p}\in[0,1]^{k-1}参数化,每个分量pip_i表示第ii个状态的概率, 且pk=11Tpp_k=1-1^Tp.

    适用范围: 伯努利分布适合对离散型随机变量建模.

    指数分布

    深度学习中, 指数分布用来描述在x=0x=0点处取得边界点的分布, 指数分布定义如下:
    p(x;λ)=λIx0exp(λx)(3) p(x;\lambda)=\lambda I_{x\geq 0}exp(-\lambda{x}) \tag{3}
    指数分布用指示函数Ix0I_{x\geq 0}来使xx取负值时的概率为零。

    Laplace 分布

    一个联系紧密的概率分布是 Laplace 分布(Laplace distribution),它允许我们在任意一点 μ\mu处设置概率质量的峰值
    Laplace(x;μ;γ)=12γexp(xμγ)(4) Laplace(x;\mu;\gamma)=\frac{1}{2\gamma}exp\left(-\frac{|x-\mu|}{\gamma}\right) \tag{4}
    Dirac分布和经验分布

    Dirac分布可保证概率分布中所有质量都集中在一个点上. Diract分布的狄拉克δ\delta函数(也称为单位脉冲函数)定义如下:
    p(x)=δ(xμ),xμ(5) p(x)=\delta(x-\mu), x\neq \mu \tag{5}

    abδ(xμ)dx=1,a<μ<b(6) \int_{a}^{b}\delta(x-\mu)dx = 1, a < \mu < b \tag{6}

    Dirac 分布经常作为 经验分布(empirical distribution)的一个组成部分出现
    p^(x)=1mi=1mδ(xx(i))(7) \hat{p}(\vec{x})=\frac{1}{m}\sum_{i=1}^{m}\delta(\vec{x}-{\vec{x}}^{(i)}) \tag{7}
    , 其中, m个点x1,...,xmx^{1},...,x^{m}是给定的数据集, 经验分布将概率密度1m\frac{1}{m}赋给了这些点.

    当我们在训练集上训练模型时, 可以认为从这个训练集上得到的经验分布指明了采样来源.

    适用范围: 狄拉克δ函数适合对连续型随机变量的经验分布.

    2.2.4 联合概率、边缘概率、条件概率

    1. 联合概率

    联合概率指的是包含多个条件且所有条件同时成立的概率,记作P(X=a,Y=b)P(X=a,Y=b)P(a,b)P(a,b)。代表在多元的概率分布中多个随机变量分别满足各自条件的概率。

    1. 边缘概率

    边缘概率是与联合概率对应的,P(X=a)P(X=a)P(Y=b)P(Y=b),这类仅与单个随机变量有关的概率称为边缘概率。

    联合概率与边缘概率关系

    联合分布可求边缘分布,但若只知道边缘分布,无法求得联合分布。

    P(X=a)=bP(X=a,Y=b)(8)P(X=a)=\sum_{b}P(X=a,Y=b) \tag{8}

    P(X=b)=aP(X=a,Y=b)(9)P(X=b)=\sum_{a}P(X=a,Y=b) \tag{9}
    求和符号表示穷举所有YY(或XX)所能取的bb(或aa)后,所有对应值相加得到的和。

    1. 条件概率

    条件概率表示在条件Y=bY=b成立的情况下,X=aX=a的概率,记作P(X=aY=b)P(X=a|Y=b)P(ab)P(a|b),它具有如下性质:
    “在条件Y=bY=bXX的条件分布”也是一种“XX的概率分布”,因此穷举XX的可取值之后,所有这些值对应的概率之和为1即:
    aP(X=aY=b)=1(10)\sum_{a}P(X=a|Y=b)=1 \tag{10}

    条件概率例子: 条件概率文氏图示意

    在这里插入图片描述

    根据文氏图,可以很清楚地看到在事件B发生的情况下,事件A发生的概率就是P(AB)P(A\bigcap B)除以P(B)P(B)

    P(AB)=P(AB)/P(B)(11)P(A|B) = P(A\cap B) / P(B) \tag{11}

    可以这样解释:在同一个样本空间Ω\Omega中的事件或者子集AABB,如果随机从Ω\Omega中选出的一个元素属于BB,那么下一个随机选择的元素属于AA 的概率就定义为在BB的前提下AA的条件概率。

    1. 联合概率、边缘概率与条件概率之间的关系

    借用上面例子的图示,有

    P(X=AY=B)=P(X=A,Y=B)P(Y=B)(12)P(X=A|Y=B) = \frac{P(X=A,Y=B)}{P(Y=B)} \tag{12}

    将概率从面积的角度来看:

    • 联合概率P(X=A,Y=B)P(X=A,Y=B)
      满足X=AX=AY=BY=B的面积
    • 边缘概率P(X=A)P(X=A)
      不考虑YY的取值,所有满足X=AX=A的区域的总面积
    • 条件概率P(X=AY=B)P(X=A|Y=B)
      Y=BY=B的前提下,满足X=AX=A的面积(比例)

    **思考:**联合概率、边缘概率、条件概率与贝叶斯的关系?

    多说一点:条件概率的链式法则

    什么是条件概率的链式法则,直白点就是条件概率的推广。

    由条件概率的定义,可直接得出下面的乘法公式:
    ​乘法公式 设A,BA, B是两个事件,并且P(A)>0P(A) > 0, 则有
    P(AB)=P(BA)P(A)(13)P(AB) = P(B|A)P(A) \tag{13}
    推广
    P(ABC)=P(CAB)P(BA)P(A)(14)P(ABC)=P(C|AB)P(B|A)P(A) \tag{14}
    一般地,用归纳法可证:若P(A1A2...An)>0P(A_1A_2...A_n)>0,则有
    P(A1A2...An)=P(AnA1A2...An1)P(An1A1A2...An2)...P(A2A1)P(A1)=P(A1)i=2nP(AiA1A2...Ai1)(15)P(A_1A_2...A_n)=P(A_n|A_1A_2...A_{n-1})P(A_{n-1}|A_1A_2...A_{n-2})...P(A_2|A_1)P(A_1)=P(A_1)\prod_{i=2}^{n}P(A_i|A_1A_2...A_{i-1}) \tag{15}
    任何多维随机变量联合概率分布,都可以分解成只有一个变量的条件概率相乘形式。

    补充:独立性和条件独立性

    独立性
    ​两个随机变量XXYY,概率分布表示成两个因子乘积形式,一个因子只包含XX,另一个因子只包含YY,两个随机变量相互独立(independent)。
    ​条件有时为不独立的事件之间带来独立,有时也会把本来独立的事件,因为此条件的存在,而失去独立性。
    ​举例:P(XY)=P(X)P(Y)P(XY)=P(X)P(Y), 事件XX和事件YY独立。此时给定ZZ
    P(X,YZ)P(XZ)P(YZ)(16) P(X,Y|Z) \not = P(X|Z)P(Y|Z) \tag{16}
    事件独立时,联合概率等于概率的乘积。这是一个非常好的数学性质,然而不幸的是,无条件的独立是十分稀少的,因为大部分情况下,事件之间都是互相影响的。

    条件独立性
    ​给定ZZ的情况下,XXYY条件独立,当且仅当
    XYZ    P(X,YZ)=P(XZ)P(YZ)(17) X\bot Y|Z \iff P(X,Y|Z) = P(X|Z)P(Y|Z) \tag{17}
    XXYY的关系依赖于ZZ,而不是直接产生。

    **举例:**定义如下事件:
    XX:明天下雨;
    YY:今天的地面是湿的;
    ZZ:今天是否下雨;
    ZZ事件的成立,对XXYY均有影响,然而,在ZZ事件成立的前提下,今天的地面情况对明天是否下雨没有影响。

    2.2.5 全概率、贝叶斯理解

    1) 全概率公式

    基本思想是:先化整为零,再聚零为整。

    从一个例子入手:
    人的性别由一对染色体决定:男性为XY,女性为XX,每个人从父母处各得到一个性染色体,色盲基因由X染色体携带,依此,若男性的X染色体有此基因则男性患色盲,女性则要两个X染色体均由此基因才患色盲,而两个染色体是否有色盲基因是独立的。设色盲基因出现的概率是0.08,男女婴出生比例为110:100。问一新生儿有色盲的概率是多少?

    设“新生儿有色盲”为事件A,则目标概率为P(A)P(A),记B1B_1表示“男婴”,B2B_2表示“女婴”,则有:

    P(B1)=110110+100=1.11.1+1P(B_1)=\frac{110}{110+100}=\frac{1.1}{1.1+1}
    P(AB1)=0.08P(A|B_1)=0.08
    P(AB2)=0.080.08=0.0064P(A|B_2)=0.08 * 0.08=0.0064

    P(B1)=110110+100=1.11.1+1P(B_1)=\frac{110}{110+100}=\frac{1.1}{1.1+1}
    P(B2)=100110+100=11.1+1P(B_2)=\frac{100}{110+100}=\frac{1}{1.1+1}
    P(AB1)=0.08P(A|B_1)=0.08
    P(AB2)=0.080.08=0.0064P(A|B_2)=0.08 * 0.08=0.0064

    进一步地,加权平均,则

    P(A)=P(B1)P(AB1)+P(B2)P(AB2)=0.081.11.1+1+0.006411.1+1=0.045P(A)=P(B_1) * P(A|B_1)+P(B_2) * P(A|B_2)=0.08*\frac{1.1}{1.1+1}+0.0064*\frac{1}{1.1+1}=0.045

    在这个例子中,B1B_1B2B_2是互斥事件,即,不可能出现既是男性又是女性的情况,并且这些互斥事件对样本空间是完备的(B1B_1B2B_2=样本空间),也就是说除了这两种性别,这个样本空间里没有其他性别了。现有另外一个事件A(新生儿有色盲),我们可以很容易理解,在B1B_1发生下AA发生和在B2B_2发生下AA发生包含了所有AA发生的情况,也即是,男性婴儿患色盲与女性婴儿患色盲加和就是所有婴儿患色盲的情况。

    一般性情况如下图所示:
    在这里插入图片描述

    如图,B1,B2,B3,,BnB_1,B_2,B_3,\cdots,B_n互斥(没有交叠),且构成了样本空间的完备集。则计算A发生概率的步骤为:

    • 先化整为零计算P(ABi),i=1,2,,nP(A|B_i),i=1,2,\cdots,n
    • 再聚零为整计算P(ABi)P(Bi)++P(ABn)P(Bn)P(A|B_i)P(B_i)+\cdots+P(A|B_n)P(B_n)

    得到全概率公式:

    P(A)=i=1nP(ABi)P(Bi)(18)P(A)=\sum _{i=1}^nP(A|B_i)P(B_i)\tag{18}

    全概率公式通过划分{Bii=1...n}\left \{ B_i \mid i=1...n \right \}来计算一个事件AA的概率,更重要的是,有时候需要弄清楚在AA发生的条件下,每个BiB_i发生的条件概率。即反过来考虑,这个新生儿患有色盲,那它是男性或女性的概率分别是多少。这就是我们的贝叶斯解决的问题。

    2) 贝叶斯定理

    简介

    贝叶斯定理是18世纪英国数学家托马斯·贝叶斯(Thomas Bayes)提出得重要概率论理论。以下摘一段 wikipedia 上的简介:

    所谓的贝叶斯定理源于他生前为解决一个“逆概”问题写的一篇文章,而这篇文章是在他死后才由他的一位朋友发表出来的。在贝叶斯写这篇文章之前,人们已经能够计算“正向概率”,如“假设袋子里面有 N 个白球,M 个黑球,你伸手进去摸一把,摸出黑球的概率是多大”。而一个自然而然的问题是反过来:“如果我们事先并不知道袋子里面黑白球的比例,而是闭着眼睛摸出一个(或好几个)球,观察这些取出来的球的颜色之后,那么我们可以就此对袋子里面的黑白球的比例作出什么样的推测”。这个问题,就是所谓的逆向概率问题。

    贝叶斯定理的思想出现在18世纪,但真正大规模派上用途还得等到计算机的出现。因为这个定理需要大规模的数据计算推理才能凸显效果,它在很多计算机应用领域中都大有作为,如自然语言处理,机器学习,推荐系统,图像识别,博弈论等等。

    定义

    贝叶斯定理是关于随机事件A和B的条件概率:

    P(AB)=P(BA)P(A)P(B)(19)P(A|B)=\frac{P(B|A)P(A)}{P(B)} \tag{19}

    其中P(AB)P(A|B)是在BB发生的情况下AA发生的可能性。在贝叶斯定理中,每个名词都有约定俗成的名称:

    1. P(A)P(A)AA的先验概率,之所以称之为“先验”,是因为它不考虑任何BB的事件的因素;
    2. P(AB)P(A|B)是已知BB发生后AA的条件概率,也由于得自BB的取值而被称作AA的后验概率。
    3. P(BA)P(B|A)是已知AA发生后BB的条件概率,也由于得自AA的取值而被称作BB的后验概率。
    4. P(B)P(B)BB的先验概率,也作标淮化常量(normalizing constant)。

    推导

    我们可以从条件概率的定义推导出贝叶斯定理。
    根据条件概率的定义,在事件BB发生的条件下条件AA发生的概率为:

    P(AB)=P(AB)P(B)(20)P(A|B)=\frac{P(A\cap B)}{P(B)} \tag{20},其中P(AB)P(A\cap B)A,BA,B的联合概率。

    同样地,在事件AA发生的条件下事件BB发生的概率为:

    P(BA)=P(AB)P(A)(21)P(B|A)=\frac{P(A\cap B)}{P(A)} \tag{21},其中P(AB)P(A\cap B)A,BA,B的联合概率。

    结合式(20)和式(21),可以得到:

    P(AB)P(B)=P(AB)=P(BA)P(A)(22)P(A|B)P(B)=P(A\cap B)=P(B|A)P(A) \tag{22}

    这个引理有时称作概率乘法规则。上式两边同除以P(B)P(B),若P(B)P(B)是非零的,我们可以得到贝叶斯定理:

    P(AB)=P(BA)P(A)P(B)(23)P(A|B)=\frac{P(B|A)P(A)}{P(B)} \tag{23}

    解释

    通常,事件AA在事件BB发生的条件下的概率,与事件BB在事件AA发生的条件下的概率是不一样的;然而,这两者是有确定关系的,贝叶斯定理就是这种关系的陈述。

    贝叶斯公式的用途在于通过己知三个概率来推测第四个概率。它的内容是:在BB出现的前提下,AA出现的概率等于AA出现的前提下BB出现的概率乘以AA出现的概率再除以BB出现的概率。通过联系AABB,计算从一个事件发生的情况下另一事件发生的概率,即从结果上溯到源头(也即逆向概率)。

    通俗地讲就是当你不能确定某一个事件发生的概率时,你可以依靠与该事件本质属性相关的事件发生的概率去推测该事件发生的概率。用数学语言表达就是:支持某项属性的事件发生得愈多,则该事件发生的的可能性就愈大。这个推理过程有时候也叫贝叶斯推理。

    示例

    已知男性中有5%是色盲患者,女性中有0.25%是色盲患者,现从男女比例为20:180的人群中随机地挑选一个人,发现恰好是色盲患者,问此人是男性的概率大还是女性的概率大。
      解答:
      记AA表示为色盲患者;记B1B_1表示问男性,B2B_2表示为女性,则:

    P(B1)=2020+180=110P(B_1)=\frac{20}{20+180}=\frac{1}{10}
    P(B2)=18020+180=910P(B_2)=\frac{180}{20+180}=\frac{9}{10}
    P(AB1)=0.05P(A|B_1)=0.05
    P(AB2)=0.0025P(A|B_2)=0.0025
    P(A)=P(AB1)P(B1)+P(AB2)P(B2)P(A)=P(A|B_1)P(B_1)+P(A|B_2)P(B_2)

    由贝叶斯公式(40)可得:
      该色盲患者是男性的概率是:P(B1A)=P(AB1)P(B1)P(A)=0.69P(B_1|A)=\frac{P(A|B_1)P(B_1)}{P(A)}=0.69
      该色盲患者是女性的概率是: P(B2A)=P(AB2)P(B2)P(A)=0.31P(B_2|A)=\frac{P(A|B_2)P(B_2)}{P(A)}=0.31
      由于0.69>0.310.69>0.31,从而可得该色盲患者是男性的概率比较大。

    小结

    以上基本为我们的概率论部分,下面为数理统计部分。

    2.2.6 期望、方差、协方差、相关系数

    1) 期望

    其实上文已经多次提到了期望,这里正式定义一番:在概率与数理统计中,数学期望(或均值,亦简称期望)是试验中每次可能结果的概率乘以其结果的总和。它反映随机变量平均取值的大小。

    性质:

    • 线性运算: E(aX+bY+c)=aE(X)+bE(Y)+cE(aX+bY+c) = aE(X)+bE(Y)+c
    • 推广形式: E(k=1naiXi+c)=k=1naiE(Xi)+cE(\sum_{k=1}^{n}{a_iX_i+c}) = \sum_{k=1}^{n}{a_iE(X_i)+c}

    函数期望:设设f(x)f(x)xx的函数,则f(x)f(x)的期望为

    • 离散函数: E(f(x))=k=1nf(xk)P(xk)E(f(x))=\sum_{k=1}^{n}{f(x_k)P(x_k)}
    • 连续函数: E(f(x))=+f(x)p(x)dxE(f(x))=\int_{-\infty}^{+\infty}{f(x)p(x)dx}

    注意:

    • 函数的期望大于等于期望的函数(JensenJensen不等式),即E(f(x))f(E(x))E(f(x))\geqslant f(E(x))
    • 一般情况下,乘积的期望不等于期望的乘积。
    • 如果XXYY相互独立,则E(XY)=E(X)E(Y)E(XY)=E(X)E(Y)

    2) 方差

    概率论中方差用来度量随机变量和其数学期望(即均值)之间的偏离程度。方差是一种特殊的期望。定义为:
    Var(X)=E((XE(X))2)(23) Var(X) = E((X-E(X))^2) \tag{23}

    方差性质:

    1)Var(X)=E(X2)E(X)2Var(X) = E(X^2) -E(X)^2
    2)常数的方差为0;
    3)方差不满足线性性质;
    4)如果XXYY相互独立, Var(aX+bY)=a2Var(X)+b2Var(Y)Var(aX+bY)=a^2Var(X)+b^2Var(Y)

    前文提到的标准差,是方差的算术平方根,即σ=Var(X)\sigma=\sqrt{Var(X)}

    3) 协方差

    协方差是衡量两个变量线性相关性强度及变量尺度。两个随机变量的协方差定义为:
    Cov(X,Y)=E((XE(X))(YE(Y)))(24) Cov(X,Y)=E((X-E(X))(Y-E(Y))) \tag{24}
    方差是一种特殊的协方差。当X=YX=Y时,Cov(X,Y)=Var(X)=Var(Y)Cov(X,Y)=Var(X)=Var(Y)

    协方差性质:

    1)独立变量的协方差为0。
    2)协方差计算公式:

    Cov(i=1maixi,j=1mbjyj)=i=1mj=1maibjCov(xiyi)(25)Cov(\sum_{i=1}^{m}{a_ix_i}, \sum_{j=1}^{m}{b_jy_j}) = \sum_{i=1}^{m} \sum_{j=1}^{m}{a_ib_jCov(x_iy_i)} \tag{25}

    3)特殊情况:

    Cov(a+bx,c+dy)=bdCov(x,y)(26)Cov(a+bx, c+dy) = bdCov(x, y) \tag{26}

    4) 相关系数

    相关系数是研究变量之间线性相关程度的量。两个随机变量的相关系数定义为:

    Corr(x,y)=Cov(x,y)Var(x)Var(y)(27)Corr(x,y) = \frac{Cov(x,y)}{\sqrt{Var(x)Var(y)}} \tag{27}

    相关系数的性质:
    1)有界性。相关系数的取值范围是[1,1][-1,1],可以看成无量纲的协方差。
    2)值越接近1,说明两个变量正相关性(线性)越强。越接近-1,说明负相关性越强,当为0时,表示两个变量没有相关性。

    2.2.7 参数估计

    统计学方法包括统计描述和统计推断两种方法,其中,推断统计又包括参数估计和假设检验。上文介绍了基本的统计描述,本节将介绍常用参数估计。

    参数估计就是用样本统计量去估计总体的参数的真值,它的方法有点估计和区间估计两种。

    点估计就是直接以样本统计量直接作为相应总体参数的估计值。点估计的缺陷是没法给出估计的可靠性,也没法说出点估计值与总体参数真实值接近的程度。

    区间估计是在点估计的基础上给出总体参数估计的一个估计区间,该区间是由样本统计量加减允许误差(极限误差)得到的。在区间估计中,由样本统计量构造出的总体参数在一定置信水平下的估计区间称为置信区间。

    在其它条件相同的条件下,区间估计中置信度越高,置信区间越大。置信水平为1-a, a(显著性水平)为小概率事件或者不可能事件,常用的置信水平值为99%,95%,90%,对应的a为0.01, 0.05, 0.1

    1)最大似然估计最大后验估计贝叶斯估计

    在这里插入图片描述

    在这里插入图片描述

    2) 上文提到推断统计包括参数估计和假设检验,那剩下的假设检验就留给大家思考

    假设检验与参数估计之间的相同点、联系与区别?

    声明

    本博客所有内容仅供学习,不为商用,如有侵权,请联系博主谢谢。

    参考文献

    [1] 盛骤,试式千,潘承毅等编. 概率论与数理统计(第4版)[M],高等教育出版社,2008
    [2] 猴子聊机器学习
    [3] Jim Liang, Getting Started with Machine Learning,2018
    [4] 周志华.机器学习[M].清华大学出版社,2016.
    [5] Ian,Goodfellow,Yoshua,Bengio,Aaron…深度学习[M],人民邮电出版,2017
    [6] WikiPedia贝叶斯定理
    [7] Mbalib贝叶斯法则
    [8] 刘伟鹏,数学之美番外篇:平凡而又神奇的贝叶斯方法

    展开全文
  • select…from…:相当于投影操作 distinct:消除重复行 where:条件查询 在SQL中,between…and… 是包含等号的 ...COUNT:按列值统计个数 count函数对空值计算,但是对0值计算 group by:分组查询,将查询结果按属.
    1. select…from…:相当于投影操作
    2. distinct:消除重复行
    3. where:条件查询
    4. 在SQL中,between…and… 是包含等号的
    5. in:查询属性值属于指定集合的元组
    6. 部分匹配查询:’%'是代表0个和多个字符 , ‘_’是代表一个字符
    7. 空值查询:例如:where sno is null
    8. 常用的库函数:AVG:按列计算平均值
      SUM:求和
      MAX:求最大值
      MIN:求最小值
      COUNT:按列值统计个数
    9. count函数对空值不计算,但是对0值计算
    10. group by:分组查询,将查询结果按属性列或者属性组合在行的方向上进行分组,每组在属性或属性列组合上具有相同的值。
    11. order by:查询结果的排序,DESC是降序,ASC是升序(缺省时为升序)
      例:order by sno , score desc 是指:查询结果按学号升序排列,学号相同再按成绩降序

    连接查询结构:
    内连接查询:
    1,from子句指明进行连接的表名
    where子句指明连接的列名及其条件
    外连接查询:
    2,利用关键字join进行连接此时要有’on’来与’from’对应
    inner join:内连接(默认值)
    left join:显示左边的符合要求的全部行,此时右边表不符合的填充为null
    right join:与左连接相反,这个是以右边的表为主
    full join:显示符合条件的数据行,以及左边表和右边表中不符合条件的数据行会以null来显示
    cross join:将表的每一个值与右边的表的每一个记录匹配成新的数据行。
    自连接查询: 这个表自己与自己连接,给这个表取两个别名,然后用上面这两种连接查询。

    展开全文
  • 技巧179 表筛选不重复值 技巧180 利用合并计算进行数值型数据核对 技巧181 文本型数据核对 第17章 数据透视表 技巧182 用二维表创建数据透视表 技巧183 自动刷新数据透视表 技巧184 快速统计重复项目...
  • E库多条件查询模块.ec E库模糊查询模块.ec E 电子琴.ec fhhs.ec filetime.ec FlyFox_hotkey.ec FlyFox_ram.ec font.ec Force.ec ForceSample.ec freemark 模块_取文件.ec ftp文件操作模块.ec gdiplus类模块.ec ...
  • n 网页服务器日志经过Sawmill分析统计后,可统计显示上传下载数据量、统计时间区间存取次数以及任何存取异常状况;也能显示出某些网页的平均存取数量,藉以了解网站运作趋势,使得一行行的日志,转化为具有商业价值...
  • 23MySQL常用查询语句

    2017-08-03 15:12:53
    查询数值型数据 查询字符串 查询日期型数据 查询逻辑型数据 查询非空数据 利用变量查询数值型数据 利用变量查询字符串数据 查询前n条记录 查询后n条记录 查询从指定位置开始的n条记录 ...对数据进行多条件查询 对统计

    1. 查询数值型数据:

     SELECT * FROM tb_name WHERE sum > 100;
     --  查询谓词:>,=,<,<>,!=,!>,!<,=>,=<

    2.查询字符串

     SELECT * FROM tb_stu  WHERE sname  =  '小刘'
     SELECT * FROM tb_stu  WHERE sname like '刘%'
     SELECT * FROM tb_stu  WHERE sname like '%程序员'
     SELECT * FROM tb_stu  WHERE sname like '%PHP%'

    3.查询日期型数据

     SELECT * FROM tb_stu WHERE date = '2011-04-08';
    -- 注:不同数据库对日期型数据存在差异: 
    -- mysql:
    SELECT * from tb_name WHERE birthday = '2011-04-08';
    -- sql server:
    SELECT * from tb_name WHERE birthday = '2011-04-08';
    -- access:
    SELECT * from tb_name WHERE birthday = #2011-04-08#;

    4.查询逻辑型数据

    逻辑运算符: AND OR NOT

    SELECT * FROM tb_name WHERE type = 'T';
    SELECT * FROM tb_name WHERE type = 'F';

    5.查询非空数据

     -- 注:<>相当于PHP中的!=
    SELECT * FROM tb_name WHERE address <>'' order by addtime desc

    6.利用变量查询数值型数据

     -- 注:利用变量查询数据时,传入SQL的变量不必用引号括起来,因为PHP中的字符串与数值型数据进行连接时,程序会自动将数值型数据转变成字符串,然后与要连接的字符串进行连接
     SELECT * FROM tb_name WHERE id = '$_POST[text]' 

    7.利用变量查询字符串数据

    -- 完全匹配的方法"%%"表示可以出现在任何位置
    SELECT * FROM tb_name WHERE name LIKE '%$_POST[name]%' 

    8.查询前n条记录

     SELECT * FROM tb_name LIMIT 0,$N;
     -- limit语句与其他语句,如order by等语句联合使用,会使用SQL语句千变万化,使程序非常灵活

    9.查询后n条记录

     SELECT * FROM tb_stu ORDER BY id ASC LIMIT $n

    10.查询从指定位置开始的n条记录

    --  注意:数据的id是从0开始的
     SELECT * FROM tb_stu ORDER BY id ASC LIMIT $_POST[begin],$n
    

    11.查询统计结果中的前n条记录

     SELECT * ,(yw+sx+wy) AS total FROM tb_score ORDER BY (yw+sx+wy) DESC LIMIT 0,$num

    12.查询指定时间段的数据

    语法:SELECT 要查找的字段 FROM 表名 WHERE 字段名 BETWEEN 初始值 AND 终止值

    SELECT * FROM tb_stu WHERE age BETWEEN 0 AND 18

    13.按月查询统计数据

     SELECT * FROM tb_stu WHERE month(date) = '$_POST[date]' ORDER BY date ;
    -- 注:SQL语言中提供了如下函数,利用这些函数可以很方便地实现按年、月、日进行查询
    -- year(data):返回data表达式中的公元年分所对应的数值
    -- month(data):返回data表达式中的月分所对应的数值
    -- day(data):返回data表达式中的日期所对应的数值

    14.查询大于指定条件的记录

     SELECT * FROM tb_stu WHERE age>$_POST[age] ORDER BY age;

    15.查询结果不显示重复记录

    -- 注:SQL语句中的DISTINCT必须与WHERE子句联合使用,否则输出的信息不会有变化 ,且字段不能用*代替
    
    -- 语法:
    SELECT DISTINCT 字段名 FROM 表名 WHERE 查询条件

    16.NOT与谓词进行组合条件的查询

    • NOT BERWEEN … AND … 对介于起始值和终止值间的数据时行查询 可改成 <起始值 AND >终止值
    • IS NOT NULL 对非空值进行查询
    • IS NULL 对空值进行查询
    • NOT IN 该式根据使用的关键字是包含在列表内还是排除在列表外,指定表达式的搜索,搜索表达式可以是常量或列名,而列名可以是一组常量,但更多情况下是子查询

    17.显示数据表中重复的记录和记录条数

    SELECT  name,age,count(*) ,age FROM tb_stu WHERE age = '19' group by date

    18.对数据进行降序/升序查询

    --  注:对字段进行排序时若不指定排序方式,则默认为ASC升序
     SELECT 字段名 FROM tb_stu WHERE 条件 ORDER BY 字段 DESC 降序
     SELECT 字段名 FROM tb_stu WHERE 条件 ORDER BY 字段 ASC  升序

    19.对数据进行多条件查询

    --  注意:对查询信息进行多条件排序是为了共同限制记录的输出,一般情况下,由于不是单一条件限制,所以在输出效果上有一些差别。
     SELECT 字段名 FROM tb_stu WHERE 条件 ORDER BY 字段1 ASC 字段2 DESC

    20.对统计结果进行排序

     -- 函数SUM([ALL]字段名) 或 SUM([DISTINCT]字段名),可实现对字段的求和,函数中为ALL时为所有该字段所有记录求和,若为DISTINCT则为该字段所有不重复记录的字段求和。
     -- 如:
     SELECT name,SUM(price) AS sumprice  FROM tb_price GROUP BY name
     SELECT * FROM tb_name ORDER BY mount DESC,price ASC

    21.单列数据分组统计

    -- 注:当分组语句"group by"排序语句"order by"同时出现在SQL语句中时,要将分组语句书写在排序语句的前面,否则会出现错误
    SELECT id,name,SUM(price) AS title,date FROM tb_price GROUP BY pid ORDER BY title DESC
    

    22.多列数据分组统计

    多列数据分组统计与单列数据分组统计类似
    SELECT *,SUM(字段1*字段2) AS (新字段1) FROM 表名 GROUP BY 字段 ORDER BY 新字段1 DESC

    --  注:group by语句后面一般为不是聚合函数的数列,即不是要分组的列
    SELECT id,name,SUM(price*num) AS sumprice  FROM tb_price GROUP BY pid ORDER BY sumprice DESC

    23.多表分组统计

     SELECT a.name,AVG(a.price),b.name,AVG(b.price) FROM tb_demo058 AS a,tb_demo058_1 AS b WHERE a.id=b.id GROUP BY b.type;
    展开全文
  • 统计学方法与数据分析(上下册)

    热门讨论 2013-12-29 11:32:47
    作者把统计数据的收集与分析过程总结成"四步法",并把"四步法"的讲解贯穿始终,利用实例逐步展开并阐明在设计调查研究或试验时所需要的统计技术和思路,然后讲解用直观、有效的"四步法"来收集并分析数据,非常利于...
  • 1350多个精品易语言模块提供下载

    热门讨论 2011-06-06 17:51:09
    E库多条件查询模块.ec E库模糊查询模块.ec E 电子琴.ec fhhs.ec filetime.ec FlyFox_hotkey.ec FlyFox_ram.ec font.ec Force.ec ForceSample.ec freemark 模块_取文件.ec ftp文件操作模块.ec gdiplus类模块.ec ...
  • 题意:组输入,每组数据第一行n,代表数列中元素个数,接下来n个数。从这n个数中找出满足下列条件的a,b,c,d四个数 求满足条件的个数。 题目链接: 思路分析:题目 就是让找一对逆序,与一对顺序,...

    题意:多组输入,每组数据第一行n,代表数列中元素个数,接下来n个数。从这n个数中找出满足下列条件的a,b,c,d四个数

    求满足条件的个数。


    题目链接:


    思路分析:题目 就是让找一对逆序,与一对顺序,并且两对数不能有重复的元素。重复是指位置重复,并不是值一样。找出全部的逆序数,顺序数两个 数相乘再进行去重就得到答案


    代码实现:用树状数组来统计第i个位置左边小于它的个数,左边大于他的个数。再逆序建立树状数组,找出第i个位置右面大于它的个数,右面小于它的个数。在建立树状数组之前要注意进行离散化,我的离散化感觉有点麻烦,用结构体来存的元素val代表原来的值,pre代表最初的顺序,now代表离散化后的数。离散化的数值是从2开始的,因为之后树状数组查询的是查询i-1排除重复的元素,避开i-1值为0。

    队友的离散化感觉挺简单的:

    		for(int i=0; i < n ; i++){
    			scanf("%I64d",&num[i]);
    			tmp[i]=num[i];
    		}
    		sort(tmp,tmp+n);
    		ll size=unique(tmp,tmp+n)-tmp ;
    		for(int i=0; i < n ; i++){
    			num[i]=lower_bound(tmp,tmp+size,num[i]) - tmp + 1;
    		}


    AC代码(为了方便全部定义为了long long):

    #include <iostream>
    #include <cmath>
    #include <stdio.h>
    #include <algorithm>
    #include <cstring>
    #include <map>
    
    using namespace std;
    
    typedef long long ll;
    typedef long long LL;
    
    #define maxn 50050
    
    struct NUM
    {
        ll pre;///读入的元素
        ll now;///离散后的数
        ll val;///输入的值
    }num[maxn];
    
    bool cmp1(NUM a,NUM b)
    {
        if(a.val==b.val)
            return a.pre<b.pre;
        return a.val<b.val;
    }
    
    bool cmp(NUM a,NUM b)
    {
        return a.pre<b.pre;
    }
    
    ll  a[maxn];
    
    ll c[maxn],n;///c[]存储树状数组
    
    ll lowbit(ll x)
    {
        return x&(-x);
    }
    
    void update(ll i,ll x)
    {
        while(i<=n) {c[i]=c[i]+x; i+=lowbit(i);}
    }
    
    
    ll query(ll i)
    {
        ll ans=0;
        while(i>0)  {ans+=c[i]; i-=lowbit(i);}
        return ans;
    }
    
    struct type///记录每个数的左右比他大的和小的个数
    {
        ll lbig,llow,rbig,rlow;
    }numflag[maxn];
    
    int main()
    {
        ll N;
        while(~scanf("%I64d",&N))
        {
            for(ll i=1;i<=N;i++)
            {
                scanf("%I64d",&num[i].val);
                num[i].pre=i;
            }
            sort(num+1,num+1+N,cmp1);
            num[1].now=2;
            n=2;
            for(ll i=2;i<=N;i++)
            {
               if(num[i].val!=num[i-1].val)
                    n++;
                num[i].now=n;
            }
            sort(num+1,num+1+N,cmp);
    
            memset(c,0,sizeof(c));
            for(ll i=1;i<=N;i++)
            {
                update(num[i].now,1);
                numflag[i].llow=query(num[i].now-1);
                numflag[i].lbig=i-query(num[i].now);
            }
            memset(c,0,sizeof(c));///逆序建立新的树状数组
            for(int i=N;i>=1;i--)
            {
                update(num[i].now,1);
                numflag[i].rlow=query(num[i].now-1);
                numflag[i].rbig=N-i+1-query(num[i].now);
            }
            ll suml=0,sumr=0;///suml顺序对的个数,sumr逆序对的个数
            for(int i=1;i<=N;i++)
            {
                suml+=numflag[i].lbig;
                sumr+=numflag[i].rbig;
            }
            ll ans=suml*sumr;
            for(int i=1;i<=N;i++)///除重操作
            {
                ans-=numflag[i].llow*numflag[i].lbig;
                ans-=numflag[i].llow*numflag[i].rlow;
                ans-=numflag[i].rbig*numflag[i].rlow;
                ans-=numflag[i].lbig*numflag[i].rbig;
            }
            printf("%I64d\n",ans);
        }
        return 0;
    }
    


    展开全文
  • “在如今这有太多数据和太少时间的时代,本书非常专业地提供了内容丰富的数据透视表教程,让我们可以更高效地利用自己的数据和时间。”  ——德勒咨询公司高级经理,Kameron Yu  本书集中了数据透视表所有优秀的...
  • “在如今这有太多数据和太少时间的时代,本书非常专业地提供了内容丰富的数据透视表教程,让我们可以更高效地利用自己的数据和时间。”  ——德勒咨询公司高级经理,Kameron Yu  本书集中了数据透视表所有优秀的...
  • “在如今这有太多数据和太少时间的时代,本书非常专业地提供了内容丰富的数据透视表教程,让我们可以更高效地利用自己的数据和时间。”  ——德勒咨询公司高级经理,Kameron Yu  本书集中了数据透视表所有优秀的...
  • “在如今这有太多数据和太少时间的时代,本书非常专业地提供了内容丰富的数据透视表教程,让我们可以更高效地利用自己的数据和时间。”  ——德勒咨询公司高级经理,Kameron Yu  本书集中了数据透视表所有优秀的...
  • count(distinct/all 列名):统计元组个数 sum:求和 avg:求平均值 max:最大值 min:最小值 例14、查询材料进货明细表中天津大小头的最大数量。 SELECT max(数量) FROM [材料进货明细表$] where 定额名称 = ‘天津大小...
  • 数据结构(C++)有关练习题

    热门讨论 2008-01-02 11:27:18
    综合(课程设计) 内容及步骤: 1、假定一维数组a[n]中的每个元素值均在[0,200]区间内,用C++编写一个算法,分别统计出落在[0,20],[21,50],[51,80],[81,130],[131,200]等各区间内的元素个数。...
  • C#.net_经典编程例子400

    热门讨论 2013-05-17 09:25:30
    81 实例068 在ListView控件中对数据排序或统计 83 实例069 在ListView控件中绘制底纹 84 实例070 在列表视图中拖动视图项 85 实例071 用ListView控件选取整行数据 88 实例072 用ListView...
  • 统计互不相同的数据个数 个工作表的单元格合并计算 单个单元格中字符统计 数据区包含某一字符的项的总和,该用什么公式 函数如何实现分组编码 【数值取整及进位】 取整数函数 数值取整 求余数的函数 四舍五入公式 ...
  • EXCEL函数公式集

    热门讨论 2010-03-16 03:26:38
    统计互不相同的数据个数 个工作表的单元格合并计算 单个单元格中字符统计 数据区包含某一字符的项的总和,该用什么公式 函数如何实现分组编码 【数值取整及进位】 取整数函数 数值取整 求余数的函数 四舍五入公式 ...
  • 多媒体教室

    2013-06-14 08:10:31
    语音讨论功能可以将全班学生分成同一组或分成几组进行课堂上的讨论,每组相互干扰。 文件提交功能可以收集学生所做的作业,方便老师操作。 电子点名功能方便老师统计学生上课考勤情况。 教师可通过视频...
  • 易语言模块914

    2018-03-12 20:00:21
    E库多条件查询模块.ec E库模糊查询模块.ec E电子琴.ec fhhs.ec FlyFox_hotkey.ec ForceSample.ec freemark模块_取文件.ec gdiplus类模块.ec GetStringSize.ec Hex-Dec.ec HTTP.ec http_ec.ec HTTP访问...
  •  cc实例253 对数据进行多条件排序   cc实例254 按仓库分组统计图书库存(多列)   cc实例255 多表分组统计   9.7 HAVING语句应用   cc实例256 利用HAVING语句过滤分组数据   cc实例257 将HAVING语句...
  • • 利用COUNT函数代替SUM 函数统计不重复记录 • 标识零件规格号中的非法数据 • 将中文大写日期转换成日期序列 • 实现按日期和客户名查询数据 • 按条件实现总表拆分到分表 • 按比赛成绩进行降序排列 • 对员工...
  • 1.10.4 使用EXCEPT和INTERSECT返回不重复的或匹配的行 38 1.11 汇总数据 40 1.11.1 使用CUBE汇总数据 40 1.11.2 使用ROLLUP来汇总数据 42 1.11.3 使用分组集创建自定义汇总 43 1.11.4 展现GROUPING生成...
  • 1345易语言模块

    2012-01-27 19:41:59
    E库多条件查询模块.ec E库模糊查询模块.ec E 电子琴.ec fhhs.ec filetime.ec FlyFox_hotkey.ec FlyFox_ram.ec font.ec Force.ec ForceSample.ec freemark 模块_取文件.ec ftp文件操作模块.ec gdiplus类模块.ec ...
  • 易语言540易模块

    2009-05-02 14:48:40
    读取超级列表框模块 1.0 读取超级列表框模块_多条件版 读文本 读易库到超级列表框1.0 度量转换 对话框代码自动生成器 对内存进行读写操作1.0 多彩渐变换肤模块 多方式取IP模块 多功能模块(1) 多功能模块(2) ...
  • E库多条件查询模块.ec E库模糊查询模块.ec E电子琴.ec fhhs.ec FlyFox_hotkey.ec ForceSample.ec freemark模块_取文件.ec gdiplus类模块.ec GetStringSize.ec Hex-Dec.ec HTTP.ec http_ec.ec HTTP访问模块 .ec IC卡...
  • 读取超级列表框模块_多条件版.ec 定时提醒1.1.ec 读文本~1.ec 动态加载菜单模块1.0版.ec 电子琴模块.ec 度量转换.ec 多线程支持模块.ec 多方式取IP模块.ec 多彩渐变换肤模块.ec 多功模块.ec 对话框代码自动生成器.ec...

空空如也

空空如也

1 2 3 4 5 ... 19
收藏数 364
精华内容 145
关键字:

多条件统计不重复数据个数