偏最小二乘法模型可分为偏最小二乘回归模型和偏最小二乘路径模型。其中偏最小二乘回归模型是一种新型的多元统计方法,它集中了主成分分析、典型相关分析和线性回归的特点,特别在解决回归中的共线性问题具有无可比拟的优势。偏最小二乘回归模型虽然与主成分分析有关系,但它不是寻找响应和独立变量之间最小方差的超平面,而是通过投影预测变量和观测变量到一个新空间来寻找一个线性回归模型。特别当两组变量的个数很多,且存在多重相关性,而观测数据的数量较少时,用偏最小二乘回归建立的模型具有传统的经典回归分析等方法所没有的优点。
偏最小二乘路径模型是偏最小二乘法的应用,可以应用于一些难以直接观测的现象进行分析,也可以考察分析现象之间的关联关系等。偏最小二乘路径模型降低了结构方程需要大量的样本数据,且观测变量服从多元正态分布的要求。模型的工作目标与结构方程模型基本一致,但与结构方程基本协方差矩阵建模的思路不同,偏最小二乘路径模型采用的是一系列一元或多元线性回归的迭代求解。在实际应用中无需对观测变量做特定的概率分布假设,也不存在模型不可识别问题,并且由于采用偏最小二乘法,对样本容量的要求也非常宽松。由此可见,偏最小二乘路径模型是一种更加实用和有效的线性建模方法。
1975年,在求解实际应用中发现很多的问题不能用结构方程求解,所以伍德等人提出更为简单的分析技术,即偏最小二乘路径模型。与结构方程相比,该方法使用条件更为广泛,效果更好。
1983年,瑞典统计学家Herman Wold和阿巴诺最先提出了最小二乘法,并将其应用于社会科学中;然后由赫曼的儿子Svante Wold发展这个理论。
特别是近十年来,偏最小二乘在理论、方法和应用方面都得到了迅速的发展。密西根大学的佛奈尔教授称偏最小二乘回归为第二代回归方法。
现实问题中的自变量之间往往会存在大量的自相关情况,所以对这类问题使用普通的最小二乘法不能够求解;这是因为变量多重相关性会严重危害参数估计,扩大模型误差,并且破坏模型的稳定性。偏最小二乘法开辟了一种有效的技术途径,它利用对系统中的数据信息进行分解和筛选的方式,提取对因变量的解释性最强的综合变量,辨识系统中的信息与噪声,从而更好地克服变量多重相关性在系统建模中的不良作用。
第一步:对原始数据X和Y进行标准化得到X0和Y0,其中X为m维的数据,Y是p维的数据;从Y0中选择方差最大的一列作为u1,方便后面计算;因为选取方差最大就表示该列是最能反映原始数据信息的一列,即根据主成分分析的思想,我们称这列向量为第一主成分,并使X与Y之间的相关性达最大。
标准化后的矩阵:
第二步:迭代求解X与Y的变换权重(w1,c1)和综合因子(t1,u1),直到收敛;
假设X与Y提取的主成分为t1和u1,t1是自变量集的线性组合:
,u1是因变量集
的线性组合:
;为了回归分析的需求,需要满足两个要求:t1和u1各自尽可能多的提取所在变量组的变异信息;t1和u1的相关性达到最大。
计算公式:
利用第一步选择的Y中的列,求解X的变换权重因子
利用X的信息t1,求解Y的变换权重c1,并且更新因子u1的值
判断是否已找到合理的解,否则继续寻找。
其中t1和u1的估计方程为:
第三步:求X与Y的残差矩阵;
计算公式:
1.求X的载荷P1,载荷是反映X0和因子T1的直接关系:
2.求X0的残差X1,残差表示了u1不能反映X0信息的部分:
3.求Y的载荷Q1:
4.建立X因子t1与Y因子u1之间的回归模型,并用t1预测u1的信息;
5.求Y0的残差Y1,这个值表达了X与因子t1所不能预测的Y0中的信息:
第四步:利用X1与Y1,重复上述步骤,求解下一个主成分的偏最小二乘的参数。
最后得到偏最小二乘回归模型的回归方程,还应该对回归系数进行检验;一般情况下,可以通过交叉有效性检验来确定。交叉有效性检验通过求解预测误差平方和与误差平方和的比值,这个比值越小越好,一般设置的限定值为0.05,所以当该比值越小,增加新的主成分有利于提高模型的精度;反之认为增加新的成分,对减少方程的预测误差无明显的改善作用。
定义交叉有效性:
这样,在建模时每一步计算结束前,均进行交叉有效性检验,如果在第h步有
时模型已达到精度要求,可停止提取成分,若
表示第h步提取的
成分的边际贡献显著,应继续第h+1步计算。
import numpy as np def pls_regression(X, Y, L): """ 偏最小二乘回归算法。 参数: X : numpy.ndarray 特征矩阵,每一行是一个样本,每一列是一个特征。 Y : numpy.ndarray 目标矩阵,每一行是一个样本,每一列是一个目标变量。 L : int 要提取的潜在变量数量。 返回: T : numpy.ndarray X的得分矩阵。 U : numpy.ndarray Y的得分矩阵。 P : numpy.ndarray X的权重矩阵。 Q : numpy.ndarray Y的权重矩阵。 """ n, p = X.shape m, _ = Y.shape W = np.zeros((p, L)) Q = np.zeros((p, L)) P = np.zeros((m, L)) U = np.zeros((m, L)) T = np.zeros((n, L)) for i in range(L): # 计算权重向量 Xtx = X.T @ X Xty = X.T @ Y W[:, i] = Xty / np.sqrt(Xtx @ W[:, i]) # 计算得分向量 T[:, i] = X @ W[:, i] # 计算Y的权重和得分 Yty = Y.T @ Y U[:, i] = Yty @ W[:, i] / np.linalg.norm(W[:, i]) Q[:, i] = Y.T @ U[:, i] # 计算X和Y的权重 P[:, i] = Xty @ U[:, i].T / np.linalg.norm(U[:, i]) # 去相关 X = X - T @ W[:, i].T Y = Y - U[:, i] @ Q[:, i].T return T, U, P, Q # 示例数据 X = np.random.rand(100, 10) # 100个样本,10个特征 Y = np.random.rand(100, 1) # 100个样本,1个目标变量 # 调用PLS回归函数 L = 3 # 假设我们想要3个潜在变量 T, U, P, Q = pls_regression(X, Y, L) # 使用得到的权重和得分进行预测 Y_pred = T @ P.T
偏最小二乘法回归算法(PLS)在多个领域有着广泛的应用,以下是一些常见的应用场景:
上一篇:发现玩家!(德州版wpk)透视辅助!(透视)外挂辅助器测试(2025已更新)(哔哩哔哩)
下一篇:【Diffusion学习】【生成式AI】Stable Diffusion、DALL-E、Imagen 背後共同的套路