CN111222847B - 基于深度学习与非监督聚类的开源社区开发者推荐方法 - Google Patents
基于深度学习与非监督聚类的开源社区开发者推荐方法 Download PDFInfo
- Publication number
- CN111222847B CN111222847B CN201911386674.9A CN201911386674A CN111222847B CN 111222847 B CN111222847 B CN 111222847B CN 201911386674 A CN201911386674 A CN 201911386674A CN 111222847 B CN111222847 B CN 111222847B
- Authority
- CN
- China
- Prior art keywords
- developer
- clustering
- project
- open source
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 67
- 238000013135 deep learning Methods 0.000 title claims abstract description 18
- 238000013528 artificial neural network Methods 0.000 claims abstract description 32
- 238000013527 convolutional neural network Methods 0.000 claims description 38
- 238000012549 training Methods 0.000 claims description 24
- 230000008569 process Effects 0.000 claims description 16
- 239000013598 vector Substances 0.000 claims description 12
- 238000011161 development Methods 0.000 claims description 8
- 230000006870 function Effects 0.000 claims description 7
- 238000005070 sampling Methods 0.000 claims description 6
- 230000006399 behavior Effects 0.000 claims description 5
- 239000011159 matrix material Substances 0.000 claims description 5
- 238000013507 mapping Methods 0.000 claims description 4
- 238000012545 processing Methods 0.000 claims description 4
- 238000005259 measurement Methods 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 claims description 2
- 238000011160 research Methods 0.000 abstract description 6
- 230000007547 defect Effects 0.000 abstract description 2
- 239000013589 supplement Substances 0.000 abstract description 2
- 239000010410 layer Substances 0.000 description 52
- 238000001914 filtration Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 6
- 230000006872 improvement Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000005065 mining Methods 0.000 description 5
- 238000000605 extraction Methods 0.000 description 4
- 238000011176 pooling Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 239000002356 single layer Substances 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000013136 deep learning model Methods 0.000 description 1
- 238000011478 gradient descent method Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000011524 similarity measure Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000010189 synthetic method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/103—Workflow collaboration or project management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
- G06F18/232—Non-hierarchical techniques
- G06F18/2321—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions
- G06F18/23213—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions with fixed number of clusters, e.g. K-means clustering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0601—Electronic shopping [e-shopping]
- G06Q30/0631—Item recommendations
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- Strategic Management (AREA)
- General Engineering & Computer Science (AREA)
- Human Resources & Organizations (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Economics (AREA)
- Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Entrepreneurship & Innovation (AREA)
- Computing Systems (AREA)
- General Business, Economics & Management (AREA)
- Biomedical Technology (AREA)
- Marketing (AREA)
- Computational Linguistics (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Biophysics (AREA)
- Development Economics (AREA)
- Evolutionary Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Probability & Statistics with Applications (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于深度学习与非监督聚类的开源社区开发者推荐方法,将深度学习神经网络与非监督聚类相结合,用于开源社区中的开发者推荐,本发明方法主要包括三步,首先根据开发者的通用特征信息利用非监督聚类对开发者进行聚类,得到参与到每个项目中的不同开发者的类别和比率,然后基于深度神经网络利用项目信息和开发者类别信息进行开发者类别预测,最后利用深度神经网络进行训练得到开发者对应的特征向量,从而与不同类别的开发者进行相似性比较推荐出相应的开发者。本发明能在大规模的开源软件社区中取得较好的推荐精度和效率,还可以补充现有研究在开源软件社区研究方面的缺陷,从新的角度为保证开源软件开发质量提供一种新的开源软件开发者推荐方法。
Description
技术领域
本发明涉及一种利用深度学习和非监督学习方法对开源软件社区进行开发者推荐方法,属于群智化软件开发技术领域。
背景技术
主流的推荐算法主要分为基于协同过滤的推荐,基于内容的推荐和两者的混合推荐。在协同过滤推荐中没有获取用户或者物品的特征信息数据,往往根据用户的历史行为数据对用户进行建模,从而挖掘出用户的偏好信息,从而为用户推荐其感兴趣的物品或项目。而根据挖掘方式的不同,主要分为基于用户的协同过滤,基于物品的协同过滤等。虽然协同过滤的推荐方法在许多场景中都有所应用,但是基于协同过滤的推荐算法往往存在冷启动问题,即当一个新的用户出现时,由于用户本身没有可用的历史数据,导致难以根据用户的历史数据进行推荐。而基于内容的推荐则从特征层面弥补了冷启动问题,这一算法通过挖掘物品和用户的特征属性信息,分析其内在联系来对用户和物品分别进行建模。如果用户不是新用户则可以根据用户关注过的物品与新的物品之间的相似程度为用户推荐其可能感兴趣的物品;如果用户是一个新用户,这可以通过刻画用户与其他用户之间的相似性,进而为其推荐相似用户感兴趣的物品。但是,基于内容的协同过滤也有一个问题,主要在于用户和物品的信息往往很难通过较少的特征进行描述,即少量特征可能无法准确描述一个物品,使得推荐系统的性能会降低,另外,单纯基于内容的推荐往往难以为用户推荐出新型的物品。因此,混合基于协同过滤的推荐和基于内容的推荐两种算法的合成方法也是近年来研究的热点。
在开发者推荐方面,目前很少有研究将基于协同过滤的推荐和基于内容的推荐用于开发者推荐中。更多的研究仍然从整个软件社区的角度出发为软件社区推荐核心的开发者,这样的推荐方法通过挖掘开发者在软件社区中的历史活动行为,以及开发者自身的标记信息来建立一个合适的综合评价指标体系,从而利用层次分析、模糊分析等方法对开发者进行综合评价,选出评分较高的开发者作为核心开发者。而在开源软件社区中,用户和项目的数量都是十分庞大的,因此单纯的为软件社区进行核心开发者推荐,由于推荐的开发者数目有限,往往只能关注于少数的项目的质量提升,为了使得每一个新提交的项目都尽量能够得到进一步的开发与完善,需要从单个项目的角度出发,为项目本身推荐合适的开发者。
因此,为了开源软件社区的健康发展和开源软件项目的质量保证,从项目角度出发,开发新的算法用于开发者推荐具有重要的理论意义与实际应用价值。
发明内容
本发明的主要目的是提供一种基于深度学习和非监督聚类的推荐算法来实现开源软件社区中的开发者推荐。这种方法不仅给出了一种新的推荐系统的思维方式,能够比传统的推荐方法拥有更高的推荐准确度,同时能够解决推荐算法中经常遇到的冷启动问题,使得本发明具有更好的适用性。
本发明通过深入分析开源软件生态系统中的项目特点和开发人员特点,从深度学习和非监督学习相结合的角度提出新的开发者推荐方法。具体而言,本发明主要包括以下步骤:
(1)、通过分析开源软件社区中开发者的行为特征和项目信息,发掘开发者与项目之间的关系模型,为每一个项目推荐可能参与到项目中的开发者;
(2)、通过调研现有的开源社区的信息对开发者提取了三种抽象信息:活跃度(A)、影响力(I)和开发能力(D)来描述一个开发者,使用一个定长的向量P={A,I,D}对开发者进行建模。
(3)、通过K-means算法对开发者进行聚类,基于欧式距离将开发者聚类成K个类别,从而降低推荐算法的计算复杂性。
(4)、将项目的文档信息作为输出,开发者类别信息作为输出,利用多层神经网络提取项目中的高维度信息从而训练出项目与开发者类别之间的关联模型。
(5)、将项目的文档信息作为输出,开发者特征信息作为输出,利用多层神经网络训练出项目与开发者之间的关联模型。
(6)、基于(4)(5)训练出来的模型预测出开发者的类别信息和开发者特征信息为项目推荐指定个数的开发者。
(7)、采用卷积神经网络和K-prototypes聚类方法对上述模型进行进一步优化,步骤如下:首先,将第(3)步的K-means算法替换为K-prototypes算法,利用K-prototypes算法的处理混合特征的能力对开发者进行重新聚类,从而得到更优的开发者聚类结果。然后,将第(4)步的多层神经网络转化为卷积神经网络,其输入是项目文档信息的矩阵形式,输出为开发者类别信息,利用卷积神经网络的局部相关性特点挖掘深层次的项目特征进行训练;最后,在第(5)步中,利用卷积神经网络训练项目与开发者之间的关联模型,类似于步骤(6)进行开发者推荐。
作为本发明的一种改进,所述的K-means算法中聚类特征信息包括用户的定量特征,使用基于距离的方式进行训练得到聚类结果,训练的结果即是最终的结果。
作为本发明的一种改进,K-means算法具体训练过程为:首先初始化样本需要聚类的个数和聚类中心位置,然后选择合适的距离度量公式,利用公式计算出每个样本与各个聚类中心之间的聚类,将样本划分到与其最近的类别中,当所有的样本判别完成后重新计算出新的聚类中心,通过迭代的计算样本与聚类中心的距离和新的聚类中心最终得到每个样本对应类别。
作为本发明的一种改进,所述的多层神经网络不同于传统的单层神经网络,其层次更多,所需要训练的参数更多,通过多次的向前传播能够发掘更高层的抽象信息从而实现对文本的多维度表达;其通过BP算法进行向前向后的训练过程,其损失函数使用的是均方差损失来预测所需的输出。
作为本发明的一种改进,所述的卷积神经网络(CNN),与多层神经网络所不同,CNN的隐含层不仅是全连接层,而是在此基础上加入了卷积层和池化层。CNN将多个卷积层和采样层进行集合,对输入信号进行加工,然后在连接层实现与输出目标之间的映射关系。
作为本发明的一种改进,所述的K-prototypes算法是一种改进的聚类算法,与K-means不同,K-prototypes方法能够对定性属性和定量属性分别进行聚类并综合聚类的结果,从而利用更多的信息实现对样本的更精确的聚类结果。
相对于现有技术,本发明的优点如下:本发明一方面可以补充现有研究在开源软件社区研究方面的缺陷,从一个新的角度,为保证开源软件开发质量提供一种新的开源软件开发者推荐方法。在技术上,本发明首次将深度学习神经网络与非监督聚类算法相结合用于开源社区开发者推荐,扩展了深度学习和机器学习的结合及其在新的领域的应用。另外,相比于现有的软件开发者推荐方法,本发明对软件项目和开发者建模进行了客观的建模,并利用深度学习的特征提取能力更好的描述项目和开发者。与此同时,本发明提出的方法能在大规模的开源软件社区中相比传统的推荐方法取得更好的推荐精度和效率。
附图说明
图1是开源社区开发者推荐示意图;
图2是DNN基本网络示意图;
图3是本发明提出的基于DNN的开发者推荐网络示意图;
图4是CNN基本网络示意图;
图5是本发明提出的基于CNN的开发者推荐网络示意图;
图6是本发明的开发者推荐方法基本架构。
具体实施方式
下面结合附图(表)对本发明进行详细说明。
实施例:一种基于深度学习与非监督聚类的开源社区开发者推荐方法,其主要包括如下步骤:
(1)、通过分析开源软件社区中开发者的行为特征和项目信息,发掘开发者与项目之间的关系模型,为每一个项目推荐可能参与到项目中的开发者;
(2)、通过调研现有的开源社区的信息对开发者提取了三种抽象信息:活跃度(A)、影响力(I)和开发能力(D)来描述一个开发者,使用一个定长的向量P={A,I,D}对开发者进行建模;
(3)、通过K-means算法对开发者进行聚类,基于欧式距离将开发者聚类成K个类别,从而降低推荐算法的计算复杂性;
(4)、将项目的文档信息作为输出,开发者类别信息作为输出,利用多层神经网络提取项目中的高维度信息从而训练出项目与开发者类别之间的关联模型;
(5)、将项目的文档信息作为输出,开发者特征信息作为输出,利用多层神经网络训练出项目与开发者之间的关联模型;
(6)、基于步骤(4)(5)训练出来的模型预测出开发者的类别信息和开发者特征信息为项目推荐指定个数的开发者;
(7)、采用卷积神经网络和K-prototypes聚类方法对上述模型进行进一步优化,步骤如下:首先,将第(3)步的K-means算法替换为K-prototypes算法,利用K-prototypes算法的处理混合特征的能力对开发者进行重新聚类,从而得到更优的开发者聚类结果。然后,将第(4)步的多层神经网络转化为卷积神经网络,其输入是项目文档信息的矩阵形式,输出为开发者类别信息,利用卷积神经网络的局部相关性特点挖掘深层次的项目特征进行训练。最后,在第(5)步中,利用卷积神经网络训练项目与开发者之间的关联模型,类似于步骤(6)进行开发者推荐。
K-means算法具体训练过程为:首先初始化样本需要聚类的个数和聚类中心位置,然后选择合适的距离度量公式,利用公式计算出每个样本与各个聚类中心之间的聚类,将样本划分到与其最近的类别中,当所有的样本判别完成后重新计算出新的聚类中心,通过迭代的计算样本与聚类中心的距离和新的聚类中心最终得到每个样本对应类别。
所述多层神经网络不同于传统的单层神经网络,其层次更多,所需要训练的参数更多,通过多次的向前传播能够发掘更高层的抽象信息从而实现对文本的多维度表达;其通过BP算法进行向前向后的训练过程,其损失函数使用的是均方差损失来预测所需的输出。
所述的卷积神经网络(CNN),与多层神经网络所不同,CNN的隐含层不仅是全连接层,而是在此基础上加入了卷积层和池化层。CNN将多个卷积层和采样层进行集合,对输入信号进行加工,然后在连接层实现与输出目标之间的映射关系。
所述的K-prototypes算法是一种改进的聚类算法,与K-means不同,K-prototypes方法能够对定性属性和定量属性分别进行聚类并综合聚类的结果,从而利用更多的信息实现对样本的更精确的聚类结果。
应用实施例:
如图1所示,开源社区的开发者推荐任务主要完成的工作是根据开源社区中开源项目的信息和开发者的活动与属性信息找出项目和开发者之间的关联,从而能够在给定一个新的项目后能够根据开发者和项目之间的关联关系给项目推荐相关的可能参与开发的开发者从而为开源项目快速健康发展提供保证。
本发明的主要内容包括以下几个方面:
(1)基于DNN和K-means的开发者推荐:
由于目前主流的开源社区中往往有大量的不同知识、不同背景的开发者基于不同的利益驱动参与到软件开发中。开发者类型、利益驱动的多样性使得简单的比较开发者的优劣变得十分困难,因此需要通过提取开发者特征对开发者进行描述分析。我们通过调研现有的开源社区的信息对开发者提取了三种抽象信息:活跃度(A)、影响力(I)和开发能力(D)来描述一个开发者,从而使得一个开发者可以使用一个定长的向量P={A,I,D}进行表述。另外,在推荐系统中往往需要计算两个用户或者项目之间的相似度来进行推荐。但是传统的推荐系统中通常需要将一个输出向量与数据集中所有的备选向量进行相似性度量,这样的推荐方法在数据量较大时往往带来了较大的时间和空间花费。因此,本发明提出将开发者进行聚类的方式来降低计算代价。本发明首先基于K-means方法进行聚类。在K-means中,其输入为开发者特征矩阵P={P1,P2,...,Pn},输出为每个开发者特征向量对应的类别。K-means算法通过初始化类别个数,然后最小化类内均方误差来实现聚类效果。具体可以表示为:
wi,j∈{0,1},1≤i≤n,1≤j≤k
其中W是n×k的分块矩阵,X={X1,X2,...,Xn}是样本集,Q={Q1,Q2,...,Qk}是统一对象域内的对象集合。d(·,·)是两个对象间的平方欧式距离。
上述问题可以通过迭代求解问题(1)和问题(2)进行求解。
(1):令求解约化问题/>
(2):令求解约化问题/>
在对开发者进行聚类之后可以得到开源项目中每个项目会有多少种类的开发者参与开发任务,可以将其进行建模表示为C={c1,c2,...,ck},其中ci表示第i类开发者的人数。之后我们构造适合开发者推荐的多层神经网络模型。
多层神经网络又称为深度神经网络(DNN),通过将输入信号进行交叉组合形成新的特征用来抽象表达原始样本信息。如图2所示,相比单层神经网络,DNN在隐含层方面比一般的神经网路结构更多,因此模型看上去更加复杂,其需要训练的参数也更多,因此DNN在小样本情况下很容易过拟合,但是大样本的情况往往能够很好的模拟真实世界的模型,得到较好的效果。DNN主要完成对中间权值和阈值的训练,其训练过程包括前向传播和后向传播。前向传播实现从输入层经过多个隐含层如何得到输出标记。尽管DNN的结构相对复杂,但从局部而言,与感知机类似,通过一个线性关系z=∑wixi+b和一个激活函数σ(z)得到某一层的输出。前向传播是层层向前传播,每一层的输出都将作为后一层的输出继续向前计算。反向传播主要完成对权值矩阵和偏置向量的训练与调整,从而使得损失函数最小化。在DNN的反向传播算法之前需要选择损失函数,来度量训练样本计算得出的输出与真实输出之间的差异带来的数据的损失。由于本发明中的神经网络输出是各个类别的开发人员数目,可以看作一个预测问题,因此,我们选择均方差作为损失函数。并选择使用随机梯度下降方法来训练网络,从而加速训练过程。
在通过神经网络训练得到每类开发者的数量后,下一步就是通过二次神经网络训练得到需要推荐的开发者,其网络结构图如图3所示。由于不同的项目中参与的开发者的数目可能是不同的,因此,如果将项目中的所有的开发者均作为输出,则会出现不同项目神经网络对应的输出长度不同,难以训练。对此,我们采用均值化的思想,将一个项目中的开发者向量进行均值化处理,得到新的向量作为输出。例如:假设开发者总的类别个数为K,参与一个项目的不同类别的开发者个数可以表示为C={c1,c2,…,cK},每个开发者向量表示为P={A,I,D},则同一类别的开发者的均值向量为:其中ci表示参与该项目的第i类开发者的个数,Pij表示第i类的第j个开发者向量。从而可以得出神经网络的输出为从而通过神经网络的二次训练可以得到每一类的开发者的特征及其对应的开发者的个数,从而根据开发者特征,找到每一类中最相似的开发者推荐给相应的项目。
(2)基于CNN和K-prototypes的开发者推荐:
卷积神经网络(CNN)是一种特殊的深度学习模型,与多层神经网络所不同的是,CNN的隐含层不仅是全连接层,而是在此基础上加入了卷积层和池化层,其主要结构如图5所示。CNN将多个卷积层和采样层进行集合,对输入信号进行加工,然后在连接层实现与输出目标之间的映射关系。每个卷积层都包含多个特征映射,每个特征映射是由多个神经元所组成的“平面”,然后通过卷积滤波器对输入信号进行特征抽取。与全连接层不同的是,每个神经元不需要处理全部的输入信号,而是通过滤波滑动的方式处理局部输入信号。采样层又称为池化层,其结构与卷积层类似,主要负责根据局部相关性原理对卷积层的输出进行亚采样,从而在减少数据量的同时保留有用信息。
相比于多层神经网络,CNN能够对输入信息的局部信息进行处理,获取可能相关联的高维特征信息,对于局部相关的输入信息具有良好的特征抽取与表达能力,因此不仅能在图像数据中取得较好的效果,在文本处理等领域也能取得较好的效果。在本发明中,我们使用CNN将项目文档信息作为输入,从而利用其局部性原理抽取出文本中的局部关联信息实现对项目的更加精确地表达,其基本网络结构如图6所示。另外,CNN的权值共享原则使得在网络训练时不用训练如多层神经网络那样多的参数,使得训练的花费大大降低。
除了对项目特征进行表达外,为了提升本发明方法的有效性,我们从开发者聚类的角度对其进行进一步的改进,提出基于K-prototypes的开发者聚类方法,这是一种混合定量属性与定性属性的聚类方法。因为,在开源社区中,开发者的描述仅仅使用定量特征进行描述可能无法准确的描述出开发者的信息,如果结合开发者的定性属性,可以对开发者进行更加精确地描述,因此需要将定性属性一起用于开发者聚类。在K-prototypes中,开发者的定量属性被以K-means的方法进行处理,而定性属性则通过K-modes思想进行处理,K-modes通过计算两个包含定性属性的不同对象X和Y之间的相异性表达两个对象之间的总不匹配程度。通过初始化K个簇找到其对应的mode,将所有的对象分配到对应的簇,重新计算新的mode,然后在重新分配对象,反复迭代得到最终的聚类结果。则对于K-prototypes方法,两个开发者P1和P2之间的距离可以表示为:
其中,等式右侧第一项是基于定量属性的欧式距离,第二项是基于定性属性的简单匹配差异度。γ表示折扣率。通过类似于K-means的迭代求解方法,最终可以得到开发者的聚类结果。则基于CNN和K-prototypes的开发者推荐框架可以表示为如图6所示的形式。
通过以上的说明,本发明提出的基于深度学习和非监督聚类的开发者推荐方法能够根据目前开源社区中的开发者特征和项目文档信息实现有效的开发者推荐,使用深度神经网络进行高维特征的自动抽取相比传统的推荐算法能够进行更精确的推荐,使用聚类的方式对开发者进行处理也能在一定程度上降低推荐时的时空花费。另外,值得一提的是,本发明提出的方法由于使用了项目文档信息作为匹配特征,因此能从一定程度上降低推荐系统中的冷启动问题。而且,通过将所有类型的开发者作为输出,可能给项目推荐少许不同类型的开发者,从而提升参与项目的开发者的多样性。
需要说明是上述实施例仅仅是本发明较佳实施例,并没有用来限定本发明的保护范围,在上述技术方案的基础上做出的替换或者替代均属于本发明的保护范围。
Claims (6)
1.基于深度学习与非监督聚类的开源社区开发者推荐方法,其特征在于,其主要包括如下步骤:
(1)、通过分析开源软件社区中开发者的行为特征和项目信息,发掘开发者与项目之间的关系模型,为每一个项目推荐可能参与到项目中的开发者;
(2)、通过调研现有的开源社区的信息对开发者提取了三种抽象信息:活跃度(A)、影响力(I)和开发能力(D)来描述一个开发者,使用一个定长的向量P={A,I,D}对开发者进行建模;
(3)、通过K-means算法对开发者进行聚类,基于欧式距离将开发者聚类成K个类别,从而降低推荐算法的计算复杂性;
(4)、将项目的文档信息作为输出,开发者类别信息作为输出,利用多层神经网络提取项目中的高维度信息从而训练出项目与开发者类别之间的关联模型;
(5)、将项目的文档信息作为输出,开发者特征信息作为输出,利用多层神经网络训练出项目与开发者特征之间的关联模型;
(6)、基于步骤(4)(5)训练出来的模型预测出开发者的类别信息和开发者特征信息为项目推荐指定个数的开发者;
(7)、采用卷积神经网络和K-prototypes聚类方法对上述模型进行进一步优化,步骤如下:首先,将第(3)步的K-means算法替换为K-prototypes算法,利用K-prototypes算法的处理混合特征的能力对开发者进行重新聚类,从而得到更优的开发者聚类结果;然后,将第(4)步的多层神经网络转化为卷积神经网络,其输入是项目文档信息的矩阵形式,输出为开发者类别信息,利用卷积神经网络的局部相关性特点挖掘深层次的项目特征进行训练;最后,在第(5)步中,利用卷积神经网络训练项目与开发者之间的关联模型,类似于步骤(6)进行开发者推荐。
2.根据权利要求1所述的基于深度学习与非监督聚类的开源社区开发者推荐方法,其特征在于:所述的K-means算法中聚类特征信息包括用户的定量特征,使用基于距离的方式进行训练得到聚类结果,训练的结果即是最终的结果。
3.根据权利要求2所述的基于深度学习与非监督聚类的开源社区开发者推荐方法,其特征在于:K-means算法具体训练过程为:首先初始化样本需要聚类的个数和聚类中心位置,然后选择合适的距离度量公式,利用公式计算出每个样本与各个聚类中心之间的聚类,将样本划分到与其最近的类别中,当所有的样本判别完成后重新计算出新的聚类中心,通过迭代的计算样本与聚类中心的距离和新的聚类中心最终得到每个样本对应类别。
4.根据权利要求1所述的基于深度学习与非监督聚类的开源社区开发者推荐方法,其特征在于:所述多层神经网络通过多次的向前传播能够发掘更高层的抽象信息从而实现对文本的多维度表达;其通过BP算法进行向前向后的训练过程,其损失函数使用的是均方差损失来预测所需的输出。
5.根据权利要求1所述的基于深度学习与非监督聚类的开源社区开发者推荐方法,其特征在于:所述的卷积神经网络CNN将多个卷积层和采样层进行集合,对输入信号进行加工,然后在连接层实现与输出目标之间的映射关系。
6.根据权利要求1所述的基于深度学习与非监督聚类的开源社区开发者推荐方法,其特征在于:所述的K-prototypes算法是一种改进的聚类算法,K-prototypes方法能够对定性属性和定量属性分别进行聚类并综合聚类的结果,从而利用更多的信息实现对样本的更精确的聚类结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911386674.9A CN111222847B (zh) | 2019-12-29 | 2019-12-29 | 基于深度学习与非监督聚类的开源社区开发者推荐方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911386674.9A CN111222847B (zh) | 2019-12-29 | 2019-12-29 | 基于深度学习与非监督聚类的开源社区开发者推荐方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111222847A CN111222847A (zh) | 2020-06-02 |
CN111222847B true CN111222847B (zh) | 2023-11-24 |
Family
ID=70827948
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911386674.9A Active CN111222847B (zh) | 2019-12-29 | 2019-12-29 | 基于深度学习与非监督聚类的开源社区开发者推荐方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111222847B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111857691B (zh) * | 2020-07-28 | 2021-07-23 | 北京航空航天大学 | 一种软件体系结构恢复方法和装置 |
CN113190269A (zh) * | 2021-04-16 | 2021-07-30 | 南京航空航天大学 | 一种基于编程上下文信息的代码重构方法 |
CN113360776B (zh) * | 2021-07-19 | 2023-07-21 | 西南大学 | 基于跨表数据挖掘的科技资源推荐方法 |
CN113988554A (zh) * | 2021-10-18 | 2022-01-28 | 上海交通大学 | 开源社区issue解决人员分配基线确定方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107808278A (zh) * | 2017-10-11 | 2018-03-16 | 河海大学 | 一种基于稀疏自编码器的Github开源项目推荐方法 |
CN109032591A (zh) * | 2018-06-21 | 2018-12-18 | 北京航空航天大学 | 一种基于神经网络的众包软件开发者推荐方法 |
CN109558533A (zh) * | 2018-10-29 | 2019-04-02 | 广东奥博信息产业股份有限公司 | 一种基于多重聚类的个性化内容推荐方法及装置 |
-
2019
- 2019-12-29 CN CN201911386674.9A patent/CN111222847B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107808278A (zh) * | 2017-10-11 | 2018-03-16 | 河海大学 | 一种基于稀疏自编码器的Github开源项目推荐方法 |
CN109032591A (zh) * | 2018-06-21 | 2018-12-18 | 北京航空航天大学 | 一种基于神经网络的众包软件开发者推荐方法 |
CN109558533A (zh) * | 2018-10-29 | 2019-04-02 | 广东奥博信息产业股份有限公司 | 一种基于多重聚类的个性化内容推荐方法及装置 |
Non-Patent Citations (4)
Title |
---|
张宜浩 ; 朱小飞 ; 徐传运 ; 董世都 ; .基于用户评论的深度情感分析和多视图协同融合的混合推荐方法.计算机学报.2019,(06),全文. * |
曹步清等.融合SOM功能聚类与DeepFM质量预测的API服务推荐方法.《计算机学报》.2019,全文. * |
谢新强 ; 杨晓春 ; 王斌 ; 张霞 ; 纪勇 ; 黄治纲 ; .一种多特征融合的软件开发者推荐.软件学报.2018,(08),全文. * |
赵伟.基于深度学习与混合聚类的开源社区开发者推荐.《中国优秀硕士学位论文全文数据库(电子期刊)信息科技辑》.2022,正文第3-4章. * |
Also Published As
Publication number | Publication date |
---|---|
CN111222847A (zh) | 2020-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111737495B (zh) | 基于领域自分类的中高端人才智能推荐系统及其方法 | |
CN111222847B (zh) | 基于深度学习与非监督聚类的开源社区开发者推荐方法 | |
CN109299380B (zh) | 在线教育平台中基于多维特征的习题个性化推荐方法 | |
CN113297369B (zh) | 基于知识图谱子图检索的智能问答系统 | |
CN110737805B (zh) | 图模型数据的处理方法、装置和终端设备 | |
CN113239159A (zh) | 基于关系推理网络的视频和文本的跨模态检索方法 | |
CN115712780A (zh) | 一种基于云计算和大数据的信息推送方法及装置 | |
CN116244513A (zh) | 随机群组poi推荐方法、系统、设备及存储介质 | |
CN109597944B (zh) | 一种基于深度信念网络的单分类微博谣言检测模型 | |
Li et al. | Indoor mobility semantics annotation using coupled conditional Markov networks | |
Huang et al. | Adjectives grouping in a dimensionality affective clustering model for fuzzy perceptual evaluation | |
Fattore et al. | Optimal scoring of partially ordered data, with an application to the ranking of smart cities | |
CN116010681A (zh) | 一种召回模型的训练及检索方法、装置及电子设备 | |
CN115600017A (zh) | 特征编码模型训练方法及装置、媒体对象推荐方法及装置 | |
CN114970684A (zh) | 一种结合vae的提取网络核心结构的社区检测方法 | |
Wu et al. | Hierarchical few-shot learning based on coarse-and fine-grained relation network | |
CN113987126A (zh) | 基于知识图谱的检索方法及装置 | |
Rong et al. | Exploring network behavior using cluster analysis | |
CN113868597A (zh) | 一种用于年龄估计的回归公平性度量方法 | |
Catalano et al. | Bayesian model comparison based on Wasserstein distances | |
Gharsallaoui et al. | Investigating and quantifying the reproducibility of graph neural networks in predictive medicine | |
Chen et al. | Student Performance Prediction Approach Based on Educational Data Mining | |
Trappolini et al. | Multiresolution topological data analysis for robust activity tracking | |
Li | Query-Driven Graph-based User Recommender System | |
Su | Optimization of K-means Algorithm with Computer Programming for Feature Extraction |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |