基于个体历史与群体当前行为融合的频道推荐方法与流程

文档序号:15202208发布日期:2018-08-19 14:28阅读:166来源:国知局

本发明涉及iptv领域,特别涉及一种基于个体历史与群体当前行为融合的频道推荐方法。



背景技术:

iptv是一种可交互型的网络电视,基于iptv的电视频道推荐有着诱人的应用前景。随着iptv和互联网电视直播技术的发展,用户可以观看越来越多的电视频道,因此传统的电视节目指南(epg)已经不能满足人们及时发现其感兴趣的频道的使用需求。近年来,人们开始研究针对iptv的个性化推荐系统,然而大多数推荐系统只是针对于点播节目而并非直播推荐,因为直播频道的以下特点导致对其进行推荐更为复杂:

时效性:电视直播内容只会在特定的时间窗口内播放,如果用户想观看某个节目,需要在特定的时间区域内观看该直播频道,而点播节目不限制时间区域,用户可以在任意时间进行观看。

复杂性:一个iptv账户通常是家庭共享,即多人共享同一个账号,这使得在不同时间段内,用户的喜好不同,从而更难捕捉用户的行为。

噪声:直播频道的观看记录相较点播有更多的噪声数据。在直播情况下,用户会有很多快速切换的行为和广告跳过,这些噪声数据会对用户的推荐结果进行干扰。

基于以上iptv直播频道的特点,在上百个直播频道中挖掘用户喜欢的频道显得较为复杂。因此推荐系统需要帮助用户在上百个频道中找到其喜欢的直播频道并非易事。推荐系统需要对用户的历史观看行为进行深度分析,并建立合适的模型,来对用户进行相应的推荐,目前的推荐算法主要是使用协同过滤或一些其它的相关机器学习方法进行推荐。协同过滤能够根据其他用户喜欢的频道对目标用户进行推荐,解决冷启动的问题。机器学习的方法现在也开始应用于iptv的节目推荐上,例如使用k-means等方法先对用户进行聚类,并融合协同过滤的方法对用户进行推荐。但是,这些方法要么需要额外的用户评分信息,要么需要大量的机器计算耗时,目前直接针对直播频道的有效推荐算法依然甚少发现。



技术实现要素:

本发明的目的在于克服现有技术的缺点与不足,提供一种基于个体历史与群体当前行为融合的频道推荐方法,结合用户的历史观看行为及用户的群体观看行为来为每个用户进行个性化频道推荐。

本发明的目的通过以下的技术方案实现:一种基于个体历史与群体当前行为融合的频道推荐方法,包括:

针对总体用户,设计一个当前频道状态矩阵生成器(101),用于描述用户在观看iptv时每个频道的当前状态;针对个人用户,设计一个个性化历史状态矩阵生成器(102),用于描述每个用户在一定历史时间内,每个历史观看频道的状态,并将101所构建出的当前频道状态矩阵及102所构建的个性化历史状态矩阵送入用户推荐计算模块(103),该模块所用的推荐算法可为每个用户生成推荐的节目列表,并送入推送模块(104)为用户进行独立推送。

一、对于当前频道状态矩阵生成器(101)的构建,包含以下步骤:

1.选取时间窗口δt。

2.对全体用户观看情况下,统计当前时间窗口[t-δt,t)内,每个频道的频道热度pi。pi为每个频道在时间窗口内的观看人数。

3.对全体用户观看情况下,统计当前时间窗口[t-δt,t)内,每个频道在线人数的增长速率ri,ri的计算公式如下:

4.对pi进行归一化处理,pi为对pi归一化之后的值,对ri进行归一化处理,ri为对ri归一化之后的值。构建当前t时刻的群体当前观看频道状态矩阵其中第一列ci为频道号,第二列表示归一化后每个频道的频道热度,第三列表示归一化后每个频道的瞬时增长率,n为频道个数。

二、对于个性化历史状态矩阵生成器(102)的构建,包含以下步骤:

1.选取历史滑动窗口δt,这里δt>>δt。

2.针对iptv中每一个用户,统计该用户在时段[t-δt,t]内每个频道的观看次数oi,

3.针对iptv中每一个用户,计算该用户在时段[t-δt,t]内每个频道的权重值wi,wi计算公式为wi为时段[t-δt,t]内该用户观看的频道ci的权重,nci为在[t-δt,t]区间内该用户u所观看频道ci的次数,τk为用户历史窗口内用户第k次观看频道ci的权重,τk的计算公式的一种表示形式为:tk为该用户在[t-δt,t]内第k次观看频道ci所处的时刻,ts为滑动窗口的起始时刻,即ts=t-δt;t为当前时刻,δt为历史的滑动窗口大小。此外,τk的也可以用另外一种计算公式表示为:t为当前时刻,tk为该用户在时间窗口[t-δt,t]内第k次观看频道i所处的时刻,δt为滑动窗口大小。

