entropy

scipy.stats attribute `entropy` for continuous distributions doesn't work manually

≡放荡痞女 提交于 2021-01-28 12:15:25
问题 Each continuous distribution in scipy.stats comes with an attribute that calculates its differential entropy: .entropy . Unlike the normal distribution ( norm ) and others that have a closed-form solution for entropy, other distributions have to rely on numerical integration. Trying to find out which function the .entropy attribute is calling in those cases, I found a function called _entropy in scipy.stats._distn_infrastructure.py that does so with integrate.quad(pdf) (numerical integration)

Compute entropy of different file extensions to find randomness of data?

北城余情 提交于 2021-01-28 07:12:41
问题 I have different file types which includes JPEG and jpg ,#mp3 ,#GIF,#MP4,#FLV, M4V ,exe, zip etc. Take data in blocks , something like 4k block size, find randomness Generate randomness score between 0 and 1 Try to put classes according to the randomness score. How can we find entropy of different types of files as mentioned above and can we scale each of the file score between 0 and 1. 回答1: +1 very interesting question here few untested ideas just from top of my head right now: how about

GBDT+LR:Practical Lessons from Predicting Clicks on Ads

丶灬走出姿态 提交于 2021-01-16 05:02:06
1. 介绍 1.1 论文背景 本文主要介绍Facebook提出的CTR预估模型LR(Logistic Regression)+GBDT。当时深度学习还没有应用到计算广告领域,Facebook提出利用GBDT的叶节点编号作为非线性特征的表示,或者说是组合特征的一种方式。 LR+GBDT相比于单纯的LR或者GBDT带来了较大的性能提升,论文中给出数据为3%,这在CTR预估领域确实非常不错。除此之外,Facebook还在在线学习、Data freshness、学习速率、树模型参数、特征重要度等方面进行了探索。 相比于搜索广告领域,根据用户query来给出候选广告,然后利用Rank模型对候选广告进行排序。这些广告要么显式要么隐式的和用户query相关联。但是在Facebook这样的社交场合中,广告并没有和用户query相关联,但是用户看到的广告一定程度上反映了用户的人口统计特性和兴趣特性。基于这个原因,在Facebook上展示的广告相比于搜索广告中的要多一些。 在实际的生产环境中,为每个用户确定广告候选是一件系统性设施工作,Facebook主要通过做多个分类器级联来实现。但是论文中分析的是最后的那一个prediction模型。它直接给出最后的CTR概率。 1.2 研究背景 CTR预估(Click-Through Rate Prediction)是互联网计算广告中的关键环节

深度学习基础系列(五)| 深入理解交叉熵函数及其在tensorflow和keras中的实现

这一生的挚爱 提交于 2021-01-12 05:43:32
  在统计学中,损失函数是一种衡量损失和错误(这种损失与“错误地”估计有关,如费用或者设备的损失)程度的函数。假设某样本的实际输出为a,而预计的输出为y,则y与a之间存在偏差,深度学习的目的即是通过不断地训练迭代,使得a越来越接近y,即 a - y →0,而训练的本质就是寻找损失函数最小值的过程。   常见的损失函数为两种,一种是均方差函数,另一种是交叉熵函数。对于深度学习而言,交叉熵函数要优于均方差函数,原因在于交叉熵函数配合输出层的激活函数如sigmoid或softmax函数能更快地加速深度学习的训练速度。这是为什么呢?让我们来详细了解下。 一、函数定义 1. 第一种损失函数:均方差函数,其定义为:   L(a, y) = ½ (a - y) 2   令y=0,则L(a, y) = ½ a 2 ,当a处于(-1, 1)区间范围时,其图形特征为:         可以看出当y = 0, a =0时,L(a, y) →0,其值是最小的。   其求导公式为:dL(a, y) / da = a - y, 从函数本身来看当a = y时,L ' (a, y) = 0,也即求得最小值。    2. 第二种损失函数:交叉熵函数,其定义为:   L(a, y) = - [y * ln a + (1 - y) ln (1 - a)]   为什么该函数能帮我们找到最小值呢?假设a和y都是在(0, 1

MXNET--中文版学习 softmax手动实现 课后练习

北慕城南 提交于 2021-01-03 14:36:54
本节中,我们直接按照 softmax 运算的数学定义来实现 softmax 函数。这可能会造成什么问题? 答:参考知乎一位的回答, https://zhuanlan.zhihu.com/p/27223959 . 当exp()中的数过大,会导致计算溢出。所以可以给exp(x)中的数加一个常数F,F = -max(a1,a2,...an),保证指数函数的定义域在0附近。 本节中的cross_entropy函数是按照交叉熵损失函数的数学定义实现的。这样的实现方式可能有什么问题?(提示:思考一下对数函数的定义域。) 答:对数函数的定义域是(0.+&),当无限接近于0 .可能导致结果过大为nan. 来源: oschina 链接: https://my.oschina.net/u/3127014/blog/2875071

python机器学习:决策树ID3、C4.5

