700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 基于神经网络的房价预测 BP神经网络预测房价

基于神经网络的房价预测 BP神经网络预测房价

时间:2021-11-03 20:51:08

相关推荐

基于神经网络的房价预测 BP神经网络预测房价

1、如何利用matlab进行神经网络预测

matlab 带有神经网络工具箱,可直接调用,建议找本书看看,或者MATLAB论坛找例子。

核心调用语句如下:

%数据输入

%选连样本输入输出数据归一化

[inputn,inputps]=mapminmax(input_train);

[outputn,outputps]=mapminmax(output_train);

%% BP网络训练

% %初始化网络结构

net=newff(inputn,outputn,[8 8]);

net.trainParam.epochs=100;

net.trainParam.lr=0.01;

net.trainParam.goal=0.01;

%网络训练

net=train(net,inputn,outputn);

%% BP网络预测

%预测数据归一化

inputn_test=mapminmax('apply',input_test,inputps);

%网络预测输出

an=sim(net,inputn_test);

%网络输出反归一化

BPoutput=mapminmax('reverse',an,outputps);

%% 结果分析

谷歌人工智能写作项目:小发猫

2、BP神经网络预测代码 15

你这是在做时间序列呢循环神经网络进行房价预测。

你可以去《神经网络之家》nnetinfo----》学习教程二--->神经网络在时间序列上的应用

上面有讲解。我把代码摘抄给你

% time series:神经网络在时间序列上的应用

% 本代码出自《神经网络之家》

timeList = 0 :0.01 : 2*pi; %生成时间点

X = sin(timeList); %生成时间序列信号

%利用x(t-5),x(t-4),x(t-3),x(t-2),x(t-1)作为输入预测x(t),将x(t)作为输出数据

inputData = [X(1:end-5);X(2:end-4);X(3:end-3);X(4:end-2);X(5:end-1)];

outputData = X(6:end);

%使用用输入输出数据(inputData、outputData)建立网络,

%隐节点个数设为3.其中隐层、输出层的传递函数分别为tansig和purelin,使用trainlm方法训练。

net = newff(inputData,outputData,3,{'tansig','purelin'},'trainlm');

%设置一些常用参数

net.trainparam.goal = 0.0001; %训练目标:均方误差低于0.0001

net.trainparam.show = 400; %每训练400次展示一次结果

net.trainparam.epochs = 1500; %最大训练次数:15000.

[net,tr] = train(net,inputData,outputData);%调用matlab神经网络工具箱自带的train函数训练网络

simout = sim(net,inputData); %调用matlab神经网络工具箱自带的sim函数得到网络的预测值

figure; %新建画图窗口窗口

t=1:length(simout);

plot(t,outputData,t,simout,'r')%画图,对比原来的输出和网络预测的输出

%------------------附加:抽取数学表达式----------------------------top

%希望脱离matlab的sim函数来使用训练好网络的话,可以抽取出数学的表达式,|

%这样在任何软件中,只需要按表达式计算即可。 |

%============抽取数学表达式==================

%抽取出网络的权值和阈值

w12 = net.iw{1,1}; %第1层(输入层)到第2层(隐层)的权值

b2 = net.b{1}; %第2层(隐层)的阈值

w23 = net.lw{2,1}; %第2层(隐层)到第3层(输出层)的权值

b3 = net.b{2}; %第3层(输出层)的阈值

%由于有归一化,必须先将归一化信息抓取出来

iMax = max(inputData,[],2);

iMin = min(inputData,[],2);

oMax = max(outputData,[],2);

oMin = min(outputData,[],2);

%方法1:归一化--->计算输出--->反归一化

normInputData=2*(inputData -repmat(iMin,1,size(inputData,2)))./repmat(iMax-iMin,1,size(inputData,2)) -1;

tmp = w23*tansig( w12 *normInputData + repmat(b2,1,size(normInputData,2))) + repmat(b3,1,size(normInputData,2));

