【机器学习】(十一)多层感知机MLP

可以用于回归和分类问题的多层感知机(MLP),是深度学习的一种算法,被称为(普通)前馈神经网络。

神经网络模型

MLP被视为广义的线性模型,多次重复计算加权求和的过程,并将激活函数用于加权求和,得到输出。

激活函数(通常为非线性函数):【深度学习】(二)神经网络:激活函数、MNIST
校正非线性函数(relu):截断小于0的值
正切双曲线函数(tanh):输入较小为-1,较大时为+1

line = np.linspace(-3, 3, 1000)
plt.plot(line, np.tanh(line), label='tanh')
plt.plot(line, np.maximum(line, 0), label='relu')
plt.legend()

在这里插入图片描述

神经网络调参

在two-moons数据集应用MLP

from sklearn.neural_network import MLPClassifier
from sklearn.datasets import make_moons

# two_moons数据集
x, y = make_moons(n_samples=100,  noise=0.25, random_state=3)
x_train, x_test, y_train, y_test = train_test_split(x, y, stratify=y, random_state=42)

mlp = MLPClassifier(solver='lbfgs', activation='tanh', hidden_layer_sizes=[10, 10],
                    random_state=0).fit(x_train, y_train)
mglearn.plots.plot_2d_separator(mlp, x_train, fill=True, alpha=.3)
mglearn.discrete_scatter(x_train[:, 0], x_train[:, 1], y_train)

solver参数:设定如何学习模型或者用来学习参数的算法。默认‘adam’,在大多数情况下效果良好,但对数据缩放比较敏感。‘lbfg’鲁棒性相当好,在大型数据集处理时间比较长。‘sgd’最高级,还有许多其它参数需要调节。
activation参数:指定使用的激活函数,默认的非线性是relu。
hidden_layer_sizes参数:指定隐层,隐单元。MLP默认使用100个隐结点。[10]包含10个隐单元,[10,10]包含两个隐层,每个隐层包含10个隐单元。
在这里插入图片描述
和线性回归模型一致,可以通过alpha参数调借L2惩罚权重使权重趋向于0,从而控制神经网络复杂度。
神经网络的一个重要性质,在开始学习前权重使随机设置的,这种随机初始化会影响到学习的模型。

在cancer数据集应用MLP

from sklearn.datasets import load_breast_cancer

cancer = load_breast_cancer() # Bunch对象
x_train, x_test, y_train, y_test = train_test_split(
    cancer.data, cancer.target, stratify=cancer.target, random_state=0)

mlp = MLPClassifier(random_state=42).fit(x_train, y_train)

print(mlp.score(x_train, y_train)) # 0.9389671361502347
print(mlp.score(x_test, y_test)) # 0.9230769230769231

MLP的精度很好,但是没有达到最好(0.972),原因在于数据的缩放。神经网络也要求所有输入特征的变化范围相似,最理想的情况是均值为0,方差为1。

max_iter参数可以指定迭代次数:mlp = MLPClassifier(max_iter=1000, random_state=0).fit(x_train, y_train)
增加迭代次数可以提高训练集的性能,但是没有提高泛化性能。

参数

模型的定义:层数、每层的结点个数、正则化和非线性。
神经网络中常用方法是,首先创建一个大到足以过拟合的网络,确保这个网络可以对任务进行学习。知道训练数据可以被学习到以后,要么缩小网络,要么增大alpha来增强正则化,这样可以提高泛化性能。

优缺点

优:能够获取大量数据中包含的信息,并构建无比复杂的模型。
缺:训练时间长,需要仔细预处理数据。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值