【机器学习】9 ——最大熵模型的直观理解
系列文章目录
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 系列文章目录
- 前奏
- 例子
- 硬币
- 垃圾邮件
- 代码
前奏
【机器学习】6 ——最大熵模型
例子
硬币
假设我们有一枚硬币,可能是公平的,也可能是不公平的。我们的任务是估计硬币的正反面出现的概率。我们已知硬币有两个面:正面(H)和反面(T),除此之外没有其他信息。因此,我们希望在不引入不必要假设的情况下,找到最合理的概率分布。
当我们没有任何关于硬币的额外信息时,我们唯一知道的是硬币只有两个面(H 和 T)。基于最大熵原则,我们希望选择最“随机”或最“均匀”的概率分布。在这种情况下,最合理的分布是:
P(H) = 0.5
P(T) = 0.5
这是因为熵的最大化意味着我们选择的是最不确定的分布,即每种可能性是等概率的。
对于两个事件 H 和 T:
H( p)=−[p(H)logp(H) + p(T)logp(T)]
代入 P(H) = 0.5 和 P(T) = 0.5:
H( p)=−[0.5log0.5+0.5log0.5] =−[0.5×(−1)+0.5×(−1)]=1
这是在没有任何其他信息时,熵最大的分布,表示正反面各有 50% 的概率。
假设我们现在有额外的信息,例如在 10 次投掷中正面出现了 7 次,反面出现了 3 次。我们不再假设正反面等概率。
我们需要在这个额外信息(正面出现更多次)和熵最大化之间找到平衡。最大熵模型会根据这个信息调整概率分布,但仍然保持最大的熵。
约束条件:正面出现的频率为 7/10,即我们期望: E(H)=0.7
拉格朗日乘数法:我们引入拉格朗日乘数来最大化熵,同时满足上述的约束条件。我们最大化以下目标函数:L ( p)=−[p(H)logp(H)+p(T)logp(T)]+λ(p(H)−0.7)
通过求导并解方程,可以得到新的概率分布 P(H)=0.7 和 P(T)=0.3,这符合已知数据的约束条件,同时尽量保持熵的最大化。
垃圾邮件
- 训练数据:
假设我们有以下几封邮件,并且每封邮件已经标注为垃圾邮件(Spam)或非垃圾邮件(Not Spam):
邮件1 (Spam): “Win a million dollars now”
邮件2 (Not Spam): “Meeting at 3 PM today”
邮件3 (Spam): “Congratulations! You have won a free gift”
邮件4 (Not Spam): “Project update attached”
- 特征提取:
首先,从每封邮件中提取特征(即单词)。在这个例子中,我们的特征是邮件中的单词。例如:
“Win”, “million”, “dollars”, “now”, “Meeting”, “project” 等等。
我们可以将每封邮件转化为一个包含特征的向量:
- 邮件1:[“Win”, “million”, “dollars”, “now”]
- 邮件2:[“Meeting”, “3”, “PM”, “today”]
- 邮件3:[“Congratulations”, “You”, “won”, “free”, “gift”]
- 邮件4:[“Project”, “update”, “attached”]
标签:
邮件1 -> Spam (1)
邮件2 -> Not Spam (0)
邮件3 -> Spam (1)
邮件4 -> Not Spam (0)
-
最大熵模型的目标:
模型的目标是根据训练数据估计每封邮件属于垃圾邮件(Spam)或非垃圾邮件(Not Spam)的概率。为了最大化模型的熵,我们引入约束条件,比如已知邮件中出现某些单词时其分类的概率。 -
训练过程:
我们用最大熵模型来训练这些数据。模型根据邮件中的单词(特征)以及历史邮件的分类信息,计算每个单词在垃圾邮件和非垃圾邮件中的条件概率。
如果"win"这个单词在训练集中大多数时候出现在垃圾邮件中,模型会为"win"分配一个较高的垃圾邮件概率。
如果"meeting"这个单词大多数时候出现在非垃圾邮件中,模型会为它分配一个较高的非垃圾邮件概率。
- 特征是独立的,通常通过词袋模型(Bag of Words)或 TF-IDF(词频-逆文档频率)方法将文本转换为数值表示。
- 在这个例子中,特征提取可以使用词袋模型。对于每封邮件,提取其中的单词并将其表示为一个向量。例如:
邮件1(“Win a million dollars now”)转换为 [1, 0, 0, 1, 0…],其中每个位置代表一个单词的出现次数。
邮件2(“Meeting at 3 PM today”)转换为 [0, 1, 0, 0, 1…],同样代表单词出现的频率。
- 分类预测:
当有一封新邮件出现时,例如 “Free gift awaiting you”, 最大熵模型会计算它属于垃圾邮件和非垃圾邮件的概率:
P(Spam | “Free gift awaiting you”) = ?
P(Not Spam | “Free gift awaiting you”) = ?
代码
这个很简单,复杂问题可能要考虑更多
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.linear_model import LogisticRegression# 训练样本数据
emails = ["Win a million dollars now", "Meeting at 3 PM today","Congratulations! You have won a free gift", "Project update attached"]# 标签:1表示垃圾邮件,0表示非垃圾邮件
labels = [1, 0, 1, 0]# 特征提取:使用词袋模型
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(emails)# 最大熵模型近似:使用逻辑回归实现
model = LogisticRegression()
model.fit(X, labels)# 测试新邮件
new_emails = ["Free gift awaiting you", "Meeting tomorrow"]
X_new = vectorizer.transform(new_emails)# 预测
predictions = model.predict(X_new)
print("预测结果:", predictions) # 输出预测类别:1 表示垃圾邮件,0 表示非垃圾邮件# 计算每类概率
probs = model.predict_proba(X_new)
print("分类概率:", probs) # 输出每封邮件属于垃圾邮件和非垃圾邮件的概率相关文章:
【机器学习】9 ——最大熵模型的直观理解
系列文章目录 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录前奏例子硬币垃圾邮件代码 前奏 【机器学习】6 ——最大熵模型 例子 硬币 假设我们有一枚硬币,可能是公平的,…...
1.单例模式
目录 简介 饿汉式 懒汉式 双重检测锁式 静态内部类式 枚举单例 测试 测试单例模式: 测试五种单例模式在多线程环境下的效率 问题(拓展) 例:反射破解单例模式 例:反序列化破解单例模式 总结:如何…...
数据倾斜问题
数据倾斜:主要就是在处理MR任务的时候,某个reduce的数据处理量比另外一些的reduce的数据量要大得多,其他reduce几乎不处理,这样的现象就是数据倾斜。 官方解释:数据倾斜指的是在数据处理过程中,由于某些键…...
大龄焦虑?老码农逆袭之路:拥抱大模型时代,焕发职业生涯新活力!
其实我很早就对大龄程序员这个话题感到焦虑,担心自己35岁之后会面临失业,有时和亲戚朋友聊天时,也会经常拿这个出来调侃。现在身边已经有很多35岁左右的同事,自己过两年也会步入35岁的行列,反倒多了一份淡定和从容。 …...
Vue 页面反复刷新常见问题及解决方案
Vue 页面反复刷新常见问题及解决方案 引言 Vue.js 是一个流行的前端框架,旨在通过其响应式的数据绑定和组件化的开发模式简化开发。然而,在开发 Vue.js 应用时,页面反复刷新的问题可能会对用户体验和开发效率产生负面影响。本文将深入探讨 …...
Windows上指定盘符-安装WSL虚拟机(机械硬盘)
参考来自于教程1:史上最全的WSL安装教程 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/386590591#%E4%B8%80%E3%80%81%E5%AE%89%E8%A3%85WSL2.0 教程2:Windows 10: 将 WSL Linux 实例安装到 D 盘,做成移动硬盘绿色版也不在话下 - 知乎 (z…...
ffmpeg实现视频的合成与分割
视频合成与分割程序使用 作者开发了一款软件,可以实现对视频的合成和分割,界面如下: 播放时,可以选择多个视频源;在选中“保存视频”情况下,会将多个视频源合成一个视频。如果只取一个视频源中一段视频…...
团体标准的十大优势
一、团体标准是什么 团体标准是指由社会团体(行业协会、联合会、企业联盟等)按照自己确立的制定程序,自主制定、发布、采纳,并由社会自愿采用的标准。简单的说,就是社会团体为了满足市场和创新需要,协调相…...
java spring boot 动态添加 cron(表达式)任务、动态添加停止单个cron任务
java spring boot 动态添加 cron(表达式)任务、动态添加停止单个cron任务 添加对应的maven <dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.3.0</version…...
sqlgun靶场漏洞挖掘
1.xss漏洞 搜索框输入以下代码,验证是否存在xss漏洞 <script>alert(1)</script> OK了,存在xss漏洞 2.SQL注入 经过测试,输入框存在SQL注入漏洞 查询数据库名 查询管理员账号密码 此处密码为MD5加密,解码内容如下 找…...
好用的 Markdown 编辑器组件
ByteMD bytedance/bytemd: ByteMD v1 repository (github.com) 这里由于我的项目是 Next,所以安装 bytemd/react, 阅读官方文档,执行命令来安装编辑器主体、以及 gfm(表格支持)插件、highlight 代码高亮插件…...
uniapp vite3 require导入commonJS 的js文件方法
vite3 导入commonJS 方式导出 在Vite 3中,你可以通过配置vite.config.js来实现导入CommonJS(CJS)风格的模块。Vite 默认支持ES模块导入,但如果你需要导入CJS模块,可以使用特定的插件,比如originjs/vite-pl…...
通义灵码用户说:“人工编写测试用例需要数十分钟,通义灵码以毫秒级的速度生成测试代码,且准确率和覆盖率都令人满意”
通过一篇文章,详细跟大家分享一下我在使用通义灵码过程中的感受。 一、定义 通义灵码,是一个智能编码助手,它基于通义大模型,提供代码智能生成、研发智能问答能力。 在体验过程中有任何问题均可点击下面的连接前往了解和学习。 …...
MySQL中的约束
约束概述 1.1 为什么需要约束 数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信…...
Leetcode 寻找重复数
可以使用 位运算 来解决这道题目。使用位运算的一个核心思想是基于数字的二进制表示,统计每一位上 1 的出现次数,并与期望的出现次数做比较。通过这种方法,可以推断出哪个数字重复。 class Solution { public:int findDuplicate(vector<i…...
大一新生以此篇开启你的算法之路
各位大一计算机萌新们,你们好,本篇博客会带领大家进行算法入门,给各位大一萌新答疑解惑。博客文章略长,可根据自己的需要观看,在博客中会有给大一萌新问题的解答,请不要错过。 入门简介: 算法…...
【AI大模型】ChatGPT模型原理介绍(上)
目录 🍔 什么是ChatGPT? 🍔 GPT-1介绍 2.1 GPT-1模型架构 2.2 GPT-1训练过程 2.2.1 无监督的预训练语言模型 2.2.2 有监督的下游任务fine-tunning 2.2.3 整体训练过程架构图 2.3 GPT-1数据集 2.4 GPT-1模型的特点 2.5 GPT-1模型总结…...
基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模
前言 本系列教程旨在使用UE5配置一个具备激光雷达深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博…...
C++竞赛初阶L1-15-第六单元-多维数组(34~35课)557: T456507 图像旋转
题目内容 输入一个 n 行 m 列的黑白图像,将它顺时针旋转 90 度后输出。 输入格式 第一行包含两个整数 n 和 m,表示图像包含像素点的行数和列数。1≤n≤100,1≤m≤100。 接下来 n 行,每行 m 个整数,表示图像的每个像…...
无线领夹麦克风哪个牌子好?西圣、罗德、猛犸领夹麦克风深度评测
如今短视频和直播行业蓬勃发展,无线领夹麦克风成为了许多创作者不可或缺的工具。然而,市场上的无线领夹麦克风品牌众多、质量参差不齐,为了帮助大家挑选到满意的产品,我作为数码测评博主,对无线领夹麦克风市场进行了…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
R 语言科研绘图第 55 期 --- 网络图-聚类
在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...
AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...
倒装芯片凸点成型工艺
UBM(Under Bump Metallization)与Bump(焊球)形成工艺流程。我们可以将整张流程图分为三大阶段来理解: 🔧 一、UBM(Under Bump Metallization)工艺流程(黄色区域ÿ…...
DAY 45 超大力王爱学Python
来自超大力王的友情提示:在用tensordoard的时候一定一定要用绝对位置,例如:tensorboard --logdir"D:\代码\archive (1)\runs\cifar10_mlp_experiment_2" 不然读取不了数据 知识点回顾: tensorboard的发展历史和原理tens…...
PydanticAI快速入门示例
参考链接:https://ai.pydantic.dev/#why-use-pydanticai 示例代码 from pydantic_ai import Agent from pydantic_ai.models.openai import OpenAIModel from pydantic_ai.providers.openai import OpenAIProvider# 配置使用阿里云通义千问模型 model OpenAIMode…...
路由基础-路由表
本篇将会向读者介绍路由的基本概念。 前言 在一个典型的数据通信网络中,往往存在多个不同的IP网段,数据在不同的IP网段之间交互是需要借助三层设备的,这些设备具备路由能力,能够实现数据的跨网段转发。 路由是数据通信网络中最基…...