myY = (tmp+1).*repmat(oMax-oMin,1,size(outputData,2))./2 + repmat(oMin,1,size(outputData,2));

%方法2:用真正的权值和阈值进行计算

%公式请参考《提取对应原始数据的权重和阈值》

W12 = w12 * 2 ./repmat(iMax' -iMin',size(w12,1),1);

B2 = -w12* (2*iMin ./(iMax - iMin) + 1) + b2;

W23 = w23 .*repmat((oMax -oMin),1,size(w23,2))/2;

B3 = (oMax -oMin) .*b3 /2 + (oMax -oMin)/2 + oMin;

%最终的数学表达式:

myY2 = W23 *tansig( W12 *inputData + repmat(B2,1,size(inputData,2))) + repmat(B3,1,size(inputData,2));

3、BP神经网络做数据预测,预测出来结果感觉不对,求大神指导

作预测,曲线要拟合。看理论值与实际的相关程度。你的相关系数肯定小,难以有理想结果!

4、bp神经网络遇到新的数据,就预测不准,怎么弄?

预测数据的话BP不是特别好用,最好用Elman反馈神经网络或者RNN循环神经网络,这些有记忆功能的网络比较好用。bp主要和你选择的隐含层数,和误差范围,学习率有关。你可以调节相关参数来改变神经网络,获得更精确的结果。

5、机器学习可以预测汇率变化吗?

作者| Filip Piekniewski

编译| ziqi zhang

随着人工智能的持续深入,深度学习技术在多智能体学习、推理系统和推荐系统上取得了很大进展。

对于多智能体来说,预测能力有着关键性的作用。一个训练有素的智能体已经能骗过智商正常的人类了!你可能不会相信,仅仅从一个反应系统学习90%的动作命令,它就已经可以取得这样的“成就”了。

这是结合了统计学和动力学而实现的。对于这个问题,大多数方案是通过统计学方法,构建概率模型来解决。这点与行为引导(behavior guiding)研究相同。但是,在这两类研究中,应用统计学方法可能会忽略一些重要的极端值,而相关重要信息又往往只能根据这些极端值的分布情况来得到。

Filip Piekniewski是一位资深的人工智能爱好者,他曾经推出一篇博文,详细介绍了上述多智能体的实现过程。

最近,他又发布一篇博文,详细介绍了——视觉预测模型(Predictive Vision Model),用于将预测范式引入到机器学习模型中。

这是一篇有趣的干货长文,希望大家能花时间来阅读。下面简要介绍下视觉预测模型的思路及部分细节。

主要思路

本文构建了一个在视觉条件下以感官信息作为输入的预测模型。由于无法准确建立感官信息的运动方程,只能通过机器学习来完成。

这个实现过程很简单,只需将当前输入值与将来的同等值联系起来,这与自动编码器相似,但是当前模型不是预测信号本身,而是下一帧信号。一旦建立了对应联系,所构成的系统就可以预测出下一个输入值。

事实上,我们可以同时训练并使用这个系统。显然,这个结果系统不能准确输出外部实际值,但是可以产生一个相当逼近实际情况的近似值。在很多情况下,这样的近似值已经足以用来产生一个鲁棒性很好的表现。

实现细节

构建一个上述的预测编码器本身十分简单,问题的关键在于缩放上。在构建一个系统的时候,有时可以通过将一个大的系统拆分成小块或者缩小数量来解决这个问题,而不是一次性构建一个庞大的整体。我们就应用这种想法。

我们不用构建一个大规模的预测编码器来处理大图像,而是构建许多小规模的预测编码器。工作时,每个小编码器都输入并处理一个小的片段,工作流程如下图所示:

这样我们就得到了一个“分布式”预测系统。

当然,这样仍然存在问题:虽然每个单元能够独立地进行预测了,但是它们所处理的信号有些具有全局一致性。