4.对oi进行归一化处理,oi为对oi归一化之后的值,对wi进行归一化处理,wi为对wi归一化之后的值。构建每个用户的个性化历史状态矩阵h,例如某用户user的个人历史观看频道状态矩阵为矩阵每列依次表示频道编号、频道观看次数及频道的权重,m是该用户在该时间窗口内所观看的频道总数,m为频道个数。

三、用户推荐计算模块(103)是根据101产生的当前频道状态矩阵c及102构建的个性化历史状态矩阵h选择合适的算法进行推荐,对于用户推荐计算模块(103)的构建,包含以下方法:

1.采用交集选取法,包含如下步骤:

1.1根据构建101的步骤4所生成的当前频道状态矩阵c,将频道号ci按照ci的特征进行排序,例如按照频道观看热度pi的降序排列,选出热门的topx个频道,构成当前候选集:v1=(c1,c2……cx);

1.2根据构建102的步骤4针对每个用户所生成的个性化历史状态矩阵,将频道号ci按照ci的特征进行排序,例如按每个频道观看次数oi的降序排列,选出热门的y个频道,构成历史候选集:v2=(c1,c2……cy);

1.3取v12=v1∩v2作为用户的推荐频道,如果推荐频道的最大个数k大于或等于该交集元素的个数,则向用户推荐全部交集内的频道;如果推荐的频道的最大个数k小于该交集的元素的个数则按频道热度大小降序排列推荐该交集的元素的top-k。

2.距离选取法,包含如下步骤:

2.1根据101和102中生成的当前频道状态矩阵c和个性化历史状态矩阵h中,每个频道的特征值来计算101中每个频道ci与102中cj的距离,构成一个距离矩阵(201)其中dij表示101中频道ci距离102中频道cj的距离;(矩阵d中每一行索引值对应矩阵c中的每一个频道号,矩阵d中每一列索引值对应矩阵h中的每一个频道号;)dij使用以下公式之一进行计算:

欧氏距离:其中,c(fi)n表示矩阵101中频道ci的第n个特征列值,h(fi)n表示矩阵102中频道cj的第n个特征列值,n为矩阵的特征列总数。

曼哈顿距离:

余弦距离:

2.2根据矩阵d,找出矩阵每一行中的最小值所属列的索引值,即102的h矩阵中的频道号,得到频道向量v3=(c1,c2…..cn),该向量表示矩阵h距离矩阵c中每个频道最近的频道;

2.3将向量v3按照中频道的101的增长速率降序排列,取前n个增长最快的频道作为推荐。

本发明与现有技术相比,具有如下优点和有益效果:

本发明将当前用户的群体观看行为作为推荐的依据之一,再结合每个用户的历史观看行为进行推荐。通过当前频道状态矩阵和每个用户的个人历史观看频道状态矩阵为每个用户进行实时推荐,本发明所提出的方法能够更好的捕获每个用户的观看行为。

