一种用于多渠道的用户聚类方法与流程

文档序号:23818914发布日期:2021-02-03 14:47阅读:61来源:国知局
一种用于多渠道的用户聚类方法与流程

[0001]
本发明涉及一种关于多渠道的用户聚类算法模型,具体地,涉及一种用于多渠道的用户聚类方法。


背景技术:

[0002]
机器学习是一门多学科交叉专业,涵盖概率论知识,统计学知识,近似理论知识和复杂算法知识,使用计算机作为工具并致力于真实实时的模拟人类学习方式,并将现有内容进行知识结构划分来有效提高学习效率。
[0003]
机器学习有下面几种定义:
[0004]
(1)机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能。
[0005]
(2)机器学习是对能通过经验自动改进的计算机算法的研究。
[0006]
(3)机器学习是用数据或以往的经验,以此优化计算机程序的性能标准。
[0007]
无监督聚类是深度学习中一种建模框架,无监督聚类只能够聚类成指定数量的类,但却不能够说明每一个类到底代表着什么。
[0008]
对于无类标的情况,没有唯一的评价指标。对于数据凸分布的情况只能通过类内聚合度、类间低耦合的原则来作为指导思想,参见图1所示。
[0009]
当然,有这些还不够,对于如图1所示的数据在n维空间中的不是凸分布的情况下,此时就需要采用另外的一些评价指标。典型的无监督聚类算法也很多,例如基于局部密度的lof算法、dbscan算法等,在此种情况下的聚类效果就更加优秀。


技术实现要素:

