前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用幂律分布研究工资问题

用幂律分布研究工资问题

作者头像
老齐
发布2021-07-28 16:01:24
6840
发布2021-07-28 16:01:24
举报
文章被收录于专栏:老齐教室老齐教室老齐教室

★本文系即将出版的《机器学习数学基础》中的“第5章概率”的“5.3.3 连续型随机分布”一节中“幂律分布”节选。本书将由电子工业出版社出版。相关主题网站:https://qiwsir.gitee.io/mathmetics/ ”

微软曾在一篇报告中称,Windows和Office中80%的错误是由检测到的20%的错误导致的(参阅:https://www.crn.com/news/security/18821726/microsofts-ceo-80-20-rule-applies-to-bugs-not-just-features.htm?itc=refresh),这与著名的质量管理专家 Juran(Joseph M. Juran)利用帕雷托分布在1940年代的研究成果完全契合。

图 5-3-8 Juran

何谓帕雷托分布?1909年,意大利经济学家帕雷托(Vilfredo Federico Damaso Pareto)发布了他对社会财富分配的研究结果,即“20%的人占据了80%的社会财富”,并被概括为“

80/20

”法则,此结论的数学依据就是帕雷托分布。

图 5-3-9 帕雷托

X

为服从帕雷托分布的随机变量,则:

\overline F(x) = P(X \gt x) = \begin{cases}\left (\frac{x_m}{x} \right )^\alpha \quad & (x \ge x_m) \\ 1 &(x \lt x_m)\end{cases} \tag{5.3.37}

其中,

x_m \gt 0

为随机变量

X

的最小可能值;

\alpha \gt 0

是控制函数曲线“长尾”形状的参数,也称为帕雷托系数。

注意(5.3.37)中使用的

\overline F(x)

符号,不同于5.3.2节中的(5.3.9)式的概率分布函数

F(x)

,其关系为

F(x) = 1 - \overline F(x)

,所以,

X

所服从的概率分布函数为:

F(x) = \begin{cases}1- \left (\frac{x_m}{x} \right)^\alpha \quad &(x \ge x_m) \\ 0 &(x \lt x_m)\end{cases} \tag{5.3.38}

F(x)

求导,得到概率密度函数:

f(x) = \begin{cases}\frac{\alpha x_m^\alpha}{x^{\alpha+1}} \quad & (x\ge x_m) \\ 0 & (x\lt x_m) \end{cases} \tag{5.3.39}

图5-3-10是(5.3.39)式的图线,从图中可以看出公式中的

\alpha

对曲线形状的控制。

图 5-3-10

下面的程序中生成了服从帕雷托分布的数据,并绘制直方图,显示数据的分布特点(注意,生成下面的数据时,

x_m =0

)。

%matplotlib inline
import numpy as np
import seaborn as sns
ax = sns.distplot(np.random.pareto(a=1.16,size=1000), hist=True, kde=True)
ax.set(xlabel='Pareto', ylabel='Frequency')

输出图像:

社会财富分配是帕雷托分布的典型应用,下面创建一个服从帕雷托分布的工资模型示例。

from scipy.stats import pareto
alpha = 1.16
xmin = 1000
incomes = pareto(b=alpha, scale=xmin)

这里不妨以

1000

元作为最低值,即(5.3.39)式中的

x_m = 1000

,式中的

\alpha = 1.16

,这是一个超参数。这样,就创建了一个符合帕雷托分布的工资模型。

incomes.median()

# 输出
1817.6431200757233

在这个模型中,工资的中位数是

1817.64

元。平均工资呢?

incomes.mean()

# 输出
7250.000000000004

显然,符合帕雷托分布的工资的平均值和中位数差很多。如果工资符合正态分布,两者差距应该不大,然而现实世界就是这么残酷地帕雷托分布。所以,关注平均工资,只会“几家欢乐”“多家愁”。

如果你的工资达到了上面的均值,就是“几家欢乐”里的一员了,这个“几”是多少呢?

top_ratio= 1 - incomes.cdf(incomes.mean())
print(f'{round(top_ratio*100, 2)}%')

# 输出
10.05%

在这个模型中,就是前

10\%

——恭喜发财。

将计算结果和前述绘制的图像结合,不难得知,在当前所构建的工资模型中,工资额度不高者数据量巨大,图中表现为右侧向横轴趋近,这种分布也称为长尾分布——“长尾”这个术语在商业领域被经常提及。

当然,这里只是一个理想的数学模型。

服从帕雷托分布的现象还很多,包括在网站中的操作行为也不能免于此。例如微博转发次数的分布特点,如图5-3-11所显示(张宁 等,《新浪微博转发数的幂律分布现象》,计算机时代,2015年第3期)。从图中可以看出,少数几篇微博转发量很高,绝大多数的转发量很低。

图 5-3-11

甚至于在语言学领域也出现了“长尾”现象。语言学家齐普夫(George K. Zipf)在研究英文单词出现的频率时发现,如果把单词出现的频率按由大到小的顺序排列,每个单词对应一个序号,则单词出现的频率与它的序号的常数次幂存在简单的反比关系:

P(r) \sim r^{-\alpha} \tag{5.3.40}

这种分布被称为齐普夫定律(Zipf's law)。它表明在英语单词中,只有少数词汇被经常使用,绝大多数很少使用。事实上不止英语如此,以汉语为例,据统计,

1000

个常用字能覆盖约

92\%

的书面资料,

2000

字可覆盖

98\%

以上,

3000

字已到

99\%

,而《汉语大字典》所收录的汉字为

54678

个。

(5.3.37)式和(5.3.40)式都是幂函数,我们将凡是符合这类形式概率分布的统称为幂律分布(power law distribution)——齐普夫和帕雷托都为幂律分布做出了重要贡献。在实践中,幂律分布除了这里介绍的帕雷托分布、齐普夫定律之外,还有其他形式。但不论具体形式如何,都可以概括为:

f(x) = Cx^{-\alpha}\tag{5.3.41}

这就是连续型随机变量

X

的概率密度函数,称之为

X

服从以

\alpha \gt 0、 C

为参数的幂律分布。其中,

C

可以用

X

的最小可能值表示:

\begin{split}\because \quad & 1=\int_{x_{min}}^{\infty}f(x)dx=C\int_{x_{min}}^{\infty}x^{-\alpha}dx=\frac{C}{1-\alpha}\left [x^{-\alpha + 1}\right ]_{x_{min}}^\infty \\ &若 \quad \alpha \gt 1 \\ &则: C=(\alpha-1)x_{min}^{\alpha + 1} \\ \therefore \quad & f(x) = \frac{\alpha -1}{x_{min}}\left (\frac{x}{x_{min}} \right )^{-\alpha}\end{split}

幂律分布表现了一种很强的不均衡、不平等,在网络、大数据时代,越来越受到关注,因为不均衡就也意味着机会。对此有兴趣的读者,除了从数学理论上了解之外,还可以继续深入研究,利用它从数据中挖掘新知。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-07-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老齐教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档