预测算法系列5—核极限学习机KELM及其实现(Matlab)

回归:

在这里插入图片描述

分类:
在这里插入图片描述

在上一篇文章中我介绍了极限学习机ELM的实现和优化,极限学习机虽然具有训练速度快、复杂度低、克服了传统梯度算法的局部极小、过拟合和学习率的选择不合适等优点,但在比较复杂的分类、回归等非线性模式识别任务往往需要更多的隐层神经元,导致网络的结构 非常复杂。

Huang等人[1]将核函数引入到ELM中,提出了基于核方法的KELM(Kernel ELM)算法,该方法不需要显式地定义映射函数,也不需要设置隐层神经元个数,从而节省了隐层神经元个数优化的时间。相比于传统的ELM算法,KELM用核映射代替随机映射,能够有效改善隐层神经元随机赋值带来的泛化性和稳定性下降的问题.

00目录

1 核极限学习机原理

2 代码目录

3 MATLAB实现

4 展望

参考文献

01 核极限学习机原理

ELM隐层的特征映射有很多种选择,既可以是显式映射,也可以是隐式映射.隐式映射巧妙利用核方法得到特征向量之间的内积,因此不需要显示地定义特征空间和映射函数.核方法实质是通过核函数隐式地将输入空间中低维的线性不可分样本映射到高维甚至无限维的特征空间,使得原空间的非线性可分问题转化为特征空间中的线性可分问题,是机器学习领域里一类非常重要的方法.传统的ELM算法采用显式的非线性特征映射,对于比较复杂的分类、回归等非线性模式识别任务往往需要更多的隐层神经元,导致网络的结构非常复杂。Huang等人将核函数引入到ELM中,提出了基于核方法的KELM(Kernel ELM)算法,为回归、二分类和多分类问题提供了一个统一的学习框架[2]

1.1 KELM原理

在隐层的特征映射h(x)具体形式未知的情况下,需要引入核函数来度量样本之间的相似度,可以根据Mercer条件定义ELM的核矩阵,表示如下:在这里插入图片描述

则KELM模型输出函数的表达示为在这里插入图片描述

式中:C为正则化系数,其设定将影响KELM性能。可以看出,ΩELM=HHT∈RNXN仅和输入数据xi以及训练样本的个数有关.在KELM中,通过核函数K(xi,xj)将低维输入空间中的数据 (xi,xj)转化为高维特征空间中的内积h(xi)·h(xj),与特征空间的维数无关,可以有效避免维数灾难问题.

KELM只需要预先选定核函数,不需要显式地定义映射函数,也不需要设置隐层神经元个数,从而节省了隐层神经元个数优化的时间.相比于传统的ELM算法,KELM用核映射代替随机映射,能够有效改善隐层神经元随机赋值带来的泛化性和稳定性下降的问题

核函数的种类有很多,如线性核函数、多项式核函数等,本文选用参数较少、通用性强的高斯核函数:在这里插入图片描述

其中,s为核参数。

1.2 KELM优化

KELM的模型结构如下图所示, K()表示引入的核函数。由于引入核函数的参数 s 和正则化系数 C 会对 KELM 算法的性能产生影响,s决定核函数的作用范围, C 会影响模型结构的稳定性。因此,选择合适的参数对 KELM 模型至关重要,为使其具有最优性能,可以采用群智能算法对两个参数进行寻优。

ELM
在这里插入图片描述

KELM

在这里插入图片描述

02 代码目录

在这里插入图片描述

其中,MY_XXX.m都是可独立运行的ELM或KELM程序,而Main.m可运行ELM和KELM并对其结果进行对比,代码获取方式见文末。

03 MATLAB实现

回归

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

分类

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

04 展望

在这一篇文章中作者讲解了KELM的原理,并给出了其MATLAB实现,在后面的文章中,作者将更新KELM的优化,关注不迷路哦~

参考文献

[1] Huang G B,Zhou H M,Ding X J,et al.Extreme learning machine for regression and multiclass classification[J].IEEE Transactions on Systems, Man,and Cybernetics,Part B (Cybernetics),2012,42(2):513.