[0010]
本发明的目的是提供一种关于多渠道的用户聚类算法,利用dbscan算法,可以对用户的基础属性信息进行聚类,在对算法进行调整之后可以很好地对用户进行分群,从而可以更了解用户。
[0011]
本发明提供了一种用于多渠道的用户聚类方法,其中,所述的方法包含:步骤1、获取用户数据;步骤2、对用户数据的信息进行one-hot编码得到一串0-1的值来描述该用户;步骤3、对数据进行降维,用一个三维空间中的点来描述该用户;步骤4、利用dbscan算法对用户信息建模,并调整参数使得评估指标为局部最优解;步骤5、进行图形可视化,对数据进行展现。
[0012]
上述的用于多渠道的用户聚类方法,其中,所述的步骤1的用户数据包含用户的行业信息、人生阶段。
[0013]
上述的用于多渠道的用户聚类方法,其中,所述的步骤2包含:步骤2.1、对用户数据进行预处理,利用one-hot编码将分类数据转换成一串0-1变量;步骤2.2、对缺失值进行填补,用0来代替缺失值;步骤2.3、对于连续型变量,对其进行归一化,使之到达同一个尺度,便于进行后续步骤的处理。
[0014]
上述的用于多渠道的用户聚类方法,其中,所述的步骤2.3中的归一化是使用0-1归一化,最大值变换为1,最小值变换为0,变换公式为x=(x-min)/(max-min)。
[0015]
上述的用于多渠道的用户聚类方法,其中,所述的步骤3是利用pca降维算法将数据降为三维数据。
[0016]
上述的用于多渠道的用户聚类方法,其中,所述的步骤4是利用dbscan进行聚类,并对可能的超参数搜索区域进行搜索,并利用轮廓系数作为评估指标评估聚类效果,得到若干个候选聚类模型;超参数是在开始学习过程之前设置值的参数。
[0017]
上述的用于多渠道的用户聚类方法,其中,所述的步骤5是对候选聚类模型进行可视化,输入不同的候选超参数,利用图像得到一个较好的聚类结果并保存模型。
[0018]
上述的用于多渠道的用户聚类方法,其中,所述的步骤5的可视化是利用matplotlib做出三维图像,并观察相应的局部最优解,从直观选出一个最优解。
[0019]
本发明提供的用于多渠道的用户聚类方法具有以下优点:
[0020]
该方法是一种关于多渠道的用户聚类算法,利用了机器学习里的一种聚类算法(dbscan)对用户进行聚类。使用本发明提供的方法具有的优点还包括:
[0021]
1.对数据进行降维并展现可以很方便的看出数据点的分布,对聚类效果有个直观的感受,并可以很方便的调整模型的超参数,使得聚类效果更好。
[0022]
2.同时利用评估指标,可以很方便的进行超参数网格搜索,得到一个局部最优解。
[0023]
3.结合上述两种方法,可以很好地对用户进行聚类,从而为用户分群打下良好基础。
附图说明
[0024]
图1为无监督聚类无类标的情况下数据凸分布的示意图。
[0025]
图2为本发明的用于多渠道的用户聚类方法的三维图。
具体实施方式
[0026]
以下结合附图对本发明的具体实施方式作进一步地说明。
[0027]
本发明提供了一种用于多渠道的用户聚类方法,该方法包含:
[0028]
步骤1、获取用户数据。
[0029]
步骤2、对用户数据的信息进行one-hot编码得到一串0-1的值来描述该用户。
[0030]
步骤3、对数据进行降维,用一个三维空间中的点来描述该用户。
[0031]
步骤4、利用dbscan算法对用户信息建模,并调整参数使得评估指标为局部最优解。
[0032]
步骤5、进行图形可视化,对数据进行展现。
[0033]
优选地,步骤1的用户数据包含用户的行业信息、人生阶段等。
[0034]
步骤2包含:步骤2.1、对用户数据进行预处理,利用one-hot编码将分类数据转换成一串0-1变量;步骤2.2、对缺失值进行填补,用0来代替缺失值;步骤2.3、对于连续型变量,对其进行归一化,使之到达同一个尺度,便于进行后续步骤的处理。
[0035]
步骤2.3中的归一化是使用0-1归一化,最大值变换为1,最小值变换为0,变换公式为x=(x-min)/(max-min)。
[0036]
步骤3是利用pca降维算法将数据降为三维数据。
[0037]
步骤4是利用dbscan进行聚类,并对可能的超参数搜索区域进行搜索,并利用轮廓系数作为评估指标评估聚类效果,得到若干个候选聚类模型;超参数是在开始学习过程之前设置值的参数,例如邻域半径、邻域内最小样本数等。
[0038]
步骤5是对候选聚类模型进行可视化,输入不同的候选超参数,利用图像得到一个较好的聚类结果并保存模型。
[0039]
步骤5的可视化是利用matplotlib做出三维图像,并观察相应的局部最优解,从直观选出一个最优解。
[0040]
matplotlib是风格类似matlab的基于python的图表绘图系统。matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令api,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入gui应用程序中。
[0041]
dbscan是一种基于密度的聚类算法,这类密度聚类算法一般假定类别可以通过样本分布的紧密程度决定。同一类别的样本,他们之间的紧密相连的,也就是说,在该类别任意样本周围不远处一定有同类别的样本存在。
[0042]
通过将紧密相连的样本划为一类,这样就得到了一个聚类类别。通过将所有各组紧密相连的样本划为各个不同的类别,则我们就得到了最终的所有聚类类别结果。
[0043]
输入:样本集d=(x1,x2,...,xm)(x1,x2,...,xm),邻域参数(∈,minpts)(∈,minpts),样本距离度量方式
[0044]
输出:簇划分c
[0045]
1)初始化核心对象集合初始化聚类簇数k=0,初始化未访问样本集合γγ=d,簇划分
[0046]
2)对于j=1,2,...m,按下面的步骤找出所有的核心对象:
[0047]
a)通过距离度量方式,找到样本xjxj的∈∈-邻域子样本集n∈(xj)n∈(xj)
[0048]
b)如果子样本集样本个数满足|n∈(xj)|≥minpts|n∈(xj)|≥minpts,将样本xjxj加入核心对象样本集合:ω=ω∪{xj}ω=ω∪{xj}
[0049]
3)如果核心对象集合则算法结束,否则转入步骤4.
[0050]
4)在核心对象集合ωω中,随机选择一个核心对象oo,初始化当前簇核心对象队列ωcur={o}ωcur={o},初始化类别序号k=k+1,初始化当前簇样本集合ck={o}ck={o},更新未访问样本集合γ=γ-{o}γ=γ-{o}
[0051]
5)如果当前簇核心对象队列则当前聚类簇ckck生成完毕,更新簇划分c={c1,c2,...,ck}{c1,c2,...,ck},更新核心对象集合ω=ω-ckω=ω-ck,转入步骤3。
[0052]
6)在当前簇核心对象队列ωcurωcur中取出一个核心对象o

o

