机器学习 - 似然函数:概念、应用与代码实例

news2024/11/15 18:29:30

目录

  • 一、概要
  • 二、什么是似然函数
    • 数学定义
    • 似然与概率的区别
    • 重要性
    • 举例
  • 三、似然函数与概率密度函数
    • 似然函数(Likelihood Function)
      • 定义
      • 例子
    • 概率密度函数(Probability Density Function, PDF)
      • 定义
    • 区别与联系
  • 四、最大似然估计(Maximum Likelihood Estimation, MLE)
    • 定义与基本思想
    • 例子与代码:估计正态分布的参数
      • Python代码实现
      • 输入与输出
      • 处理过程
  • 五、似然函数在机器学习中的应用
    • 监督学习:逻辑回归
      • 定义
      • 例子与代码:逻辑回归模型
      • 输入与输出
      • 处理过程
  • 六、总结

本文深入探讨了似然函数的基础概念、与概率密度函数的关系、在最大似然估计以及机器学习中的应用。通过详尽的定义、举例和Python/PyTorch代码示例,文章旨在提供一个全面而深入的理解。

关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

file

一、概要

在机器学习和统计学领域中,似然函数(Likelihood Function)是一个至关重要的概念。它不仅是参数估计的基础,而且在模型选择、模型评估以及众多先进的算法和技术中都有着广泛的应用。本文旨在全面但深入地探讨似然函数,从其基本定义和性质到在不同机器学习问题中的具体应用。

文章将首先介绍似然函数与概率密度函数的关系,然后通过最大似然估计(Maximum Likelihood Estimation, MLE)来展示如何利用似然函数进行参数估计。接着,我们会探讨似然函数在分类问题和回归问题中的应用,并使用Python和PyTorch代码段进行示例演示。

为了保持文章的技术深度,我们还将讨论模型选择与似然比检验,以及似然函数在最新研究进展中的角色,如在贝叶斯方法和复杂模型优化中的应用。


二、什么是似然函数

file
似然函数是一个在统计学和机器学习中经常出现的概念,它用于描述给定参数下,观察到某一数据样本的"可能性"。似然函数通常被记作 ( L(\theta \mid x) ),其中 ( \theta ) 是模型参数,( x ) 是观察到的数据。

数学定义

数学上,似然函数可以定义为:

file

似然与概率的区别

  • 概率: 描述在固定的参数 ( \theta ) 下,某一事件 ( x ) 发生的可能性。
  • 似然: 描述已经观察到事件 ( x ),而参数 ( \theta ) 是什么的可能性。

简单来说,概率是用来描述数据的生成模型,而似然是用来描述参数的合理性。

重要性

似然函数是许多统计推断方法的基础,包括但不限于:

  • 最大似然估计(MLE)
  • 贝叶斯推断
  • 似然比检验

举例

考虑一个投掷硬币的例子,其中硬币正面出现的概率是 ( p ),反面出现的概率是 ( 1-p )。

若我们观察到了3次正面和2次反面,似然函数可以写作:

file

通过这一节,我们理解了似然函数的基础定义,区别和重要性,并通过一个简单的例子加深了理解。在接下来的部分,我们将更深入地探讨似然函数在机器学习和统计学中的应用。


三、似然函数与概率密度函数

file
似然函数(Likelihood Function)和概率密度函数(Probability Density Function,简称PDF)都是描述数据和参数关系的重要数学工具。尽管两者在形式上具有相似性,它们在解释、用途和计算方面有着明显的不同。本节将详细介绍这两个概念的定义、区别和应用场景,并通过具体例子进行解释。

似然函数(Likelihood Function)

定义

似然函数用于量化在给定某参数值时,观察到某一数据样本的“可能性”。数学上,似然函数的定义如下:

file

例子

考虑一个简单的掷硬币实验,假设硬币正面出现的概率是 ( p )。若投掷了5次,出现了3次正面,2次反面。在这种情况下,似然函数可以表示为:

file

概率密度函数(Probability Density Function, PDF)

定义

概率密度函数描述了一个连续随机变量在各个特定值上的“密度”,也就是该值出现的相对可能性。对于离散随机变量,这个概念被称为概率质量函数(Probability Mass Function, PMF)。

file

