机器学习基础:深入理解大数定律 (Law of Large Number)

文章通过解释大数定律,展示了如何使用蒙特卡洛方法在C++中模拟求解Pi的过程。随着试验次数增加,Pi的计算值逐渐逼近理论值3.141。文中还提出了一系列关于抛硬币的问题,探讨了试验次数对达到期望概率的影响。
摘要由CSDN通过智能技术生成

最近回头看CS70 UCB关于离散数学和概率论的事,做一些回顾性的笔记。

给定一串相互独立、概率相同的随机变量X1, X2, ···, Xn,每一个数字等概率出现,那么出现的期望均相同: E [ Xi ]= µ ,同时,Sn = X1 +X2 +···+Xn 满足不等式,当n趋向于无穷时,存在ε 大于0,使得

解释: 定义类似于极限的定义,就是希望在无穷次试验的时候,所求得的平均值 Sn / n 和期望u无限趋近

简单来说,均值终将回归于期望。

Note 17说明:the Law of Large Numbers (LLN). This asserts that, if we observe some random variable many times, and take the average of the observations, then this average will converge to a single value, which is of course the expectation of the random variable.

 大数定律支撑的一个应用是:蒙特卡洛方法求Pi,而在多次试验后,最终结果都会收敛到3.14附近。相关链接如下。

蒙特卡洛法计算圆周率π(Python,Java,c 三种方式详解)_使用蒙特卡罗方法计算圆周率_她的坏机器人的博客-CSDN博客

简单介绍。取一个圆半径为1,面积为: πR^2 = π,相对应的外接正方形的面积为2*2 = 4,那么在这个区域上随机取点,点落在圆内的次数,和落在整体正方形内的次数分别为Num_1和Num_2,正好对应面积之比,即 π / 4 = Num_1 / Num_2,进一步推导,π = 4 * Num_1 / Num_2。则将落在区域圆内的次数 除以 总体次数,再乘以4就得到Pi的值。

 提供一个C++ 演示如下

可见的是,当循环次数 i 越大的时候,Pi的值和3.141是越来越接近的。和大数定律的说明一样,在无穷次试验的时候,所求得的平均值 Sn / n 和期望u无限趋近。在这个蒙特卡洛求Pi的例子中就是,10000次循环的平均值是越来越收敛于Pi的。而次数少的时候,并不稳定,甚至产生波动。

分析曲线如下,橙色代表Pi,蓝色代表模拟的情况,可见在重复实验很多次的时候,也就是大数定律所说的N趋向于无穷的时候,所求得到的平均值越来越接近其期望值。

 C++代码如下,在DevC++中编译成功运行。

#include<iostream>
#include<stdlib.h>
#include<cmath>
#include<ctime> 
using namespace std;

double MonteCarlo(int num){//求Pi 
	double count = 0;
	double x, y;
	srand((unsigned)time(NULL));

	for(int i = 0; i < num; i++){
		x = rand() / (double)RAND_MAX;
		y = rand() / (double)RAND_MAX;
		if(x*x + y*y < 1) count++;
	}
	return (double)count / num * 4;
}

int main (){
	double Pi;
	for(int i = 1; i<=10000; i++)
		if(i == 10 || i == 50 || i == 100 || i == 250 || i == 500 || i == 1000 || i==5000 || i== 10000)
			cout<<"i = "<<i<<" 时,Pi = "<<MonteCarlo(i)<<endl;
	return 0;
}

进一步思考几个小问题:From CS70 Disscuss)

1. 多次抛掷一个硬币,只有在出现次数超过60%的正面时才能获得奖品,那么你是选择抛10次还是100次?

2. 多次抛掷一个硬币,只有在出现次数超过40%的正面时才能获得奖品,那么你是选择抛10次还是100次?

3. 多次抛掷一个硬币,只有在出现次数介于40%和60%之间的正面时才能获得奖品,那么你是选择抛10次还是100次?

4. 多次抛掷一个硬币,只有在出现次数恰好等于50%正面时才能获得奖品,那么你是选择抛10次还是100次?

挺脑洞大开的问题,有人回想:大数定律告诉我们,最后都会趋近于0.5的期望值,那讨论这些意义何在?

问题是,在什么条件下大数定律才能趋近于期望0.5呢

答案是:在无数次投掷硬币的情况下,也就是次数越多越好

答案1:10次,基于以上讨论,在次数越多的时候,越趋近于0.5,而次数少的时候,很有可能什么都发生。也就是说,次数少的时候,平均值是波动较大的。因此,10次投掷反而有更大概率得到超过60%的正面情况。

答案2:100次,相同的讨论,次数越多的时候越容易收敛于在50%,所以投掷100次可以更大概率的得到超过40%的正面情况。

答案3:100次,和问题2基本一致,也是投掷次数越多越接近50%(介于40%和60%之间),投掷100次。

答案4:10次,但是我们讨论的是在无数次的情况下,均值收敛于期望,也就是说,最后投掷的结果,正反概率都收敛于50%。但并非等于50%。随着实验的进行,正反出现的次数的差异会增加,比如515次和485次,很小的概率才会出现恰好正反五五开。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值