日韩成人黄色,透逼一级毛片,狠狠躁天天躁中文字幕,久久久久久亚洲精品不卡,在线看国产美女毛片2019,黄片www.www,一级黄色毛a视频直播

基于olam的多維度中醫(yī)針灸關(guān)聯(lián)規(guī)則挖掘方法

文檔序號(hào):10724987閱讀:449來源:國(guó)知局
基于olam的多維度中醫(yī)針灸關(guān)聯(lián)規(guī)則挖掘方法【專利摘要】本發(fā)明公開一種基于OLAM的多維度中醫(yī)針灸關(guān)聯(lián)規(guī)則挖掘方法,包括:采用數(shù)據(jù)預(yù)處理技術(shù)對(duì)原始關(guān)系表進(jìn)行構(gòu)造,得到數(shù)據(jù)倉(cāng)庫(kù)的星型模式,基于Mondrian構(gòu)建了數(shù)據(jù)立方體,完成對(duì)從原始數(shù)據(jù)庫(kù)到數(shù)據(jù)立方體的轉(zhuǎn)化;基于立方體模型的結(jié)構(gòu),通過構(gòu)造與之適合的查詢語(yǔ)句,獲得立方體信息,即從立方體數(shù)據(jù)中得到候選項(xiàng)集、頻繁項(xiàng)集;通過置信度,獲得相關(guān)聯(lián)結(jié)果?!緦@f明】基于OLAM的多維度中醫(yī)針灸關(guān)聯(lián)規(guī)則挖掘方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及一種基于0LAM的多維度中醫(yī)針灸關(guān)聯(lián)規(guī)則挖掘方法?!?br>背景技術(shù)
】[0002]關(guān)聯(lián)規(guī)則挖掘是數(shù)據(jù)挖掘技術(shù)的一個(gè)重要研究分支,也是一種經(jīng)典的數(shù)據(jù)挖掘方法,主要用于從大量數(shù)據(jù)中發(fā)現(xiàn)隱藏的、有趣的、屬性間的規(guī)律。隨著研究的進(jìn)展,關(guān)聯(lián)分析從最初的購(gòu)物籃分析,逐漸擴(kuò)展到網(wǎng)站設(shè)計(jì)與優(yōu)化、網(wǎng)絡(luò)入侵檢測(cè)、交通事故模式分析、藥物成分關(guān)聯(lián)分析、設(shè)備故障診斷、天文恒星光譜數(shù)據(jù)相關(guān)性分析、軟件bug挖掘等各個(gè)領(lǐng)域。[0003]關(guān)聯(lián)規(guī)則分析最早是在1993年被IBM公司AhnadmResearchCenter的Agrawal等人提出,并且最早提出了用于對(duì)銷售事務(wù)數(shù)據(jù)集進(jìn)行挖掘的AIS算法;1994年,Agrawal等人對(duì)原有AIS算法進(jìn)行了改進(jìn),提出了一種具有里程碑意義的關(guān)聯(lián)分析算法一一Apriori算法。1996年Mannila等人提出精簡(jiǎn)集的概念。1997年Zaki等人提出主要采用事務(wù)聚類、項(xiàng)集聚類和格遍歷等技術(shù)的關(guān)聯(lián)規(guī)則挖掘算法。JiaweiHan在2000年提出了基于頻繁模式增長(zhǎng)的FP-growth算法,通過FP-growth存儲(chǔ)事務(wù)集[1],但由于FP-tree算法每次挖掘都要事先選擇預(yù)先設(shè)置一個(gè)合適的最小支持度,因此,構(gòu)造一次FP-樹是一件很困難的事[2]。2001RobertCastel等人提出了基于馬爾可夫鏈的關(guān)聯(lián)規(guī)則挖掘算法-ΜΑΜΒ0算法,該算法主要利用的是統(tǒng)計(jì)分析的知識(shí)。隨后QinghuaZou等人在2002年給出了模式分解算法。這個(gè)算法除了記錄頻繁集外,還記錄用于事務(wù)的模式分解的非頻繁集,這種被非頻繁集模式分解的事務(wù)中就不存在非頻繁集。Zaki等人在2003年又提出了異項(xiàng)集的垂直挖掘算法,該算法適合用來挖掘稠密事務(wù)集。還有其他一些比如Gunopulos等人提出的隨機(jī)算法使用了垂直向量(verticalbitvector)的數(shù)據(jù)結(jié)構(gòu)來標(biāo)識(shí)事務(wù)數(shù)據(jù)庫(kù),但它無(wú)法保證發(fā)現(xiàn)所有的頻繁項(xiàng)目集,具有一定局限性。2005年,YuefengLi等提出使用多層粒度結(jié)構(gòu)表示多維關(guān)聯(lián)規(guī)貝lJ,WanxinXu等人設(shè)計(jì)了新型多索引結(jié)構(gòu)用于保存多維項(xiàng)集[3]。2008年,曾萬(wàn)聃等人提出將矩陣應(yīng)用到關(guān)聯(lián)規(guī)則技術(shù)中[4],這為關(guān)聯(lián)規(guī)則挖掘的研究提出了新的思路。到目前為止,該領(lǐng)域的主要研究方向可以歸納如下:層次挖掘算法、增量式更新算法、分布、并行式挖掘算法、多層關(guān)聯(lián)規(guī)則、多值關(guān)聯(lián)規(guī)則、概念格關(guān)聯(lián)規(guī)則算法等等。[0004]關(guān)聯(lián)數(shù)據(jù)挖掘技術(shù)發(fā)展至今,除了層出不窮的算法外,在實(shí)際應(yīng)用中,也得到了廣泛的應(yīng)用,最著名的就是超市購(gòu)物籃分析,分析結(jié)果對(duì)于零售商店的物品擺放、顧客的購(gòu)買模式研究、商品的進(jìn)貨管理等方面都有一定指導(dǎo)意義。除此之外,關(guān)聯(lián)分析在商業(yè)與金融、人口普查數(shù)據(jù)分析、建筑工程數(shù)據(jù)分析、互聯(lián)網(wǎng)行業(yè)和通信領(lǐng)域也有著廣泛的應(yīng)用[5][6]。也有將Apriori算法應(yīng)用在某市消防系統(tǒng)的數(shù)據(jù)上,選取戰(zhàn)斗時(shí)間、出動(dòng)公安消防車輛編組數(shù)量、災(zāi)害事故種類以及匯總結(jié)果為數(shù)據(jù)挖掘研究?jī)?nèi)容,對(duì)該城市火災(zāi)事故、火災(zāi)風(fēng)險(xiǎn)、社會(huì)救助規(guī)模等進(jìn)行了深入的分析了解,為數(shù)據(jù)挖掘在消防系統(tǒng)數(shù)據(jù)分析方面做出了初步的探索。還有應(yīng)用關(guān)聯(lián)數(shù)據(jù)挖掘算法對(duì)汽油車的BASM排放檢測(cè)數(shù)據(jù)進(jìn)行關(guān)聯(lián)性分析,對(duì)汽車BASM排放檢測(cè)方法中檢測(cè)工況及排放污染物檢測(cè)項(xiàng)目C0、HC、xN0間關(guān)聯(lián)性進(jìn)行研究,為選擇檢測(cè)汽車尾氣方法提供參考。[0005]傳統(tǒng)Apriori算法在運(yùn)行的過程中,生成候選項(xiàng)目集時(shí)采用了逐層迭代的方法,另外通過剪枝的方法使得候選項(xiàng)目集的個(gè)數(shù)得以減少,在事務(wù)數(shù)相對(duì)較少的時(shí)候通過提高了算法的運(yùn)行效率。然而在當(dāng)數(shù)據(jù)量較大的情況時(shí)Apriori算法將產(chǎn)生大量候選項(xiàng)目集,其計(jì)算將會(huì)花費(fèi)很多時(shí)間開銷;Apriori算法將重復(fù)掃描數(shù)據(jù)庫(kù),每生成一個(gè)候選集,都要從數(shù)據(jù)庫(kù)中讀取其支持度來判斷它是否為頻繁項(xiàng)目集,頻繁的掃描數(shù)據(jù)庫(kù)造成磁盤空間的多次訪問,使Apriori算法的運(yùn)行時(shí)間延長(zhǎng)?!?br/>發(fā)明內(nèi)容】[0000]針對(duì)上述問題,本發(fā)明提供一種解決了傳統(tǒng)關(guān)聯(lián)規(guī)則分析算法Apri0ri不能控制候選集規(guī)模和對(duì)事務(wù)數(shù)據(jù)庫(kù)掃描次數(shù)過于頻繁的問題的基于OLAM的多維度中醫(yī)針灸關(guān)聯(lián)規(guī)則挖掘方法。[0007]有益效果[0008]本發(fā)明基于0LAM的多維度中醫(yī)針灸關(guān)聯(lián)規(guī)則挖掘方法與現(xiàn)有技術(shù)具備如下有益效果:[0009]本發(fā)明基于0LAM的多維度中醫(yī)針灸關(guān)聯(lián)規(guī)則挖掘方法:結(jié)合聯(lián)機(jī)分析挖掘(OnlineAnalyticalMining,0LAM)和矩陣思想,提出了基于0LAM的關(guān)聯(lián)規(guī)則算法模型,主要解決了傳統(tǒng)關(guān)聯(lián)分析算法Apriori不能控制候選集規(guī)模和對(duì)事務(wù)數(shù)據(jù)庫(kù)掃描次數(shù)過于頻繁的問題。針對(duì)該模型,提出了解決方案,并根據(jù)該方案設(shè)計(jì)了相應(yīng)的挖掘算法,且在中醫(yī)針灸主題上對(duì)算法進(jìn)行了實(shí)施,建立了中醫(yī)針灸腧穴運(yùn)用規(guī)律的挖掘算法,可為中醫(yī)針灸診斷提供決策支持?!靖綀D說明】[0010]圖1是基于0LAM的多維度中醫(yī)針灸關(guān)聯(lián)規(guī)則挖掘方法的步驟流程圖;[0011]圖2是是基于0LAM的多維度中醫(yī)針灸關(guān)聯(lián)規(guī)則挖掘方法的數(shù)據(jù)立方體的構(gòu)建過程;[0012]圖3是基于0LAM的多維度中醫(yī)針灸關(guān)聯(lián)規(guī)則挖掘方法的兩種立方體的多維表示圖;[0013]圖4是基于0LAM的多維度中醫(yī)針灸關(guān)聯(lián)規(guī)則挖掘方法的立方體⑶BE的多維表示圖;[0014]圖5是基于0LAM的多維度中醫(yī)針灸關(guān)聯(lián)規(guī)則挖掘方法的針灸腧穴主題的星型模式轉(zhuǎn)換過程描述圖?!揪唧w實(shí)施方式】[0015]下面結(jié)合附圖對(duì)本發(fā)明做進(jìn)一步的描述。[0016]對(duì)Apriori算法的改進(jìn)一般采用選樣、基于劃分等方法,但這些方法不能解決Apriori算法效率低的根本問題。在傳統(tǒng)Apriori算法中的一個(gè)核心步驟就是根據(jù)(k-1)-頻繁集生成k-候選集,降低這個(gè)過程的計(jì)算量就可以大大提高算法整體運(yùn)行效率。本技術(shù)提出的0LAM模型的提出解決了大數(shù)據(jù)量時(shí)Apriori算法運(yùn)行效率低下的問題。[0017]本技術(shù)結(jié)合數(shù)據(jù)倉(cāng)庫(kù)"面向主題"的特點(diǎn),采用物化數(shù)據(jù)立方體的數(shù)據(jù)存儲(chǔ)方案,巧妙地對(duì)數(shù)據(jù)立方體的維度和度量值進(jìn)行設(shè)計(jì),結(jié)合經(jīng)典的Apriori算法為關(guān)聯(lián)規(guī)則挖掘過程提供中間數(shù)據(jù),對(duì)于已經(jīng)物化在數(shù)據(jù)立方體的數(shù)據(jù),直接從內(nèi)存中讀取而不必再次計(jì)算,從而減少挖掘時(shí)間,提高關(guān)聯(lián)規(guī)則挖掘效率。在實(shí)現(xiàn)上,本技術(shù)采用開源的Mondrian軟件作為0LAP引擎,通過對(duì)關(guān)系數(shù)據(jù)中的立方體數(shù)據(jù)進(jìn)行重新組裝成立方體數(shù)據(jù),提供count計(jì)數(shù)的功能,并通過緩存立方體數(shù)據(jù)等手段對(duì)立方體數(shù)據(jù)進(jìn)行計(jì)算優(yōu)化[7]。將MDX語(yǔ)句在Mondrian中的執(zhí)行結(jié)果作為Apriori算法的中間數(shù)據(jù)來源,大大降低生成候選集的運(yùn)算量,提高Apriori算法運(yùn)行效率。圖1給出了基于0LAM模型和Apriori算法的關(guān)聯(lián)分析算法的總體思路。[0018]基于0LAM的Apriori算法的總體思路[0019]由圖中可以看出,需要首先通過配置Mondrian提供的Schema文件,將關(guān)系數(shù)據(jù)庫(kù)中的維表和事實(shí)表轉(zhuǎn)化成多維數(shù)據(jù)立方體,然后構(gòu)造并執(zhí)行MDX語(yǔ)句,得到多個(gè)子立方體結(jié)果,Mondrian對(duì)MDX查詢做了相應(yīng)的查詢優(yōu)化,同時(shí)緩存了立方體的中間計(jì)算結(jié)果,對(duì)中間結(jié)果會(huì)暫時(shí)存儲(chǔ)于內(nèi)存中,這樣在讀取一個(gè)大的立方體時(shí),首先會(huì)從內(nèi)存中查找其子立方體,如果內(nèi)存中存在該子立方體,那么就直接從內(nèi)存中讀取其緩存結(jié)果,避免了再次計(jì)算。對(duì)子立方體結(jié)果進(jìn)行處理就可以進(jìn)而得到候選項(xiàng)目集的支持度計(jì)數(shù)大大減少了經(jīng)典的Apriori算法的計(jì)算量。另外,在實(shí)現(xiàn)過程中,將MDX語(yǔ)句得到的候選項(xiàng)目集及其支持度存儲(chǔ)于哈希集合中,在算法對(duì)其進(jìn)行查找時(shí),可以利用Hash快速定位到相應(yīng)頻繁項(xiàng)集及其支持度計(jì)數(shù),這種方法可以大大減少在生成強(qiáng)關(guān)聯(lián)規(guī)則時(shí)的計(jì)算量。[0020]3·基于0LAM和Apriori的關(guān)聯(lián)分析算法分析[0021](1)多維數(shù)據(jù)立方體的建立[0022]MDX語(yǔ)句的操作對(duì)象是數(shù)據(jù)立方體,首先需要經(jīng)過數(shù)據(jù)預(yù)處理,完成從數(shù)據(jù)庫(kù)中抽取星型模式,得到數(shù)據(jù)立方體的操作。數(shù)據(jù)倉(cāng)庫(kù)星型模式是建立在原始關(guān)系數(shù)據(jù)庫(kù)中的,是對(duì)原始關(guān)系數(shù)據(jù)庫(kù)表數(shù)據(jù)的規(guī)范和抽取。在數(shù)據(jù)抽取時(shí)需要按照一定的步驟,比如對(duì)數(shù)據(jù)量大、數(shù)據(jù)動(dòng)態(tài)變化的表進(jìn)行分時(shí)段進(jìn)行插入、更新和刪除操作,并對(duì)數(shù)據(jù)進(jìn)行規(guī)則化和對(duì)異常數(shù)據(jù)清洗。最終,在事務(wù)數(shù)據(jù)庫(kù)(Oracle)中抽取出維表、事實(shí)表,由這些表構(gòu)成了數(shù)據(jù)倉(cāng)庫(kù)的星型模型,為立方體的形成奠定了基礎(chǔ)。當(dāng)星型模型建立完成之后,就可以對(duì)星型模型的維表、事實(shí)表進(jìn)行配置得到數(shù)據(jù)立方體。[0023]0LAP引擎Mondrian對(duì)數(shù)據(jù)立方體的配置是在xml文件中完成的,該xml文件又被稱為Schema文件,通過Schema文件完成對(duì)立方體各個(gè)屬性的描述,與關(guān)聯(lián)數(shù)據(jù)庫(kù)中的表結(jié)合起來。數(shù)據(jù)立方體一旦建立完成,就可以通過MDX查詢語(yǔ)言對(duì)其訪問,而Mondrian在對(duì)立方體數(shù)據(jù)查詢前,會(huì)首先加載Schema文件,可以將Mondrian的Schema文件看做是關(guān)系數(shù)據(jù)庫(kù)與數(shù)據(jù)立方體之間的橋梁。圖2描繪了從關(guān)系數(shù)據(jù)庫(kù)到Mondrian中的數(shù)據(jù)立方體的整個(gè)處理過程:[0024]數(shù)據(jù)立方體的構(gòu)建過程[0025]本技術(shù)所構(gòu)建的兩種立方體有著結(jié)構(gòu)完全不同的維表和事實(shí)表。[0026](2)構(gòu)造MDX語(yǔ)句[0027]通過Mondrian的Schema文件,完成了從關(guān)系數(shù)據(jù)庫(kù)到數(shù)據(jù)立方體的過渡,數(shù)據(jù)立方體建立完成后,就可以通過MDX查詢語(yǔ)言對(duì)其進(jìn)行訪問。MDX是一種類似于SQL的比較靈活的查詢語(yǔ)句。結(jié)合立方體模型的結(jié)構(gòu),通過構(gòu)造與之適合的MDX語(yǔ)句,就可以得到相應(yīng)子立方體的Count值,而通過編程實(shí)現(xiàn)就可以將該Count值轉(zhuǎn)化為候選項(xiàng)目集的支持度計(jì)數(shù)。所以算法的核心的地方就是根據(jù)不同的數(shù)據(jù)立方體結(jié)構(gòu),構(gòu)造出不同的MDX查詢語(yǔ)句,通過在Mondrian的0LAP引擎中執(zhí)行該MDX語(yǔ)句來獲取相應(yīng)候選集的支持度計(jì)數(shù),進(jìn)而判斷該候選集否為頻繁的。[0028](3)確定立方體[0029]數(shù)據(jù)立方體以及該立方體對(duì)應(yīng)的MDX語(yǔ)句的確定,可以得到中間結(jié)果提供給Apriori算法。本文構(gòu)造出了兩種立方體模式,并為每種立方體設(shè)計(jì)了與之對(duì)應(yīng)的MDX查詢語(yǔ)句,通過過這兩種立方體模式,可以實(shí)現(xiàn)與Apriori算法的結(jié)合,為Apriori算法提供候選集的支持度計(jì)數(shù),兩種立方體結(jié)構(gòu)如圖3所示:[0030]兩種立方體的多維表示[0031](4)立方體數(shù)據(jù)讀取策略[0032]將(3)中提出的立方體結(jié)構(gòu)與矩陣思想結(jié)合,在計(jì)算候選集支持度計(jì)數(shù)時(shí),只需要讀取立方體數(shù)據(jù)一次,用于得到候選1-項(xiàng)集的支持度計(jì)數(shù),對(duì)其余候選項(xiàng)集的計(jì)算都在內(nèi)存中,從而比單純使用立方體提高了算法的運(yùn)行效率。[0033]4.基于0LAM的中醫(yī)針灸關(guān)聯(lián)規(guī)則(0LAM_Matrix_Apriori)挖掘算法設(shè)計(jì)[0034](1)構(gòu)造數(shù)據(jù)立方體[0035]通過數(shù)據(jù)預(yù)處理技術(shù)對(duì)原始關(guān)系表重新構(gòu)造,梳理出數(shù)據(jù)倉(cāng)庫(kù)的星型模式,在此基礎(chǔ)上基于Mondrian構(gòu)建了數(shù)據(jù)立方體,完成對(duì)從原始數(shù)據(jù)庫(kù)到數(shù)據(jù)立方體的轉(zhuǎn)化。[0036]構(gòu)造數(shù)據(jù)立方體之前,需要對(duì)原始數(shù)據(jù)庫(kù)中的數(shù)據(jù)往往存在的大量噪聲、數(shù)據(jù)不完整和不一致的數(shù)據(jù)進(jìn)行預(yù)處理。數(shù)據(jù)質(zhì)量的好壞直接影響到數(shù)據(jù)挖掘的效果,所以有必要對(duì)數(shù)據(jù)源進(jìn)行清理,得到規(guī)范的維表和事實(shí)表,提高挖掘的質(zhì)量和效率。目前有大量數(shù)據(jù)預(yù)處理技術(shù),主要包括數(shù)據(jù)清理、數(shù)據(jù)集成、數(shù)據(jù)變換和數(shù)據(jù)歸約[8]。[0037]原始數(shù)據(jù)庫(kù)中的表中有兩列,主鍵和具體內(nèi)容列。首先,掃描原始關(guān)系表中具體內(nèi)容列,將以某種字符分割的內(nèi)容存入哈希集合colHashSet,哈希集合保證了其內(nèi)部所有元素都互不相同,最終得到了一個(gè)互不相同的字符集合。具體過程描述如下:[0038](l)foreachrowoin0riginalTable{[0039](2)將該行中的數(shù)據(jù)按字符分割成列名,存入數(shù)據(jù)colArray[0040](3)foreachitemiincolArray{[0041](4)將itemi存入colHashSet;[0042](5)}[0043](6)}[0044]建立維表DIM_FX,該表中只包含有一個(gè)id列,接著通過遍歷得到的列名集合colHashSet,得到sql語(yǔ)句,向維表DIM_FX中插入數(shù)據(jù)。[0045](l)foreachitemoincolHashSet{[0046](2)executesql:"insertintotableDIM_FX(id)values("+o+")";[0047](3)}[0048]由于哈希集合colHashSet中的列名互不相同,執(zhí)行構(gòu)造的sql語(yǔ)句可以得到一個(gè)數(shù)據(jù)互不相同的維表。同樣需要注意的是,由于可能存在字符串過長(zhǎng)而不適合建表的列名,DIM_FX的字段可以是原始表具體內(nèi)容列中數(shù)據(jù)的對(duì)應(yīng)值,或者有可能將多個(gè)字段看做一個(gè)字段。如果存在這種情況,需要在另外一張表中記錄其與真實(shí)列名的對(duì)應(yīng)關(guān)系,便于程序從這張表中讀取還原信息。接著需要從原始表往改造后的關(guān)系表存入數(shù)據(jù)。循環(huán)遍歷原始表,對(duì)于原始表的每一行數(shù)據(jù),將具體內(nèi)容列中數(shù)據(jù)分行存儲(chǔ)。具體過程如下:[0049](l)foreachrow〇inOriginalTable{//循環(huán)遍歷原始表[0050](2)inti=l;//初始自增id列的值[0051](3)foreachcolumncinNewFactTable{//循環(huán)遍歷改造后的表中的列[0052](4)從columnc中讀取record_id存入變量record_id[0053](5)讀取fx并進(jìn)行處理得到fx集合fx_set[0054](6)for(itemfx_singleinfx_set){[0055](7)executesql:〃insertintoNewFactTable(id,record_id,fx)values(^+(1++)+","+[0056]record_id+","+fx_single+")";[0057](8)}[0058](9)}[0059](10)}[0060]至此已經(jīng)將事實(shí)表和維表建立完畢,通過主關(guān)鍵字和外關(guān)鍵字聯(lián)系在一起,形成"星型模式"。最終通過Mondrian的數(shù)據(jù)立方體定義模式(Schema)文件得到數(shù)據(jù)立方體。其中RE⑶RD_ID維是"退化維",它的維成員來源于事實(shí)表fact_table<3FX維來源于維表DM_FX,度量值仍然使用Count聚集函數(shù)。最終得到一個(gè)如圖4所示的立方體〃CUBE"。[0061]立方體CUBE的多維表示[0062](2)構(gòu)造MDX語(yǔ)句,從立方體數(shù)據(jù)中得到頻繁項(xiàng)集(FrequentItemset)[0063]首先通過執(zhí)行如下MDX語(yǔ)句,得到候選1-項(xiàng)集。對(duì)應(yīng)的MDX語(yǔ)句為:[0064](l)select[Measures].[C0UNT]0NCOLUMNS,[0065](2)[RECORDED],[AllREC0RD_IDs].ChildrenONROWS[0066](3)from[DistinctTest][0067](4)where{[FX].[A]}[0068]將得到所有候選1-項(xiàng)集的Count值,將執(zhí)行結(jié)果存入Dij,得到的矩陣為:[0070]在矩陣Dij中,每一列即為通過Mondrian從0LAP立方體中讀取的候選1-項(xiàng)集的數(shù)據(jù)。由于實(shí)驗(yàn)數(shù)據(jù)中候選1-項(xiàng)集個(gè)數(shù)為3個(gè),所以該矩陣共有3列。[0071]定義如下兩個(gè)函數(shù):[0072]1.函數(shù)fun(X):輸入項(xiàng)集,可以輸出該項(xiàng)集在二維矩陣中對(duì)應(yīng)的向量。[0073]2.函數(shù)supCount(a,b):輸入?yún)?shù)a和b,其中a為項(xiàng)集,b為該項(xiàng)集的大小;輸出該候選集的支持度計(jì)數(shù)。[0074]對(duì)該矩陣的行與行相加,可以得到所有候選集的支持度計(jì)數(shù),如得到候選2項(xiàng)集支持度計(jì)數(shù)的過程為:[0075]fun({A,B})=fun({A})+fun({B})=(l,1,1)+(1,0,1)=(2,1,2)supCount({A,B},2)=2[0076]fun({A,C})=fun({A})+fun({C})=(l,1,1)+(0,0,1)=(1,1,2)supCount({A,C},2)=1[0077]……[0078]fun({C,D})=fun({C})+fun({D})=(0,0,1)+(0,1,0)=(0,1,1)supCount({C,D},2)=0[0079]……[0080]使用2項(xiàng)集的結(jié)果,得到3項(xiàng)集的頻數(shù):[0081]fun({ABC})=fun({AB})+fun({C})=(2,1,2)+(0,0,1)=(2,1,3)supCount(ABC,3)=2[0082]或者[0083]fun({ABC})=fun({AC})+fun({B})=(l,1,2)+(1,0,1)=(2,1,3)supCount(ABC,3)=2[0084]其中候選2-項(xiàng)集得到候選3-項(xiàng)集的實(shí)現(xiàn)方式可能不止一種,項(xiàng)目更多的候選集的實(shí)現(xiàn)方式更多。在實(shí)現(xiàn)過程中隨機(jī)指定即可。候選η-項(xiàng)集(n>=3)的實(shí)現(xiàn)方式依次類推。[0085](3)OLAM_Matrix_Apriori算法實(shí)現(xiàn)[0086]OLAM_Matrix_Apriori算法將關(guān)系表轉(zhuǎn)換為數(shù)據(jù)立方體,改進(jìn)了Apriori算法獲取頻繁項(xiàng)集和生成候選集的步驟,具體實(shí)現(xiàn)為:[0087](1)createCube〗();//對(duì)關(guān)系數(shù)據(jù)表改造,將其轉(zhuǎn)換為數(shù)據(jù)立方體[0088](2)//掃描立方體的所有維,將其存入dimLiSt〈List>[0089](3)初始化L={}[0090](4)Cl=getCandidate(l);//從立方體Dimensions集合中得到候選1-項(xiàng)集Cl[0091](5)HashMap〈TreeSet〈String>,int[]>vectormap=getVector();//得到候選1-項(xiàng)集對(duì)應(yīng)的數(shù)組向量[0092](6)k++;[0093](7)while(Lk-1非空){[0094](8)Ck=genCandidate(k);//根據(jù)頻繁(k-l)_項(xiàng)集Lk-1,得到候選k-項(xiàng)集Ck[0095](9)foreachitemjinCk{//對(duì)每一個(gè)候選集,掃描數(shù)據(jù)立方體Cube2[0096](10)Pk=getSupplementary(j);//得到該候選項(xiàng)的子集[0097](11)itemConf=supCount(j,Pk);//計(jì)算該候選項(xiàng)集的支持度[0098](12)if(itemConf>minsup*N){//對(duì)滿足最小支持度的候選k-項(xiàng)集Ck元素,將其存入頻繁1-項(xiàng)集L1[0099](13)將item存入Lk;[0100](14)}[0101](15)L·add(Lk);//將頻繁k-項(xiàng)集Lk存入L[0102](16)}[0103](17)}[0104](18)returnL//返回全部頻繁項(xiàng)集L[0105]其中函數(shù)createCubd()用于從關(guān)系數(shù)據(jù)庫(kù)中得到數(shù)據(jù)立方體,其具體實(shí)現(xiàn)為:[0106](1)//創(chuàng)建事實(shí)表[0107](2)foreachrowoinOriginalTable{[0108](3)將該行中的數(shù)據(jù)按字符分割成列名,存入數(shù)據(jù)colArray[0109](4)foreachitemiincolArray{[0110](5)將itemi存入colHashSet;[0111](6)}[0112](7)}[0113](8)建立維表DBLFX[0114](9)//往維表中插入數(shù)據(jù)[0115](10)foreachitemoincolHashSet{[0116](ll)executesql:"insertintotableDIM_FX(id)values("+o+")";[0117](12)}[0118](13)//往事實(shí)表中插入數(shù)據(jù)[0119](14)foreachrowoin0riginalTable{//循環(huán)遍歷原始表[0120](15)inti=l;//初始自增id列的值[0121](16)foreachcolumncinNewFactTable{//循環(huán)遍歷改造后的表中的列[0122](17)從columnc中讀取record_id存入變量record_id[0123](18)讀取fx并進(jìn)行處理得到fx集合fx_set[0124](19)for(itemfx_singleinfx_set){[0125](20)executesql:''insertintoNewFactTable(id,record_id,fx)values(^+(1++)+","+[0126]record_id+","+fx_single+")";[0127](21)}[0128](22)}[0129](23)}[0130](24)配置立方體文件,得到數(shù)據(jù)立方體。//以后步驟通過MDX語(yǔ)句從立方體中讀取支持度計(jì)數(shù)[0131]函數(shù)getVector()得到候選1-項(xiàng)集對(duì)應(yīng)的數(shù)組向量,并將結(jié)果存入HashMap〈TreeSet〈String>,int[]>vectormap,getVector()的實(shí)現(xiàn)過程如下:[0132](l)HashMapmap=frequentList.get(0);//取得頻繁一項(xiàng)集的hashmap[0133](2)Set〈TreeSet〈String>>setset=map.keySet();//得到keyset[0134](3)for(TreeSet〈String>slicer:setset){//得到頻繁2項(xiàng)集中的一項(xiàng)[0135](4)StringBuffermdxbuffer=newStringBuffer();[0136](5)mdxbufTer.append("select{[Measures]·[Count]}0NCOLUMNS,"+[0137](6)//[REC0RD_ID].[AllREC0RD_IDs].ChildrenONROWS^[0138](7)//from[DistinctTest]//+[0139](8)//where{//+slicer.toString().substring(1,slicer.toString().length()-D+??;[0140](9)QueryqueryO=connection.parseQuery(mdxbuffer.toString());[0141](10)mdxbuffer.setLength(O);[0142](ll)ResultresultO=connection.execute(queryO);[0143](12)recordsize=result0.getAxes()[l].getPositions().size();[0144](13)int[]pvector=newint[recordsize];[0145](14)for(inti=0;i<recordsize;i++){[0146](15)Stringcellvalue=resultO.getCell(newint[]{0,i}).getFormattedValue();[0147](16)pvector[i]=Integer.parseInt(cellvalue.equals(〃〃)?〃0〃:cellvalue);[0148](17)}[0149](18)vectormap.put(slicer,pvector);//將Set,int□存入hashmap[0150](19)}[0151]函數(shù)getSupplementary(j)用于得到該候選項(xiàng)的子集,它的實(shí)現(xiàn)過程如下:[0152](1)Set<String>slicer=newHashSet<String>();[0153](2)TreeSet<String>slicerO=newTreeSet<String>();[0154](3)slicer.addAll(candidate.get(i));//得到前一項(xiàng)的候選項(xiàng)集[0155](4)slicer0.addAll(candidate·get(i));//用于得到候選項(xiàng)集的補(bǔ)集[0156](5)//獲取第一個(gè)元素,重新封裝成Set[0157](6)//初始化3個(gè)一維數(shù)組[0158](7)int[]firstvetor=newint[recordsize];//firstvetor用于存儲(chǔ)第一個(gè)候選項(xiàng)對(duì)應(yīng)的數(shù)字[0159](8)int[]othervetor=newint[recordsize];//othervetor用于存儲(chǔ)第一個(gè)候選項(xiàng)的補(bǔ)集對(duì)應(yīng)的數(shù)字[0160](9)int[]newvetor=newint[recordsize];//newvetor用于存儲(chǔ)前兩者一維數(shù)組的和[0161](lO)Iteratorit=slicer.iterator();[0162](ll)while(it.hasNextO){//遍歷前一項(xiàng)候選集合中的每個(gè)String元素[0163](12)Strings=(String)it.next();[0164](13)//以下過程得到候選項(xiàng)集的補(bǔ)集[0165](14)Set<String>set=newHashSet<String>();[0166](15)set.add(s);[0167](16)slicer0.remove(s);//得到候選項(xiàng)集的補(bǔ)集[0168]17)}[0169]函數(shù)supCount(j,Pk)用于計(jì)算該候選項(xiàng)集的支持度,具體實(shí)現(xiàn)過程如下:[0170](1)for(intp=0;p<recordsize;p++){[0171](2)inta=firstvetor[p];[0172](3)intb=othervetor[p];[0173](4)intn=a+b;[0174](5)newvetor[p]=n;[0175](6)if(n==k){[0176](7)count++;//計(jì)算頻數(shù)[0177](8)}[0178](9)}[0179]發(fā)明創(chuàng)造的有益效果[0180]基于中醫(yī)針灸處方主題,采用本技術(shù)建立中醫(yī)針灸腧穴運(yùn)用規(guī)律的挖掘模型,為中醫(yī)針灸診斷的腧穴選擇和運(yùn)用提供決策支持。[0181]實(shí)施例[0182]1.實(shí)施例描述[0183]基于中醫(yī)針灸處方主題,對(duì)應(yīng)的關(guān)系數(shù)據(jù)表(TZJ_DATA_PRESCRIPTI0N_0)如下:[0185]關(guān)系數(shù)據(jù)表TZJ_DATA_PRESCRIPTI0N_0[0186]根據(jù)算法(〇LAM_Matrix_Apriori)描述,對(duì)表TZJ_DATA_PRESCRIPTI0N_0進(jìn)行處理,得到針灸腧穴主題的星型模式。轉(zhuǎn)換過程描述如圖5所示:[0187]OLAM_Matrix_Apriori算法中針灸腧穴關(guān)聯(lián)主題星型模式轉(zhuǎn)換過程[0188]2.實(shí)施結(jié)果分析:[0189]我們知道,最小支持度越小、數(shù)據(jù)量越大,算法的運(yùn)行時(shí)間越長(zhǎng)。當(dāng)固定最小支持度minsup為0.1,隨著表中數(shù)據(jù)條目的增多,OLAM_Matrix_Apriori算法和Apriori算法的運(yùn)行時(shí)間如下表所示:[0190]表1實(shí)施結(jié)果對(duì)比(單位:ms)[0192]數(shù)據(jù)量固定為5000條時(shí),可以得到OLAM_Matrix_Apriori與Apriori算法隨最小支持度變化的運(yùn)行時(shí)間比較如下:[0193]表2實(shí)施結(jié)果對(duì)比(單位:s)[0195]通過實(shí)施結(jié)果可以看出,采用立方體結(jié)構(gòu)并結(jié)合矩陣思想,將求取支持度計(jì)數(shù)的工作由從硬盤讀取數(shù)據(jù)轉(zhuǎn)移到從內(nèi)存讀取,〇LAM_Matrix_Apriori算法在數(shù)據(jù)量增多時(shí),其運(yùn)行時(shí)間隨著數(shù)據(jù)量的增多沒有明顯的增長(zhǎng),明顯優(yōu)于與它對(duì)比的Apriori算法。[0196]對(duì)本發(fā)明應(yīng)當(dāng)理解的是,以上所述的實(shí)施例,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)的說明,以上僅為本發(fā)明的實(shí)施例而已,并不用于限定本發(fā)明,凡是在本發(fā)明的精神原則之內(nèi),所作出的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi),本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求所界定的保護(hù)范圍為準(zhǔn)。【主權(quán)項(xiàng)】1.一種基于OLAM的多維度中醫(yī)針灸關(guān)聯(lián)規(guī)則挖掘方法,通過OLAP與數(shù)據(jù)挖掘模型相結(jié)合來對(duì)中醫(yī)針灸數(shù)據(jù)進(jìn)行多維數(shù)據(jù)分析,實(shí)現(xiàn)了數(shù)據(jù)立方體和數(shù)據(jù)挖掘算法的無(wú)縫集成,其主要內(nèi)容包括:采用數(shù)據(jù)預(yù)處理技術(shù)對(duì)原始關(guān)系表進(jìn)行構(gòu)造,得到數(shù)據(jù)倉(cāng)庫(kù)的星型模式,基于M〇ndrian(〇lap服務(wù)器)構(gòu)建了數(shù)據(jù)立方體,完成對(duì)從原始數(shù)據(jù)庫(kù)到數(shù)據(jù)立方體的轉(zhuǎn)化;基于立方體模型的結(jié)構(gòu),通過構(gòu)造與之適合的查詢語(yǔ)句,獲得立方體信息,即從立方體數(shù)據(jù)中得到候選項(xiàng)集、頻繁項(xiàng)集;通過置信度,獲得相關(guān)聯(lián)結(jié)果。2.根據(jù)權(quán)利要求1所述的基于0LAM的多維度中醫(yī)針灸關(guān)聯(lián)規(guī)則挖掘方法,首先掃描原始關(guān)系表中具體內(nèi)容列,將以某種字符分割的內(nèi)容存入哈希集合,得到一個(gè)互不相同的字符集合。然后從原始表往改造后的關(guān)系表存入數(shù)據(jù)。循環(huán)遍歷原始表,對(duì)于原始表的每一行數(shù)據(jù),如果改造的表中有符合的列,則對(duì)其進(jìn)行轉(zhuǎn)換得到星型模式中的"事實(shí)表"。接著遍歷存放列名(或其對(duì)應(yīng)列)的哈希集合,根據(jù)其中的每個(gè)元素建立一個(gè)特殊的表,該表只有與改造后的事實(shí)表中列相對(duì)應(yīng)的一列。最后將事實(shí)表和維表通過主外鍵的關(guān)聯(lián)聯(lián)系在一起,形成"星型模式",得到數(shù)據(jù)立方體。3.根據(jù)權(quán)利要求1所述的基于0LAM的多維度中醫(yī)針灸關(guān)聯(lián)規(guī)則挖掘方法,采用維度切片的方法計(jì)算出各維的支持度計(jì)數(shù),從而得到全部頻繁1-項(xiàng)集;通過循環(huán)迭代的方式從頻繁(k-Ι)-項(xiàng)集中得到候選k-項(xiàng)集Ck,最終從Ck中搜索出頻繁k-項(xiàng)集Lk(k>1)。4.根據(jù)權(quán)利要求1所述的基于OLAM的多維度中醫(yī)針灸關(guān)聯(lián)規(guī)則挖掘方法,其特征在于,在構(gòu)建數(shù)據(jù)立方體之前還包括對(duì)原始數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行預(yù)處理,所述數(shù)據(jù)預(yù)處理包括數(shù)據(jù)清理、數(shù)據(jù)集成、數(shù)據(jù)變換和數(shù)據(jù)歸約。5.根據(jù)權(quán)利要求1所述的基于OLAM的多維度中醫(yī)針灸關(guān)聯(lián)規(guī)則挖掘方法,其特征在于,所述的查詢語(yǔ)句為MDX查詢語(yǔ)言。6.根據(jù)權(quán)利要求1所述的基于OLAM的多維度中醫(yī)針灸關(guān)聯(lián)規(guī)則挖掘方法,其特征在于,數(shù)據(jù)倉(cāng)庫(kù)星型模式是建立在原始關(guān)系數(shù)據(jù)庫(kù)中的,是對(duì)原始關(guān)系數(shù)據(jù)庫(kù)表數(shù)據(jù)的規(guī)范和抽取,在數(shù)據(jù)抽取步驟包括:對(duì)數(shù)據(jù)量大、數(shù)據(jù)動(dòng)態(tài)變化的表進(jìn)行分時(shí)段進(jìn)行插入、更新和刪除操作,并對(duì)數(shù)據(jù)進(jìn)行規(guī)則化和對(duì)異常數(shù)據(jù)清洗;在事務(wù)數(shù)據(jù)庫(kù)(Oracle)中抽取出維表、事實(shí)表,由這些表構(gòu)成了數(shù)據(jù)倉(cāng)庫(kù)的星型模型,當(dāng)星型模型建立完成之后,對(duì)星型模型的維表、事實(shí)表進(jìn)行配置得到數(shù)據(jù)立方體。7.根據(jù)權(quán)利要求1所述的基于OLAM的多維度中醫(yī)針灸關(guān)聯(lián)規(guī)則挖掘方法,其特征在于,Mondrian對(duì)MDX查詢過程緩存了立方體的中間計(jì)算結(jié)果,對(duì)中間結(jié)果會(huì)暫時(shí)存儲(chǔ)于內(nèi)存中,在讀取一個(gè)大的立方體時(shí),首先會(huì)從內(nèi)存中查找其子立方體,如果內(nèi)存中存在該子立方體,那么就直接從內(nèi)存中讀取其緩存結(jié)果。【文檔編號(hào)】G06F17/30GK106095859SQ201610390244【公開日】2016年11月9日【申請(qǐng)日】2016年6月2日公開號(hào)201610390244.4,CN106095859A,CN106095859A,CN201610390244,CN-A-106095859,CN106095859A,CN106095859A,CN201610390244,CN201610390244.4【發(fā)明人】文立玉,舒紅平,張殿超,李驥【申請(qǐng)人】成都淞幸科技有限責(zé)任公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1