区别与联系

  1. 角色互换: 在概率密度函数中,参数是固定的,我们考虑数据的变化。在似然函数中,数据是已知的,我们考虑参数的变化。
  2. 目的不同: 概率密度函数用于描述数据生成模型,而似然函数用于基于观察到的数据进行参数估计。
  3. 数学性质: 概率密度函数需要满足概率的公理(如非负性,积分(或求和)为1),而似然函数没有这样的要求。

四、最大似然估计(Maximum Likelihood Estimation, MLE)

file
最大似然估计是一种常用的参数估计方法,它通过最大化似然函数来找到最“合适”的参数值。在这一节中,我们将详细讲解最大似然估计的基础理论、应用场景,并通过具体的例子与代码演示进行解释。

定义与基本思想

file

例子与代码:估计正态分布的参数

file

Python代码实现

下面是使用Python和PyTorch来实现最大似然估计的代码。

import torch
import torch.optim as optim

# 随机生成一些正态分布的数据样本(均值为5,标准差为2)
data = torch.normal(5, 2, size=(100,))

# 初始化参数
mu = torch.tensor(1.0, requires_grad=True)
sigma = torch.tensor(1.0, requires_grad=True)

# 优化器
optimizer = optim.SGD([mu, sigma], lr=0.01)

# 迭代次数
n_iter = 5000

# 开始优化
for i in range(n_iter):
    optimizer.zero_grad()
    
    # 计算负对数似然
    n = len(data)
    neg_log_likelihood = 0.5 * n * torch.log(2 * torch.tensor(3.14159)) + n * torch.log(sigma) + torch.sum((data - mu)**2) / (2 * sigma**2)
    
    # 反向传播
    neg_log_likelihood.backward()
    
    # 更新参数
    optimizer.step()

# 输出结果
print(f"Estimated mu: {mu.data}")
print(f"Estimated sigma: {sigma.data}")

输入与输出

  • 输入:一个来自正态分布的数据样本(data)。
  • 输出:估计得到的均值(mu)和标准差(sigma)。

处理过程

  1. 初始化均值和标准差的参数。
  2. 使用梯度下降法来最小化负对数似然函数。

通过以上的定义、例子和代码,最大似然估计在参数估计中的重要性和实用性得以充分展示。在接下来的部分,我们将继续深入探讨如何使用似然函数进行更复杂的模型选择和评估。


五、似然函数在机器学习中的应用

似然函数不仅在统计推断中有重要应用,也在机器学习,尤其是在监督学习、非监督学习以及模型选择等方面有广泛的使用。本节将深入探讨似然函数在机器学习各领域中的应用,并提供相关的代码示例。

监督学习:逻辑回归

定义

在监督学习中,特别是用于分类问题的逻辑回归模型,最大似然估计用于优化模型的参数。逻辑回归模型试图找到一个函数,使得给定输入特征下某一类别出现的“可能性”最大。

例子与代码:逻辑回归模型

file

以下是用PyTorch实现逻辑回归模型的代码:

import torch
import torch.nn as nn
import torch.optim as optim

# 创建一些简单的数据
x_data = torch.tensor([[1.0], [2.0], [3.0], [4.0]])
y_data = torch.tensor([[0], [0], [1], [1]], dtype=torch.float32)

# 定义模型
class LogisticRegressionModel(nn.Module):
    def __init__(self):
        super(LogisticRegressionModel, self).__init__()
        self.linear = nn.Linear(1, 1)
    
    def forward(self, x):
        y_pred = torch.sigmoid(self.linear(x))
        return y_pred

model = LogisticRegressionModel()

# 损失和优化器
criterion = nn.BCELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)

# 训练模型
for epoch in range(1000):
    model.train()
    optimizer.zero_grad()
    y_pred = model(x_data)
    loss = criterion(y_pred, y_data)
    loss.backward()
    optimizer.step()

# 输出训练后的参数
print("Weight:", model.linear.weight.item())
print("Bias:", model.linear.bias.item())

输入与输出

  • 输入:特征 (x) 和标签 (y)。
  • 输出:逻辑回归模型的参数。

处理过程

  1. 初始化模型和优化器。
  2. 使用二元交叉熵损失函数(对应于逻辑回归的负对数似然函数)。
  3. 通过梯度下降来更新模型的参数。

六、总结

