/Machine_Learning_Methods_For_Regression_Matlab

Data has 6 features & 1 output. the target for this is regression by at least 3 machine learning methods. And at least 1 NN method.

Primary LanguageMATLABGNU General Public License v3.0GPL-3.0

Machine_Learning_Methods_For_Regression_Matlab

Description

Data has 6 features & 1 output. the target for this is regression by at least 3 machine learning methods. And at least 1 NN method.

1. 代码文件夹及其代码文件的介绍

  • 代码文件夹内容介绍:

    代码文件夹**有1个文件夹,分别是data。

    data文件夹下存放的是训练集数据data.xlsx和测试集数据100_test.xlsx(是最新的测试集数据)。

    其中data.xlsx的sheet名称为train_400,即400个训练数据,100_test.xlsx的sheet名称为valid_data,即100个测试数据。

  • 代码介绍:

    由于模型训练较快,因此将模型的训练和测试统一写成了run_model.m脚本文件。其中第一种模型对应的函数脚本文件为svr_train.m, svr_predict.m, gaussKernel.m;第二种模型对应的函数脚本文件为fmincg.m, linearRegCostFunction.m, trainLinearReg.m。 由于模型训练较快,因此将带ACO的ML模型的训练和测试统一写成了ACO_model.m脚本文件。其中模型对应的函数脚本文件为trainAnts.m。

2. 运行代码方法

  • 直接打开matlab软件运行run_model.m脚本文件。

  • 运行脚本文件后,命令行终端输出选择模型,共有三个模型提供选择,分别对应数字1、2、3,比如要选择第一个模型,则在终端中输入1。

  • 程序就会根据输入的模型进行训练,最后输出验证集的预测准确率。

  • 若使用ACO模型,则可以直接打开matlab软件运行ACO_model.m脚本文件。

3. 验证集准确率介绍

  • 将验证集准确率定义为模型输出和验证集输出值偏差在5%范围内的数据占比。

  • 模型输出和验证集输出值偏差定义为二者的绝对值之差与标准输出的占比。

  • 比如模型输出为90,标准输出为96,则偏差为(96-90)/96 = 0.0625,即6.25%。

  • 而验证集中数据有30个满足以上偏差范围,则准确率为30/40=75%。

4. 模型介绍

  • 模型1: 模型使用SVR方法(支持向量回归机),是支持向量机的回归形式,使用带有松弛变量的最小化数据点距平面的距离和。使用梯度下降求解平面法向量,得到分界平面,根据不同的核函数可以求解不同分界曲面。

  • 模型2: 使用线性映射(非线性化)的线性回归模型,线性映射是将5个特征投影到高维的空间进行非线性化,然后再高维空间中使用梯度下降法进行线性回归拟合,其中添加正则化项用参数λ进行控制,参数λ的大小意味着模型对于正则化项的重视程度。该正则化项防止过拟合,而使模型不具有很好的泛化性。

    • 模型2使用的线性映射有变化,映射方式为特征2、4、6分别平方,其他特征不变。

    • 正则化项系数改变为0.0002。

  • 模型3: 模型的结构为3层BP网络结构。其中输入层有6个结点,隐藏层分别有200个结点,最后输出层有1个输出结点。隐藏层使用对数S型激活函数,输出层使用双曲正切激活函数。

  • 带ACO算法的线性回归模型: 模型使用线性映射(非线性化)的最小二乘法的回归模型,同时训练中使用蚁群智能算法。首先将数据按维度进行线性映射,使其适应非线性模型,最后使用蚁群智能算法和梯度下降法进行拟合。蚁群智能算法使用在最优化问题中,因此只适用于训练中,在最小化损失函数(最小二乘法是最小化均方误差)条件下,使用该算法寻找全局最优解,即蚁群智能算法寻求最能拟合训练数据的模型,其中添加正则化项用参数λ进行控制和探索,参数λ的大小意味着模型对于正则化项的重视程度。该正则化项防止过拟合,而使模型不具有很好的泛化性。

5. 模型结果分析

  • 对于ACO模型:

    • 经过多次训练后固定参数权重得出,ACO模型的训练集的准确率为80%,测试集的准确率为87%。

    • 蚁群智能算法旨在寻求最能拟合训练数据的模型,但容易过拟合,泛化性能不是很好。

  • 其他模型:

    • 经过多次训练后固定参数权重得出,模型1的训练集和测试集准确率都为61.0%;模型2的训练集准确率为85.0%,测试集准确率为87%;模型3的训练集的准确率为98.0%,测试集准确率为87%。

    • 因此,可以得出模型2、3的预测准确率最高,模型性能最好。

    • Bp算法性能能提升的原因:

      • 网络层宽度就是结点数能减少过拟合的可能。

6. 模型训练参数

  • ACO模型:

    • 信息遗留因子α:0.5

    • 蚁群蚂蚁个数m:50

    • 信息素增强系数Q:1500.0

    • 信息素挥发系数ρ:0.7

    • 训练最大回合数:50

  • 模型1训练参数:

    • 正规化因子C:40,又称惩罚系数

    • 松弛变量:0.001

    • γ核函数系数:0.150

    • 核函数:gaussian Kernel

  • 模型2训练参数:

    • 正规化因子λ:0.0002

  • 模型3训练参数:

    • 学习率:0.01

    • 训练最大回合数:1000

    • 动态因子:0.9

    • 最小平方误差目标:10^-7

    • 梯度下降法:trainlm