[2]徐睿,梁循,齐金山等.极限学习机前沿进展与趋势[J].计算机学报,2019,42(07):1640-1670.

另:如果有伙伴有待解决的优化问题(各种领域都可),可以发我,我会选择性的更新利用优化算法解决这些问题的文章。

如果这篇文章对你有帮助或启发,可以点击右下角的赞(ง •̀_•́)ง(不点也行),若有定制需求,可私信作者。

在作者wx公主号(同名)中可获取代码

### KELM在监督学习中的应用与实现 #### 背景介绍 核极限学习机(Kernel Extreme Learning Machine, KELM)是一种基于极限学习机(Extreme Learning Machine, ELM)的改进算法,通过引入核函数来提升模型的泛化能力[^1]。KELM的核心目标是解决一个正则化的最小二乘回归问题,在监督学习中具有广泛的应用价值。 #### 工作原理 KELM的工作机制可以分为以下几个方面: - **输入层到隐含层映射**:KELM利用随机初始化权重将输入数据映射至高维特征空间。 - **核函数替代显式映射**:为了避免计算复杂的非线性映射,KELM采用核技巧,即通过定义合适的核函数完成隐含层节点间的相似度计算。 - **优化目标**:最终的目标是最小化训练误差的同时控制模型复杂度,这可以通过求解如下带约束的最优化问题实现: ```math \min_{w} \frac{1}{2}\|w\|^2 + C\sum_{i=1}^{N}(y_i-\phi(x_i)^Tw)^2, ``` 其中 \( w \) 是权向量,\( y_i \) 表示第 i 个样本的真实标签,\( \phi(x_i) \) 是输入样本经过核变换后的表示形式,C 是正则化参数。 #### 应用场景 KELM适用于多种监督学习任务,包括但不限于分类和回归问题。其高效性和良好的泛化性能使其成为处理大规模数据集的理想工具之一。 #### 实现方法 以下是KELM的一个典型Python实现框架,假设已知训练数据 `X_train` 和对应标签 `Y_train`: ```python import numpy as np from sklearn.metrics.pairwise import rbf_kernel def kelm(X_train, Y_train, gamma, C): """ Kernel Extreme Learning Machine (KELM) Parameters: X_train: Training data matrix of shape (n_samples, n_features). Y_train: Target values array of shape (n_samples, ). gamma: Parameter for the RBF kernel. C: Regularization parameter. Returns: Alpha vector used to make predictions on new data points. """ N = X_train.shape[0] # Compute Gram Matrix using Radial Basis Function (RBF) kernel G = rbf_kernel(X_train, gamma=gamma) # Add regularization term I_N = np.eye(N) A = G + 1 / C * I_N # Solve for alpha alpha = np.linalg.solve(A, Y_train.reshape(-1, 1)) return alpha # Example usage if __name__ == "__main__": from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split iris = load_iris() X, y = iris.data[:100], iris.target[:100] # Binary classification example with first two classes only X_train, X_test, Y_train, Y_test = train_test_split(X, y, test_size=0.3, random_state=42) gamma_val = 15 C_val = 1e3 alpha = kelm(X_train, Y_train, gamma=gamma_val, C=C_val) # Prediction function based on learned alphas and training set's gram matrix def predict(X_new, X_train, alpha, gamma): G_pred = rbf_kernel(X_new, X_train, gamma=gamma) preds = np.dot(G_pred, alpha).flatten() >= 0.5 # Thresholding at 0.5 for binary classification return preds.astype(int) pred_labels = predict(X_test, X_train, alpha, gamma_val) accuracy = np.mean(pred_labels == Y_test) print(f"Test Accuracy: {accuracy:.2f}") ``` 上述代码展示了如何使用径向基函数(Radial Basis Function, RBF)作为核函数构建并训练KELM模型。 #### 总结 KELM作为一种高效的机器学习技术,不仅继承了传统ELM快速收敛的优点,还借助核函数提升了模型对于复杂模式的学习能力。它特别适合于那些需要兼顾速度与精度的任务环境。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值