离散概率模型是概率论中的一类重要模型,专门用于描述随机变量取离散值的情况。这类模型在许多领域都有广泛的应用,比如统计学、机器学习、数据挖掘等。在这篇文章中就将介绍离散概率模型有关的东西,具体包括:马尔科夫链、部件与系统的可靠性建模以及线性回归等内容。
一、马尔科夫链
在之前的文章中,我曾有介绍过马尔科夫链有关的信息,所以在这里我只用一句话来简单说明下:马尔科夫链是一种随机过程,其中系统在各个时刻的状态仅依赖于前一个时刻的状态,而与更早的状态无关。
我们关于马尔可夫链可以写出转移矩阵,例如这样:
在这样的一个马尔科夫链中,我们可以总结写出状态转移矩阵如下:
当前状态\下一状态 | 下雨 | 晴天 |
下雨 | 0.6 | 0.4 |
晴天 | 0.3 | 0.7 |
那么接下来我们来说在离散概率模型中的马尔可夫链的具体应用:
排队论:描述顾客到达和服务过程;
自然语言处理:用于文本生成和语言模型;
金融:用于股票价格预测和风险管理。
接下来,关于排队论再细说下:
状态转移:在排队系统中,系统的状态可以定义为客户数量、服务台的状态等。这些状态之间的转移可以用马尔科夫链来描述。例如,当一个新客户到达时,系统状态从 n 个客户变为 n+1 个客户;当一个客户完成服务离开时,系统状态从 n 个客户变为 n−1个客户。
记忆性假设:马尔科夫链的一个关键特性是无后效性(即未来状态仅依赖于当前状态,而不依赖于过去的任何状态)。在排队系统中,假设到达时间和服务时间是独立的,并且服从某种概率分布(如泊松分布或指数分布),这样就可以用马尔科夫链来简化模型,使其更容易分析和求解。
稳态分析:通过马尔科夫链,可以分析排队系统的稳态行为,即系统在长时间运行后的稳定状态。例如,可以计算系统中平均客户数量、平均等待时间等性能指标。
平衡方程:马尔科夫链的平衡方程(也称为稳态方程)可以帮助求解排队系统在稳态下的概率分布。这些方程描述了系统在不同状态之间的概率平衡关系。
具体例子:
假设有一个简单的单服务台排队系统(M/M/1),其中:
到达过程是泊松过程,到达率为 λ。
服务时间服从指数分布,服务率为 μ。
这个系统的状态可以用队列中的客户数量来表示。由于泊松过程和指数分布都具有无后效性,因此可以用马尔科夫链来建模这个系统。具体来说,状态转移矩阵可以描述如下:
从状态 n 到状态 n+1 的转移概率为 λ。
从状态 n 到状态 n−1 的转移概率为 μ。
通过求解马尔科夫链的平衡方程,可以得到系统在稳态下的概率分布,从而进一步计算出各种性能指标,如平均等待时间、平均队列长度等。
二、部件与系统的可靠性建模
可靠性建模是评估和预测系统或部件在其生命周期内保持正常工作的能力。这通常涉及离散概率模型,特别是二项分布、泊松分布和指数分布等。
人-机系统,无论电子还是机械都是由部件组成的,所以我们将考虑这些部件之间的关系,具体将包括:串联、并联、串并联结合等几种关系。其中这几种关系与数字电路的串、并联大抵相同,所以只简单介绍下。
串联系统
串联系统就是所有部件都要可以使用时系统才能正常运转的系统。如果在串联系统中由3个部件,其可靠性分别为、、,那么这个系统可靠性就是它们的乘积,即
并联系统
并联系统是只要有一个部件可正常运行则整个系统就可正常运行的系统。此时,有2个部件在一个并联系统中,并且其可靠性分别为、,那么系统的可靠性可定义为:
串并联组合系统
在一个系统中,它既有串联部分的存在又有并联系统的存在,那么它就是串并联组合系统。
关于这部分的应用主要是在工程设计、维护策略和风险评估上。
三、线性回归
线性回归是统计学和机器学习中一种基本的预测方法,用于建立因变量(通常是我们想要预测的值)与一个或多个自变量(影响因变量的因素)之间的关系。在最简单的情况下,通过找一条直线去最好地拟合所有数据点,关于这条直线的表达式如下:
那么,我们可以推导出其斜率与截距分别为:
和
接下来是几个公式以对线性回归的模型做统计分析:
第一个是误差平方和:
它反映了关于回归直线的偏差。
第二个是关于y的总修正平方和:
第三个是回归平方和:
SSR反映了y值由回归直线解释的那部分偏差。
最后一个是决定系数,它度量了回归直线的拟合程度:
当越接近1,则说明回归直线对于实际数据的拟合效果越好,当其直接为1时,则数据精准与回归直线吻合。
关于有两个性质值得一说,首先时其大小与两个变量哪一个记作x,哪一个记作y无关,然后是其大小与x,x的单位无关。
除此之外,关于拟合程度的另一种显示方法是将残差对于自变量作图,其中残差
以下是一个具体的python代码举例:
首先,假设我们有一个简单的数据集,其中包含房屋面积(平方米)和对应的销售价格(万元)。我们的目标是建立一个线性回归模型,通过房屋面积预测房屋的价格。代码如下:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score# 手动创建数据
data = {'Area': [50, 60, 70, 80, 90, 100, 110, 120],'Price': [150, 180, 210, 240, 270, 300, 330, 360]
}df = pd.DataFrame(data)# 将数据分为自变量X和因变量y
X = df[['Area']]
y = df['Price']# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建线性回归模型
model = LinearRegression()# 训练模型
model.fit(X_train, y_train)# 预测
y_pred = model.predict(X_test)# 计算均方误差和R^2分数
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)print(f"Mean Squared Error: {mse}")
print(f"R^2 Score: {r2}")# 可视化结果
plt.figure(figsize=(10, 6))# 散点图显示原始数据
plt.scatter(df['Area'], df['Price'], color='black', label='Original data')# 绘制训练集上的预测线
plt.plot(X_train, model.predict(X_train), color='blue', linewidth=2, label='Fitted line')# 如果你想看到测试集上的预测点
plt.scatter(X_test, y_pred, color='red', marker='x', label='Predicted values on test set')plt.xlabel('Area (m^2)')
plt.ylabel('Price (10k RMB)')
plt.legend()
plt.title('Linear Regression Model for House Prices')
plt.show()
其输出结果为:
Mean Squared Error: 4.0389678347315804e-28
R^2 Score: 1.0
以及做出的图像为:
我们观察这个代码,发现它与机器学习中的线性回归十分相似,都是使用了sklearn的 线性回归模型,但不同的是,在数学建模中我们一般使用R^2等来衡量模型的好坏,而ml(机器学习)则一般使用MSE、RMSE、MAE等指标。
此外在目标上,传统数学建模强调对于数据间关系的解释,而ml则更强调对于未来数据的预测,换句话说就是,传统数学建模者更关注模型的可解释性和假设检验,而ml者注重模型的预测性能和泛化能力。除此之外,在数学建模与ml的线性回归上大体是相同的。
此上