前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[机器学习|理论&实践] 机器学习中的数学基础

[机器学习|理论&实践] 机器学习中的数学基础

原创
作者头像
Y-StarryDreamer
发布2023-12-13 22:43:20
2520
发布2023-12-13 22:43:20
举报
文章被收录于专栏:Y-StarryDreamerY-StarryDreamer

导言

机器学习作为一门复杂而强大的技术,其核心在于对数据的理解、建模和预测。理解机器学习的数学基础对于深入掌握其原理和应用至关重要。本文将深入介绍机器学习中的数学基础,包括概率统计、线性代数、微积分等内容,并结合实例演示,使读者更好地理解这些概念的实际应用。

概率统计

概率统计是机器学习中不可或缺的数学基础,它提供了处理不确定性和随机性的工具。在概率统计中,我们常常遇到的两个基本概念是概率和统计量。

概率描述了随机事件发生的可能性。以一个简单的硬币抛掷为例,硬币正面朝上的概率为0.5。在机器学习中,我们经常使用概率来描述事件的不确定性,尤其是在贝叶斯统计中。

概率密度函数

概率密度函数(Probability Density Function, PDF)用于描述连续型随机变量的概率分布。

P(a \leq X \leq b) = \int_{a}^{b} f(x) \,dx

其中,(f(x)) 是概率密度函数。

正态分布的概率密度函数:

f(x) = \frac{1}{{\sigma \sqrt{2\pi}}} e^{-\frac{1}{2}\left(\frac{x - \mu}{\sigma}\right)^2}

期望和方差

随机变量 (X) 的期望(Expectation)和方差(Variance)分别表示为:

\text{期望:} E[X] = \int x \, P(x) \,dx

\text{方差:} \text{Var}[X] = E[(X - \mu)^2]

实例演示:

假设有一个骰子,我们可以使用 Python 中的 NumPy 库生成一组模拟骰子投掷的数据,并计算每个点数出现的概率。

代码语言:python
复制
# 代码示例:模拟骰子投掷
import numpy as np
import matplotlib.pyplot as plt

# 模拟骰子投掷
dice_rolls = np.random.randint(1, 7, 1000)

# 计算每个点数的概率
unique, counts = np.unique(dice_rolls, return_counts=True)
probabilities = counts / len(dice_rolls)

# 绘制直方图
plt.bar(unique, probabilities)
plt.xlabel('点数')
plt.ylabel('概率')
plt.show()
统计量

统计量是对数据集中信息的度量,常见的统计量包括均值、方差和标准差。这些量帮助我们了解数据的中心趋势和分布。

实例演示:

使用 NumPy 计算一组数据的均值和标准差。

代码语言:python
复制
# 代码示例:计算均值和标准差
data = np.random.randn(100)  # 生成一组随机数据

mean_value = np.mean(data)
std_dev = np.std(data)

print(f"均值:{mean_value}, 标准差:{std_dev}")

线性代数

线性代数是机器学习中广泛使用的数学分支,特别是在处理向量、矩阵和线性变换时。许多机器学习算法都可以用线性代数的形式进行表达,例如线性回归、主成分分析等。

向量和矩阵

在线性代数中,向量是一个有序数列,矩阵是一个二维数组。在机器学习中,我们经常用向量表示特征,用矩阵表示数据集。

特征值和特征向量

对于矩阵 A ,其特征值Eigenvalue 和特征向量Eigenvector 满足:

A \mathbf{v} = \lambda \mathbf{v}

其中,\lambda\ 是特征值,\mathbf{v}\ 是特征向量。

矩阵特征值和特征向量的计算:

A = \begin{bmatrix} 4 & 1 \\ 2 & 3 \end{bmatrix}

实例演示:

使用 NumPy 创建一个向量和一个矩阵,并进行基本的运算。

代码语言:python
复制
# 代码示例:向量和矩阵操作
import numpy as np

# 创建向量
vector = np.array([1, 2, 3])

# 创建矩阵
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 矩阵乘法
result = np.dot(matrix, vector)

print(f"矩阵乘法结果:{result}")
线性变换

线性变换是线性代数中的重要概念,它通过矩阵和向量的相乘来描述。在机器学习中,线性变换常用于特征变换和降维。

实例演示:

使用线性变换将二维数据点旋转。

代码语言:python
复制
# 代码示例:线性变换
import numpy as np
import matplotlib.pyplot as plt

# 创建二维数据点
data = np.array([[1, 2], [2, 3], [3, 4]])

# 定义旋转矩阵
rotation_matrix = np.array([[0, -1], [1, 0]])

# 进行线性变换
transformed_data = np.dot(data, rotation_matrix)