爱⌒轻易说出口 提交于 2020-12-27 03:46:58
向AI转型的程序员都关注了这个号 👇👇👇 大数据挖掘DT机器学习 公众号: datayx 决策树又称为判定树,是运用于分类的一种树结构,其中的每个内部节点代表对某一属性的一次测试,每条边代表一个测试结果,叶节点代表某个类或类的分布。 决策树的决策过程需要从决策树的根节点开始,待测数据与决策树中的特征节点进行比较,并按照比较结果选择选择下一比较分支,直到叶子节点作为最终的决策结果。 决策树的学习过程 特征选择:从训练数据的特征中选择一个特征作为当前节点的分裂标准(特征选择的标准不同产生了不同的特征决策树算法)。 决策树生成:根据所选特征评估标准,从上至下递归地生成子节点,直到数据集不可分则停止决策树停止声场。 剪枝:决策树容易过拟合,需要剪枝来缩小树的结构和规模(包括预剪枝和后剪枝)。 实现决策树的算法包括ID3、C4.5算法等。 ID3算法 ID3算法是由Ross Quinlan提出的决策树的一种算法实现,以信息论为基础,以信息熵和信息增益为衡量标准,从而实现对数据的归纳分类。 ID3算法是建立在奥卡姆剃刀的基础上:越是小型的决策树越优于大的决策树(be simple简单理论)。 奥卡姆剃刀(Occam's Razor, Ockham's Razor),又称“奥坎的剃刀”,是由14世纪逻辑学家、圣方济各会修士奥卡姆的威廉(William of Occam,约1285年至1349年

损失函数

寵の児 提交于 2020-12-24 19:07:42
1. 何为损失函数: 在机器学习里面,基本上所有的算法都是在对一个目标函数进行最大化或者最小化的一个过程,那么我们常常把这个最小化的函数称为损失函数,一般采用梯度下降法求解这个损失函数的最小值所对应的参数。可以认为,损失函数为我们的模型优化提供了方向。 2. 损失函数类型: 2.1 平方损失L2 (回归损失函数):预测值和目标值之间差值的平方和 2.2 平方绝对误差L1 2.3 对数损失函数(Cross Entropy Loss,Softmax Loss ):用于Logistic 回归与Softmax 分类中; 2.4 指数损失函数(Exponential Loss) :主要用于Adaboost 集成学习算法中; 2.5 铰链损失函数(Hinge Loss):主要用于支持向量机(SVM) 中 3. 对数损失函数 对数损失函数用到了极大似然估计思想,p(y|x)。 假设样本服从伯努利分布(0-1)分布,然后求得改分布的似然函数,接着取对数求极值(最小化负的似然函数)。利用已知的样本分布,找到最有可能(即最大概率)导致这种分布的参数值 4. 交叉熵 交叉熵刻画的是实际的输出(概率)和期望的输出(概率)的距离,交叉熵的值越小,两个概率分布越接近。 log 类型损失函数的优势可以将连乘转为求和,由于是单调函数,不会改变原结果,并且还很方面求最优,因此 log 类型的损失函数函数也非常常用

Tomcat SessionID生成导致启动缓慢

拥有回忆 提交于 2020-12-15 01:40:09
最近项目上线部署的时候,发现一个问题。Tomcat在启动过程中耗费了很长的时间。查看日志,发现耗时最长的地方是: INFO [localhoststartStop1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [1,293,533] milliseconds. 在网上查找资料后确定,该问题是由于tomcat的session id的生成主要通过java.security.SecureRandom生成随机数来实现,随机数算法使用的是”SHA1PRNG”。在sun/oracle的jdk里,这个算法的提供者在底层依赖到操作系统提供的随机数据,在linux上,与之相关的是/dev/random和/dev/urandom。有关它俩的描述如下: /dev/random 在读取时,/dev/random设备会返回小于熵池噪声总数的随机字节。/dev/random可生成高随机性的公钥或一次性 密码本。若熵池空了,对/dev/random的读操作将会被阻塞,直到收集到了足够的环境噪声为止。 /dev/urandom dev/random的一个副本是

为什么阿里云服务器的docker启动tomcat这么慢??

断了今生、忘了曾经 提交于 2020-12-12 10:36:57
https://blog.csdn.net/tianyiii/article/details/79314597 最近在阿里云服务器使用Docker启动Tomcat,发现tomcat服务器启动过程很慢。但是在本地启动很快,一直找不到问题所在,查看Tomcat服务器启动日志发现打印出这么一段日志: 二月 12, 2018 9:20:02 上午 org.apache.catalina.util.SessionIdGeneratorBase createSecureRandom 信息: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [215214 milliseconds] 于是查看了相关资料发现,在apache-tomcat官方文档:如何让tomcat启动更快里面提到了一些启动时的优化项,其中一项是关于随机数生成时,采用的“熵源”(entropy source)的策略。 他提到tomcat7的session id的生成主要通过java.security.SecureRandom生成随机数来实现,随机数算法使用的是”SHA1PRNG” private String secureRandomAlgorithm = "SHA1PRNG"; 在sun/oracle的jdk里

C++11随机数的正确打开方式

与世无争的帅哥 提交于 2020-12-07 08:59:12
C++11随机数的正确打开方式 在C++11之前,现有的随机数函数都存在一个问题:在利用循环多次获取随机数时,如果程序运行过快或者使用了多线程等方法, srand((unsigned)time(null)) 这样的设置当前系统时间为种子的方法每次返回的随机数都是一样的。而C++11中提供了真随机数做种子的方法来解决这一问题。 By the way,2019年了,我见过的编译器都不需要特殊指定使用的是C++11的新特征了 random_device 标准库提供了一个 非确定性随机数 生成设备.在Linux的实现中,是读取/dev/urandom设备;Windows的实现是用rand_s,使用的是操作系统来生成加密安全的 伪随机数 注意,urandom实际上也是一种伪随机数,具体见下一节 random_device提供()操作符,用来返回一个min()到max()之间的一个数字. 注意这里的min()和max()都是只能看不能改的。 random_device一般只用来作为其他伪随机数算法的种子,原因有三: random_device的最大值和最小值不能修改,当然可以通过取模的方式获得想要的范围的数,但是毕竟不太优雅 当熵池用尽后,许多random_device的具体实现的性能会急速下降(原话是:"the performance of many implementations of