在本篇博客中,我们从似然函数的基础概念出发,深入探讨了它在统计推断和机器学习中的多方面应用。无论是在参数估计的最大似然估计法,还是在逻辑回归和高斯混合模型中,似然函数都发挥着至关重要的作用。通过最大化似然函数,我们不仅能找到描述数据的“最合适”的模型参数,而且还可以更深入地理解模型的性质和限制。

  1. 似然函数与梯度下降:在机器学习中,尤其是深度学习领域,梯度下降是最常用的优化算法。然而,不同的损失函数(即负对数似然函数)可能导致不同的优化性能和模型泛化能力。理解似然函数如何与梯度下降算法交互,有助于我们更有效地训练模型。

  2. 模型选择与复杂度:在现实应用中,选择一个“最佳”模型通常涉及到复杂度与准确性之间的权衡。通过似然函数,我们可以更直观地评估模型复杂度与数据拟合度之间的关系,从而进行更合理的模型选择。

  3. 似然函数与不确定性:在现实世界的很多问题中,数据往往具有噪声和不确定性。似然函数为我们提供了一种量化不确定性的方式,进一步,我们甚至可以通过贝叶斯方法,将先验信息与似然函数相结合,以更全面地理解数据和模型。

  4. 似然函数与生成模型:在非监督学习和生成模型(如GANs)中,似然函数的概念有时会被重新定义或拓展,以适应更复杂或高维的数据结构。理解这些扩展或变种的数学基础,可以为研究和应用这些先进模型提供有力的支撑。

通过深入探讨似然函数和最大似然估计,本文旨在为读者提供一个全面而深入的理解,帮助大家更有效地应用这一概念于各种实际问题中。无论你是统计学家,还是机器学习研究者,甚至是工程师,理解和掌握似然函数都将是你走向专业化、高效解决问题之路上的重要一步。

关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1080051.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Haskell网络编程:从数据采集到图片分析

概述 爬虫技术在当今信息时代中发挥着关键作用,用于从互联网上获取数据并进行分析。本文将介绍如何使用Haskell进行网络编程,从数据采集到图片分析,为你提供一个清晰的指南。我们将探讨如何使用亿牛云爬虫代理来确保高效、可靠的数据获取&am…

写爬虫?前端er何必用python

前言 说起网络爬虫,很多人第一时间想到python,但爬虫并非只能用python实现,虽然网上大部分爬虫文章都在说python爬虫,但对于前端程序员来说,我觉得js才是最屌的(对于简单爬取任务来说,复杂的我暂时没碰到~),下面说说我的经验(是的,仅限本人经验),希望能给各位前…

Qt 常用控件按钮Button 案例分析

目录 常用控件按钮 1.QPushButton 2.QToolButton 3.QRadioButton 4.QCheckBox 5.QCommandLinkButton 6.QDialogButtonBox 常用控件按钮 Push Button: 命令按钮。 Tool Button:工具按钮。 Radio Button:单选按钮。 Check Box: 复选框按钮 Command Link Button: 命今链…

2023年中国自动化微生物样本处理系统竞争现状及行业市场规模分析[图]

微生物检测能够对感染性疾病的病原体或者代谢物进行检测分析,是IVD的细分领域之一。2022年中国体外诊断市场规模1424亿元。 2015-2022年中国体外诊断市场规模 资料来源:共研产业咨询(共研网) 微生物检测由于样本类型多样&#xf…

HttpServletResponse对象

1.介绍 在Servlet API中,定义了一个HttpServletResponse接口,它继承自ServletResponse接口,专门用来封装HTTP响应消息。由于HTTP响应消息分为状态行、响应消息头、消息体三部分,因此,在HttpServletResponse接口中定义…

Netty RPC 实现

1 概念 RPC,即 Remote Procedure Call(远程过程调用),调用远程计算机上的服务,就像调用本地服务一样。RPC 可以很好的解耦系统,如 WebService 就是一种基于 Http 协议的 RPC。这个 RPC 整体框架如下&#…

优盘中毒了怎么办?资料如何恢复

在现代社会中,优盘成为我们日常生活与工作中必备的便携式存储设备。然而,正是由于其便携性,优盘也成为病毒感染的主要目标之一。本篇文章将帮助读者了解如何应对优盘中毒的情况,以及如何恢复因病毒感染丢失的资料。 ▶优盘为什么…

【Java】 DirectByteBuffer堆外内存回收

PhantomReference虚引用 在分析堆外内存回收之前,先了解下PhantomReference虚引用。 PhantomReference需要与ReferenceQueue引用队列结合使用,在GC进行垃圾回收的时候,如果发现一个对象只有虚引用在引用它,则认为该对象需要被回…

