专栏名称: 机器学习算法与Python实战
长期跟踪关注统计学、数据挖掘、机器学习算法、深度学习、人工智能技术与行业发展动态,分享Python、机器学习等技术文章。回复机器学习有惊喜资料。
目录
相关文章推荐
丁香妈妈  ·  孩子身高达标吗?多高算正常?2025 ... ·  昨天  
掌上铜山  ·  一地明确:生三孩奖3万! ·  16 小时前  
掌上铜山  ·  一地明确:生三孩奖3万! ·  16 小时前  
丁香妈妈  ·  大人有脚气会传染孩子吗? ·  3 天前  
51好读  ›  专栏  ›  机器学习算法与Python实战

机器学习中25个最重要的数学定义(公式、代码实现)

机器学习算法与Python实战  · 公众号  ·  · 2025-02-03 19:17

正文

这些数学定义构成了数据科学/机器学习/深度学习的重要基础,从优化算法到概率分布,从特征工程到模型评估,它们在数据科学的各个环节都发挥着关键作用。理解和掌握这些定义,对于深入学习和应用数据科学技术至关重要。

1. 梯度下降(Gradient Descent)

公式

讲解

梯度下降是一种优化算法,用于最小化损失函数。其中, 是第 次迭代的参数, 是学习率, 是损失函数 处的梯度。它通过不断沿着梯度的反方向更新参数,来逐步接近损失函数的最小值。

代码实现(Python)

import numpy as np

# 假设的损失函数
def loss_function(theta):
    return theta**2

# 损失函数的梯度
def gradient(theta):
    return 2 * theta

theta = 5  # 初始参数
learning_rate = 0.1
epochs = 100

for _ in range(epochs):
    theta = theta - learning_rate * gradient(theta)

print("最终参数:", theta)

2. 正态分布(Normal distribution)

公式

讲解

正态分布是一种常见的概率分布, 是均值, 是方差。它的概率密度函数呈钟形曲线,许多自然现象和数据都近似服从正态分布。

代码实现(Python)

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

mu = 0
sigma = 1
x = np.linspace(mu - 3*sigma, mu + 3*sigma, 100)
plt.plot(x, norm.pdf(x, mu, sigma))
plt.show()

3. Z - 分数(Z - score)

公式

讲解

Z - 分数用于标准化数据,它表示一个数据点 距离均值 有多少个标准差 。通过Z - 分数变换,可以将不同尺度的数据转换到同一尺度,便于比较和分析。

代码实现(Python)

import numpy as np

data = np.array([12345])
mean = np.mean(data)
std = np.std(data)
z_scores = (data - mean) / std
print("Z - 分数:", z_scores)

4. Sigmoid 函数

公式

讲解

Sigmoid 函数常用于将实数映射到 (0, 1) 区间,常作为神经网络中的激活函数。它将输入值压缩到一个概率值范围内,特别适用于二分类问题。

代码实现(Python)

import numpy as np
import matplotlib.pyplot as plt

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

x = np.linspace(-55100)
plt.plot(x, sigmoid(x))
plt.show()

5. 相关性(Correlation)

公式

讲解

相关性用于衡量两个变量 之间的线性相关程度。 是协方差, 分别是 的标准差。相关性系数的取值范围是 [-1, 1],-1 表示完全负相关,1 表示完全正相关,0 表示无线性相关。

代码实现(Python)

import numpy as np

x = np.array([12345])
y = np.array([54321])
corr = np.corrcoef(x, y)[01]
print("相关性系数:", corr)

6. 余弦相似度(Cosine Similarity)

公式

讲解

余弦相似度用于衡量两个向量 的夹角余弦值,从而判断它们的相似程度。它常用于文本相似度计算等领域,不考虑向量的长度,只关注向量的方向。

代码实现(Python)

import numpy as np

a = np.array([123])
b = np.array([456])
cosine_sim = np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
print("余弦相似度:", cosine_sim)

7. 朴素贝叶斯(Naive Bayes)

公式

讲解

朴素贝叶斯是一种基于贝叶斯定理的分类算法,假设特征之间相互独立。它通过计算给定特征下类别的后验概率,来进行分类预测。

代码实现(Python)

from sklearn.naive_bayes import GaussianNB
import numpy as np

# 假设的训练数据
X = np.array([[-1-1], [-2-1], [-3-2], [11], [21], [32]])
y = np.array([111222])

clf = GaussianNB()
clf.fit(X, y)
print("预测:", clf.predict([[-0.8-1]]))

8. 最大似然估计(MLE - Maximum Likelihood Estimation)

公式

讲解

最大似然估计是一种参数估计方法,通过找到使观测数据出现概率最大的参数值 来估计模型参数。它假设数据是独立同分布的。

代码实现(Python)

import numpy as np
from scipy.stats import norm

# 假设的数据来自正态分布
data = np.random.normal(52100)

# 估计均值和标准差
mu_hat = np.mean(data)
sigma_hat = np.std(data)
print("估计的均值:", mu_hat)
print("估计的标准差:", sigma_hat)

9. 普通最小二乘法(OLS - Ordinary Least Squares)

公式

讲解

普通最小二乘法用于线性回归,通过最小化观测值 与预测值 之间的误差平方和,来估计回归系数 是特征矩阵, 是目标变量。

代码实现(Python)

import numpy as np
import statsmodels.api as sm

# 假设的特征和目标变量
X = np.array([[11], [12], [13]])
y = np.array([246])

# 添加常数项
X = sm.add_constant(X)

model = sm.OLS(y, X).fit()
print("回归系数:", model.params)