如何实现资源共享,从而提高运行效率呢?

互联!我们可以尝试将这些独立的单元连接起来,这样,每个单元就可以向相邻单元通报它们刚刚看到(预测)了什么。

听起来相当不错,但是如果我们现在向每个单元发送多组信号的副本,即每个单元的预测信息,那么这些单元承担的信息量将大大增加,时间和空间的压力可想而知,以至于我们无法进一步扩展系统。

如何解决这一问题呢?

压缩!压缩方法就像去噪自编码器(denosing autoencoder)一样,强制每个单元只能预测,而且只能使用基本特征进行预测。

我们通过引入一个瓶颈,缩小中间层来实现压缩功能。一旦这一功能实现了,我们就能利用“压缩后”的表达信息连接到相邻单元,从而构成横向连接。工作流程如下图所示:

到目前为止,我们实现了:每个单元不光可以预测自身的输入信息,还可以预测附近单元的输入信息。由于感官数据通常具有局部性(locality)特点,这些附近单元的附加信息通常对预测是十分有用的。

需要注意的是,即使现在的系统是稀疏连接的(本地连接),只要我们添加更多的单元(其实就是以更高分辨率处理图像)就可以扩展这个系统,而且总的收敛时间将不受任何影响(假设添加的算力与添加的单元成正比)。

分层与反馈

我们现在只有一层单元来预测未来的输入信息,那么,问题又来了:对于这个系统,我们一直是在一个非常精细的规模下传递预测信息的。但是,当想要获得较大规模场景的规律时,即便加入横向反馈,这种单层预测系统也无能为力。

为了在大规模的场景中仍然可以找到规律,我们可能会想到使用一个能够处理整个场景的单元,但是因为它不能扩展,所以这种想法不太可行。但是请注意,我们已经对数据进行了压缩,如果我们再添加一个层,用来预测第一层的压缩特征,那么这一层中的每个单元都将可以获得更大的视野(虽然这样做会失去对较低一级预测无用的功能)。如下图所示:

好了,现在有了较高一层单元,我们就可以发现更大规模视野的规律。我们可以不断地添加更多的层,直到剩下一个能够捕获整个场景规律的单元,尽管这个单元处理的分辨率可能不是很高。

层数增加带来单元数量的增加,每个单元都会产生预测信息,中间这些额外的预测信息可以做什么呢?

作为反馈进行回传!这样,可以帮助低一层的单元更好地进行预测,如下图所示:

到目前为止,我们就完成了一个完整的视觉预测模型的系统搭建任务。每个单元都有其清晰的目标函数,误差以分布式的方式在系统中传播,而不是以单个反向传播标签的形式,并且系统仍然具有扩展性。原理上,这就是通用的视觉预测模型——没有任何变形,只是以一种新的方式安排了联想记忆(associative memories)。

该模型的主要目标是进行预测。如果构建输入信号的内部模型,这个系统仍然可以胜任。由于其内部的循环连接,该系统可以扩展为非常复杂的模型。下面的动画显示了信息的流动过程:

好了,现在系统设计完成了,详细说明一下它到底能做什么,在这之前,关于该模型还有几个重要的东西需要强调一下:

PVM使用关联存储器单元进行数据的压缩,它可以通过反向传播(backprop)或其它别的方法来实现:玻尔兹曼机(Boltmann Machine)、脉冲网络(Spiking Network),等等。这些也给了系统在硬件方面巨大的灵活性。

系统是分布式的,并且完全避免了梯度消失(vanishing gradient)这一问题,因为训练信号是局部的,丰富而且足够强。因此不需要卷积和繁杂的正则化方法等等。

PVM可以应用于视觉方面,其它模式当然也能适用。事实上,你可以自由地将模式进行组合,让它们在不同的抽象层次上相互预测。

PVM中的反馈可以任意地布置。如果信号具有预测性质,那么它将被利用,否则将被忽略(这是可能发生的最坏的事情)。

