天天看點

《Scala機器學習》一一2.5 資料驅動系統的基本元件

2.5 資料驅動系統的基本元件

簡單地說,一個資料驅動架構包含如下的元件(或者可精簡為以下這些元件):

資料收集:需要從系統和裝置上收集資料。大多數的系統有日志,或者至少可選擇将日志寫入本地檔案系統。一些系統可以通過網絡來傳輸資訊,比如syslog。但若沒有審計資訊,缺少持久層意味着有可能丢失資料。

資料轉換層:也被稱為提取、變換和加載(etl)。現在資料轉換層也可以進行實時處理,即通過最近的資料來計算彙總資訊。資料轉換層也用來重新格式化資料和索引資料,以便能被ui元件有效地通路。

資料分析和機器學習引擎:這層是标準資料轉換層的一部分,因為這一層需要很多完全不一樣的技術。建構合理統計模型的思維方式通常與快速移動數tb資料不同,盡管偶爾可以找到具有這兩種技能的人。通常稱這些人為資料科學家,但是他們在任何特定領域的技能通常不及專注于一個特定領域的人。另一個原因是機器學習,資料分析需要多次彙總和使用相同的資料(與大多數的流式etl轉換相反),這需要不同的引擎。

ui元件:ui表示使用者界面,它通常是一系列元件,這些元件能讓使用者通過浏覽器來通路系統(浏覽器曾經是一個簡單的gui,但如今基于web的javascript或基于scala的架構能建構更強大和更易于移植的ui)。從資料管道和模組化透視圖來看,ui提供了通路資料和模型的内部表示的api。

動作引擎:這通常是一個可配置的規則引擎,基于靈感來優化給定的名額。這些動作可以是實時的,例如線上廣告就屬于這種情形。在這種情況下,引擎應當能夠提供實時評分資訊或者針對使用者操作進行推薦,也可以采取電子郵件的形式來提醒。

關聯引擎:這是一種新的元件,可以對資料分析和機器學習引擎的輸出進行分析,以便能對資料或模型有更深入的了解。動作也可能由此層的輸出觸發。

監控:這是一個複雜的系統,包含的功能有日志記錄、監控和更改系統參數。監控是為了優化系統性能的嵌套決策系統,并能自動減輕問題或者向系統管理者報告問題。

下面來詳細讨論每個元件。

2.5.1 資料收集

随着智能裝置的增加,資訊收集對任何不止一種類型的文本業務而言都非常有必要。本章假設有一個或多個裝置通過網際網路來來傳遞資訊,其連接配接方式可能是通過家庭撥号,也可能是網絡直接連接配接。

此元件的主要目的是收集所有可能與資料驅動決策相關的資訊。下表給出了與資料收集相關的最常見架構:

《Scala機器學習》一一2.5 資料驅動系統的基本元件
《Scala機器學習》一一2.5 資料驅動系統的基本元件

如果要求資料傳輸接近實時的話,那通常會通過批量或小批量方式進行。資訊通常會放在本地檔案系統中,常稱為日志的檔案,然後被傳送到控制中心。最近開發的kafka和flume通常用于管理這些傳輸,并将傳統的syslog、rsync或netcat整合在一起。資料最終可儲存在本地或分布式存儲(如hdfs、cassandra或amazon s3)中。

2.5.2 資料轉換層

完成在hdfs或其他系統的存儲後,需要處理資料。通常會按預定的計劃處理資料,并且最終會按時間來劃分。使用新的scala流式處理架構時,處理時間可按天或小時為機關,甚至可以是次分鐘(sub-minute),這取決于對延遲的要求。該處理過程可能涉及一些基本的特征構造(或向量化),這通常被認為是機器學習的任務。下表總結了一些有效的架構:

《Scala機器學習》一一2.5 資料驅動系統的基本元件
《Scala機器學習》一一2.5 資料驅動系統的基本元件

2.5.3 資料分析與機器學習

機器學習(ml)算法用來計算可操作的聚合或摘要。從第3章到第6章都會涉及很複雜的機器學習算法。但在某些情況下,一個簡單的滑動視窗平均,再加上偏離值就足夠了。在過去的幾年中,人們在進行模型建構和部署時還在采用a/b測試。作者并不是懷疑理論沒有用,但許多基本假設(如獨立同分布)、平衡設計和長尾現象在許多大資料情形下并不适用。更簡單的模型往往會更快,并且具有更好的性能和穩定性。

例如,對于線上廣告,僅僅需要跟蹤一段時間内一組具有相似廣告内容的平均表現就能決定是否投放此廣告。關于異常或偏離的資訊可能是新的不知之不知的信号,這表明舊資料不再适用,在這種情況下,系統不得不重新開始建構。

本書将在第6章、第8章以及第9章中讨論更複雜的非結構化資料、圖和模式挖掘。

2.5.4 ui元件

在現實中,ui通常會讓除資料科學家以外的人們感覺很不錯。一個好的資料分析師應該夠通過一張表的資料就能計算t檢驗。

應該評估不同元件的有用性以及所使用的次數。好的ui往往是合理的,但也與閱聽人群體有關。

目前有一些ui和報表架構,它們中的大多數都不是基于函數式程式設計。由于複雜或半結構化資料的存在(将在本書第6章中做更詳細的介紹),許多架構需要實作某種dsl才能做資料處理。下面介紹基于scala建構的幾個ui架構:

《Scala機器學習》一一2.5 資料驅動系統的基本元件
《Scala機器學習》一一2.5 資料驅動系統的基本元件
《Scala機器學習》一一2.5 資料驅動系統的基本元件

2.5.5 動作引擎

雖然這是資料導向的系統管道的核心,但它卻最簡單。一旦度量和值的系統是已知的,基于已知等式的系統将決定是否執行一組确定的動作,這些動作以提供的資訊為基礎。雖然基于門檻值的觸發是最常見的實作,但目前出現了一種機率方法,它可向使用者呈現可能性和相關性,或者可以像搜尋引擎那樣向使用者提供前n個相關的選擇。

2.5.6 關聯引擎

決策系統越複雜,就越需要一個次級決策系統來優化它管理。devops正在變成dataops(getting data right by michael stonebraker et al., tamr, 2015)。在資料驅動系統上收集到與性能相關的資料通常用于異常檢測和半自動維護。

模型經常會漂移,其性能可能由于資料收集層的變化或群體的行為變化而惡化(将在第10章讨論模型漂移)。模型管理的另一方面是跟蹤模型性能,在某些情況下,可通過各種共識方案來使用模型的“集體”智慧。

2.5.7 監控