,通过邻域距离阈值∈∈找出所有的∈∈-邻域子样本集n∈(o

)n∈(o

),令δ=n∈(o

)∩γδ=n∈(o

)∩γ,更新当前簇样本集合ck=ck∪δck=ck∪δ,更新未访问样本集合γ=γ-δγ=γ-δ,转入步骤5.
[0053]
输出结果为:簇划分c={c1,c2,...,ck}{c1,c2,...,ck}
[0054]
同时,还对变量进行one-hot编码。
[0055]
one-hot编码,又称为一位有效编码,主要是采用n位状态寄存器来对n个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效。
[0056]
one-hot编码是分类变量作为二进制向量的表示。这首先要求将分类值映射到整数值。然后,每个整数值被表示为二进制向量,除了整数的索引之外,它都是零值,它被标记为1。
[0057]
超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。通常情况下,在机器学习过程中需要对超参数进行优化,给学习器选择一组最优超参数,以提高学习的性能和效果。比如,树的数量或树的深度,学习率(多种模式)以及k均值聚类中的簇数等都是超参数。与超参数区别的概念是参数,它是模型训练过程中学习到的一部分,比如回归系数,神经网络权重等。简单的描述参数是模型训练获得的,超参数是人工配置参数(本质上是参数的参数,每次改变超参数,模型都要重新训练)。网格搜索是在所有候选的参数选择中,通过循环遍历,尝试每一种可能性,表现最好的参数就是最终的结果(暴力搜索)。原理:在一定的区间内,通过循环遍历,尝试每一种可能性,并计算其约束函数和目标函数的值,对满足约束条件的点,逐个比较其目标函数的值,将坏的点抛弃,保留好的点,最后便得到最优解的近似解。为了评价每次选出的参数的好坏,需要选择评价指标,评价指标可以根据自己的需要选择accuracy、f1-score、f-beta、percision、recall等。在用统计分析方法研究多变量的课题时,变量个数太多就会增加课题的复杂性。人们自然希望变量个数较少而得到的信息较多。在很多情形,变量之间是有一定的相关关系的,当两个变量之间有一定相关关系时,可以解释为这两个变量反映此课题的信息有一定的重叠。主成分分析是对于原先提出的所有变量,将重复的变量(关系紧密的变量)删去多余,建立尽可能少的新变量,使得这些新变量是两两不相关的,而且这些新变量在反映课题的信息方面尽可能保持原有的信息。设法将原来变量重新组合成一组新的互相无关的几个综合变量,同时根据实际需要从中可以取出几个较少的综合变量尽可能多地反映原来变量的信息的统计方法叫做主成分分析或称主分量分析,也是数学上用来降维的一种方法。
[0058]
下面结合实施例对本发明提供的用于多渠道的用户聚类方法做更进一步描述。
[0059]
实施例1
[0060]
一种用于多渠道的用户聚类方法,该方法包含:
[0061]
步骤1、获取用户数据。用户数据包含用户的行业信息、人生阶段等。
[0062]
步骤2、对用户数据的信息进行one-hot编码得到一串0-1的值来描述该用户。
[0063]
步骤2包含:
[0064]
步骤2.1、对用户数据进行预处理,利用one-hot编码将分类数据转换成一串0-1变量。
[0065]
步骤2.2、对缺失值进行填补,用0来代替缺失值。
[0066]
步骤2.3、对于连续型变量,对其进行归一化,使之到达同一个尺度,便于进行后续步骤的处理。归一化主要使用0-1归一化,最大值变换为1,最小值变换为0,变换公式为x=(x-min)/(max-min)。
[0067]
步骤3、对数据进行降维,用一个三维空间中的点来描述该用户。
[0068]
优选地,利用pca降维算法将数据降为三维数据。
[0069]
具体代码如下:
[0070]
from sklearn.decomposition import pca
[0071]
pca=pca(n_components=3)
[0072]
其中n_components为所需降维的维度,这里为3维。这样可以便于可视化,为后续调整超参数打下基础。
[0073]
步骤4、利用dbscan算法对用户信息建模,并调整参数使得评估指标为局部最优解。
[0074]
利用dbscan进行聚类,并对可能的超参数搜索区域进行搜索,并利用轮廓系数作为评估指标评估聚类效果,得到若干个候选聚类模型。
[0075]
具体代码如下:
[0076]
from sklearn.cluster import dbscan
[0077]
clustering=dbscan(eps=3,min_samples=2).fit(x)
[0078]
其中eps为邻域半径,而min_samples为邻域内最小样本数
[0079]
对于这两个超参数进行网格搜索,可以得到一组局部最优解。
[0080]
范围分别为range(0.1,0.35,0.05),和range(2,20,1)。
[0081]
步骤5、进行图形可视化,对数据进行展现。
[0082]
对候选聚类模型进行可视化,输入不同的候选超参数,利用图像得到一个较好的聚类结果并保存模型。
[0083]
优选地,利用matplotlib做出三维图像,并观察相应的局部最优解,从直观选出一个最优解。
[0084]
参见图2所示,不同的点为不同的用户,不同位置聚集的不同深浅的点代表不同类别的用户,那些不属于任何类别的用户被自动地标为离群点(最深的黑色)。
[0085]
本发明提供的用于多渠道的用户聚类方法,是一种关于多渠道的用户聚类算法,利用dbscan算法,可以对用户的基础属性信息进行聚类,在对算法进行调整之后可以很好地对用户进行分群,从而可以更了解用户。
[0086]
尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1