PVM中的输入信号可以是单个图像(例如视频中的一帧)或者序列。实际上,我做过一些针对处理视频帧的有意义的实验。

如果输入信号的一小部分以一种可预测的方式(例如相机上有个像素坏掉了)被破坏了,它将在低层的处理过程中被预测,越往高层传播,这种影响就越小。在极端情况下,例如长期无效的像素,是可以通过偏执单元(常数)单独进行预测的,且高层可以完全忽略它们的存在,这点非常像人眼中的盲区。

信号误差作为系统的副产品基本上是都是异常的检测信号。在不同的规模下,可以获得不同层级的异常信息。这种信息在行为识别方面是一个十分有用的信号,涉及到显著性以及注意力机制的概念。

真的有用吗?我们用实验去证明!

大量的实验证明,PVM确实在基本预测任务中发挥了巨大的作用,但它还能做别的事情吗?

一方面,推荐系统会利用预测误差给用户提供他们想要的信息,但是这是一个长期的过程。

另一方面,我们决定增加一个有监督的视觉目标跟踪任务,并在上面测试PVM的实际性能。

我们往PVM中加入一些小东西:

我们使处理单元闭环(自己以前的状态成为上下文的一部分)。这种做法使PVM单元类似于简答的循环神经网络。当然也可以把LSTM加上去,但是我真的非常不喜欢LSTM,因为它们看上去非常的“不自然”。

在输入向量中,我们加入了几个“预先计算过的特征”,这些特征仅仅用于帮助简单的三层感知机找到相应的模式。

我们还添加了一个读出层,通过明确的监督训练(现在是带标签的数据,带有M的框),就可以训练出感兴趣目标的热图。与PVM系统中其他部分相同,该热图由所有单元以分布式方式生产,之后进行组合用来计算目标的边界。

热图的产生过程:

总而言之:它是起作用的!详细的信息可以参考我的长篇论文。

通常通过训练这个系统,我们可以将它用于稳定的视觉目标跟踪,其效果可以打败几种最先进的目标跟踪器。

第一行从左到右为:视觉输入信息、后续几层的内部压缩后的激活信号。

第二行:连续的预测信息。第一层的视觉预测,对于第一层激活的第二层预测等等。

第三行是误差信息(实际信息与预测之间的偏差)。

第四行是有监督对象的热图(我们这个实验是对“STOP”标志敏感)。

最后一列:各种跟踪的可视化信息。

以下是针对数据集中,其它跟踪目标的实例(注意,我们从不在训练集上对系统进行评估,因为这样训练出来的系统泛化性是很差的),红色框代表人为标注的真实地面目标,黄色框是PVM的返回。总而言之,它的效果非常好,特别是它在低分辨率(96*96)的视频上仍然起作用(虽然这个分辨率对于人类来说足够理解场景中的物品了)。

结论

我们都知道,上世纪80年代提出的深度卷积神经网络是基于60年代的神经学知识发展起来的,现在还异常火热。

PVM不同于卷积神经网络,它是基于全新的大脑皮质结构和功能的一种新的算法。PVM能避免许多机器学习都会遇到的问题:比如过度拟合和梯度消失问题。它也不用使用一些繁杂的技巧:比如卷积和正则化,它会把任务当成在线信号预测的任务。

虽然PVM还不能作为感知任何事物的黑盒(还没人知道这个黑盒是否存在),但是与各种感知应用的方法来比,它还是很有竞争力的,这里就不得不提深度学习的方法了,相比来说这是最大的挑战。PVM的不同之处在于,它是由直觉进行驱动的,它将使机器人在长期内真正起作用。

目前有关PVM的应用性实验都可以在Github上找到,enjoy!

参考文献:

[1]http://blog.piekniewski.info//11/03/reactive-vs-predictive-ai/

[2]http://blog.piekniewski.info//11/04/predictive-vision-in-a-nutshell/

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。