分享

多层感知机分类算法【pyspark】

regan 发表于 2018-4-19 19:04:03 [显示全部楼层] 只看大图 回帖奖励 阅读模式 关闭右栏 0 10730
本帖最后由 regan 于 2018-4-19 19:05 编辑

多层感知机模型亦即:Full-connection Neural Network ,网络结构如下,分为输入,隐层与输出层,除了输入层外,其余的每层激活函数均采用 sigmod ,MLP 容易受到局部极小值与梯度弥散的困扰,如下图所示:
1.png
感知机基于前向传播及方向传播来更新神经网络中的权重参数。比较经典的文章请参考:https://www.cnblogs.com/ooon/p/5577241.html,这边文章包括了前向传播,及反向传播公式推导,讲得很详细。下面引用这篇文章中的一幅gif动态图片。
2.gif
多层感知机隐层采用sigmod激活函数,输出层采用softmax分类方法。
多层感知机MLPC分类算法正是基于这种感知机模型的实现,我们直接来看pyspark为我们封装并提供的多层感知机如何使用吧。


2.pyspark中的多层感知机分类模型
from pyspark.ml.classification import MultilayerPerceptronClassifierfrom pyspark.ml.evaluation import MulticlassClassificationEvaluator
data = spark.read.format("libsvm").load("/datas/multi_classification.txt")
splits = data.randomSplit([0.6, 0.4], 1234)
train = splits[0]
test = splits[1]
#指定感知机各个层神经元个数layers = [4, 16,32, 16, 3]
trainer = MultilayerPerceptronClassifier(maxIter=100, layers=layers, blockSize=128, seed=1234)
model = trainer.fit(train)result = model.transform(test)
predictionAndLabels = result.select("prediction", "label")
evaluator = MulticlassClassificationEvaluator(metricName="accuracy")
print("Test set accuracy = " + str(evaluator.evaluate(predictionAndLabels)))

多层感知机的构建非常简单,因为多层感知机各个层都是全连接层,因此只需要指定各个层神经元的个数即可,而输入维度、隐藏层维度、输入维度全部放在一个list中,通过MultilayerPerceptrionClassifier中的关键字参数layers指定。blockSize指定的是存放数据的块的大小,默认为128m,推荐范围是10~1000.
3.png
在测试集上的分类精度达到90%。


没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条