SQL进阶技巧:如何计算块熵?

news/2024/9/29 1:25:20/

目录

0 信息量定义

信息熵

1 块熵定义

2 问题描述

​3 数据准备

 4 问题分析

 5 小结

想要进一步了解SQL这门艺术语言的,可以订阅我的专栏数字化建设通关指南,将在该专栏进行详细解析。专栏 原价99,现在活动价39.9,按照阶梯式增长,还差3个名额将上升至59.9,直到恢复原价。

数字化建设通关指南

主要内容:(1)SQL进阶实战技巧

(2)数仓建模实战技巧和个人心得



0 信息量定义

信息量是指从N 个相等可能事件中选出一个事件所需要的信息度量或含量,也就是在辩识N 个事件中特定的一个事件的过程中所需要提问是或否的最少次数。

在一个系统中,等可能事件的数量越多,事件的发生概率也就越低,传递究竟是哪个事件发生所需的比特信号也就越多。

举个例子,假如有两个相互隔离的房间A、B,二者只能通过01信号传递信息。当A房间投掷了一个硬币时,我们至少需要使用

个比特信号告诉B房间是正面朝上还是反面朝上。类似地,当A房间投掷了一个有8个面的骰子时,我们至少需要


​个比特的信号来传递该信息。

假如系统中有的N个等可能事件,那么我们将log2^{_{}^{N}}称为信息量。由于等可能事件的发生概率为1/N,则信息量的公式可以写作


 推而广之,假设事件x 的发生概率为p (x) ,则传递该事件发生需要的最少比特信号位(即信息量)为

信息熵

信息熵用于衡量整个事件空间包含的平均信息量,即信息量的平均期望。将事件空间中所有事件发生的概率,乘以该事件的信息量,即可得到信息熵:

 

1 块熵定义

“块熵”(Block Entropy)通常用于描述信息理论中的一种概念,特别是在压缩和编码方面。它是指将数据流划分为连续的块,并对每个块计算熵的过程。

在块熵中,数据流被分割成固定大小(k kk)的块(或窗口),然后对每个块应用熵的计算方法。这有助于分析数据在不同块之间的变化或随时间的演变。一般的,当k kk取1 11时,块熵将退化为信息熵

2 问题描述

假设有以下数字序列作为数据流:

sql">data_stream=[0,1,0,0,1,1,0,1,0,1]

计算这个时间序列的块熵,其中k = 2 。
将时间序列分成长度为2 22的历史块:
第一个历史块: [0, 1]
第二个历史块: [1, 0]
第三个历史块: [0, 0]
第四个历史块: [0, 1]
第五个历史块: [1, 1]
第六个历史块: [1, 0]
第七个历史块: [0, 1]
第八个历史块: [1, 0]
第九个历史块: [0, 1]
这些历史块的分布律为:

因此该序列的块熵为:

3 数据准备

sql">create table block_entropy as(select stack(10,0,1,0,0,1,1,0,1,0,1) as(block));

 4 问题分析

第一步:计算k2 block

sql">select id, collect_list(block) over (order by id rows between current row and 1 following) k2from block_entropy

 第二步:计算k2块个数及块的总个数

sql">select k2,max(ttl_cnt) ttl_cnt,count(1)     k2_cntfrom (select id,k2,count(1) over () ttl_cntfrom (select id, collect_list(block) over (order by id rows between current row and 1 following) k2from block_entropy) twhere size(k2) = 2) tgroup by k2

 

第三步:按照信息量公式计算

sql">select k2,-(k2_cnt / ttl_cnt) * log2(k2_cnt / ttl_cnt) log2from (select k2,max(ttl_cnt) ttl_cnt,count(1)     k2_cntfrom (select id,k2,count(1) over () ttl_cntfrom (select id, collect_list(block) over (order by id rows between current row and 1 following) k2from block_entropy) twhere size(k2) = 2) tgroup by k2) t

第四步:对所有的信息量进行求和,计算最终的结果值即熵值。

快熵完整的计算SQL如下:

sql">select cast(sum(log2) as decimal(18, 5)) block_entropy
from (select k2,-(k2_cnt / ttl_cnt) * log2(k2_cnt / ttl_cnt) log2from (select k2,max(ttl_cnt) ttl_cnt,count(1)     k2_cntfrom (select id,k2,count(1) over () ttl_cntfrom (select id, collect_list(block) over (order by id rows between current row and 1 following) k2from block_entropy) twhere size(k2) = 2) tgroup by k2) t) t
;

 5 小结

