本文主要是介绍天人合一之毕设——实践阶段9—— 幂律定律,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
师兄上次看到我跑的结果,说少部分对象占用大多数的访问次数,很符合幂律定律(本质上是二八定律)
copy了一段背景,了解下:
自然界与社会生活中存在各种各样性质迥异的幂律分布现象。1932年,哈佛大学的语言学专家Zipf在研究英文单词出现的频率时,发现如果把单词出现的频率按由大到小的顺序排列,则每个单词出现的频率与它的名次的常数次幂存在简单的反比关系,这种分布就称为Zipf定律,它表明在英语单词中,只有极少数的词被经常使用,而绝大多数词很少被使用。实际上,包括汉语在内的许多国家的语言都有这种特点。
它的数学模型是:y=cx^-r ,图大概是下图酱紫
幂律分布表现为一条斜率为幂指数的负数的直线,这一线性关系是判断给定的实例中随机变量是否满足幂律的依据
1.论文中肯定要提到并介绍幂律定律,还要画图,所以我可能需要拟合一下
关于拟合的博客:https://blog.csdn.net/kevinelstri/article/details/52685934, 这个是用Python做的
不过这个图可以借鉴
到时候用MATLAB拟合吧,https://zhidao.baidu.com/question/1704079865194178300.html
这个介绍了方法,但是图比较丑
https://blog.csdn.net/sun_wangdong/article/details/46468097
2.怎么根据幂律定律来划分数据冷热呢?哪里才是该一刀切的地方呢?
目前想到的思路:
1.根据第N+1个数和第N个数的差距(即斜率)来看,斜率最大的地方应该是一刀切的地方
比如{400,200,20,19,19,19}
他的差的绝对值序列应该为{200,180,1,0,0,}
按照这种思路就应该是400/200,20....这样并不合理
2.在1基础上改进,第N+1个数和第N个数的差距/第N个数,意味着在我的基础上变了多少
就比方说上面,虽然400-200差是200,但是只变了400的50%
200-20差是180,虽然低于200,但是变了90%
3.第N+1个数/第N个数的比值,挑选比值最大的地方切开,其实这个思路好像就是第二种
假设第N+1个数为a,第N个数为b,第二种就是b-a/b 或 a-b/b,即1-a/b或a/b-1,第三种就是直接a/b
那就直接用第三种吧,思路比较简单
这篇关于天人合一之毕设——实践阶段9—— 幂律定律的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!