Python用线性回归和TensorFlow非线性概率神经网络不同激活函数分析可视化

简介: Python用线性回归和TensorFlow非线性概率神经网络不同激活函数分析可视化

全文链接:https://tecdat.cn/?p=33792


在这篇文章中,我将尝试介绍从简单的线性回归到使用神经网络构建非线性概率模型的步骤点击文末“阅读原文”获取完整代码数据


这在模型噪声随着模型变量之一变化或为非线性的情况下特别有用,比如在存在异方差性的情况下。

当客户的数据是非线性时,这样会对线性回归解决方案提出一些问题:

# 添加的噪声量是 x 的函数
n = 20000
......
x_train = x[: n // 2]
x_test = x[n // 2 :]
y_train = y[: n // 2]
......
plt.show()

image.png

线性回归方法

我们用均方差作为优化目标,这是线性回归的标准损失函数。

model_lin_reg = tf.keras.Sequential(
......
history = model_lin_reg.fit(x_train, y_train, epochs=10, verbose=0)
# 模型已经收敛:
plt.plot(history.history["loss"])
......

image.png

Final loss: 5.25

我们定义一些辅助函数来绘制结果:

def plot_results(x, y, y_est_mu, y_est_std=None):
  ......
    plt.show()
def plot_model_results(model, x, y, tfp_model: bool = True):
    model.weights
......
    plot_results(x, y, y_est_mu, y_est_std)

模型残差的标准差不影响收敛的回归系数,因此没有绘制。

plot_modesults(mod_linreg......, tfp_model=False)

image.png

点击标题查阅往期内容


Python中TensorFlow的长短期记忆神经网络(LSTM)、指数移动平均法预测股票市场和可视化


01

02

03

04

TensorFlow概率

我们可以通过最大化正态分布的似然性来拟合上述相同的模型,其中平均值是线性回归模型的估计值。

def negloglik(y, distr):
  ......
model_lin_reg_tfp = tf.keras.Sequential(
 ......
            lambda t: tfp.distributions.Normal(loc=t, scale=5,)
        ),
    ]
)
model_lin_reg_tfp.compile(
......)
history = model_lin_reg_tf......
plot_model_results(model_lin_r......rue)

image.png

拟合带有标准差的线性回归

为了拟合线性回归模型的最佳标准差,我们需要进行一些操作。我们需要网络输出两个节点,一个用于表示平均值,另一个用于表示标准差。

model_lin_reg_std_tfp = tf.keras.Sequential(
    [
  ......
        ),
    ]
)
model_lin_reg_std_tfp.compile(
......)
history = model_lin_reg_std_tfp.fit(x_train, y_train, epochs=50, ......train, tfp_model=True)

image.png

上面的图表显示,标准差和均值都与之前不同。它们都随着x变量的增加而增加。然而,它们对数据仍然不是很好的拟合,无法捕捉到非线性关系。

神经网络方法

为了帮助拟合x和y之间非线性关系,我们可以利用神经网络。这可以简单地使用我们设计的相同TensorFlow模型,但添加一个具有非线性激活函数的隐藏层。

model_lin_reg_std_nn_tfp = tf.keras.Sequential(
    [
 ......
            )
        ),
    ]
)
model_lin_reg_std_nn_tfp.compile(
   ......
plot_model_results(mode ......rain, tfp_model=True)

image.png

神经网络模型拟合的均值比线性回归模型更好地符合数据的非线性关系。

结果

我们对训练集和测试集运行了各个模型。在任何模型中,两者之间的性能变化不大。我们可以看到,神经网络模型在训练集和测试集上的表现最好。

results = pd.DataFrame(index=["Train", "Test"])
models = {
  ......
        ).numpy(),
    ]
results.transpose()

image.png

激活函数

下面使用relu或softplus激活函数创建相同的网络。首先是relu网络的结果:

model_relu = tf.keras.Sequential(
    [
  ......
                loc=t[:, 0:1], scale=tf.math.softplus(t[:, 1:2])
            )
        ),
    ]
)
m ......
plot_model_results(model_relu, x_train, y_train)

image.png

然后是softplus的结果:

model_softplus = tf.keras.Sequential(
    [
  ......
                loc=t[:, 0:1], scale=tf.math.softplus(t[:, 1:2])
            )
        ),
    ]
)
model_softplus.compile(
 ......
plot_model_results(model_softplus, x_train, y_train)

image.png

我们可以看到,基于sigmoid的神经网络具有最佳性能。

results = pd.DataFrame(index=["Train", "Test"])
models = {
 ......(x_test))
        ).numpy(),
    ]
results.transpose()

image.png

相关文章
|
11天前
|
机器学习/深度学习 数据可视化 Windows
深度学习笔记(七):如何用Mxnet来将神经网络可视化
这篇文章介绍了如何使用Mxnet框架来实现神经网络的可视化,包括环境依赖的安装、具体的代码实现以及运行结果的展示。
28 0
|
9天前
|
机器学习/深度学习 数据可视化 Linux
Seaborn可视化学习笔记(一):可视化神经网络权重分布情况
这篇文章是关于如何使用Seaborn库来可视化神经网络权重分布的教程,包括函数信息、测试代码和实际应用示例。
19 0
|
11天前
|
TensorFlow 算法框架/工具
Tensorflow学习笔记(二):各种tf类型的函数用法集合
这篇文章总结了TensorFlow中各种函数的用法,包括创建张量、设备管理、数据类型转换、随机数生成等基础知识。
22 0
|
2月前
|
机器学习/深度学习 前端开发 数据挖掘
基于Python Django的房价数据分析平台,包括大屏和后台数据管理,有线性、向量机、梯度提升树、bp神经网络等模型
本文介绍了一个基于Python Django框架开发的房价数据分析平台,该平台集成了多种机器学习模型,包括线性回归、SVM、GBDT和BP神经网络,用于房价预测和市场分析,同时提供了前端大屏展示和后台数据管理功能。
|
2月前
|
机器学习/深度学习 数据可视化 Python
如何可视化神经网络的神经元节点之间的连接?附有Python预处理代码
该博客展示了如何通过Python预处理神经网络权重矩阵并将其导出为表格,然后使用Chiplot网站来可视化神经网络的神经元节点之间的连接。
46 0
如何可视化神经网络的神经元节点之间的连接?附有Python预处理代码
|
3月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
利用TensorFlow解决线性回归问题
【7月更文挑战第21天】利用TensorFlow解决线性回归问题。
34 2
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
Python实现支持向量机SVM分类模型线性SVM决策过程的可视化项目实战
Python实现支持向量机SVM分类模型线性SVM决策过程的可视化项目实战
Python实现支持向量机SVM分类模型线性SVM决策过程的可视化项目实战
|
4月前
|
机器学习/深度学习 TensorFlow 算法框架/工具
tensorflow的常用函数
tensorflow的常用函数
20 1
|
5月前
|
机器学习/深度学习 数据可视化 算法
R语言神经网络与决策树的银行顾客信用评估模型对比可视化研究
R语言神经网络与决策树的银行顾客信用评估模型对比可视化研究
|
5月前
|
机器学习/深度学习 监控 数据可视化
R语言SOM神经网络聚类、多层感知机MLP、PCA主成分分析可视化银行客户信用数据实例2
R语言SOM神经网络聚类、多层感知机MLP、PCA主成分分析可视化银行客户信用数据实例