在实际应用中,块熵可用于识别数据中的模式、周期性或其他结构,并有助于设计有效的压缩算法或数据处理方法。例如,在音频处理中,可以将音频信号划分为连续的时间窗口,并对每个窗口的信号进行熵计算,以了解音频信号的频谱特性或声音事件的分布。在网络数据传输中,块熵可以用于检测数据流中的重复模式或压缩数据以减少带宽消耗。

想要进一步了解SQL这门艺术语言的,可以订阅我的专栏数字化建设通关指南,将在该专栏进行详细解析。
专栏 原价99,现在活动价39.9,按照阶梯式增长,还差3个名额将上升至59.9,直到恢复原价。


数字化建设通关指南


主要内容:
(1)SQL进阶实战技巧

可以参考如下教程,具体链接如下

SQL很简单,可你却写不好?也许这才是SQL最好的教程

上面链接中的文章及技巧会不定期更新。

(2)数仓建模实战技巧和个人心得

       1)新人入职新公司后应如何快速了解业务?

       2)以业务视角看宽表化建设?

       3)  维度建模 or 关系型建模?

       4)业务模型与数据模型有什么区别?业务阶段的模型该如何建设?

       5)业务指标体系该如何建设?指标体系该如何维护?指标平台应如何建设?指标体系                           该由谁来搭建?

       6)如何优雅设计DWS层?DWS层模型好坏该如何评价?

       7)指标发生异常,该如何排查?应从哪些方面入手寻找问题点?

       8) 数据架构的选择,mpp or hadoop?

       9)数仓团队应如何体现自己的业务价值,讲好数据故事?

       10)BI与大数据有什么关系?BI与信息化、数字化之间有什么关系?BI与报表之间的关                          系?

       11)数据部门如何与业务部门沟通,并规划指引业务需求?

文章不限于以上内容,有新的想法也会及时更新到该专栏。

具体专栏链接如下:数字化建设通关指南_莫叫石榴姐的博客-CSDN博客


http://www.ppmy.cn/news/1531325.html

相关文章

Tomcat 乱码问题彻底解决

1. 终端乱码问题 找到 tomcat 安装目录下的 conf ---> logging.properties .修改ConsoleHandler.endcoding GBK (如果在idea中设置了UTF-8字符集,这里就不需要修改) 2. CMD命令窗口设置编码 参考:WIN10的cmd查看编码方式&am…

大模型-模型预训练-模型参数量计算

一、说明 当前主流大模型架构为因果解码器架构以下参数量计算以LLaMA为例假设解码器有L层、词表大小为V 二、参数量组成部分及计算 1、输入嵌入层【VH】 词表大小为V,每个单次映射到一个H维的向量,且输入嵌入层只有一层,因此有VH个参数 …

基于SpringBoot+Vue+MySQL的旅游推荐管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着社会的快速发展和人民生活水平的显著提高,旅游已成为人们休闲娱乐的重要方式。然而,面对海量的旅游信息和多样化的旅游需求,如何高效地管理和推荐旅游资源成为了一个亟待解决的问题。因此…

[001-03-007].第28节:SpringBoot整合Redis:

6.1.Redis的介绍: 1.Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。2.它支持多种类型的数据结构,如 字符串(strings), 散…

uni-app快速入门

目录 一、什么是 uni-app二、快速创建 uni-app 项目1.创建 uni-app2.运行 uni-app 三、uni-app 相对传统 H5 的变化1.网络模型的变化2.文件类型变化3.文件内代码架构的变化4.外部文件引用方式变化5.组件/标签的变化6.js的变化(1)运行环境从浏览器变成v8引…

单片机初级(持续更新)

单片机是一种单片微型计算机的简称(MCU),采用集成电路技术将有数据处理能力的中央处理器、随机存储器、只读存储器、定时器/计时器、多种IO口与中断系统等功能集成在一块硅片上。 开发板/最小系统板 开发板通常是学习用途,功能齐全&#xff0…

公私域互通下的新商机探索:链动2+1模式、AI智能名片与S2B2C商城小程序的融合应用

摘要:在数字化时代,公私域流量的有效融合已成为企业获取持续增长动力的关键。本文旨在探讨如何通过链动21模式、AI智能名片以及S2B2C商城小程序源码的综合运用,实现公私域流量的高效互通,进而为门店创造巨大商机。通过分析这些工具…

基于QT的C++中小项目软件开发架构源码

描述 基于QT信号槽机制实现类之间的交互调用通信,适用于使用不同枚举作为消息交互的类型场景,支持附带任意参数,代码使用方式参考前一篇文章 特性 代码简洁,不超过100行仅需包含一个头文件Communicator.h,需要通信的…