发明名称 基于复杂网络模型并行化PageRank算法的核心药物挖掘方法
摘要 本发明的基于复杂网络模型并行化PageRank算法的核心药物挖掘方法包括如下步骤:1)组网阶段:a)预处理生成中药数据集,格式化为文本数据;b)将初始文本数据部署至Hadoop平台;c)并行化组建中药药物网络TCM;d)结束。2)挖掘阶段:a)获取步骤1-c处理生成的中药药物网络文本文件;b)将药物网络文本文件部署至Hadoop平台;c)实施并行化PageRank算法发现核心药物节点;d)结束。本发明的基于复杂网络模型并行化PageRank算法的核心药物挖掘方法建立了中药药物复杂网络模型,利用并行化技术提高了组网以及PageRank算法的可扩展性和运行速度,并且能有效挖掘复方中的关键核心药物节点,研究中药配伍规律。
申请公布号 CN102708285A 申请公布日期 2012.10.03
申请号 CN201210122900.4 申请日期 2012.04.24
申请人 河海大学 发明人 吴骏;刘正;王志坚;许峰
分类号 G06F19/00(2011.01)I 主分类号 G06F19/00(2011.01)I
代理机构 南京天翼专利代理有限责任公司 32112 代理人 汤志武
主权项 1.基于复杂网络模型并行化PageRank算法的核心药物挖掘方法,其特征是包括如下步骤:1)组网阶段:a)预处理生成中药复方数据集,格式化为文本数据;所说的预处理为抽取中药复方数据中所有复方的药物组成;每个中药复方均格式化为文本数据;b)将初始文本数据部署至Hadoop平台,即开发分布式并行程序的平台;所说的部署为将步骤a)生成的初始文本数据上传至Hadoop的分布式文件系统(HDFS);c)并行化组建中药药物网络TCM;具体过程如下:1)为每个中药复方(一行文本数据)设定一个唯一复方标识ID;2)建立从药物到复方标识ID之间的倒排索引;3)为每个药物设定唯一药物标识id,并包含在复方中出现的频次;4)再次建立倒排索引,还原中药复方的文本数据;5)分布式并行程序的每个Map函数读取一行文本数据,解析出中药复方的药物节点信息;6)两两组合原复方中的药物,以按字典序小的药物ID加上频次作为Key,另一个作为Value,以键值对&lt;Key,Value&gt;的形式经过shuffle &amp; &amp; sort发送到Reduce函数;以上为Hadoop平台自带的两个步骤,对Key值进行排序整理;7)开发分布式并行程序的Reduce函数接收相同Key下组成的[Value]数组,即Map函数传递的所有在该Key下的Value,按照下式计算两两药物间度量,将大于设定阈值的药对写入文件并保存至HDFS中<maths num="0001"><![CDATA[<math><mrow><msub><mi>SC</mi><mi>AB</mi></msub><mo>=</mo><mfrac><mrow><mo>|</mo><msub><mi>F</mi><mi>A</mi></msub><mo>&cap;</mo><msub><mi>F</mi><mi>B</mi></msub><mo>|</mo></mrow><mrow><mi>min</mi><mo>{</mo><mo>|</mo><msub><mi>F</mi><mi>A</mi></msub><mo>|</mo><mo>,</mo><mo>|</mo><msub><mi>F</mi><mi>B</mi></msub><mo>|</mo><mo>}</mo></mrow></mfrac></mrow></math>]]></maths>其中|F<sub>A</sub>∩F<sub>B</sub>|表示药物A、B一起组方的次数,min{|F<sub>A</sub>|,|F<sub>B</sub>|}表示药物A、B中组方次数较少的药物的出现次数,而SC<sub>AB</sub>表示药物A、B共现次数与最少出现药物次数的比率;8)读取6)中生成的药对文件,格式化为邻接表形式保存中药药物网络拓扑结构;9)结束;2)挖掘阶段:a)获取步骤1)-c)处理生成的中药药物网络文本文件;b)将药物网络文本文件部署至Hadoop平台;步骤2-b中所说的部署为将步骤2-a生成的药物网络文本文件上传至Hadoop的分布式文件系统;c)实施并行化PageRank算法发现核心药物节点;步骤具体过程如下:1)每个Map函数读取一行文本,存入Hadoop自定义数据类型Text的变量Value中;2)解析Value中数据,保存到临时数组Tmp[];3)传递节点信息、在分布式环境下维持整个网络结构;4)从Tmp[]中解析出节点PageRankCentrality值即节点PageRank值的大小和节点的邻居节点,分别保存在变量P和临时链表AdjList中;5)令变量i为06)如果i小于临时链表长度AdjList.length,则发送<maths num="0002"><![CDATA[<math><mrow><mo>&lt;</mo><mi>AdjList</mi><mo>.</mo><mi>get</mi><mrow><mo>(</mo><mi>i</mi><mo>)</mo></mrow><mo>,</mo><mfrac><mi>P</mi><mrow><mi>AdjList</mi><mo>.</mo><mi>length</mi></mrow></mfrac><mo>></mo><mo>,</mo></mrow></math>]]></maths>前者为药物节点ID,后者为均分的PageRankCentrality值,并执行7),否则执行8);7)i自增1,执行6);8)Map函数过程结束,Hadoop分布式文件系统执行shuffle &amp; &amp; sort;9)Reduce函数解析[Value]数组,分别用数据结构AdjpageRank保存节点结构,临时链表ls保存每个传递过来的PageRankCentrality值;10)令j=0,p=0;11)如果j小于临时链表长度ls.length,则p=p+ls.get(j)并执行12),否则执行13);12)j自增1,执行11);13)<img file="FDA0000156605870000022.GIF" wi="671" he="109" />按照下式计算节点PageRankCentrality值作为本次迭代最新的值;<maths num="0003"><![CDATA[<math><mrow><mi>P</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow><mo>=</mo><mi>&alpha;</mi><mrow><mo>(</mo><mfrac><mn>1</mn><mrow><mo>|</mo><mi>G</mi><mo>|</mo></mrow></mfrac><mo>)</mo></mrow><mo>+</mo><mrow><mo>(</mo><mn>1</mn><mo>-</mo><mi>&alpha;</mi><mo>)</mo></mrow><munder><mi>&Sigma;</mi><mrow><mi>m</mi><mo>&Element;</mo><mi>L</mi><mrow><mo>(</mo><mi>n</mi><mo>)</mo></mrow></mrow></munder><mfrac><mrow><mi>P</mi><mrow><mo>(</mo><mi>m</mi><mo>)</mo></mrow></mrow><mrow><mi>C</mi><mrow><mo>(</mo><mi>m</mi><mo>)</mo></mrow></mrow></mfrac></mrow></math>]]></maths>其中|G|是指药物节点总数,α是随机跳转因子、设置为0到1之间,L(n)是连接药物节点n的邻居节点,C(m)是药物节点m的邻居节点个数;更新AdjpageRank中的值为p,保存新的AdjpageRank。14)保存结果至HDFS中;15)结束。
地址 210098 江苏省南京市鼓楼区西康路1号