10. F1 - 分数(F1 Score)

公式

讲解

F1 - 分数是一种用于衡量分类模型性能的指标,它综合了精确率 和召回率 。精确率是预测为正例中实际为正例的比例,召回率是实际正例中被预测为正例的比例。F1 - 分数越高,说明模型在正例识别上的综合性能越好。

代码实现(Python)

from sklearn.metrics import f1_score

y_true = [0110]
y_pred = [0100]
print("F1 - 分数:", f1_score(y_true, y_pred))

11. 修正线性单元(ReLU - Rectified Linear Unit)

公式

讲解

ReLU 是一种常用的神经网络激活函数,它将所有负输入值置为 0,正输入值保持不变。它解决了梯度消失问题,并且计算效率高。

代码实现(Python)

import numpy as np
import matplotlib.pyplot as plt

def relu(x):
    return np.maximum(0, x)

x = np.linspace(-55100)
plt.plot(x, relu(x))
plt.show()

12. Softmax 函数

公式

讲解

Softmax 函数常用于多分类问题,将输入向量转换为概率分布,使得所有类别的概率之和为 1。它输出每个类别的概率,便于进行分类决策。

代码实现(Python)

import numpy as np

def softmax(x):
    exp_x = np.exp(x - np.max(x))
    return exp_x / np.sum(exp_x)

x = np.array([123])
print("Softmax 输出:", softmax(x))

13. R2 - 分数(R2 score)

公式

讲解

R2 - 分数用于评估回归模型的拟合优度,取值范围是 [0, 1]。1 表示模型完全拟合数据,0 表示模型与数据的均值预测效果相同。

代码实现(Python)

from sklearn.metrics import r2_score

y_true = [3-0.527]
y_pred = [2.50.028]
print("R2 - 分数:", r2_score(y_true, y_pred))

14. 均方误差(MSE - Mean Squared Error)

公式

讲解

均方误差是一种常用的回归模型损失函数,它计算预测值 与真实值 之间误差的平方的平均值,衡量了模型预测值与真实值的平均偏离程度。

代码实现(Python)

from sklearn.metrics import mean_squared_error

y_true = [12.53]
y_pred = [1.2 2.42.9]
print("均方误差:", mean_squared_error(y_true, y_pred))

15. 均方误差 + L2 正则化(MSE + L2 Reg)

公式

讲解

在均方误差的基础上加入 L2 正则化项, 是正则化参数, 是模型参数。L2 正则化通过惩罚较大的参数值,防止模型过拟合。

代码实现(Python)

from sklearn.linear_model import Ridge

# 假设的特征和目标变量
X = np.array([[11], [12], [13]])
y = np.array([246])

model = Ridge(alpha = 1.0)
model.fit(X, y)
print("正则化后的系数:", model.coef_)

16. 特征向量(Eigen vectors)

公式

讲解

对于一个方阵 ,如果存在非零向量 和标量 满足上述公式,那么 就是 的特征向量, 是对应的特征值。特征向量和特征值在主成分分析(PCA)等降维技术中有重要应用。

代码实现(Python)

import numpy as np

A = np.array([[21], [12]])
eigen_values, eigen_vectors = np.linalg.eig(A)
print("特征值:", eigen_values)
print("特征向量:", eigen_vectors)

17. 熵(Entropy)

公式

讲解

熵是信息论中的一个概念,用于衡量随机变量的不确定性。 是事件 发生的概率,熵越大,说明不确定性越高。

代码实现(Python)

import numpy as np

probabilities = np.array([0.20.30.5])
entropy = -np.sum([p * np.log2(p) for p in probabilities if p > 0])
print("熵:", entropy)

18. K - 均值聚类(KMeans)

公式

讲解

K - 均值聚类是一种无监督学习算法,将数据集划分为 个簇。它通过不断更新簇中心 ,使得每个数据点到其所属簇中心的距离平方和最小。

代码实现(Python)

from sklearn.cluster import KMeans
import numpy as np

# 假设的数据
X = np.array([[12], [14], [10], [42], [44], [40]])
kmeans = KMeans(n_clusters = 2, random_state = 0 ).fit(X)
print("聚类标签:", kmeans.labels_)

19. KL 散度(KL Divergence)

公式

讲解

KL 散度用于衡量两个概率分布 之间的差异。它是非对称的,即

代码实现(Python)

import numpy as np

p = np.array([0.250.250.250.25])
q = np.array([0.10.20.30.4])
kl_divergence = np.sum([p_i * np.log(p_i / q_i) for p_i, q_i in zip(p, q) if p_i > 0 and q_i > 0])
print("KL 散度:", kl_divergence)

20. 对数损失(Log - loss)

公式

讲解

对数损失常用于分类问题,衡量预测概率 与真实标签 之间的差异。它对错误预测给予较大的惩罚。

代码实现(Python)

from sklearn.metrics import log_loss

y_true = [01]
y_pred = [[0.9 0.1], [0.10.9]]
print("对数损失:", log_loss(y_true, y_pred))

21. 支持向量机(SVM - Support Vector Machine)

公式

讲解

SVM 是一种分类和回归模型,通过寻找一个最优超平面来最大化样本点到超平面的间隔。 是超平面的法向量, 是偏置, 是惩罚参数。

代码实现(Python)

from sklearn import svm
import numpy as np

# 假设的训练数据
X = np.array([[00], [11]])
y = np.array([01])
clf = svm.SVC()
clf.fit(X, y)

22. 线性回归(Linear regression)

公式

讲解

线性回归是一种基本的监督学习算法,用于建立自变量







请到「今天看啥」查看全文