nvm的简介、安装、使用(简单明了)

一、nvm是什么? nvm是一个node的版本管理工具,可以简单操作node版本的切换、安装、查看。。。等等,与npm不同的是,npm是依赖包的管理工具。 二、nvm的安装。 1、windows包下载地址: 2、点击如下文件进行安装&#…

配置接口策略路由

【微|信|公|众|号:厦门微思网络】 【微思网络www.xmws.cn,成立于2002年,专业培训21年,思科、华为、红帽、ORACLE、VMware等厂商认证及考试,以及其他认证PMP、CISP、ITIL等】 组网需求 如图1所示,缺省情况下…

【TensorFlow2 之013】TensorFlow-Lite

一、说明 在这篇文章中,我们将展示如何构建计算机视觉模型并准备将其部署在移动和嵌入式设备上。有了这些知识,您就可以真正将脚本部署到日常使用或移动应用程序中。 教程概述: 介绍在 TensorFlow 中构建模型将模型转换为 TensorFlow Lite训练…

第九章-线程

初始时,CPU的执行流为进程;当产生了线程概念后,CPU执行流变为了线程,大大增大了一个周期以内进程的执行速度。 线程产生的作用就是为了提速,利用线程提速,原理就是实现多个执行流的伪并行,让处…

vue3前端开发系列 - electron开发桌面程序(2023-10月最新版)

文章目录 1. 说明2. 创建项目3. 创建文件夹electron3.1 编写脚本electron.js3.2 编写脚本proload.js 4. 修改package.json4.1 删除type4.2 修改scripts4.3 完整的配置如下 5. 修改App.vue6. 修改vite.config.ts7. 启动8. 打包安装9. 项目公开地址 1. 说明 本次安装使用的环境版…

提取log文件中的数据,画图

要提取的log格式如下: 代码如下: import reimport matplotlib.pyplot as plt import numpy as npimport argparse from os import path from re import searchclass DataExtractor(object): DataExtrator class def __init__(self, infile, keyword, out…

电脑上播放4K视频需要具备哪些条件?

在电视上播放 4K( 4096 2160 像素)视频是很简单的,但在电脑设备上播放 4K 视频并不容易。相反,它们有自己必须满足的硬件要求。 如果不满足要求,在电脑上打开 4K 分辨率文件或大型视频文件会导致卡顿、音频滞后以及更…

ROS中的命名空间

ROS中的节点、参数、话题和服务统称为计算图源,其命名方式采用灵活的分层结构,便于在复杂的系统中集成和复用。以下是一些命名的示例: /foo /stanford/robot/name /wg/node1计算图源命名是ROS封装的一种重要机制。每个资源都定义在一个命名空…

微信小程序wxml使用过滤器

微信小程序wxml使用过滤器 1. 新建wxs2. 引用和使用 如何在微信小程序wxml使用过滤器? 犹如Angular使用pipe管道这样子方便,用的最多就是时间格式化。 下面是实现时间格式化的方法和步骤: 1. 新建wxs 插入代码: /*** 管道过滤工…

泡泡玛特,难成“迪士尼”

作者 | 艺馨 豆乳拿铁 排版 | Cathy 监制 | Yoda 出品 | 不二研究 新增长难寻,新故事难讲。泡泡玛特(06682.HK)业绩增长承压的困局,都写在最新的半年报里。 曾经潮玩领域的王者、“潮玩第一股”泡泡玛特,主题城市乐园于9月26日在北京朝阳…

centos下安装配置redis7

1、找个目录下载安装包 sudo wget https://download.redis.io/release/redis-7.0.0.tar.gz 2、将tar.gz包解压至指定目录下 sudo mkdir /home/redis sudo tar -zxvf redis-7.0.0.tar.gz -C /home/redis 3、安装gcc-c yum install gcc-c 4、切换到redis-7.0.0目录下 5、修改…

2023年中国医学影像信息系统市场规模、竞争格局及行业趋势分析[图]

医学影像信息系统简称PACS,与临床信息系统、放射学信息系统、医院信息系统、实验室信息系统同属医院信息系统。医学影像信息系统是处理各种医学影像信息的采集、存储、报告、输出、管理、查询的计算机应用程序。主要包括:预约管理、数据接收、影像处理、…