本发明所提出的推荐算法可以使用较少的用户行为信息为用户进行推荐。传统的电视节目推荐需要获得节目的相关信息或者用户的评分矩阵,但是本发明所提供的算法可以使用较少的用户行为特征进行推荐,本发明所使用的数据元组结构为{用户id,频道观看起始时间,频道号,频道观看时长,该数据结构相对于节目信息更容易获得。

本发明所提出的交集选取法和距离选取法在计算时能够更加节省计算资源。不同于使用机器学习或深度学习进行训练,本发明所提出的推荐方法没有训练时间的大量开销,因此能够在短的时间内生成当前频道状态矩阵和个人观看频道历史状态矩阵,并且为用户进行实时推荐。

附图说明

图1为推荐系统基本架构示意图。

图2为实施例2提供的基于交集的频道推荐方法流程图。

图3为实施例2权值计算示意图。

图4为实施例3提供的基于距离的频道推荐方法流程图。

具体实施方式

下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。

实施例1

一种基于个体历史与群体当前行为融合的频道推荐方法,如图1,包括:

针对总体用户,设计一个当前频道状态矩阵生成器(101),用于描述用户在观看iptv时每个频道的当前状态;针对个人用户,设计一个个性化历史状态矩阵生成器(102),用于描述每个用户在一定历史时间内,每个历史观看频道的状态,并将101所构建出的当前频道状态矩阵及102所构建的个性化历史状态矩阵送入用户推荐计算模块(103),该模块所用的推荐算法可为每个用户生成推荐的节目列表,并送入推送模块(104)为用户进行独立推送。

一、对于当前频道状态矩阵生成器(101)的构建,包含以下步骤:

1.选取时间窗口δt。

2.对全体用户观看情况下,统计当前时间窗口[t-δt,t)内,每个频道的频道热度pi。pi为每个频道在时间窗口内的观看人数。

3.对全体用户观看情况下,统计当前时间窗口[t-δt,t)内,每个频道在线人数的增长速率ri,ri的计算公式如下:

4.对pi进行归一化处理,pi为对pi归一化之后的值,对ri进行归一化处理,ri为对ri归一化之后的值。构建当前t时刻的群体当前观看频道状态矩阵其中第一列ci为频道号,第二列表示归一化后每个频道的频道热度,第三列表示归一化后每个频道的瞬时增长率,n为频道个数。

二、对于个性化历史状态矩阵生成器(102)的构建,包含以下步骤:

1.选取历史滑动窗口δt,这里δt>>δt。

2.针对iptv中每一个用户,统计该用户在时段[t-δt,t]内每个频道的观看次数oi,

3.针对iptv中每一个用户,计算该用户在时段[t-δt,t]内每个频道的权重值wi,wi计算公式为wi为时段[t-δt,t]内该用户观看的频道ci的权重,nci为在[t-δt,t]区间内该用户u所观看频道ci的次数,τk为用户历史窗口内用户第k次观看频道ci的权重,τk的计算公式的一种表示形式为:tk为该用户在[t-δt,t]内第k次观看频道ci所处的时刻,ts为滑动窗口的起始时刻,即ts=t-δt;t为当前时刻,δt为历史的滑动窗口大小。此外,τk的也可以用另外一种计算公式表示为:t为当前时刻,tk为该用户在时间窗口[t-δt,t]内第k次观看频道i所处的时刻,δt为滑动窗口大小。

4.对oi进行归一化处理,oi为对oi归一化之后的值,对wi进行归一化处理,wi为对wi归一化之后的值。构建每个用户的个性化历史状态矩阵h,例如某用户user的个人历史观看频道状态矩阵为矩阵每列依次表示频道编号、频道观看次数及频道的权重,m是该用户在该时间窗口内所观看的频道总数,m为频道个数。

三、用户推荐计算模块(103)是根据101产生的当前频道状态矩阵c及102构建的个性化历史状态矩阵h选择合适的算法进行推荐,对于用户推荐计算模块(103)的构建,包含以下方法:

1.采用交集选取法,包含如下:

1.1根据构建101的步骤4所生成的当前频道状态矩阵c,将频道号ci按照ci的特征进行排序,例如按照频道观看热度pi的降序排列,选出热门的topx个频道,构成当前候选集:v1=(c1,c2……cx);

1.2根据构建102的步骤4针对每个用户所生成的个性化历史状态矩阵,将频道号ci按照ci的特征进行排序,例如按每个频道观看次数oi的降序排列,选出热门的y个频道,构成历史候选集:v2=(c1,c2……cy);

1.3取v12=v1∩v2作为用户的推荐频道,如果推荐频道的最大个数k大于或等于该交集元素的个数,则向用户推荐全部交集内的频道;如果推荐的频道的最大个数k小于该交集的元素的个数则按频道热度大小降序排列推荐该交集的元素的top-k。

其他交集选取法规则:

交集选取法规则1:根据当前观看频道状态矩阵,将频道号按照频道增长速率的降序排列,选出该时段内增长速率最快的x个频道,构成当前候选集v1=(c1,c2……cx);根据个人历史观看频道状态矩阵,将频道号按照频道的观看次数的降序排列,选出用户u观看次数最多的y个频道,构成历史候选集v2=(c1,c2……cy);取v1∩v2作为该用户的推荐频道。

交集选取法规则2:根据当前观看频道状态矩阵,将频道号按照频道增长速率的降序排列,选出该时段内增长速率最快的x个频道,构成当前候选集v1=(c1,c2……cx);根据个人历史观看频道状态矩阵,将频道号按照频道的权值降序排列,选出权值较大的y个频道,构成历史候选集v2=(c1,c2……cy);取v1∩v2作为该用户的推荐频道。

交集选取法规则3:根据当前观看频道状态矩阵,将频道号按照频道观看人数的降序排列,选出观看人数最多的x个频道,构成当前候选集v1=(c1,c2……cx);根据个人历史观看频道状态矩阵,将频道号按照频道的权值进行降序排列,选出相对于该用户权重最大的的y个频道,构成历史候选集v2=(c1,c2……cy);取v1∩v2作为该用户的推荐频道。

2.距离选取法,包含如下步骤:

2.1根据101和102中生成的当前频道状态矩阵c和个性化历史状态矩阵h中,每个频道的特征值来计算101中每个频道ci与102中cj的距离,构成一个距离矩阵(201)其中dij表示101中频道ci距离102中频道cj的距离;(矩阵d中每一行索引值对应矩阵c中的每一个频道号,矩阵d中每一列索引值对应矩阵h中的每一个频道号;)dij使用以下公式之一进行计算:

欧氏距离:其中,c(fi)n表示矩阵101中频道ci的第n个特征列值,h(fi)n表示矩阵102中频道cj的第n个特征列值,n为矩阵的特征列总数。

曼哈顿距离:

余弦距离:

2.2根据矩阵d,找出矩阵每一行中的最小值所属列的索引值,即102的h矩阵中的频道号,得到频道向量v3=(c1,c2…..cn),该向量表示矩阵h距离矩阵c中每个频道最近的频道;

2.3将向量v3按照中频道的101的增长速率降序排列,取前n个增长最快的频道作为推荐。

实施例2

一种基于交集选取法的实时频道推荐策略,图2描述了一个使用交集选取法为iptv用户进行实时频道推荐的实例,在该实例中,通过交集选取法进行推荐包含以下步骤:

1)选取时间窗口δt,并统计时间窗口[t-δt,t)内,每个频道的观看人数pi。

