欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于機(jī)器學(xué)習(xí)聚類算法的門禁數(shù)據(jù)異常檢測(cè)方法與流程

文檔序號(hào):12121980閱讀:385來源:國(guó)知局
基于機(jī)器學(xué)習(xí)聚類算法的門禁數(shù)據(jù)異常檢測(cè)方法與流程
本發(fā)明涉及門禁
技術(shù)領(lǐng)域
,特別涉及一種基于機(jī)器學(xué)習(xí)聚類算法的門禁數(shù)據(jù)異常檢測(cè)方法。
背景技術(shù)
:大數(shù)據(jù)分析技術(shù)與社會(huì)化行為數(shù)據(jù)的結(jié)合在近年來得到了飛速發(fā)展,這一方面得益于大數(shù)據(jù)平臺(tái)的持續(xù)發(fā)展,比如開源的Hadoop、Spark、Hbase等分布式計(jì)算、存儲(chǔ)框架的成熟。這些新技術(shù)伴隨著互聯(lián)網(wǎng)行業(yè)的爆發(fā),已經(jīng)被廣泛應(yīng)用于服務(wù)器的惡意請(qǐng)求分析、垃圾郵件過濾、購(gòu)物推薦、圖像識(shí)別等領(lǐng)域?;跈C(jī)器學(xué)習(xí)的聚類、分類、回歸等算法借助分布式大數(shù)據(jù)平臺(tái)和工具的威力使得人們有能力對(duì)不斷增長(zhǎng)的數(shù)據(jù)規(guī)模進(jìn)行深度分析。另一方面,得益于多種類型的傳感器被大量應(yīng)用于檢測(cè)和收集社會(huì)化行為數(shù)據(jù),可供分析的數(shù)據(jù)資源空前豐富。怎樣從所獲得的數(shù)據(jù)中挖掘出社會(huì)化行為的規(guī)律、特征及其他深度信息,成為一個(gè)具有相當(dāng)高研究?jī)r(jià)值的問題。已有的應(yīng)用比較成熟的領(lǐng)域有醫(yī)療疾病治療、人類基因編碼分析、交通導(dǎo)航等。而在非商業(yè)領(lǐng)域,新技術(shù)推進(jìn)的步伐并不是很快,比如對(duì)出入社區(qū)門禁人員的異常刷卡行為的監(jiān)測(cè)方面,門禁記錄數(shù)據(jù)的分析利用仍處于初級(jí)階段,僅限于記錄社區(qū)人員和來訪人員的進(jìn)出門禁情況,用以統(tǒng)計(jì)常住人口和來訪人員。而且門禁系統(tǒng)自身的運(yùn)行效率和狀態(tài)往往受到人為管理水平不穩(wěn)定和門禁設(shè)備不夠完善等缺陷的約束,對(duì)記錄的進(jìn)一步挖掘和利用極其匱乏。技術(shù)實(shí)現(xiàn)要素:為了解決上述發(fā)明問題,本發(fā)明提供了一種基于機(jī)器學(xué)習(xí)聚類算法的門禁數(shù)據(jù)異常檢測(cè)方法,實(shí)現(xiàn)對(duì)門禁記錄數(shù)據(jù)的自動(dòng)分類,根據(jù)每類中記錄的數(shù)量值可以合理給出異常度的定義,其中記錄數(shù)量最少的類即為最異常類。具體地,為達(dá)到上述目的,本發(fā)明提出了基于機(jī)器學(xué)習(xí)聚類算法的門禁記錄異常度分析方法,內(nèi)容包括:步驟1、數(shù)據(jù)清洗:清除原始門禁記錄中的無效數(shù)據(jù)。原始門禁記錄中因違規(guī)管理(多人同時(shí)使用一張門卡進(jìn)出門禁等情況)、設(shè)備功能不完善(設(shè)備采樣率設(shè)置不合理或異常)等問題,出現(xiàn)個(gè)別門卡刷卡次數(shù)遠(yuǎn)高于多數(shù)門卡、短時(shí)內(nèi)重復(fù)刷卡等情況,進(jìn)而表現(xiàn)為門禁記錄中的無效數(shù)據(jù)。數(shù)據(jù)清洗的方法為:統(tǒng)計(jì)門禁記錄中每個(gè)門卡號(hào)的刷卡次數(shù)和刷卡時(shí)間序列,刪除刷卡次數(shù)超過某個(gè)閾值(例如每日刷卡次數(shù)排名前十)的門卡號(hào)記錄,再刪除相鄰刷卡時(shí)間間隔小于某個(gè)閾值(例如30秒)的記錄。經(jīng)此處理,得到可進(jìn)一步分析的有效門禁記錄數(shù)據(jù)。步驟2、提取門禁記錄的刷卡行為特征。特征提取是整個(gè)方法中最關(guān)鍵的一步,所提取的特征需能夠合理反映門禁刷卡行為是否存在異常。經(jīng)步驟1清洗之后的單條門禁記錄的存儲(chǔ)格式為(Index,ID,time,gateflag),其中Index為刷卡記錄的序號(hào),ID為門卡號(hào),time為刷卡時(shí)間,gateflag為進(jìn)出門禁的標(biāo)識(shí),gateflag=1表示進(jìn)入小區(qū),gateflag=0表示離開小區(qū)??梢灶A(yù)見,與一個(gè)門卡是否存在異常相關(guān)聯(lián)的因素至少包含:一天內(nèi)的刷卡次數(shù)、刷卡時(shí)間分布、進(jìn)出門禁的比例?;诖?,統(tǒng)計(jì)在一天內(nèi)單個(gè)門卡在0-5時(shí)、6-11時(shí)、12-17時(shí)、18-23時(shí)四個(gè)時(shí)間段內(nèi)的刷卡次數(shù),記為n1、n2、n3、n4,將原門禁記錄格式轉(zhuǎn)化為(ID,n1,n2,n3,n4,gateflag),新格式能表征前述與門卡異常度相關(guān)聯(lián)的三個(gè)因素,即為所提取的門禁記錄刷卡行為特征。步驟3、基于機(jī)器學(xué)習(xí)的聚類分析。一個(gè)中等規(guī)模社區(qū)的門禁系統(tǒng)經(jīng)過三個(gè)月到半年時(shí)間將累積產(chǎn)生幾十萬到上百萬條記錄,此數(shù)據(jù)規(guī)模適合采用機(jī)器學(xué)習(xí)方法。所采用的K均值聚類算法的核心思想:將步驟2得到的特征記錄投射到特征空間中,每條記錄對(duì)應(yīng)為空間中的一點(diǎn),將空間中的所有數(shù)據(jù)點(diǎn)按照距離遠(yuǎn)近進(jìn)行分類,最終所有的數(shù)據(jù)點(diǎn)都被劃分到與其最近的類中。聚類計(jì)算需要人為設(shè)定合理的類數(shù)量,一個(gè)簡(jiǎn)單的辦法是考慮數(shù)據(jù)點(diǎn)與所對(duì)應(yīng)類的中心的距離,當(dāng)將所有數(shù)據(jù)點(diǎn)劃分到n個(gè)類時(shí),計(jì)算所有數(shù)據(jù)點(diǎn)與其類心距離的總和,該值隨著分類數(shù)量增加而逐漸減少,在n達(dá)到某一個(gè)閾值時(shí),再增加分類數(shù)量不會(huì)明顯減小總距離,這個(gè)閾值即可設(shè)為最終的分類數(shù)量。步驟4、定義異常度、抽取異常刷卡行為。通過K均值方法可以將記錄數(shù)據(jù)劃分到n個(gè)類中,有兩種方法定義數(shù)據(jù)的異常度,一是計(jì)算每個(gè)數(shù)據(jù)點(diǎn)距離所有數(shù)據(jù)中心的距離,值越大表示該點(diǎn)異常度越高,二是按照每一類的數(shù)據(jù)量定義異常度,類內(nèi)數(shù)據(jù)點(diǎn)越少表示該類越異常。因?yàn)榈谝环N方法計(jì)算量較大,所以本發(fā)明采用第二種方法,數(shù)據(jù)點(diǎn)最少的類中的記錄即為異常刷卡行為。本發(fā)明實(shí)施例的有益效果是:深度挖掘出社區(qū)門禁信息,能夠得到異常記錄,是加強(qiáng)社區(qū)安全管理的有力工具。開創(chuàng)性地運(yùn)用機(jī)器學(xué)習(xí)技術(shù),與常規(guī)的人工搜索相比,能夠更精準(zhǔn)地得到數(shù)據(jù)中的異常信息,尤其適用于動(dòng)態(tài)遞增的海量數(shù)據(jù)情況。根據(jù)由計(jì)算得到的異常度,能有效判斷任一記錄的安全等級(jí)。由歷史紀(jì)錄提煉出的數(shù)據(jù)模型,可實(shí)時(shí)處理新出現(xiàn)的記錄,實(shí)時(shí)判斷該記錄的異常度。附圖說明圖1為本發(fā)明實(shí)施例的基于機(jī)器學(xué)習(xí)聚類算法的門禁數(shù)據(jù)異常檢測(cè)方法流程圖。圖2為本發(fā)明實(shí)施例的異常類計(jì)算結(jié)果。具體實(shí)施方式實(shí)施例1參見圖1與圖2,本發(fā)明提供一種基于機(jī)器學(xué)習(xí)聚類算法的門禁數(shù)據(jù)異常檢測(cè)方法。以某社區(qū)的真實(shí)門禁數(shù)據(jù)為例,詳細(xì)描述本發(fā)明的操作步驟。步驟1、數(shù)據(jù)清洗。原始數(shù)據(jù)記錄的時(shí)間跨度為三個(gè)月,典型的刷卡記錄如下:表1社區(qū)門禁刷卡原始記錄示例記錄序號(hào)卡號(hào)刷卡時(shí)間進(jìn)出標(biāo)識(shí)8079002345212016-03-1821:45:3218100002374532016-03-1913:18:2618314002354192016-03-1913:33:4718682002301732016-03-1914:11:2708802002325172016-03-1914:19:131表中第一列為每條記錄對(duì)應(yīng)的序號(hào);第二列為門卡號(hào);第三列為刷卡時(shí)間;第四列為進(jìn)出門禁的方向標(biāo)識(shí),“1”表示出,“0”表示進(jìn)。門禁系統(tǒng)因?yàn)榇嬖诠芾硎杪?,?jīng)常出現(xiàn)管理人員使用同一張卡打開門禁的情況,所以原始數(shù)據(jù)中存在個(gè)別門卡號(hào)刷卡次數(shù)過多;同時(shí)門禁系統(tǒng)的刷卡設(shè)備存在采樣率設(shè)置不當(dāng)或采樣不穩(wěn)定等問題,間斷性地出現(xiàn)在短時(shí)內(nèi)(比如10秒)多次記錄同一刷卡行為,導(dǎo)致原始記錄中存在一定量的冗余。由這些因素導(dǎo)致的無效記錄信息,需要通過統(tǒng)計(jì)分析進(jìn)行排除,采用開源的ApacheSpark進(jìn)行數(shù)據(jù)清洗操作,代碼如下。//導(dǎo)入時(shí)間處理相關(guān)的三個(gè)庫(kù),對(duì)原始記錄中的時(shí)間格式進(jìn)行調(diào)整importjava.sql.Timestampimportjava.text.SimpleDateFormatimportjava.util.Date//導(dǎo)入原始數(shù)據(jù),并對(duì)數(shù)據(jù)進(jìn)行初步解析valinput=sc.textFile("dir/to/data.csv").map{x=>x.split(",")}.map{x=>(x(2),(x(3),x(1),x(4),x(0)))}//轉(zhuǎn)換數(shù)據(jù)中的時(shí)間格式valresidents=input.map{case(x,(y,z,g,h))=>(x,List(Timestamp.valueOf(y).getTime.toString,z,g,h))}.cache//檢索刷卡次數(shù)最多的門卡號(hào)valresidentCount=residents.countByKey.toList.sortBy{case(id,count)=>count}.reverse//刪除出現(xiàn)次數(shù)過多、時(shí)間間隔過小的記錄valperIdInfor=residents.groupByKey.map{case(id,other)=>{vartemp1=other.toList.sortBy{x=>x(0).toLong};(id,temp1)}}valreducedRecords=perIdInfor.map{case(id,other)=>{vartemp2=List(other(0));for(i<-0toother.length-2){if(other(i)(2).toInt!=other(i+1)(2).toInt){vartemp3=temp2:::List(other(i+1));temp2=temp3;}else{if(other(i+1)(0).toLong-other(i)(0).toLong>300000){vartemp3=temp2:::List(other(i+1));temp2=temp3;}}};(id,(temp2.length,temp2))}}步驟2、特征提取。原始數(shù)據(jù)以每一次刷卡記錄為一條數(shù)據(jù),而我們關(guān)心的是同一門卡號(hào)在一天內(nèi)的總體刷卡行為,所以需要對(duì)清洗后的數(shù)據(jù)按天進(jìn)行劃分,并統(tǒng)計(jì)一天內(nèi)同一門卡號(hào)的刷卡行為,代碼如下:valreducedData=reducedRecords.flatMapValues{case(n,records)=>records}//以天為單位統(tǒng)計(jì)單個(gè)門卡號(hào)的記錄,并提取其在0-5時(shí)、6-11時(shí)、12-17時(shí)、18-23時(shí)四個(gè)時(shí)間段上刷卡次數(shù)作為特征。valrefDate=Timestamp.valueOf("1970-01-0100:00:00").getTimevalperDayData=reducedData.map{case(id,other)=>{vardayGap=(other(0).toLong-refDate)/86400000;varquartDayNum=(other(0).toLong-refDate)/21600000%4;(id++"#"++dayGap.toString,List(dayGap.toString,quartDayNum.toString,other(1),other(2),other(3)))}}valperIdDayData=perDayData.groupByKeyvalperDayFeature=perIdDayData.map{case(id,other)=>{vartempOther=other.toList;varflagOne=other.toList.map(x=>x(3).toInt).sum;varq0=other.toList.filter(x=>x(1).toInt==0).length;varq1=other.toList.filter(x=>x(1).toInt==1).length;varq2=other.toList.filter(x=>x(1).toInt==2).length;varq3=tempOther.length-q0-q1-q2;(id,List(q0,q1,q2,q3,flagOne*1.0/tempOther.length))}}在上述代碼中,將以(ID,time,gateflag)格式存儲(chǔ)的記錄轉(zhuǎn)變?yōu)?ID,特征)的格式。將全天時(shí)間根據(jù)當(dāng)?shù)貢r(shí)區(qū)分為0-5時(shí)、6-11時(shí)、12-17時(shí)、18-23時(shí)四個(gè)時(shí)間段,分別統(tǒng)計(jì)單個(gè)ID在一天內(nèi)在前述四個(gè)時(shí)間段內(nèi)的刷卡次數(shù),相應(yīng)記為n1、n2、n3、n4。經(jīng)此處理,原記錄轉(zhuǎn)變?yōu)?ID,n1,n2,n3,n4,gateflag)的格式,其中特征項(xiàng)n1、n2、n3、n4能同時(shí)體現(xiàn)某個(gè)ID在某一天內(nèi)的刷卡時(shí)間分布特征和刷卡次數(shù)特征,特征項(xiàng)gateflag能體現(xiàn)該ID進(jìn)出門禁的方向特征。步驟3、聚類分析。聚類算法分析中需要人工設(shè)定分類數(shù)目K,所選定的K值需使得分類結(jié)果趨于穩(wěn)定。判斷分類結(jié)果質(zhì)量的一種方法是計(jì)算所有數(shù)據(jù)點(diǎn)與相應(yīng)類心的距離平均值。為此,在下面所示的代碼中定義了distToCentroid函數(shù)用以計(jì)算該距離,并在K值范圍5-40內(nèi)分別計(jì)算平均距離,通過比對(duì)不同K值的平均距離,以選定合理的K值,在本實(shí)例中,最終選定的K=30。defdistance(a:Vector,b:Vector)={math.sqrt(a.toArray.zip(b.toArray).map(p=>p._1-p._2).map(d=>d*d).sum)}defdistToCentroid(datum:Vector,model:KMeansModel)={valcluster=model.predict(datum);valcentroid=model.clusterCenters(cluster);distance(centroid,datum)}importorg.apache.spark.rdd._defclusteringScore(data:RDD[Vector],k:Int)={valkmeans=newKMeans();kmeans.setK(k);valmodel=kmeans.run(data);data.map(datum=>distToCentroid(datum,model)).mean()}(5to40by5).map(k=>(k,clusteringScore(K_data,k))).foreach(println)需要注意的是,上述代碼僅用于選取K值,一旦該值給定,這些代碼將不再使用,不包含在生產(chǎn)代碼中。選定K值后,下一步工作是對(duì)數(shù)據(jù)進(jìn)行機(jī)器學(xué)習(xí),代碼如下。valkmeans=newKMeans()kmeans.setK(30)valmodel=kmeans.run(K_data)步驟4、結(jié)果提取。使用上述機(jī)器學(xué)習(xí)獲得的聚類模型,應(yīng)用于所有數(shù)據(jù)記錄,可得到每一記錄的歸屬類,并統(tǒng)計(jì)每一類的記錄數(shù)量。代碼如下。//計(jì)算每個(gè)數(shù)據(jù)點(diǎn)所屬的類,并統(tǒng)計(jì)類內(nèi)的數(shù)據(jù)點(diǎn)數(shù)量。valcluster_feature=feature.map{case(label,datum)=>valcluster=model.predict(datum);(cluster,label,datum)}valclusterCounts=cluster_feature.map{case(x,y,z)=>x}.countByValue.map{case(x,y)=>(y,x)}.toList.sortBy{case(x,y)=>x}然后統(tǒng)計(jì)記錄數(shù)量最小的類,這些類即是需要查找的異常類,代碼如下。valabnormalCluster=clusterCounts.take(selected_K/5)valabnormalRecords=abnormalCluster.map{case(count,cluster)=>cluster_feature.filter{case(c,label,datum)=>c==cluster}.collect}valabnormalData=abnormalRecords.flatMap(x=>x.toList)//抽取異常類中的記錄valabnormalID=abnormalData.map{case(cluster,id,vector)=>(id.slice(0,18),cluster)}valabnormalID_2=sc.makeRDD(abnormalID).repartition(1).countByKey.toList.sortBy{case(id,count)=>count}.reverse步驟5、結(jié)果驗(yàn)證。K均值分析得到的聚類結(jié)果如圖2所示。類內(nèi)記錄數(shù)量直接與異常度關(guān)聯(lián),類22的異常度最高,類11的異常度最低。本實(shí)例中選取所有類的1/5作為異常類輸出,即為類22、27、2、26、15和19,由上面可見,這6個(gè)類的記錄總數(shù)并不是很多,較合理地定義了異常類。隨機(jī)選取類22和11中個(gè)5條記錄,以驗(yàn)證分類質(zhì)量。結(jié)果如下表所示。表2類22中的記錄示例ID0-5時(shí)(次)6-11時(shí)(次)12-17時(shí)(次)18-23時(shí)(次)“出”占比100780.53201590.4300760.464301060.42500570.5表3類11中的記錄示例ID0-5時(shí)(次)6-11時(shí)(次)12-17時(shí)(次)18-23時(shí)(次)“出”占比100011200010300010400010500010表2表示異常的刷卡行為包括下午和晚上的多次刷卡,表3表示最正常的刷卡行為是晚上出現(xiàn)的單次刷卡。這里需要進(jìn)一步解釋為什么最正常的刷卡行為出現(xiàn)在下班之后,而不是早上上班時(shí),原因是早上上班人流較集中,一次刷卡,多人可以一起出門禁,多數(shù)人都不用刷卡,而晚上下班時(shí),分散的陸陸續(xù)續(xù)的刷卡較多。通過簡(jiǎn)單的對(duì)比,能夠說明此聚類分析結(jié)果的質(zhì)量較好。在本說明書的描述中,參考術(shù)語(yǔ)“一個(gè)實(shí)施例”、“一些實(shí)施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)包含于本發(fā)明的至少一個(gè)實(shí)施例或示例中。在本說明書中,對(duì)上述術(shù)語(yǔ)的示意性表述不必須針對(duì)的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任一個(gè)或多個(gè)實(shí)施例或示例中以合適的方式結(jié)合。此外,在不相互矛盾的情況下,本領(lǐng)域的技術(shù)人員可以將本說明書中描述的不同實(shí)施例或示例以及不同實(shí)施例或示例的特征進(jìn)行結(jié)合和組合。以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。當(dāng)前第1頁(yè)1 2 3 
當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
连山| 吉木萨尔县| 宾阳县| 田东县| 鹤山市| 海伦市| 桓台县| 南开区| 迁安市| 榆林市| 博罗县| 巴林右旗| 洮南市| 鹤岗市| 镇宁| 彩票| 望都县| 潜山县| 丹巴县| 五家渠市| 德惠市| 博客| 黎城县| 伊金霍洛旗| 从江县| 桓台县| 顺昌县| 安国市| 河源市| 清水河县| 丹棱县| 龙井市| 渭源县| 满城县| 吉隆县| 耒阳市| 建瓯市| 马尔康县| 伊金霍洛旗| 文登市| 耒阳市|