本文主要是介绍【MATLAB深度学习工具箱】学习笔记--体脂估计Body Fat Estimation,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
介绍
本示例展示一个函数拟合神经网络如何根据解剖学测量结果估计体脂。
【注:关键词:多维数据 函数拟合 神经网络】
问题描述
在本例子中根据如下13种身体特征评估体脂。【注:具体的属性特征对学习此解决问题的逻辑影响并不大,知道是许多相关或不相关的多维度特征即可】
-
Age (years)
-
Weight (lbs)
-
Height (inches)
-
Neck circumference (cm)
-
Chest circumference (cm)
-
Abdomen circumference (cm)
-
Hip circumference (cm)
-
Thigh circumference (cm)
-
Knee circumference (cm)
-
Ankle circumference (cm)
-
Biceps (extended) circumference (cm)
-
Forearm circumference (cm)
-
Wrist circumference (cm)
为何使用神经网络?
神经网络擅长于函数拟合问题。包含足够多神经元的神经网络可以以任意精度逼近任意数据,因此尤其适用于非线性问题。【注:拟合本身不是目的,发现因素背后的规律才是目的】
输入:13项身体特征数据;
输出:体脂率
数据准备
导入数据的方式如下:
[X,T] = bodyfat_dataset;
其中:
X为13项身体特征数据,共252行;
T为1项对应的体脂率,共252行。
>> size(X)
size(T)
ans =
13 252
ans =
1 252
【注:拿到数据后的第一反应肯定不是直接就套用某一种方法开始拟合,首先需要观察,观察数据和预期结果之间的对应关系,将主要因素心中有数】
以下为13项因素与体脂率的对应关系。
因素1如下,直观关联性不明显。
因素2如下,因素2的关联性比因素1明显清晰。
因素3如下,因素3的数据大部分集中于X∈70±5的范围内,但是在X≈30的地方有一个很特殊的点,极有可能是错误数据,看后续神经网络中如何区分错误数据。
因素4如下, 数据大致趋势和因素2接近。
因素5如下,因素5的趋势与因素4接近。
因素6如下,因素6在X<120时规律性较好,但是在X>120后点数较少且规律性不明显。
因素7如下,因素7与因素6规律非常接近。
因素8如下,因素5/6/7/8规律均接近。
因素9如下,因素5/6/7/8/9规律接近。
因素10如下,在X>28之后出现了部分规律反常的点。
因素11如下,因素5/6/7/8/911规律接近。
因素12如下,因素12整体散差较大,规律性不明显。
因素13如下,因素13整体散差也较大,规律性不明显。
综合以上13幅图,可以基本归纳如下特点:
(1)大部分因素与体脂率正相关;
(2)部分因素散差较大,规律不明显;
(3)个别因素中有坏点。
后续评估采用神经网络进行拟合的效果。
采用神经网络进行函数拟合
神经网络拟合需要随机的初始权重,每次的运行结果可能略有差异。可以通过设置随机数种子的方法让每次均采用相同的过程。
setdemorandstream(491218382)
在隐藏层神经网络足够多的情况下,两层前向型神经网络(其中一层为隐藏层)可以拟合任意的输入-输出关系。非输出层的各层称为隐藏层。
本示例中隐藏层神经元个数为15个。一般而言,问题越复杂,需要的神经元个数越多,层数也可能越多。
输入层和输出层的sizes为0,因为网络还没有得到配置去匹配本例子中的输入和输出数据。在网络训练好之后,将会进行配置。
net = fitnet(15);
view(net)
目前的网络已经可以进行训练。在本示例中,会自动对训练集training set、验证集validation set和测试集test set进行划分。其中,训练集的目的是对网络进行训练。训练的结果将使得网络对验证集的数据可以进行拟合。测试集独立地对训练后的网络拟合精度进行评估。
[net,tr] = train(net,X,T);
nntraintool
nntraintool('close')
运行后得到:
Performance:
为了显示在训练过程中网络拟合能力是如何得到提高的,点击“Performance”按钮,得到下图。
误差的测度是均方误差mean squared error(MSE),用对数作图。训练初期,MSE迅速下降。【注:由于采用的是和MATLAB帮助文件中相同的随机数种子,得到的图片与帮助文件中的图片完全一致。】
最终得到的网络是在验证集中表现最好的网络,如图中绿色线最低点处圆圈位置。
Training State:
对神经网络进行测试
【注:帮助文件中采用了脚本进行出图,而在nntraintool中直接点击也可以得到相关结果。】
Error Histogram:误差直方图
Regression:回归分析
这篇关于【MATLAB深度学习工具箱】学习笔记--体脂估计Body Fat Estimation的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!