2)计算每个频道在时间窗口[t-δt,t)内,每个频道的在线人数的增长速率

3)对pi和ri进行归一化处理,pi为pi归一化之后的值,ri为对ri归一化之后的值。构建t时刻的当前频道状态矩阵矩阵的每一行表示在时间窗口[t-δt,t)内,频道ci的编号,观看人数在线观看人数的增长速率;

4)针对用户u,构建该用户的个人历史观看频道状态矩阵h,选取历史滑动窗口δt,这里δt>>δt,统计用户u在历史时间[t-δt,t]内,每个频道的观看次数,记为oi;

5)计算[t-δt,t]时间窗口内用户u观看过每个频道的权值,权值公式描述为:wi表示用户u在时间窗口内观看频道ci的权重,τk为[t-δt,t]内,用户u第k次观看频道ci的权重,n为频道ci在[t-δt,t]区间内该用户u所观看频道ci的次数。公式描述为tk为用户u第k次观看频道ci的时刻,ts为历史时间窗口的开始时间,即t-δt,δt为历史的的滑动窗口的宽度,对oi及wi进行归一化处理,oi为对oi归一化之后的值,wi为对wi归一化之后的值。得到用户u的个人历史观看频道状态矩阵

图3描述了用户u在[t-δt,t]内时间窗口内,频道ci权值的计算过程,在该时间窗口内,用户u观看频道ci共两次,故权值为wi=τ1+τ2,ts为历史时间窗口的开始时间,即t-δt;

6)对矩阵c中的频道号,根据频道的特征进行排序,本实施例以归一化后的观看人数pi的降序对频道进行排列,选热门的x个频道,得到当前候选集v1=(c1,c2……cx),其中频道个数x小于等于当前频道状态矩阵的频道个数,对于用户u的矩阵h,根据频道的特征进行排序,本实例按照归一化后的频道观看次数的降序对频道进行排列,选出用户u在历史时段内热门的y个频道,y小于等于个人历史观看频道状态矩阵的频道个数,构成用户u的历史候选集v2=(c1,c2……cy)。

7)选择v1∩v2作为向用户u的推荐频道,将交集的结果按照频道增长速率的降序排列,选出该交集内的前n个频道推荐给该用户。

实施例3

一种基于距离选取法的实时频道推荐策略,图4描述了一个使用距离选取法为iptv用户进行实时频道推荐的实例,通过距离选取法进行推荐包含以下步骤:

步骤一:计算矩阵c中每个行向量与矩阵h中每个行向量的距离,行向量不包括频道号,距离的计算可采用多种计算方式,本实例以欧氏距离为例,例如矩阵c中行向量vec1=(p1,r1)与矩阵h中行向量vec2=(o1,w1)计算方式如下:

这里p1表示矩阵c中频道c1的观看人数,o1表示矩阵h中频道c1的观看次数,r1表示矩阵c中频道c1的增长速率,w1表示矩阵h中频道c1的权重。推而广之,这里pi表示矩阵c中频道ci的观看人数,oj表示矩阵h中频道ci的观看次数,ri表示矩阵c中频道ci的在线人数增长速率,wj表示矩阵h中频道cj的权重。

计算矩阵c中每个行向量距离矩阵h中每个行向量的距离后,得到一个n×m的距离矩阵d,n为矩阵c的频道个数,m为矩阵h的频道个数,矩阵d中每一行的索引值对应矩阵c的频道号,矩阵d中每一列的索引值对应矩阵h的频道号。

步骤二:选出矩阵d中每一行的最小值所属列的索引值,即矩阵h中的频道号,最终得到一个n个频道的候选集s=(ch1,ch2,……,chn),表示矩阵h距离矩阵c中频道最近的频道;

步骤三:将候选集s按照矩阵h中的频道的特征进行排序,本实例以每个频道的观看人数ri进行降序排列,并选出前k个频道作为给用户u的推荐。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1