本文重点介绍,基于神经网络,建立学生成绩预测模型。
1.神经网络
多层感知机(MLP,Multilayer Perceptron)也叫人工神经网络(ANN,Artificial Neural Network),除了输入输出层,它中间可以有多个隐层,最简单的MLP只含一个隐层,即三层的结构,如下图:
对一些标记进行定义:
- a y ( x ) a^{(x)}_y ay(x)表示,第 x x x层,第 y y y个神经元;
- b y ( x ) b^{(x)}_y by(x)表示对每个维度输出的偏置;
- h w , b h_{w,b} hw,b为神经网络输出
- F ( x ) F^{(x)} F(x)表示激活函数
1.1 输入层
该层主要为输入的特征,如输入的为
n
n
n维度特征,则输入层就有
n
n
n个神经元。在此我们将输入特征,向量化为
X
X
X,则:
X
=
[
x
1
,
x
2
.
.
.
x
n
]
X=[x_{1},x_{2}...x_{n}]
X=[x1,x2...xn]
1.2 隐藏层
如上图所示,为隐藏层为全连接形式,该层输入为Input Layer的输出。其中
a
1
(
2
)
,
a
2
(
2
)
,
a
2
(
2
)
a^{(2)}_{1},a^{(2)}_{2},a^{(2)}_{2}
a1(2),a2(2),a2(2)数值的计算方法为:
(
a
1
(
2
)
a
2
(
2
)
a
2
(
2
)
)
=
F
(
1
)
⋅
(
(
x
1
(
1
)
x
2
(
1
)
x
3
(
1
)
)
⋅
(
w
1
,
1
(
1
)
w
2
,
1
(
1
)
w
3
,
1
(
1
)
w
1
,
2
(
1
)
w
2
,
2
(
1
)
w
3
,
2
(
1
)
w
1
,
3
(
1
)
w
2
,
3
(
1
)
w
3
,
3
(
1
)
)
+
(
b
1
(
1
)
b
2
(
1
)
b
3
(
1
)
)
)
(a^{(2)}_{1}\;a^{(2)}_{2}\;a^{(2)}_{2})=F^{(1)}·((x^{(1)}_{1}\;x^{(1)}_{2}\;x^{(1)}_{3})·\begin{pmatrix}w^{(1)}_{1,1}&w^{(1)}_{2,1}&w^{(1)}_{3,1}\\w^{(1)}_{1,2}&w^{(1)}_{2,2}&w^{(1)}_{3,2}\\w^{(1)}_{1,3}&w^{(1)}_{2,3}&w^{(1)}_{3,3}\end{pmatrix}+(b^{(1)}_{1}\;b^{(1)}_{2}\:b^{(1)}_{3}))
(a1(2)a2(2)a2(2))=F(1)⋅((x1(1)x2(1)x3(1))⋅⎝⎜⎛w1,1(1)w1,2(1)w1,3(1)w2,1(1)w2,2(1)w2,3(1)w3,1(1)w3,2(1)w3,3(1)⎠⎟⎞+(b1(1)b2(1)b3(1)))
其中,
F
(
1
)
F^{(1)}
F(1)为第一层激活函数,一般为
S
i
g
m
o
i
d
Sigmoid
Sigmoid函数,该函数定义形式如下:
S
i
g
m
o
i
d
(
x
)
=
1
1
+
e
−
x
Sigmoid(x)=\frac{1}{1+e^{-x}}
Sigmoid(x)=1+e−x1
S
i
g
m
o
i
d
Sigmoid
Sigmoid函数是一个在生物学中常见的
S
S
S型函数,也称为
S
S
S型生长曲线。在信息科学中,由于其单增以及反函数单增等性质,
S
i
g
m
o
i
d
Sigmoid
Sigmoid函数常被用作神经网络的阈值函数,将变量映射到0,1之间。图像如下:
1.3 输出层
该层
h
w
,
b
h_{w,b}
hw,b计算形式如下:
h
w
,
b
=
F
(
2
)
⋅
(
(
a
1
(
2
)
a
2
(
2
)
a
3
(
2
)
)
⋅
(
w
1
(
2
)
w
2
(
2
)
w
3
(
2
)
)
+
b
(
2
)
)
)
h_{w,b}=F^{(2)}·((a^{(2)}_1\;a^{(2)}_2\;a^{(2)}_3)·\begin{pmatrix}w^{(2)}_1\\w^{(2)}_2\\w^{(2)}_3\end{pmatrix}+b^{(2)}))
hw,b=F(2)⋅((a1(2)a2(2)a3(2))⋅⎝⎜⎛w1(2)w2(2)w3(2)⎠⎟⎞+b(2)))
2 实验
2.1 软硬件环境描述
- 软件:SPSS MODELER SUBSCRIPTION
- 系统:WIndows 10
2.2 数据描述
- 文件名:StudentPerformance.xlsx
- 数据量:480个样本,其中特征16个
2.3 实验过程
2.3.1 读取数据
如上图,从源中选取“Excel”节点,拖动至主界面,导入数据。
使用“表格”节点查看数据:
2.3.2 数据类型
在字段选项中选择类型。
并和EXCEL数据源建立连接
将Class字段设置为目标。
2.3.3 检查数据质量
对质量选项卡进行检查
发现:当前数据质量较好,不存在离群值和极值,因此不需要进一步处理。
2.3.4 特征选择
为了得到高质量模型,对贡献度较高的特征进行提取,对贡献度较低的特征删除处理。在建模中选择特征选择。
分析发现:StageID和SectionID特征相关性较小,因此在建模时不做选择。
2.3.5 过滤掉相关性较小特征
在箭头上勾画出 X。
2.3.6 划分训练和测试集
在字段选项中选择分区节点。
对分区进行设置,其中80%最为训练集,20作为测试集。
2.3.7
在建模下面选择神经网络。
并进行设置:
在构建选项中基本选择多层感知器(MLP)。
对模型过拟合程度进行限定,防止过拟合。
最后进行模型训练,结果如下:
多层感知机模型图:
2.3.8 准确度分析
在输出中选择分析
得到该模型测试准确度为70.8%。
3.遇到个怪事
在截图向CSDN中粘贴时,返回的是一张我从来没见过的图。这是咋回事?我本人不做JAVA,不清楚是不是别人和我同时向CSDN粘贴图片导致的这个问题!由于不做Web不理解这个错误可能是什么原因导致的,现在留在这里!也许有人能解答!
也欢迎访问个人网站:www.edumind.tech