当前位置: 首页 > article >正文

【机器学习】机器学习中用到的高等数学知识-6. 组合数学 (Combinatorics)

  • 组合计数:用于计算特征选择和模型复杂度。

组合数学 (Combinatorics)

组合数学是研究有限或可数对象的组合、排列及计数规律的数学分支,在计算特征选择、模型复杂度和优化算法中有着广泛应用。以下详细介绍组合计数的概念、公式、推导过程以及实际应用。


1. 组合计数的基本概念

排列 (Permutation)

排列是指从 n 个不同元素中,按照一定顺序选出 r 个元素的排列方式。

公式:

P(n, r) = \frac{n!}{(n-r)!}

推导:

  • 从 n 个元素中选第一个有 n 种选择。
  • 第二个有 n−1 种选择,依此类推,总共有 n \cdot (n-1) \cdot \ldots \cdot (n-r+1) 种选择,等价于公式 \frac{n!}{(n-r)!}​。
组合 (Combination)

组合是指从 n 个不同元素中,不考虑顺序,选出 r 个元素的方式。

公式:

C(n, r) = \binom{n}{r} = \frac{n!}{r! \cdot (n-r)!}

推导:

  • 从 n 个元素中选出 r 个元素的排列数为 P(n, r)。
  • 但每个组合包含 r! 种不同排列,所以组合数为:

C(n, r) = \frac{P(n, r)}{r!} = \frac{n!}{r! \cdot (n-r)!}


2. 实际应用

(1) 特征选择

在机器学习中,假设有 n 个特征,从中选择 r 个用于模型训练。可以通过组合计算出可能的特征组合数:

C(n, r) = \frac{n!}{r!(n-r)!}

(2) 模型复杂度

当训练神经网络时,若有 n 层,每层有 k 个神经元,则全连接层的可能连接数为:

C(k, 2) \times \text{number of layers}

(3) 数据采样

在统计中,若有 n 个样本,从中随机选择 r 个进行实验或交叉验证,组合计数直接给出可能的采样方式数。


3. Python实现

以下代码演示了排列和组合的计算,并绘制相关的直方图进行可视化。

import math
import matplotlib.pyplot as plt
import numpy as np

# 计算排列数
def permutation(n, r):
    return math.factorial(n) // math.factorial(n - r)

# 计算组合数
def combination(n, r):
    return math.factorial(n) // (math.factorial(r) * math.factorial(n - r))

# 示例参数
n_values = range(1, 11)  # n 从 1 到 10
r = 3  # 固定 r 为 3

# 计算排列和组合
perms = [permutation(n, r) for n in n_values if n >= r]
combs = [combination(n, r) for n in n_values if n >= r]

# 绘制图形
plt.figure(figsize=(10, 6))
plt.bar(n_values[:len(perms)], perms, alpha=0.7, label="Permutation P(n, r)", color="blue")
plt.bar(n_values[:len(combs)], combs, alpha=0.7, label="Combination C(n, r)", color="orange")
plt.xlabel("n (number of elements)")
plt.ylabel("Count")
plt.title("Permutation and Combination Counts")
plt.legend()
plt.grid()
plt.show()


4. 推导和验证

排列验证

以 n=5, r=3 为例,排列公式:

P(5, 3) = \frac{5!}{(5-3)!} = \frac{120}{2} = 60

逐一列举验证:(5⋅4⋅3) 排列数为 60。

组合验证

以 n=5, r=3 为例,组合公式:

C(5, 3) = \frac{5!}{3! \cdot (5-3)!} = \frac{120}{6 \cdot 2} = 10

列举无重复选择的方式,验证结果为 10。


5. 总结

组合计数是机器学习、统计分析和优化算法的重要工具:

  • 排列用于关注顺序的任务(如排序问题)。
  • 组合用于忽略顺序的选择问题(如特征选择)。
  • Python的实现和可视化帮助更直观地理解这些概念,并应用到实际问题中。

http://www.kler.cn/a/402401.html

相关文章:

  • zotero安卓测试版下载和使用
  • 深入解析分布式遗传算法及其Python实现
  • TEA加密逆向
  • 软件设计模式分类与总结
  • 【C++动态规划 子集状态压缩】2002. 两个回文子序列长度的最大乘积|1869
  • 鸿蒙NEXT开发案例:字数统计
  • 【机器学习】机器学习中用到的高等数学知识-7.信息论 (Information Theory)
  • element plus el-table 简单分页组件
  • Django5 2024全栈开发指南(三):数据库模型与ORM操作
  • 4.4.5 timer中断流向Linux(从interrupt log回放)
  • 【机器学习】在泊松分布中,当λ值较大时,其近似正态分布的误差如何评估?
  • vue中v-if和v-show的区别
  • 嵌入式驱动面试总结
  • 景联文科技:以全面数据处理服务推动AI创新与产业智能化转型
  • 【第二十一周】网络爬虫实践
  • 深入探索淘宝API:高效实现关键字搜索商品列表的技术实践
  • 企业软文推广如何巧妙借力优质媒体,让品牌在市场中脱颖而出?媒介盒子分享
  • 2411rust,1.81,1.82
  • Charles抓https包-配置系统证书(雷电)
  • Elasticsearch:更好的二进制量化(BBQ)对比乘积量化(PQ)
  • 自我通信11
  • STM32学习笔记----UART、IIC、SPI的区别
  • 鸿蒙NEXT开发-用户通知服务的封装和文件下载通知
  • Vue 3 中使用 `<script setup>` 语法糖实现模板插值表达式
  • TongRDS 可视化连接
  • 机器学习极简史