1 總體設(shè)計
根據(jù)學(xué)校人工智能實驗室理念架構(gòu),按照模塊化的設(shè)計思想,整個實訓(xùn)實驗室結(jié)構(gòu)規(guī)劃如下:
在120人規(guī)模的實驗室室建設(shè)中,使用先進的多租戶技術(shù)將實驗室分為30個實驗組(每組4人),并為授課教師提供獨立實驗環(huán)境,除管理學(xué)生實驗內(nèi)容外,可同時進行科研項目開發(fā)。
實驗室依據(jù)業(yè)務(wù)屬性,共分為3個功能區(qū):
1)實驗區(qū):學(xué)生學(xué)習(xí)人工智能實驗室課程內(nèi)容和實際操作實驗課程的區(qū)域,根據(jù)每組學(xué)生數(shù)量配置終端(PC);
2)實驗設(shè)備區(qū):放置實驗室實驗設(shè)備的區(qū)域,包括服務(wù)器、網(wǎng)絡(luò)設(shè)備和軟件,所有的實驗內(nèi)容均運行在該實驗設(shè)備區(qū)內(nèi);
3)實驗管理區(qū):老師管理區(qū)和演示區(qū),負責(zé)演示實驗課程內(nèi)容并對所有實驗組的實驗設(shè)備做監(jiān)控和管理。
學(xué)生可分為不同實驗小組進行實戰(zhàn)練習(xí),每個小組內(nèi)不超過5人,集群可將計算、存儲資源隔離,使實驗小組間底層隔離,互不影響;教師區(qū)實驗設(shè)備性能較高,除帶領(lǐng)學(xué)生外,還可承接校內(nèi)大數(shù)據(jù)集中、應(yīng)用開發(fā)等項目。
2 人工智能一體機方案
服務(wù)器將按照學(xué)校要求提供對應(yīng)配置的人工智能一體機,提供企業(yè)級機架式(非刀片式)服務(wù)器,模塊化架構(gòu),可堆疊,優(yōu)先考慮高密度服務(wù)器。通過軟硬件一體化裝置實現(xiàn)計算、存儲、網(wǎng)絡(luò)、虛擬化和應(yīng)用融合的緊密集成的平臺。
每個獨立物理計算節(jié)點的技術(shù)要求如下:
1、系統(tǒng)擴展性和擴容性:采用橫向擴展的架構(gòu),可隨著節(jié)點的增加而使得CPU、內(nèi)存、存儲、網(wǎng)絡(luò)等均在一種平衡模式上增加,確保擴展沒有瓶頸。支持在線升級,保證隨數(shù)據(jù)存儲和計算需求的增長而平滑升級。平臺由多個單機組成的大數(shù)據(jù)集群架構(gòu),所有組件可選配萬兆以太網(wǎng)或者Infiniband網(wǎng)絡(luò)或者千兆以太網(wǎng)互聯(lián)。為保證平臺7×24小時連續(xù)可用性,系統(tǒng)必須支持在線擴展,系統(tǒng)擴展時不需要停機,系統(tǒng)擴展時,平臺整體性能保持基本同比增長
2、關(guān)鍵應(yīng)用的高可用性:采用工程化設(shè)計,可提供高級別的高可用性。所有故障類型均可得到防護,包括磁盤、服務(wù)器、網(wǎng)絡(luò)等簡單故障,以及站點故障和人為失誤等復(fù)雜故障。擁有完整的冗余的硬件保護,包括冗余的供電電源、冗余的風(fēng)扇等。
3、支持PCIE-SSD閃存加速:允許用戶將頻繁訪問的表數(shù)據(jù)保存在SSD中緩存中,同時不常訪問的數(shù)據(jù)仍保存在磁盤中。這種方式兼具SSD的高性能與磁盤的大容量和低成本。允許用戶任意指定數(shù)據(jù)庫表、分區(qū)和段的數(shù)據(jù)駐留在SSD上。在SSD閃存中實現(xiàn)列式存儲,更進一步提高SSD閃存加速效果,在TPC-DS基準(zhǔn)測試中性能提升10倍以上。
4、通過中斷優(yōu)化、內(nèi)核優(yōu)化、BIOS優(yōu)化、NUMA優(yōu)化實現(xiàn)分布式處理能力提升。
3 人工智能教學(xué)平臺方案
教學(xué)平臺為整個系統(tǒng)提供教學(xué)、教務(wù)管理功能,提供班級、教師、學(xué)生的管理權(quán)限、課程計劃、學(xué)習(xí)記錄、學(xué)習(xí)成績、實驗報告等管理功能,系統(tǒng)采用B/S架構(gòu),兼容主流瀏覽器,如谷歌、火狐等。教學(xué)平臺主要功能如下:
3.1 教學(xué)管理功能
支持管理員、班主任、教師、學(xué)生等多種角色。
支持學(xué)籍管理,包括:班級的增刪、編輯;教師的增刪、編輯;學(xué)生的增刪、編輯。
3.1.1 班級管理
提供對專業(yè)下屬班級的增加、刪除、修改、查詢功能。
3.1.2 學(xué)生管理
提供對班級內(nèi)學(xué)生的管理,學(xué)生內(nèi)容包含姓名、學(xué)號、所屬班級、所屬專業(yè)、聯(lián)系手機、登錄次數(shù)等內(nèi)容。
3.1.3 交流日志查詢
對實訓(xùn)機分享交流的內(nèi)容進行查詢,包含交流IP、相關(guān)學(xué)員、相關(guān)老師、實訓(xùn)機編號、交流內(nèi)容等內(nèi)容。
3.1.4 成績管理
對于學(xué)習(xí)中心在線學(xué)習(xí)的學(xué)習(xí)考核成績進行管理,包含查詢及刪除等功能。
3.1.5 考試管理
支持考試管理,包括:增刪、編輯試題;發(fā)布班級考試通告;在線考試,并自動完成批閱(客觀題);查詢考試成績及正確答案;生成考試報表,并可查看及下載。
3.2 在線學(xué)習(xí)功能
3.2.1 開通課程計劃
對于學(xué)習(xí)開課計劃的字段內(nèi)容包含計劃名稱、授課講師、授課時間段、開通狀態(tài)、允許申請周期,允許申請人數(shù)等,功能提供綁定課程計劃相關(guān)實訓(xùn)平臺課程、授課助教、云試驗機綁定、實驗任務(wù)綁定等功能。
3.2.2 學(xué)習(xí)記錄功能
提供每個學(xué)生在學(xué)習(xí)中心平臺內(nèi)學(xué)習(xí)課程的學(xué)習(xí)記錄,包含日期、計劃、課程、章節(jié)、學(xué)習(xí)IP等。
3.2.3 學(xué)習(xí)行為報表
對所有學(xué)生的課程學(xué)習(xí)記錄進行統(tǒng)計,包含個體統(tǒng)計、班級統(tǒng)計、全體統(tǒng)計等。
3.3 在線實訓(xùn)功能
3.3.1 學(xué)生實訓(xùn)操作
提供學(xué)生根據(jù)姓名、學(xué)號、密碼登錄系統(tǒng)進行實訓(xùn)操作,學(xué)生只需安裝瀏覽即可進行試驗任務(wù)操作;提供實訓(xùn)課程在線學(xué)習(xí)功能、試驗機在線操作、試驗報告提交、試驗機界面截圖、記錄課程學(xué)習(xí)時長等。
3.3.2 測驗習(xí)題管理
提供對課程相關(guān)的習(xí)題管理,題型包含單選、多選、判斷題等類型,對習(xí)題進行增、刪、改、查操作。
3.4 后臺管理功能
3.4.1 分級權(quán)限功能
系統(tǒng)分為總管理員、助教等二級管理角色,總管理員進行管理所有的功能點,助教可以進行班級管理、學(xué)生管理、開課計劃制作、試驗機遠程協(xié)助等。
3.4.2 試驗機桌面分享
提供試驗機桌面分享功能,如學(xué)生在學(xué)習(xí)、操作云試驗機的過程中,有問題可以向老師發(fā)起協(xié)助請求,助教在收到請求時,可以遠程訪問學(xué)生的試驗機,并指導(dǎo)如何操作。
3.4.3 平臺集群架構(gòu)支撐
平臺基于x86服務(wù)器本地的計算與存儲資源,分布式存儲,計算集群可以動態(tài)調(diào)整,從數(shù)臺到數(shù)千臺之間彈性擴展,按需構(gòu)建應(yīng)用。支持VMWare、HyperV等虛擬化軟件。
集成MapReduce、Spark、Storm、Tez、Sparkstreaming、Flink 等多種計算框架,利用yarn資源管理做統(tǒng)一管理,可在同一份數(shù)據(jù)集上運行多種計算,支持離線計算、實時計算、流式計算、全文檢索、數(shù)據(jù)挖掘等數(shù)據(jù)應(yīng)用能力。
3.4.4 平臺集群管理功能
平臺采用B/S架構(gòu)提供實訓(xùn)機集群管理,對實訓(xùn)室所屬服務(wù)器進行新增、刪除、備份、恢復(fù)及遷移功能。
集群基于分布式管理,提供大數(shù)據(jù)集群管理系統(tǒng),功能包含Hadoop、Hive、HBase、Sqoop、Flume、kafka、Spark、Scala等節(jié)點部署及管理,提供實時監(jiān)控集群的CPU、內(nèi)存、硬盤等使用率及相關(guān)信息,可以對管理節(jié)點、計算節(jié)點進行啟動、停止等操作管理。
平臺具有靈活性和可管理性。管理員可以對試驗平臺內(nèi)的虛擬資源創(chuàng)建、監(jiān)控、資源調(diào)整、快照和遷移等進行靈活的調(diào)整,方便用戶得到足夠的計算和存儲資源。
4 人工智能實驗系統(tǒng)方案
4.1 系統(tǒng)方案
4.1.2 容器化部署
為了方便系統(tǒng)后期擴容升級。本次系統(tǒng)采用基于docker swarm的容器化本地部署方式。
容器化部署介紹
開發(fā)過程中一個常見的問題是環(huán)境一致性問題。由于開發(fā)環(huán)境、測試環(huán)境、生產(chǎn)環(huán)境不一致,導(dǎo)致有些bug并未在開發(fā)過程中被發(fā)現(xiàn)。而Docker的鏡像提供了除內(nèi)核外完整的運行時環(huán)境,確保了應(yīng)用運行環(huán)境一致性。
由于Docker確保了執(zhí)行環(huán)境的一致性,使得應(yīng)用的遷移更加容易。Docker可以在很多平臺上運行,無論是物理機、虛擬機、公有云、私有云,甚至是筆記本,其運行結(jié)果是一致的。因此用戶可以很輕易的將在一個平臺上運行的應(yīng)用,遷移到另一個平臺上,而不用擔(dān)心運行環(huán)境的變化導(dǎo)致應(yīng)用無法正常運行的情況。
Docker使用的分層存儲以及鏡像的技術(shù),使得應(yīng)用重復(fù)部分的復(fù)用更為容易,也使得應(yīng)用的維護更新更加簡單,基于基礎(chǔ)鏡像進一步擴展鏡像也變得非常簡單。
Docker容器化部署具有以下優(yōu)勢:
(1)標(biāo)準(zhǔn)化應(yīng)用發(fā)布,docker容器包含了運行環(huán)境和可執(zhí)行程序,可以跨平臺和主機使用;
(2)節(jié)約時間,快速部署和啟動,VM啟動一般是分鐘級,docker容器啟動是秒級;
(3)方便構(gòu)建基于SOA架構(gòu)或微服務(wù)架構(gòu)的系統(tǒng),通過服務(wù)編排,更好的松耦合;
(4)節(jié)約成本,以前一個虛擬機至少需要幾個G的磁盤空間,docker容器可以減少到MB級;
(5)方便持續(xù)集成,通過與代碼進行關(guān)聯(lián)使持續(xù)集成非常方便;
(6)可以作為集群系統(tǒng)的輕量主機或節(jié)點,在IaaS平臺上,已經(jīng)出現(xiàn)了CaaS,通過容器替代原來的主機。
4.1.3 平臺功能
提供圖形化拖拽工具構(gòu)建相關(guān)業(yè)務(wù)模型,支持 用戶進行數(shù)據(jù)集成、數(shù)據(jù)預(yù)處理、特征工程、模型訓(xùn)練、模型發(fā)布等整套模型開發(fā)流程,降低數(shù)據(jù)挖掘開發(fā)門檻。
支持多種數(shù)據(jù)源接入,支持傳統(tǒng)關(guān)系型數(shù)據(jù)庫、MPP數(shù)據(jù)庫、HDFS(txt、ORC、Parquet等數(shù)據(jù)格式)、Hive、HBase、Elastic Search、本地文件(CSV、JSON等數(shù)據(jù)格式)等多種數(shù)據(jù)存儲方式接入。
提供豐富的分布式統(tǒng)計算法、機器學(xué)習(xí)及深度 學(xué)習(xí)基礎(chǔ)算法庫,包括數(shù)據(jù)預(yù)處理,數(shù)值分析,特 征工程、分類、聚類、回歸、深度學(xué)習(xí)、驗證評估、 NLP 等通用算法,并提供自定義算法支持,方便數(shù)據(jù) 分析人員進行數(shù)據(jù)分析與挖掘的相關(guān)工作。
整合主流深度學(xué)習(xí)框架,包括 Tensorflow、MXNet,通過將深度學(xué)習(xí)框架與Hadoop體系融合,幫助數(shù)據(jù)科學(xué)家以及分析人員敏捷構(gòu)建DNN,CNN等模型,使用全量數(shù)據(jù)樣本進行模型訓(xùn)練,提高算法 的精準(zhǔn)度。
支持挖掘標(biāo)準(zhǔn)PMML模型導(dǎo)入導(dǎo)出,方便模型管理與使用。支持模型協(xié)作,多人協(xié)作模型開發(fā)模式。支持基于模型訓(xùn)練結(jié)果,通過圖形界面構(gòu)建相應(yīng)的應(yīng)用服務(wù),并通過容器化的方式打包與運行。
4.2 數(shù)據(jù)抽取
數(shù)據(jù)抽取系統(tǒng)是本項目建設(shè)的基礎(chǔ)設(shè)施,也體現(xiàn)了數(shù)據(jù)集成的一種模式,它的優(yōu)點是簡化數(shù)據(jù)集成拓撲結(jié)構(gòu),提供共享基礎(chǔ)服務(wù),對于跨部門大范圍的數(shù)據(jù)整合與服務(wù),是一種集約化的技術(shù)解決方案。
4.2.1 技術(shù)框架
數(shù)據(jù)交換平臺框架如下圖所示,主要包括批量數(shù)據(jù)交換和實時數(shù)據(jù)服務(wù)。
1、批量數(shù)據(jù)交換
批量數(shù)據(jù)交換服務(wù)用于源系統(tǒng)數(shù)據(jù)獲取、主數(shù)據(jù)管理、數(shù)據(jù)容災(zāi)等數(shù)據(jù)物理落地的應(yīng)用場景。
(1)數(shù)據(jù)交換服務(wù)
批量數(shù)據(jù)交換方式包括基于日志變化的數(shù)據(jù)捕獲模式和前置機、中間庫的模式。
前置機、中間庫的模式(傳統(tǒng)的數(shù)據(jù)交換模式):先由源系統(tǒng)開發(fā)單位開發(fā)接口,推送數(shù)據(jù)至中間庫,再通過交換平臺將中間庫的數(shù)據(jù)抽取至數(shù)據(jù)中心。此種方式適合更新頻次不高的行業(yè)基礎(chǔ)數(shù)據(jù),可以通過制定定期交換的計劃,使生產(chǎn)庫數(shù)據(jù)推送的頻率與準(zhǔn)確性得到保證。
(2)數(shù)據(jù)轉(zhuǎn)換服務(wù)
數(shù)據(jù)轉(zhuǎn)換服務(wù)是對采集后的數(shù)據(jù)按數(shù)據(jù)中心的數(shù)據(jù)標(biāo)準(zhǔn)執(zhí)行數(shù)據(jù)的清洗、轉(zhuǎn)換與加載。
2、實時數(shù)據(jù)服務(wù)
實時數(shù)據(jù)交換服務(wù)是基于ESB等SOA基礎(chǔ)設(shè)施,將數(shù)據(jù)中心的數(shù)據(jù)以服務(wù)接口的形式供各類業(yè)務(wù)系統(tǒng)實時調(diào)用。
4.2.2 平臺功能
數(shù)據(jù)交換平臺主要功能是定義數(shù)據(jù)交換存儲策略、基礎(chǔ)數(shù)據(jù)交換標(biāo)準(zhǔn);對授權(quán)用戶開放業(yè)務(wù)數(shù)據(jù)訪問的定制服務(wù);業(yè)務(wù)管理信息系統(tǒng)的信息流轉(zhuǎn),根據(jù)需要提供業(yè)務(wù)之間的數(shù)據(jù)共享與交換,包括以下幾個部分:
1、數(shù)據(jù)導(dǎo)入管理
數(shù)據(jù)導(dǎo)入管理需實現(xiàn)數(shù)據(jù)抽取、數(shù)據(jù)轉(zhuǎn)換、數(shù)據(jù)裝載功能。數(shù)據(jù)抽取實現(xiàn)從不同的數(shù)據(jù)源中抽取出系統(tǒng)所需數(shù)據(jù),包括全量抽取、增量抽取、主從抽取、條件抽取、聯(lián)合抽取、文件析取、Web Service抽取等多種方式。數(shù)據(jù)轉(zhuǎn)換需要將所抽取的數(shù)據(jù)轉(zhuǎn)換為符合數(shù)據(jù)中心標(biāo)準(zhǔn)的數(shù)據(jù),包括映射變換、行列互換、自定義轉(zhuǎn)換等多種靈活的轉(zhuǎn)換形式。數(shù)據(jù)裝載,在數(shù)據(jù)轉(zhuǎn)換成所需格式后需要將抽取過來的數(shù)據(jù)裝載到資源庫。
2、數(shù)據(jù)導(dǎo)出管理
實現(xiàn)數(shù)據(jù)中心的各種形式的數(shù)據(jù)導(dǎo)出,包括EXCEL、XML等中間格式。
3、數(shù)據(jù)共享
針對各種應(yīng)用場景對數(shù)據(jù)需求的不同,提供相應(yīng)的數(shù)據(jù)共享實現(xiàn)方式。對于一些數(shù)據(jù)服務(wù)內(nèi)容涉及與其他行業(yè)數(shù)據(jù)共享,要求采用遠程訪問的方法,保證平臺無關(guān)性,實現(xiàn)跨平臺的互操作,比如Web Service訪問接口等;對于行業(yè)內(nèi)的數(shù)據(jù)共享,要求采用數(shù)據(jù)交換的方式,實現(xiàn)異構(gòu)數(shù)據(jù)庫間的數(shù)據(jù)交換。
4、數(shù)據(jù)服務(wù)
在數(shù)據(jù)資源庫之上建立數(shù)據(jù)封裝層,將數(shù)據(jù)封裝為Rest風(fēng)格的Web Service規(guī)范的接口,數(shù)據(jù)中心的庫表通常情況下不暴露給數(shù)據(jù)需求方直接調(diào)用。
4.3 數(shù)據(jù)預(yù)處理
系統(tǒng)按照數(shù)據(jù)中心統(tǒng)一標(biāo)準(zhǔn)規(guī)范對各部門共享數(shù)據(jù)進行處理,實現(xiàn)中心前置庫至融合庫整個過程多個環(huán)節(jié)的數(shù)據(jù)抽取、清洗、轉(zhuǎn)換、比對和加載的管理。
4.3.1 系統(tǒng)架構(gòu)
數(shù)據(jù)融合系統(tǒng)實現(xiàn)數(shù)據(jù)抽取、轉(zhuǎn)換和加載的數(shù)據(jù)加工處理核心功能,并利用二次開發(fā)接口開發(fā)數(shù)據(jù)處理任務(wù)管理,實現(xiàn)數(shù)據(jù)處理的任務(wù)定義、任務(wù)監(jiān)控;開發(fā)數(shù)據(jù)處理的規(guī)則管理,實現(xiàn)數(shù)據(jù)處理的規(guī)則定義、規(guī)則查詢,可以調(diào)用這些規(guī)則進行數(shù)據(jù)處理;開發(fā)數(shù)據(jù)目錄,實現(xiàn)匯集庫、基礎(chǔ)庫、融合庫的數(shù)據(jù)資源目錄的維護和查詢。
下圖為數(shù)據(jù)融合系統(tǒng)功能架構(gòu)圖,構(gòu)建的數(shù)據(jù)加工處理子系統(tǒng),實現(xiàn)了中心前置庫和應(yīng)用系統(tǒng)歷史庫到匯集庫的數(shù)據(jù)標(biāo)準(zhǔn)化處理、匯集庫到基礎(chǔ)庫的數(shù)據(jù)比對、抽取處理、基礎(chǔ)庫到融合庫的數(shù)據(jù)加載,以及匯集庫到融合庫的數(shù)據(jù)關(guān)聯(lián)、加載處理。
4.3.2 系統(tǒng)功能
數(shù)據(jù)融合系統(tǒng)主要由數(shù)據(jù)融合方法和過程、任務(wù)管理、規(guī)則管理和數(shù)據(jù)目錄管理4個子系統(tǒng)組成。
本系統(tǒng)能夠?qū)崿F(xiàn)以下功能:
1、對數(shù)據(jù)中心除決策支持各種主題或?qū)n}信息資源以外的信息進行編目,顆粒度到表一級,數(shù)據(jù)目錄能夠按數(shù)據(jù)類型、部門、業(yè)務(wù)主題等多個維度進行分類。
2、目錄管理與安全管理功能相結(jié)合,提供權(quán)限控制功能,只有擁有相應(yīng)權(quán)限的用戶才能夠?qū)Ω黝惸夸浶畔⑦M行維護或查詢。
3、使用主流數(shù)據(jù)模型設(shè)計。如星形結(jié)構(gòu)、雪花型結(jié)構(gòu)等。
4、提供數(shù)據(jù)抽取、轉(zhuǎn)換和加載的數(shù)據(jù)加工處理核心功能。
5、提供數(shù)據(jù)處理規(guī)則管理,實現(xiàn)數(shù)據(jù)處理的規(guī)則定義、規(guī)則查詢。
6、提供數(shù)據(jù)處理任務(wù)管理,實現(xiàn)數(shù)據(jù)處理的任務(wù)定義、任務(wù)配置、任務(wù)監(jiān)控。
4.4 數(shù)據(jù)探索
數(shù)據(jù)探索平臺主要提供針對數(shù)據(jù)和服務(wù)的管理,并對所提供的數(shù)據(jù)和服務(wù)的獲取接口和資源目錄進行管理,方便與各類專題數(shù)據(jù)進行有效整合。數(shù)據(jù)管理平臺包含且不僅包含如下功能:元數(shù)據(jù)管理和數(shù)據(jù)質(zhì)量管理、數(shù)據(jù)規(guī)范符合性審查服務(wù)管理。
4.4.1 元數(shù)據(jù)管理
元數(shù)據(jù)管理是保證數(shù)據(jù)準(zhǔn)確性的重要技術(shù)手段,大數(shù)據(jù)平臺因為平臺混合搭配會造成數(shù)據(jù)分開存儲和使用,需要采取集中式管理模式進行統(tǒng)一元數(shù)據(jù)管理,滿足業(yè)務(wù)人員和技術(shù)人員的元數(shù)據(jù)查詢、分析、維護的需求。元數(shù)據(jù)管理系統(tǒng)貫穿數(shù)據(jù)中心的整個生命周期,為用戶提供高質(zhì)量、準(zhǔn)確和易于管理的數(shù)據(jù)。
元數(shù)據(jù)涵蓋了數(shù)據(jù)中心建設(shè)過程中源系統(tǒng)、數(shù)據(jù)交換、數(shù)據(jù)存儲和數(shù)據(jù)應(yīng)用的全過程,如下圖所示,在不同階段所產(chǎn)生的各類元數(shù)據(jù),均需要統(tǒng)一的規(guī)劃與管理。
數(shù)據(jù)管理系統(tǒng)的功能主要包括:
1、指標(biāo)庫管理
指標(biāo)是業(yè)務(wù)應(yīng)用系統(tǒng)中重要的數(shù)據(jù)資源之一,對業(yè)務(wù)運行分析和管理決策支持起到重要的支撐作用。指標(biāo)庫管理應(yīng)用的目標(biāo)是提高指標(biāo)的規(guī)范性以及指標(biāo)管理的規(guī)范性,保障系統(tǒng)用戶對指標(biāo)理解一致,同時保障系統(tǒng)與外部系統(tǒng)有效互動。
2、業(yè)務(wù)術(shù)語自助學(xué)習(xí)
業(yè)務(wù)術(shù)語自助學(xué)習(xí)應(yīng)用是面向業(yè)務(wù)操作人員的業(yè)務(wù)術(shù)語查詢和幫助應(yīng)用,提供符合業(yè)務(wù)人員操作習(xí)慣的功能界面,以靈活、便捷的自助學(xué)習(xí)方式,增進業(yè)務(wù)用戶對系統(tǒng)中相關(guān)報表、指標(biāo)、維度和應(yīng)用服務(wù)等術(shù)語的理解,幫助用戶更好地使用系統(tǒng)。
3、維表庫管理
維表庫管理是指基于元數(shù)據(jù),實現(xiàn)對數(shù)據(jù)源系統(tǒng)維表庫、數(shù)據(jù)中心標(biāo)準(zhǔn)維表庫分別管理,從而建立一套標(biāo)準(zhǔn)的維表庫體系,實現(xiàn)標(biāo)準(zhǔn)維表庫與源系統(tǒng)維表庫之間的關(guān)聯(lián)管理,其目的是有效處理源系統(tǒng)維表庫與標(biāo)準(zhǔn)維表庫之間的維度數(shù)據(jù)統(tǒng)一,支撐本期業(yè)務(wù)應(yīng)用系統(tǒng)與源系統(tǒng)的數(shù)據(jù)質(zhì)量協(xié)同和兩級數(shù)據(jù)中心元數(shù)據(jù)互通。
4、接口管理
本期業(yè)務(wù)系統(tǒng)數(shù)據(jù)交換中存在大量數(shù)據(jù)接口,基于元數(shù)據(jù)進行接口管理并建立接口元數(shù)據(jù)維護機制,能夠提高接口元數(shù)據(jù)質(zhì)量,為源系統(tǒng)變更協(xié)同管理奠定基礎(chǔ)。
5、輔助應(yīng)用優(yōu)化
元數(shù)據(jù)對數(shù)據(jù)中心的數(shù)據(jù)、數(shù)據(jù)加工過程以及數(shù)據(jù)間的關(guān)系提供準(zhǔn)確的描述,利用血緣分析、影響分析和實體關(guān)聯(lián)分析等元數(shù)據(jù)分析功能,可識別與系統(tǒng)應(yīng)用相關(guān)的技術(shù)資源,結(jié)合應(yīng)用生命周期管理過程,輔助進行系統(tǒng)應(yīng)用優(yōu)化。
6、輔助安全管理
數(shù)據(jù)中心建立完成后,所存儲的數(shù)據(jù)和提供的各類分析應(yīng)用,涉及到各類敏感或涉密信息。因此在數(shù)據(jù)中心建設(shè)過程中,須采用全面的安全管理機制和措施來保障系統(tǒng)的數(shù)據(jù)安全。
元數(shù)據(jù)管理系統(tǒng)安全管理模塊負責(zé)數(shù)據(jù)中心的數(shù)據(jù)敏感度、涉密性和各環(huán)節(jié)審計日志記錄管理,對數(shù)據(jù)中心的數(shù)據(jù)訪問和功能使用進行有效監(jiān)控。為實現(xiàn)數(shù)據(jù)中心對敏感數(shù)據(jù)和涉密信息的訪問控制,安全管理模塊應(yīng)以元數(shù)據(jù)為依據(jù),由元數(shù)據(jù)管理模塊提供敏感數(shù)據(jù)定義和涉密信息定義,輔助安全管理模塊完成相關(guān)安全管控操作。
7、數(shù)據(jù)目錄管理
數(shù)據(jù)目錄管理基于元數(shù)據(jù)模型的建立,通過檢索與樹狀目錄的形式,快速查找不同類型的數(shù)據(jù)資源,并查看該項數(shù)據(jù)的各項指標(biāo)狀況。
4.4.2 數(shù)據(jù)質(zhì)量管理
數(shù)據(jù)質(zhì)量管理包括對數(shù)據(jù)源、數(shù)據(jù)源接口、數(shù)據(jù)實體、處理過程、數(shù)據(jù)應(yīng)用和業(yè)務(wù)指標(biāo)等相關(guān)內(nèi)容的管控機制和處理流程,也包括對數(shù)據(jù)質(zhì)量管控和處理的信息總結(jié)和知識應(yīng)用等輔助內(nèi)容。
對于新數(shù)據(jù)的流程為:“錄入——檢查——反饋問題——修改”;
對于已有系統(tǒng)的數(shù)據(jù),流程為“評估——核查(反饋)——轉(zhuǎn)換——入庫”。
數(shù)據(jù)質(zhì)量管理主要功能包括:源系統(tǒng)變更協(xié)同管理、數(shù)據(jù)質(zhì)量監(jiān)控、數(shù)據(jù)質(zhì)量問題處理、數(shù)據(jù)質(zhì)量評估、數(shù)據(jù)質(zhì)量報告、數(shù)據(jù)質(zhì)量知識庫和數(shù)據(jù)質(zhì)量對外服務(wù)等:
1、源系統(tǒng)變更協(xié)同管理
源系統(tǒng)的業(yè)務(wù)流程變更或庫表、維度和接口等內(nèi)容變更,將對數(shù)據(jù)資源中心各類應(yīng)用系統(tǒng)產(chǎn)生影響。源系統(tǒng)變更協(xié)同管理調(diào)用元數(shù)據(jù)管理模塊分析功能對源系統(tǒng)變更信息進行影響評估,并將變更信息及時告知數(shù)據(jù)質(zhì)量管理人員,避免數(shù)據(jù)源變更引起各類應(yīng)用系統(tǒng)數(shù)據(jù)質(zhì)量問題。
2、數(shù)據(jù)質(zhì)量監(jiān)控
數(shù)據(jù)質(zhì)量監(jiān)控是根據(jù)預(yù)先配置的規(guī)則或算法,監(jiān)控數(shù)據(jù)采集和規(guī)則校驗,并依據(jù)稽核和檢查過程中發(fā)現(xiàn)的數(shù)據(jù)質(zhì)量異常情況進行告警和拓撲呈現(xiàn)的過程。數(shù)據(jù)質(zhì)量監(jiān)控由9個主要功能環(huán)節(jié)構(gòu)成,包括數(shù)據(jù)采集、源系統(tǒng)關(guān)鍵數(shù)據(jù)稽核、源系統(tǒng)維表稽核、數(shù)據(jù)實體檢查、處理過程檢查、關(guān)鍵指標(biāo)檢查、告警管理、拓撲呈現(xiàn)和規(guī)則配置。
3、數(shù)據(jù)質(zhì)量問題處理
數(shù)據(jù)質(zhì)量問題處理模塊提供一個統(tǒng)一的數(shù)據(jù)質(zhì)量問題入口,系統(tǒng)自動監(jiān)控所發(fā)現(xiàn)的問題以及技術(shù)人員和業(yè)務(wù)人員手工提交的問題,統(tǒng)一通過該入口進行問題單的填寫和提交,并觸發(fā)問題處理流程
4、數(shù)據(jù)質(zhì)量評估
數(shù)據(jù)質(zhì)量評估包括源接口基礎(chǔ)數(shù)據(jù)質(zhì)量評估和數(shù)據(jù)資源中心各業(yè)務(wù)系統(tǒng)指標(biāo)關(guān)聯(lián)性分析兩部分。其中,源接口基礎(chǔ)數(shù)據(jù)質(zhì)量評估由數(shù)據(jù)質(zhì)量管理人員根據(jù)需要發(fā)起,根據(jù)評估指標(biāo)和評估方法,對基礎(chǔ)數(shù)據(jù)的數(shù)據(jù)質(zhì)量進行評價,得到評估結(jié)果以作為系統(tǒng)質(zhì)量改進的參考和依據(jù)。數(shù)據(jù)資源中心系統(tǒng)指標(biāo)關(guān)聯(lián)性分析是通過對指標(biāo)進行關(guān)聯(lián)性檢查發(fā)現(xiàn)潛在的數(shù)據(jù)質(zhì)量問題。
5、數(shù)據(jù)質(zhì)量報告
數(shù)據(jù)質(zhì)量報告是對源系統(tǒng)變更協(xié)同管理、源系統(tǒng)核心數(shù)據(jù)及維表稽核、數(shù)據(jù)資源中心系統(tǒng)日常監(jiān)控以及數(shù)據(jù)質(zhì)量評估等過程累積的各種信息進行匯總、梳理、統(tǒng)計和分析,形成統(tǒng)計報告的過程。數(shù)據(jù)質(zhì)量報告提供了一個集中展示數(shù)據(jù)中心數(shù)據(jù)質(zhì)量狀況的窗口,供相關(guān)人員總結(jié)經(jīng)驗、沉淀知識和改進方法,不斷提高數(shù)據(jù)質(zhì)量管理系統(tǒng)的數(shù)據(jù)質(zhì)量問題的處理能力。
6、數(shù)據(jù)質(zhì)量知識庫
數(shù)據(jù)質(zhì)量知識是在數(shù)據(jù)資源中心系統(tǒng)使用及運維過程中,由數(shù)據(jù)質(zhì)量管理子系統(tǒng)收集的有關(guān)數(shù)據(jù)及過程問題的處理經(jīng)驗總結(jié)。該類知識可作為未來數(shù)據(jù)質(zhì)量問題解決方法的參考,并可以按關(guān)鍵字的形式進行索引和分類管理。
4.5 特征工程
支持常見特征工程流程,包括特征變換、特征重要性評估、特征選擇、特征生成等,包括且不限于歸一化、標(biāo)準(zhǔn)化、離散化、one-hot編碼等
支持特征工程自動化,包括自動特征變換、自動特征生成以及自動特征選擇等。
4.5.1 數(shù)據(jù)挖掘模塊
Mahout是Apache Software Foundation(ASF)旗下的一個開源項目,提供一些可擴展的機器學(xué)習(xí)領(lǐng)域經(jīng)典算法的實現(xiàn),旨在幫助開發(fā)人員更加方便快捷地創(chuàng)建智能應(yīng)用程序。Mahout包含許多實現(xiàn),包括聚類、分類、推薦過濾、頻繁子項挖掘。此外,通過使用Apache Hadoop庫,Mahout可以有效地擴展到分布式計算中。
MLLib是Spark項目的一個子模塊,MLlib也提供了一套基于Spark處理引擎的機器學(xué)習(xí)和數(shù)據(jù)挖掘的算法庫。
4.5.2 數(shù)據(jù)挖掘引擎
主要的機器學(xué)習(xí)的算法目前在MLlib中都已經(jīng)提供了,分類回歸、聚類、關(guān)聯(lián)規(guī)則、推薦、降維、優(yōu)化、特征抽取篩選、用于特征預(yù)處理的數(shù)理統(tǒng)計方法、以及算法的評測。
目前支持:支持分布式apiori/fp-growth算法;支持分布式k-means/層次聚類算法;支持分布式svm算法;支持分布式神經(jīng)網(wǎng)絡(luò)算法;支持回歸算法;支持分布式隨機森林算法;支持分布式協(xié)同過濾算法,支持時間序列算法;支持分布式?jīng)Q策樹C5.0算法;支持分布式樸素貝葉斯算法;支持分布式梯度提升樹。
SparkR是AMPLab發(fā)布的一個R開發(fā)包,為Apache Spark提供了輕量的前端。SparkR提供了Spark中彈性分布式數(shù)據(jù)集(RDD)的API,用戶可以在集群上通過R shell交互性的運行job。處R接口外,也支持Python接口的調(diào)用。
4.6 建模算法
4.6.1 功能概述
本次前沿技術(shù)輔助發(fā)現(xiàn)系統(tǒng)采用了業(yè)界領(lǐng)先的大數(shù)據(jù),人工智能,自然語言處理技術(shù),確保整個系統(tǒng)能夠更好的輔助前沿技術(shù)發(fā)現(xiàn)。具體算法包括但不限于BERT、序列標(biāo)注、條件隨機場、LSTM、支持向量機、邏輯回歸、隨機森林、線性回歸、決策樹回歸、K均值聚類、協(xié)同過濾、關(guān)聯(lián)分析、TF-IDF、Word2Vec、受限玻爾茲曼機、KMP算法、LCS算法等。
4.6.2 BERT算法
BERT是谷歌公司AI團隊今年十月最新發(fā)布的模型,在機器閱讀理解頂級水平測試SQuAD1.1中表現(xiàn)出驚人成績:全部兩個衡量指標(biāo)上超越人類,并且還在11種不同NLP(自然語言處理)測試中創(chuàng)出最佳成績。谷歌團隊成員Thang Luong表示BERT開啟了NLP的新時代。
BERT有以下優(yōu)勢:
1.BERT擁有一個深而窄的神經(jīng)網(wǎng)絡(luò)。
2.BERT模型能夠聯(lián)合神經(jīng)網(wǎng)絡(luò)所有層中的上下文來進行訓(xùn)練。
3.BERT只需要微調(diào)就可以適應(yīng)很多類型的NLP任務(wù),這使其應(yīng)用場景擴大,并且降低了訓(xùn)練成本
BERT算法證明了通過大規(guī)模語料集預(yù)訓(xùn)練的技術(shù),能夠大幅度提升各類文本閱讀理解的效果;證明了使用Transformer來作為特征提取方法,以及雙向?qū)W習(xí)機制,能達到超過已有算法優(yōu)異效果;證明通過遮蔽語言模型進行無監(jiān)督學(xué)習(xí)的機制,可以優(yōu)雅的引入領(lǐng)域知識;未來在學(xué)術(shù)界傳統(tǒng)認為很難處理的一些文字閱讀理解任務(wù)上,計算機有望能夠全面超越人類。
4.6.3 序列標(biāo)注算法
序列標(biāo)注模型的訓(xùn)練廣泛應(yīng)用于NLP的若干基礎(chǔ)組件之中,例如分詞,詞性標(biāo)注,實體識別,信息抽取等任務(wù)的基礎(chǔ)模型都屬于序列標(biāo)注模型。常用的序列標(biāo)注模型有隱馬爾科夫模型(HMM),條件隨機場(CRF)或適用于序列標(biāo)注的深度學(xué)習(xí)模型(Bi-LSTM+CRF)等。傳統(tǒng)序列標(biāo)注模型在小數(shù)據(jù)的訓(xùn)練樣本中效果相對較好,而深度學(xué)習(xí)在應(yīng)對大數(shù)據(jù)量時具有更加明顯的優(yōu)勢。
首先將標(biāo)注樣本針對具體的任務(wù)和算法進行轉(zhuǎn)化,將文本序列根據(jù)標(biāo)注結(jié)果轉(zhuǎn)換為BMES或其他的標(biāo)簽體系。對于機器學(xué)習(xí)模型,根據(jù)不同任務(wù),可以選擇不同的特征,例如char級別,word級別,詞性特征,甚至是否包含關(guān)鍵詞等等。而深度學(xué)習(xí)模型一般使用下文會提到的字詞向量特征作為輸入。
除了特征以外,還需要對訓(xùn)練數(shù)據(jù)進行一定的預(yù)處理,例如數(shù)據(jù)平衡,對于關(guān)鍵信息抽取任務(wù),可以采取把標(biāo)注信息周圍內(nèi)容進行裁剪的方式,既可以避免數(shù)據(jù)不平衡的問題,也可以縮短訓(xùn)練時間,減小模型的大小。
對于多字段的信息抽取任務(wù)或者多任務(wù)(分詞、詞性標(biāo)注、句法分析)的文本分析任務(wù)。既可以訓(xùn)練若干個單獨模型,也可以使用單一的聯(lián)合模型進行訓(xùn)練。
4.6.4 條件隨機場算法
CRF即條件隨機場(Conditional Random Field)是一種判別式無向圖模型。與HMM不同的是CRF的當(dāng)前狀態(tài)可以與整個觀測序列x相關(guān)。如下圖所示:
CRF 模型結(jié)構(gòu)
CRF條件概率公式
其中是定義在兩個相鄰狀態(tài)之間的狀態(tài)轉(zhuǎn)移特征函數(shù),用來刻畫前一個狀態(tài)和當(dāng)前狀態(tài)的轉(zhuǎn)移概率,為狀態(tài)轉(zhuǎn)移特征函數(shù)對應(yīng)的貢獻權(quán)重值。是定義在觀測序列時刻i的狀態(tài)特征函數(shù),用來刻畫觀測序列x對于i時刻狀態(tài)變量的影響,類似的為狀態(tài)特征函數(shù)對應(yīng)的權(quán)重。
以詞性標(biāo)注任務(wù)為例:
公式 CRF特征公式
上式的狀態(tài)轉(zhuǎn)移特征刻畫當(dāng)前時刻的觀測值為“knock”,當(dāng)前時刻狀態(tài)值為V,下個時刻狀態(tài)值為P時的特征。一般工程中實際上使用的多為線型鏈CRF,即狀態(tài)轉(zhuǎn)移函數(shù)的輸入不考慮x,只考慮當(dāng)前時刻的狀態(tài)和下個時刻的狀態(tài)。
公式 CRF特征值得分
上式的狀態(tài)特征刻畫當(dāng)前時刻觀測值為“knock”時,當(dāng)前時刻狀態(tài)值為V的特征。
4.6.5 雙向LSTM算法
隨著深度學(xué)習(xí)的發(fā)展,深度學(xué)習(xí)的序列標(biāo)注模型得到了廣泛的應(yīng)用。深度學(xué)習(xí)序列標(biāo)注模型的輸入一般為詞向量,相比于CRF的one-hot表示會有更強的泛化能力。網(wǎng)絡(luò)結(jié)構(gòu)如下圖所示,雙向LSTM網(wǎng)絡(luò)替代了CRF中狀態(tài)特征函數(shù)的作用,LSTM可以學(xué)到更加復(fù)雜的特征以及更長的上下文特征。雙向LSTM由一個接受順序詞向量輸入的LSTM層和一個接受逆序詞向量輸入的LSTM層組成,一個包含前文特征,一個包含后文特征,將兩者的輸出拼接則包含了上下文特征。LSTM后的CRF層則建模狀態(tài)變量的轉(zhuǎn)移特征。最后的CRF層已經(jīng)成為深度學(xué)習(xí)序列標(biāo)注模型的標(biāo)配,因為深度學(xué)習(xí)序列模型建模輸出標(biāo)簽轉(zhuǎn)移概率較為困難。
Bi-LSTM+CRF模型結(jié)構(gòu)
4.6.6 支持向量機算法
SVM(Support Vector Machine)指的是支持向量機,是常見的一種判別方法,是一個有監(jiān)督的學(xué)習(xí)模型。SVM的主要思想可以概括為兩點:1.它是對線性可分的情況進行分析,對于線性不可分的情況,通過使用非線性映射算法將低維輸入空間線性不可分的樣本轉(zhuǎn)化為高維特征空間使其線性可分。2.它基于結(jié)構(gòu)風(fēng)險最小化理論之上在特征空間中構(gòu)建最優(yōu)超平面,使得學(xué)習(xí)得到全局最優(yōu)化。
SVM原理是幾何間隔最小化:
對于線性不可分問題,通過核函數(shù)實現(xiàn)特征空間的隱式映射。
如圖,是從二維空間到三維空間的變換:
SVM使用核函數(shù)解決低維空間現(xiàn)行不可分問題
4.6.7 邏輯回歸算法
邏輯回歸(Logistics Regression,LR)模型其實是在線性回歸的基礎(chǔ)上,套用了一個邏輯函數(shù)。邏輯回歸是一種廣義回歸,y=wx+b,其中w和b是待求參數(shù)。Logistic回歸通過函數(shù)L將wx+b對應(yīng)一個隱狀態(tài)p,p=L(wx+b),然后p與1-p的大小決定因變量的值。
Logistic回歸可以使二分類,也可以是多分類,但二分類更為常用。
Logistic Regression將線性函數(shù)的結(jié)果映射到了sigmoid函數(shù)中的(0,1)區(qū)間中。
sigmoid函數(shù)圖形如下:
Sigmoid函數(shù)圖
h(x)<0.5說明當(dāng)前數(shù)據(jù)屬于A類;h(x)>0.5說明當(dāng)前數(shù)據(jù)屬于B類。
4.6.8 隨機森林算法
隨機森林是一個包含多個決策樹的分類器,并且其輸出的類別是由個別樹輸出的類別的眾數(shù)決定的。決策樹相當(dāng)于一個大師,通過自己在數(shù)據(jù)集中學(xué)到的知識對于新的數(shù)據(jù)進行分類。隨機森林就是希望構(gòu)建多個臭皮匠,希望最終的分類效果能夠超過單個大師的一種算法。
隨機森林生成方法:
1.從樣本中通過重采樣的方式產(chǎn)生n個樣本
2.假設(shè)樣本特征數(shù)目為a,對n個樣本選擇a中的k個特征,用建立決策樹的方式建立最佳分割點
3.重復(fù)m次,生成m棵決策樹
4.多數(shù)投票機制來進行預(yù)測。
4.6.9 線性回歸算法
線性回歸(Linear Regression),數(shù)理統(tǒng)計中回歸分析,用來確定兩種或兩種以上變量間相互依賴的定量關(guān)系的一種統(tǒng)計分析方法,其表達形式為y=w'x+e,e為誤差服從均值為0的正態(tài)分布,其中只有一個自變量的情況稱為簡單回歸,多個自變量的情況叫多元回歸。注意,統(tǒng)計學(xué)中的回歸并如線性回歸非與嚴格直線函數(shù)完全能擬合,所以我們統(tǒng)計中稱之為回歸用以與其直線函數(shù)區(qū)別。舉個Andrew Ng機器學(xué)習(xí)講義中美國俄亥俄州Portland Oregon城市房屋價格為例:
這個例子中近簡化使用房屋面積一個因子作為自變量,y軸對應(yīng)其因變量房屋價格。所以我們機器學(xué)習(xí)的線性回歸就變?yōu)閷τ诮o定有限的數(shù)據(jù)集,進行一元線性回歸,即找到一個一次函數(shù)y=y(x)+e,使得y滿足當(dāng)x={2104,1600,2400,1416,3000,...},y={400,330,369,232,540,...} 如下圖所示:
對于線性方程的求解,是屬于線性代數(shù)的范疇。首先要判斷是否有解及是否有唯一解;其次具體求解方法則有矩陣消元法,克萊姆法則,逆矩陣及增廣矩陣法等等。
對于大多數(shù)給定數(shù)據(jù)集,線性方程有唯一解的概率比較小,多數(shù)都是解不存在的超定方程組。對于這種問題,在計算數(shù)學(xué)中通常將參數(shù)求解問題退化為求最小誤差問題,找到一個最接近的解,即術(shù)語松弛求解。
4.6.10 決策樹回歸算法
決策樹是一種基本的分類與回歸方法,本文敘述的是回歸部分。回歸決策樹主要指CART(classification and regression tree)算法,內(nèi)部結(jié)點特征的取值為“是”和“否”,為二叉樹結(jié)構(gòu)。
所謂回歸,就是根據(jù)特征向量來決定對應(yīng)的輸出值?;貧w樹就是將特征空間劃分成若干單元,每一個劃分單元有一個特定的輸出。因為每個結(jié)點都是“是”和“否”的判斷,所以劃分的邊界是平行于坐標(biāo)軸的。對于測試數(shù)據(jù),我們只要按照特征將其歸到某個單元,便得到對應(yīng)的輸出值。
4.6.11 K均值聚類算法
K均值聚類算法是先隨機選取K個對象作為初始的聚類中心。然后計算每個對象與各個種子聚類中心之間的距離,把每個對象分配給距離它最近的聚類中心。聚類中心以及分配給它們的對象就代表一個聚類。一旦全部對象都被分配了,每個聚類的聚類中心會根據(jù)聚類中現(xiàn)有的對象被重新計算。這個過程將不斷重復(fù)直到滿足某個終止條件。終止條件可以是沒有(或最小數(shù)目)對象被重新分配給不同的聚類,沒有(或最小數(shù)目)聚類中心再發(fā)生變化,誤差平方和局部最小。
具體做法為:先隨機選取K個對象作為初始的聚類中心。然后計算每個對象與各個種子聚類中心之間的距離,把每個對象分配給距離它最近的聚類中心。聚類中心以及分配給它們的對象就代表一個聚類。一旦全部對象都被分配了,每個聚類的聚類中心會根據(jù)聚類中現(xiàn)有的對象被重新計算。這個過程將不斷重復(fù)直到滿足某個終止條件。終止條件可以是以下任何一個:
1)沒有(或最小數(shù)目)對象被重新分配給不同的聚類。
2)沒有(或最小數(shù)目)聚類中心再發(fā)生變化。
3)誤差平方和局部最小。
4.6.12 協(xié)調(diào)過滅算法
主要思想是基于群體智慧,利用已有大量用戶群過去行為數(shù)據(jù)來預(yù)測當(dāng)前用戶最可能感興趣的東西。這種方法克服了基于內(nèi)容方法的一些弊端,最重要的是可以推薦一些內(nèi)容上差異較大但是又是用戶感興趣的文檔。構(gòu)成CF(Collaborative Filtering)的兩種主要技術(shù):基于領(lǐng)域的方法和隱語義模型。
1)基于領(lǐng)域的方法
該方法重點關(guān)注文檔之間的關(guān)系或者用戶之間的關(guān)系,基于文檔的方法是根據(jù)用戶對和他感興趣的文檔相似的文檔評分,來對該用戶的偏好文檔建立模型。
基于文檔的協(xié)同過濾核心思想:給用戶推薦那些和他們之前喜歡的文檔相似的文檔。主要分為兩步:計算文檔之間的相似度和根據(jù)文檔的相似度和用戶的歷史行為給用戶生成推薦列表。
第一步:使用下面的余弦相似度公式定義文檔的相似度
從上面的定義看出,在協(xié)同過濾中兩個文檔產(chǎn)生相似度是因為它們共同被很多用戶喜歡,兩個文檔相似度越高,說明這兩個文檔共同被很多人喜歡。這里面蘊含著一個假設(shè):就是假設(shè)每個用戶的興趣都局限在某幾個方面,因此如果兩個文檔屬于一個用戶的興趣列表,那么這兩個文檔可能就屬于有限的幾個領(lǐng)域,而如果兩個文檔屬于很多用戶的興趣列表,那么它們就可能屬于同一個領(lǐng)域,因而有很大的相似度。
第二步:根據(jù)文檔的相似度和用戶的歷史行為給用戶生成推薦列表,通過如下公式計算用戶u對一個文檔j的興趣
其中,Puj表示用戶u對文檔j的興趣,N(u)表示用戶喜歡的文檔集合(i是該用戶喜歡的某一個文檔),S(i,k)表示和文檔i最相似的K個文檔集合(j是這個集合中的某一個文檔),Wji表示文檔j和文檔i的相似度,Rui表示用戶u對文檔i的興趣(這里簡化Rui都等于1)。
基于用戶的協(xié)同過濾算法最重要一點是相似用戶的計算。包括找到與目標(biāo)用戶興趣相似的用戶集合、找到這個集合中用戶喜歡的、并且目標(biāo)用戶沒有聽說過的文檔推薦給目標(biāo)用戶??梢允褂蒙鲜龅挠嘞蚁嗨贫确椒ㄓ嬎阆嗨贫?。在推薦的時候,需要從矩陣中找出與目標(biāo)用戶u最相似的K個用戶,用集合S(u,K)表示,將S中用戶喜歡的文檔全部提取出來,并去除u已經(jīng)喜歡的文檔。
在實際應(yīng)用中,相似度的計算很多種方法,如余弦相似度、皮爾遜相關(guān)度等。其實不同的相似度計算方法有各自的優(yōu)缺點,適用不同的應(yīng)用場景,可以通過對比測試進行選取。一般來說,基于用戶的推薦系統(tǒng)中,皮爾遜相關(guān)系數(shù)效果要好一些。基于文檔的推薦中,余弦相似度方法比皮爾遜的表現(xiàn)更好。在實際業(yè)務(wù)中,相似度的計算方法都有很多變種,過于冷門和過于熱門的文檔對衡量用戶間的相似度時區(qū)分度不好,這時就需要進行剪枝。下面的相似度計算方法將降低熱門文檔對用戶相似度的影響。
這種基于K近鄰的選取相似用戶的方法,相似度的閾值設(shè)置對結(jié)果影響很大,太大的話召回文檔過多,準(zhǔn)確度會有下降。
2)隱語義模型
該方法把文檔和用戶映射到相同的隱語義空間。這個空間試圖通過描述文檔和用戶兩種實體在因子上的特征來解釋評分,而這些因子是根據(jù)用戶的反饋自動判斷出來的。
用隱語義模型來進行協(xié)同過濾的目標(biāo)是揭示隱藏的特征,這些特征能解釋觀測到的評分。該模型包括pLSA(Probability Latent Semantic Analysis)模型、神經(jīng)網(wǎng)絡(luò)模型、LDA(Latent Dirichlet Allocation)模型,以及由用戶-文檔評分矩陣的因子分解推導(dǎo)出的模型(也叫基于SVD的模型,Singular Value Decomposition)。由于矩陣因子分解技術(shù)在線上業(yè)務(wù)的準(zhǔn)確性和穩(wěn)定性的突出表現(xiàn),已經(jīng)成為協(xié)同過濾算法的首選。達觀數(shù)據(jù)的推薦系統(tǒng)也大量使用了這種技術(shù),并做了諸多性能和效果優(yōu)化。
CF模型視圖捕捉用戶和文檔之間的交互作用,正式這些交互作用產(chǎn)生了不同的評分值。設(shè)為總體評分值,未知評分的基準(zhǔn)預(yù)測綜合考慮了用戶和文檔兩個因子
參數(shù)和表示用戶和文檔的與評分平均值的偏差。我們可以通過解決最小二乘法的問題來估計和的值
在上述這個公式中,第一項用來尋找與已知評分數(shù)據(jù)擬合得最好和的。正則化項通過對參數(shù)的復(fù)雜性增加懲罰因子來避免過擬合問題。這個最小二乘法問題可以通過隨機梯度下降(SGD,Stochastic gradient descent)算法有效地解決。
矩陣因子分解模型把用戶和文檔兩方面的信息映射到一個維度為的聯(lián)合隱語義空間中,因此用戶-文檔之間的交互作用被建模為該空間的內(nèi)積。相應(yīng)地,每一個文檔都有一個維向量相關(guān),每一個用戶都與一個維向量相關(guān)。給定一個文檔,向量的維度值代表了該文檔擁有這些因子的程度。取值大小反應(yīng)了文檔擁有這些因子的積極或者消極程度。給定一個用戶,的維度值代表了用戶對這些因子的偏好程度。同樣地,這些值的大小反映了用戶對這些因子的消極或者積極的評價。
為了學(xué)習(xí)模型中的參數(shù),也就是、、和,我們可以最小化以下正則化的平方誤差
常量控制了正則化程度,一般通過交叉驗證來獲得。
考慮隱式反饋信息可以增加預(yù)測準(zhǔn)確度,這些隱式反饋信息提供了用戶愛好的額外信息。這對于那些提供了大量隱式反饋但是僅僅提供少量顯式反饋的用戶尤為重要。這就出現(xiàn)了一些根據(jù)用戶評分的文檔來對用戶的某個因子建模的方法,這里談一下SVD++,這種方法能夠提供比SVD更好的準(zhǔn)確度。
為了達到上述目的,我們增加了第二個文檔因子集合,即為每一個文檔關(guān)聯(lián)一個因子變量。這些新的文檔因子向量根據(jù)用戶評分的文檔集合來描述用戶的特征。模型如下:
例如,如果一個用戶對中的一些文檔有某種類型的隱式偏好(如他買過它們),對中的文檔又另一種類型的偏好(如他贊過它們),就可以使用下面的模型:
在處理用戶行為數(shù)據(jù)的過程中,需要考慮時間因素的影響,畢竟用戶的偏好是隨著時間變化的。比如,用戶會改變對特定導(dǎo)演或者演員的看法。矩陣分解的方法也能很好地對時間效應(yīng)進行建模。得到擴展模型time SVD++如下:
每一次迭代的時間復(fù)雜度仍然與輸入大小呈線性關(guān)系,而運行時間大概是SVD++算法的兩倍,原因是更新時序參數(shù)需要額外的花費。重要的是,收斂速度并沒有受時序參數(shù)化的影響。
4.6.13 關(guān)聯(lián)分析算法
關(guān)聯(lián)分析又稱關(guān)聯(lián)挖掘,就是在交易數(shù)據(jù)、關(guān)系數(shù)據(jù)或其他信息載體中,查找存在于項目集合或?qū)ο蠹现g的頻繁模式、關(guān)聯(lián)、相關(guān)性或因果結(jié)構(gòu)。
關(guān)聯(lián)分析是一種簡單、實用的分析技術(shù),就是發(fā)現(xiàn)存在于大量數(shù)據(jù)集中的關(guān)聯(lián)性或相關(guān)性,從而描述了一個事物中某些屬性同時出現(xiàn)的規(guī)律和模式。
關(guān)聯(lián)分析是從大量數(shù)據(jù)中發(fā)現(xiàn)項集之間有趣的關(guān)聯(lián)和相關(guān)聯(lián)系。關(guān)聯(lián)分析的一個典型例子是購物籃分析。該過程通過發(fā)現(xiàn)顧客放入其購物籃中的不同商品之間的聯(lián)系,分析顧客的購買習(xí)慣。通過了解哪些商品頻繁地被顧客同時購買,這種關(guān)聯(lián)的發(fā)現(xiàn)可以幫助零售商制定營銷策略。其他的應(yīng)用還包括價目表設(shè)計、商品促銷、商品的排放和基于購買模式的顧客劃分。
4.6.14 TF-IDF算法
Tf-idf是一種用于信息檢索與文本挖掘的常用加權(quán)技術(shù)。tf-idf是一種統(tǒng)計方法,用以評估一字詞對于一個文件集或一個語料庫中的其中一份文件的重要程度。在一份給定的文件里,詞頻(term frequency,tf)指的是某一個給定的詞語在該文件中出現(xiàn)的頻率。這個數(shù)字是對詞數(shù)(term count)的歸一化,以防止它偏向長的文件。對于在某一特定文件里的詞語 ti來說,它的重要性可表示為:
以上式子中ni,j是該詞在文件 dj中的出現(xiàn)次數(shù),而分母則是在文件 dj中所有字詞的出現(xiàn)次數(shù)之和。
逆向文件頻率(inverse document frequency,idf)是一個詞語普遍重要性的度量。某一特定詞語的idf,可以由總文件數(shù)目除以包含該詞語之文件的數(shù)目,再將得到的商取以10為底的對數(shù)得到:
其中
|D|:語料庫中的文件總數(shù)
:包含詞語ti的文件數(shù)目(即 ni,j != 0的文件數(shù)目)如果詞語不在數(shù)據(jù)中,就導(dǎo)致分母為零,因此一般情況下使用
然后tfidf i,j = tfi, j * idfi
某一特定文件內(nèi)的高詞語頻率,以及該詞語在整個文件集合中的低文件頻率,可以產(chǎn)生出高權(quán)重的tf-idf。因此,tf-idf傾向于過濾掉常見的詞語,保留重要的詞語。
4.6.15 Word2vec算法
Word2vec主要用于挖掘詞的向量表示,向量中的數(shù)值能夠建模一個詞在句子中,和上下文信息之間的關(guān)系,主要包括2個模型:CBOW(continuous bag-of-word)和SG(skip-gram),從一個簡單版本的CBOW模型介紹,上下文只考慮一個詞的情形,如圖所示,
Word2vec圖
假設(shè)只有一個隱層的神經(jīng)網(wǎng)絡(luò),輸入層以及輸出層均為詞的one-hot編碼表示,詞表大小假設(shè)為V,隱層神經(jīng)元個數(shù)為N,相鄰層的神經(jīng)元為全連接,層間的權(quán)重用V*N的矩陣W表示,隱層到輸出層的activation function采用softmax函數(shù),
其中wI,wj為詞表中不同的詞,yj為輸出層第j個神經(jīng)元的輸出,uj為輸入層經(jīng)過權(quán)重矩陣W到隱層的score,uj’為隱層經(jīng)過權(quán)重矩陣W’到輸出層的score。訓(xùn)練這個神經(jīng)網(wǎng)絡(luò),用反向傳播算法,先計算網(wǎng)絡(luò)輸出和真實值的差,然后用梯度下降反向更新層間的權(quán)重矩陣,得到更新公式:
其中,η為更新的步長,ej為模型預(yù)測以及真實值之間的誤差,h為隱層向量。
圖2為上下文為多個詞時的情況,中間的隱層h計算由
改為
即輸入向量為多個上下文向量相加求平均,后續(xù)的參數(shù)學(xué)習(xí)與上文的單個詞的上下文情況類似。遍歷整個訓(xùn)練集context-target詞對,經(jīng)過多次迭代更新模型參數(shù),對模型中的向量的影響將會累積,最終學(xué)到對詞的向量表示。
Skip-gram跟CBOW的輸入層和輸出層正好對調(diào),區(qū)別就是CBOW是上下文,經(jīng)過模型預(yù)測當(dāng)前詞,而skip-gram是通過當(dāng)前詞來預(yù)測上下文。
Skip-gram
目前為止,對詞表中的每個詞,有兩種向量表示:input vector和output vector,對應(yīng)輸入層到隱層權(quán)重矩陣W的行向量和隱層到輸出層權(quán)重矩陣W'的列向量,從等式4、5可以看出,對每一個訓(xùn)練樣本,都需要遍歷詞表中的每一個詞,因此,學(xué)習(xí)output vector的計算量是非常大的,如果訓(xùn)練集或者詞表的規(guī)模大的話,在實際應(yīng)用中訓(xùn)練不具可操作性。為解決這個問題,直覺的做法是限制每個訓(xùn)練樣本需要更新的output vectors,google提出了兩個方法:hierarchical softmax和negative sampling,加快了模型訓(xùn)練的速度,再次不做展開討論。由于wordvec在NLP領(lǐng)域的巨大成功,Oren Barkan and Noam Koenigstein受此啟發(fā),利用item-based CF學(xué)習(xí)item在低維latent space的embedding representation,優(yōu)化item的相關(guān)推薦。
詞的上下文即為鄰近詞的序列,很容易想到,詞的序列其實等價于一系列連續(xù)操作的item序列,因此,訓(xùn)練語料只需將句子改為連續(xù)操作的item序列即可,item間的共現(xiàn)為正樣本,并按照item的頻率分布進行負樣本采樣。
4.6.16 受限玻爾裝曼機算法
本質(zhì)上來說,RBM是一個編碼解碼器:將原始輸入數(shù)據(jù)從可見層映射到隱藏層,并且得到原始輸入數(shù)據(jù)的隱含因子,對應(yīng)的是編碼過程;然后利用得到的隱藏層向量在映射回可見層,得到新的可見層數(shù)據(jù),對應(yīng)的是解碼過程。而優(yōu)化目標(biāo)是希望讓解碼后的數(shù)據(jù)和原始輸入數(shù)據(jù)盡可能的接近。在推薦場景中,可以獲取到用戶對文檔的評分矩陣,進過RBM的編碼-解碼過程處理后,不僅得到了已有評分對應(yīng)的新評分,同時對未評分的文檔進行預(yù)測,并將預(yù)測分數(shù)從高到低排序就可以生成推薦列表。換句話說,就是將RBM應(yīng)用到協(xié)同過濾中。
對傳統(tǒng)的RBM進行改進:可見層使用Softmax神經(jīng)元;用戶只對部分文檔評分,而對于沒有評分的文檔使用一種特殊的神經(jīng)元表示,這種神經(jīng)元不與任何隱藏層神經(jīng)元連接。具體結(jié)構(gòu)如圖所示。
受限玻爾茲曼機
圖中可以看到,Softmax神經(jīng)元是一個長度為K的向量(圖中K為5),并且這個向量每次只有一個分量為1,而且第i個單元為1僅當(dāng)用戶對該文檔打分為i是才會置為1,其余為0。從而可以得到可見層單元和隱藏層單元被激活的概率:
使用前面提到的CD算法,各個參數(shù)的學(xué)習(xí)過程如下:
RBM經(jīng)過學(xué)習(xí)以后,可以得到整個網(wǎng)絡(luò)的全部參數(shù)。給定一個用戶u和一個文檔i,預(yù)測評分R(u, i)過程如下:
1)將用戶u的所有評分作為RBM的softmax單元的輸入
2)對于所有的隱藏單元j計算激活概率
3)對于所有的k=1,2,…,K,計算
4)取期望值作為預(yù)測結(jié)果,比如
以上RBM只用到用戶對文檔的評分,忽略了很重要的信息:用戶瀏覽過哪些文檔,但是并沒有評的情況。條件RBM (Conditional Restricted Boltzmann Machine)對這種信息可以進行建模。
RBM
其中r是m維的向量,為1的話,表示用戶對瀏覽過第i個電影,加入r之后的條件概率:
權(quán)重D的學(xué)習(xí)過程:
4.6.17 KMP算法
Knuth-Morris-Pratt字符串查找算法(簡稱為KMP算法)可在一個主文本字符串S內(nèi)查找一個詞W的出現(xiàn)位置。此算法通過運用對這個詞在不匹配時本身就包含足夠的信息來確定下一個匹配將在哪里開始的發(fā)現(xiàn),從而避免重新檢查先前匹配的字符。
4.6.18 LCS算法
最長公共子序列(LCS)是一個在一個序列集合中(通常為兩個序列)用來查找所有序列中最長子序列的問題。這與查找最長公共子串的問題不同的地方是:子序列不需要在原序列中占用連續(xù)的位置。最長公共子序列問題是一個經(jīng)典的計算機科學(xué)問題,也是數(shù)據(jù)比較程序,比如Diff工具,和生物信息學(xué)應(yīng)用的基礎(chǔ)。它也被廣泛地應(yīng)用在版本控制,比如Git用來調(diào)和文件之間的改變。
一個數(shù)列S,如果分別是兩個或多個已知數(shù)列的子序列,且是所有匹配此條件序列中最長的,則S稱為已知序列的最長公共子序列。對于一般性的LCS問題(即任意數(shù)量的序列)是屬于NP-hard。但當(dāng)序列的數(shù)量確定時,問題可以使用動態(tài)規(guī)劃在多項式時間內(nèi)解決。