# 绘制原始数据和变换后的数据
plt.scatter(data[:, 0], data[:, 1], label='原始数据')
plt.scatter(transformed_data[:, 0], transformed_data[:, 1], label='变换后的数据')
plt.legend()
plt.show()

微积分

微积分是研究变化和积分的数学分支,在机器学习中主要用于理解优化问题和梯度下降算法。

梯度和偏导数

梯度表示函数在某一点上的变化率,是一个向量。偏导数则表示多变量函数关于其中一个变量的变化率。

梯度和偏导数

多元函数的梯度表示为:

\nabla f = \left[ \frac{{\partial f}}{{\partial x_1}}, \frac{{\partial f}}{{\partial x_2}}, \ldots, \frac{{\partial f}}{{\partial x_n}} \right]

其中,(\frac{{\partial f}}{{\partial x_i}}) 是关于第 (i) 个变量的偏导数。

多元函数的梯度计算:

f(x, y) = 2x^2 + 3y^3

实例演示:

使用 SymPy 计算一个多变量函数的梯度和偏导数。

代码语言:python
复制
# 代码示例:计算梯度和偏导数
import sympy as sp

# 定义符号变量和多变量函数
x, y = sp.symbols('x y')
f = x**2 + y**3

# 计算梯度
gradient = [sp.diff(f, var) for var in (x, y)]

print(f"梯度:{gradient}")

# 计算偏导数
partial_derivative_x = sp.diff(f, x)
partial_derivative_y = sp.diff(f, y)

print(f"关于 x 的偏导数:{partial_derivative_x}")
print(f"关于 y 的偏导数:{partial_derivative_y}")

数据处理

在机器学习中,数据处理是至关重要的步骤。它包括数据清洗、特征工程、数据变换等操作,旨在为模型提供高质量的输入。

主成分分析(Principal Component Analysis, PCA)通过特征值分解来降维。

\text{{covariance matrix}} = \frac{1}{n} \sum_{i=1}^{n} (X_i - \bar{X})(X_i - \bar{X})^T

其中,X_i 是数据点,\bar{X} 是均值向量。

实例演示:

PCA 的步骤:

  1. 计算协方差矩阵。
  2. 计算协方差矩阵的特征值和特征向量。
  3. 选择前 (k) 个特征值对应的特征向量构成变换矩阵。
  4. 数据变换:Y = X \cdot \text{{transformation matrix}} 实例演示:

使用 Pandas 对一个简单的数据集进行数据处理。

代码语言:python
复制
# 代码示例:数据处理
import pandas as pd

# 创建一个简单的数据集
data = {'Name': ['Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 22],
        'Salary': [50000, 60000, 48000]}

df = pd.DataFrame(data)

# 查看数据集信息
print("原始数据集:")
print(df)

# 添加一列
df['Bonus'] = df['Salary'] * 0.1

# 删除一列
df = df.drop(columns=['Salary'])

print("\n处理后的数据集:")
print(df)

常见的机器学习模型的数学公式:

当涉及机器学习时,一些常见的数学公式包括:

  1. 线性回归:
  • 模型表达式:y = mx + b
  • 损失函数(均方误差):MSE = \frac{1}{n} \sum_{i=1}^{n}(y_i - (mx_i + b))^2
  1. 逻辑回归:
  • 模型表达式:P(Y=1) = \frac{1}{1 + e^{-(mx + b)}}
  • 损失函数(对数损失):LogLoss = -\frac{1}{n} \sum_{i=1}^{n}[y_i \log(p_i) + (1 - y_i) \log(1 - p_i)]
  1. 支持向量机(SVM):
  • 间隔公式: \text{间隔} = \frac{2}{\|w\|}
  • SVM优化目标: \min_{w, b} \frac{1}{2}\|w\|^2 \text{,约束条件:} y_i(w \cdot x_i + b) \geq 1
  1. 决策树:
  • 基尼不纯度: Gini(t) = 1 - \sum_{i=1}^{c} (p(i|t))^2
  • 信息熵: \text{Entropy}(t) = -\sum_{i=1}^{c} p(i|t) \log_2(p(i|t))
  1. K近邻(KNN):
  • 欧式距离: d(x, y) = \sqrt{\sum_{i=1}^{n} (x_i - y_i)^2}
  • KNN分类器: \hat{y} = \text{mode}(y_{i_1}, y_{i_2}, ..., y_{i_k})

我正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!

我正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 导言
  • 概率统计
    • 概率密度函数
      • 期望和方差
        • 统计量
        • 线性代数
          • 向量和矩阵
            • 特征值和特征向量
              • 线性变换
              • 微积分
                • 梯度和偏导数
                  • 梯度和偏导数
                  • 数据处理
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档