您现在的位置:首页 >> 技术文章 >> MATLAB技术 >> 内容

MATLAB代做|FPGA代做-Web用户行为预测的一种新模型

时间:2021-11-24 22:51:27 点击:

  核心提示:MATLAB代做|FPGA代做-Web用户行为预测的一种新模型...
1.问题描述:
    考虑这样一个web页面请求预测问题,目的就是加速网络服务系统。话句话讲,通过了解哪个页面用户可能要求,可以使用缓存机制。这个练习中,我调查了一阶马尔科夫序列模型,然后将它和随机序列模型在页面预测问题上进行对比,使用真实世界的数据。此外,这个技术在实际中是非常有应用价值的.这个数据包括了17个网页分类,他们分别是:1='frontpg', 2='news', 3='tech', 4='local', 5='opinion', 6='onair', 7='misc', 8='weather', 9='msnnews', 10='health', 11='living', 12='business', 13='msnsport', 14='sports', 15='summary', 16='bbs' and 17='travel'.
    这个数据在MATLAB中,提供了MAT格式的数据,这个数据包括了一组序列,通过
> >load weblogs.mat
然后查看你的变量。
> >who
    其中,变量seq是cell类型的数据格式,这个数据可以在每个数据中包括不同个数的数据子集。
    变量名称next是网页类型的数据集合,这个数据使用用户的请求的这个是一个向量类型的数据,比如next(1)是用户1的页面请求,这个请求是根据历史情况得到的。
    估计一阶马尔科夫模型的参数,从这个训练数据中。然后使用估计得到的模型区预测后面的NEXT值。然后将测试得到的值和真实值进行对比。然后使用一个衡量指标来说明预测效果。然后自己去找这种衡量指标,然后使用这个指标。 
执行相同的任务,只使用一个随机序列模型而不是一阶马尔科夫模型。然后使用相同的衡量指标来衡量预测结果的好坏。
即所提供的数据中的next数据是在用户完成seq这些历史之后,在下一时刻所完成的事件。那么其状态转概率矩阵为:



首先,明确下Markov预测模型对用户在Web上的浏览过程作了如下的假设。

   假设所有用户在Web上的浏览过程是一个特殊的随机过程,离散Markov模型。即设离散随机变量的值域为Web空间中的所有网页构成的集合,则一个用户在Web中的浏览过程就构成一个随机变量的取值序列,并且该序列满足Markov性。

  一个离散的Markov预测模型可以被描述成三元组<S,A,B>,S代表状态空间;A是转换矩阵,表示从一个状态转换到另一个状态的概率;B是S中状态的初始概率分布。其中S是一个离散随机变量,值域为{x1,x2,…xn},其中每个xi对应一个网页,称为模型的一个状态。

  由于,我们要做的是一阶段的Markov预测模型,而该模型是一个典型的无后效性随机过程,也就是说模型在时刻t的状态只与它的前一个时刻t-1的状态条件相关,与以前的状态独立。

这里,由于做的是一阶状态Markov模型,因此假设当前用户位于i状态,下一时刻位于j状态,那么其一步转移概率为:



而K步转移概率为:



然后,由于共17个页面,所以我们假设初始的概率为1/17,那么对于每个用户,其在t时刻的网络用户行为的概率值为:



其中为状态转移概率矩阵。

H(t)表示t时刻用户的状态,如果t时刻用户的访问页面为xi,那么

H(t) = (0,0,0,…..1,…0);

然后计算得到的一个n向量中概率最大的值就为下一时刻用户可能存在的状态。

以上就是整个过程的基本理论。下面使用MATLAB进行实现。

所以,在MATLAB中,我们对每个用户的数据进行计算,我们需要计算其转移矩阵,然后计算每个历史时刻,用户所停留的位置。

状态转移矩阵:



 

2.部分程序:
 
clc;
clear;
close all;
warning off;

%%
%load the data
load weblogs.mat
next = next;
seq  = seq';

%%
%split the data
N          = size(seq);
half       = round(N/2);
train_seq  = seq(1:half);
test_seq   = seq(half+1:end);
train_next = next(1:half);
test_next  = next(half+1:end);
Nums       = 17;

%%
%A first order Markov model
%Step1:train
M = zeros(length(train_seq),1);
for m = 1:length(train_seq)
    %transition matrix
    P{m} = func_transition_matrix(train_seq{m},Nums); 
    %calculate H
    H{m} = func_H_vector(train_seq{m},Nums); 
    %calculate Next
    [V,I]= max(H{m}(end,:) * P{m});
    M(m) = I;
end   

%Step2:compared the test and true
Depth = zeros(length(train_seq),1);
Err   = zeros(length(train_seq),1);
Sum   = zeros(length(train_seq),1);
for m = 1:length(train_seq)
    %depth
    Depth(m) = length(train_seq{m});
    %Error
    Err(m)   = Err(m) + (M(m)~=train_next(m));
    Sum(m)   = Err(m) + (M(m)~=train_next(m)) + (M(m)==train_next(m));
end 
Depth2 = unique(Depth);
for i = 1:length(Depth2);
    Err2(i) = sum(Err(find(Depth == Depth2(i))))/sum(Sum(find(Depth == Depth2(i)))); 
end
%Only plot the Small depth

figure;
subplot(311);
KK = 15;
plot(Depth2(1:KK),100*Err2(1:KK),'b-o');
xlabel('Depth of user history');
ylabel('error%');
grid on;
axis([Depth2(1),Depth2(KK),1,1.2*max(100*Err2(1:KK))]);
subplot(312);
KK = 40;
plot(Depth2(1:KK),100*Err2(1:KK),'r-o');
xlabel('Depth of user history');
ylabel('error%');
grid on;
axis([Depth2(1),Depth2(KK),1,1.2*max(100*Err2(1:KK))]);
subplot(313);
KK = 50;
plot(Depth2(1:KK),100*Err2(1:KK),'k-o');
xlabel('Depth of user history');
ylabel('error%');
grid on;
axis([Depth2(1),Depth2(KK),1,1.2*max(100*Err2(1:KK))]);

disp('the mean of error of A first order Markov model'); 
mean(Err2)
disp('the std of error of A first order Markov model'); 
std(Err2)
disp('the mse of error of A first order Markov model'); 
mse(Err2)
save data1.mat Depth2 Err2

3.仿真结论:


联系:highspeedlogic

QQ :1224848052

微信:HuangL1121

邮箱:1224848052@qq.com

网站:http://www.mat7lab.com/

网站:http://www.hslogic.com/

微信扫一扫:

 

作者:Web用户行为预测的一种新模型 来源:Web用户行为预测的一种新模型
  • 您是如何找到本站的?
  • 百度搜索
  • Google搜索
  • 查阅资料过程中
  • 论坛发现
  • 百度贴吧发现
  • 朋友介绍
本站最新成功开发工程项目案例
相关文章
  • 没有相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
  • matlab代做|matlab专业代做|matlab淘宝代做|python人工智能代做|FPGA项目合作|C代做|C++代做(www.hslogic.com) © 2022 版权所有 All Rights Reserved.
  • Email:highspeed_logic@163.com 站长QQ: 1224848052

    专业代做/代写/承接、MATLAB、SIMULINK、FPGA项目、博士/硕士/本科课题、Coursework、Eassy、Assignment