1.一种旅游路线个性化推荐系统,其特征在于,所述系统由离线部分和在线部分组成,在线部分基于用户输入的旅游期望来分析用户的旅游路线偏好,离线部分基于用户的旅游路线偏好生成预推荐路线,在线部分再对预推荐路线进行优化,最终将推荐符合用户旅游路线偏好的最优旅游路线。
2.如权利要求1所述旅游路线个性化推荐系统,其特征在于,离线部分包括:历史数据采集模块、用户聚类模块、关节点过滤模块及预推荐路线模块;在线部分包括:信息输入模块及路线推荐模块;
历史数据采集模块,用于采集历史轨迹数据和历史社交网络数据,输出至用户聚类模块;用户聚类模块对历史社交网络数据进行聚类,生成若干簇,输出至关节点过滤模块;关节点过滤模块搜索各簇对应的关节点,并基于用户输入的关键词对关节点过滤,输出至预推荐路线模块;预推荐路线模块基于改进的遗传算法获取预推荐路线,输出至路线推荐模块;信息输入模块,接收用户输入的旅游期望的描述,提取关键字,输出至关节点过滤模块;
路线推荐模块,优化预推荐路线,输出符合用户旅游路线偏好的最优路线。
3.如权利要求2所述旅游路线个性化推荐系统,其特征在于,用户聚类模块基于如下方法进行用户聚类,包括如下步骤:
步骤1:将社交网络数据集作为输入数据,根据用户的直接朋友数量将朋友圈划分至活跃数据集和不活跃数据集;
步骤2:在活跃数据集随机选择一个未标记的用户IDi,获取用户IDi的所有直接朋友IDj,针对每一个朋友IDj进行如下操作:步骤3:检测朋友IDj是否存在于不活跃数据集中,若检测结果为是,则执行步骤4,若检测结果为否,则不做处理;
步骤4:若朋友IDj与用户IDi为强连接,则在不活跃数据集删除朋友IDj,并检测不活跃数据集是否为空,若检测结果为否,则执行步骤2,若检测结果为是,则输出以用户ID为社交核心点的朋友圈;
步骤5:若朋友IDj与用户IDi为弱连接,则标记用户IDi,并检测活跃数据集中的用户ID是否均为标记,若检测结果为否,则执行步骤2,若检测结果为是,则输出以用户ID为社交核心点的朋友圈。
步骤6:对具强连接关系的朋友圈聚类为若干个簇,该簇内的用户一般具有相似偏好。
4.如权利要求2所述旅游路线个性化推荐系统,其特征在于,关节点搜索方法具体如下:
步骤1:基于各用簇中所有用户的历史轨迹构成一个有向轨迹图G;
步骤2:检测有向轨迹图G是单连通地图,若检测结果为是,则执行步骤3,若检测结果为否,则认定有向轨迹图G不存在关节点;
步骤3:将有向轨迹图G中所有顶点均标记为未访问,令遍历深度变量predfn=0,遍历深度变量rootdegree=0,关节点计数count=1;
步骤4:随机选择未访问的顶点v作为当前顶点,将当前顶点v标记为已访问,关节点变量artpoint=false,遍历深度变量predfn=predfn+1,变量A[v]=predfn,B[v]=predfn;
步骤5:从有向轨迹图G选择当前顶点v所在的边(v,w),若边(v,w)为前向边,则将顶点w作为当前节点v,执行步骤4;
步骤6:检测顶点v是否为轨迹的头结点s,若检测结果为是,则遍历深度rootdegree=rootdegree+1,并执行步骤7,若检测结果为否,则执行步骤8;
步骤7:判断当前遍历深度rootdegree是否等于2,若判断结果为是,则关节点变量artpoint=true,判定顶点v为关节点,执行步骤11,若判断结果为否,则关节点变量artpoint=false,即顶点v为非关节点;
步骤8:将B[v]和B[w]中的最小值赋值给B[v],若B[w]大于等于A[v],则关节点变量artpoint=true,顶点v为关节点,执行步骤11;
步骤9:若边(v,w)为回边,则顶点w为顶点v的祖先,将B[v]和A[w]中的最小值赋值给B[v],执行步骤4;
步骤10:若边(v,w)既不是回边,也不是前向边,则顶点w为顶点v的父节点,执行步骤4;
步骤11:将关节点放入关节点集A中,且关节点计数值count=count+1,直至有向轨迹图G中所有的顶点均访问,则输出该簇的关节点集A。
5.如权利要求4所述旅游路线个性化推荐系统,其特征在于,关节点的过滤方法具体如下:
根据当前用户输入的关键字,与各簇对应关节点集中的各关节点标签进行匹配,若簇cl的关键字匹配得分最高,则输出簇cl对应的关节点作为符合用户偏好的关节点,其中,关键字匹配得分Relevance的计算公式具体如下:K表示用户输入的关键字集合,S表示簇集合,w表示关键字集合中的一个关键字,f(w)表示Cl簇含有关键字w的数目,||Cl||表示Cl簇中所有关键字的总数量。
6.如权利要求2所述旅游路线个性化推荐系统,其特征在于,预推荐路线模块基于改进的遗传算法生成符合用户旅游路线偏好的预推荐旅游路线,其过程具体如下:步骤1:将输出的关节点作为基因点,将输出的关节点组合成不同基因序列,赋给初始化个体,所有的个体组成一个种群;
步骤2:计算种群中所有个体的适应值Fit;
步骤3:采用轮盘赌算法来对初始化的个体进行选择操作,选择两个不同的个体,选择适应值较大的个体作为交叉变异的操作对象;
步骤4:对交叉操作对选中的对象采用交换逆转基因的方式进行交叉操作,扩大种群内的基因多样性;
步骤5:删除个体中的特殊基因点,其中特殊基因点即为离群点;
步骤6:在n代遗传中不再发生变异或执行固定的代数后,停止交叉操作,跳转到步骤2;
步骤7:选择种群中适应度最大的个体为预推荐路线。
7.如权利要求6所述旅游路线个性化推荐系统,其特征在于,交叉操作过程具体如下:步骤4‑1:将交叉变异的操作对象作为父代1,将交叉变异的被操作对象作为父代2;
步骤4‑2:随机产生1到n之间的两个不相等的随机数k和m;
步骤4‑3:检测随机数k是否小于m,若检测结果为是,则执行步骤4‑4,若检测结果为否,则执行步骤4‑5;
步骤4‑4,则在父代1中选择下标索引大于等于k且小于等于m的目标基因,将目标基因映射到父代2的表索引,将父代2中的目标基因进行逆转,得到子代1,将父代1和父代2的位置互换,返回步骤4‑2,得到子代2;
步骤4‑5:在父代1选择下标索引小于m和大于k的目标基因,将目标基于映射到父代2中的下标索引,将父代2中的目标基因进行逆转,得到子代1,父代2与子代1的位置进行调换,返回步骤4‑2,得到子代2。
8.如权利要求6所述旅游路线个性化推荐系统,其特征在于,适应度值的计算公式具体如下:
Fit=α×RV+β×PV+γ×TV (2)其中, 表示关键字集合K中的所有关键字在路线中出现的次数,||Ti||表示路线Trai所有tag标签中的关键字个数; 表示个体路线Trai的实际距离; RO是路线Trai解码后的时间逆序数。
9.如权利要求2所述旅游路线个性化推荐系统,其特征在于,路线推荐模块生成符合用户旅游路线偏好的最优路线,其生成方法具体包括如下步骤:步骤1:将预推荐路线中的每一个兴趣点作为中心点,形成设定大小的初始矩形区域;
步骤2:保持矩形中心点位置不变,对边长进行扩大;
步骤3:若两矩形相交,则生成包含两相交矩形的最小矩形,执行步骤2重复执行m次;
步骤4:选择包含景点数量最多的矩形作为目标矩形,针对目标矩形使用贪心算法生成一条最优路线,将最优路线推荐给用户。