大數據的可信度有多高?現實世界挑戰和解決方案指南
譯文譯者 | 李睿
審校 | 重樓
大數據只有在可靠的情況下才能發揮價值。使用Deequ和Great Expectations等工具,可以識別并修復模式漂移、異常值和靜默錯誤等信任問題。
雖然大數據系統的規模、速度和復雜性都在持續增長,但人們對它們的信任往往有所滯后。當工程師和分析師構建管道來傳輸PB級的數據時,往往隱含著這樣一個假設:數據是干凈、正確和完整的。不幸的是,這種假設在現實應用中經常失效。
從使用錯誤標簽訓練的人工智能模型到顯示誤導性KPI的業務儀表板,不可信的數據會導致現實世界的失敗。在醫療保健領域,它可能會發出錯誤的關鍵警報。在電子商務領域,它會使需求預測出現偏差。在金融領域,它會引發錯誤的交易或不合規問題。因此,數據真實性(準確性和可靠性)不僅是后端問題,更是關乎業務生死存亡的關鍵問題。
本文將介紹在大規模醫療保健和行為分析管道中使用的實際策略,以檢測、衡量和修復數據真實性問題,還將探討實用的工具和示例,以及在錯誤數據造成更大損害之前從中吸取的一些教訓。
為什么信任對于大數據至關重要
人們可能聽說過大數據的“5V”特征:體量(Volume)、速度(Velocity)、多樣性(Variety)、真實性(Veracity)和價值(Value)。雖然大多數項目關注的是前三個特征,但第四個特征(真實性)卻在無形中決定了第五個特征。換句話說,不可信的數據將會降低價值。
以下說明了數據真實性(Veracity)的重要性的一些場景:
- 醫療領域:在新冠病疫情高峰期,數據工程師為一家擁有1.3萬名員工的醫院構建了接觸者追蹤系統。如果帶時間戳的調查數據延遲或不正確,受到病毒感染的員工可能會進入病房,從而帶來進一步傳播的風險。因此,即使錯過一個警報也可能造成嚴重后果。
- 訓練人工智能模型:某公司訓練了一個機器學習模型來使用行為數據檢測客戶流失。然而,由于記錄訂閱狀態的方式存在缺陷,輸入數據錯誤地標記了流失的客戶。其結果是什么?這種模式錯過了關鍵的流失預測因素,并向活躍用戶發送了不適當的“挽回”活動,損害了客戶的信任。
- 高管儀表板:一家金融科技公司的商業智能團隊曾發現,該公司首席執行官的月度儀表板顯示用戶參與度過高。那么問題何在?原來是事件標記系統發生了變化,導致點擊流事件重復。修復這一問題需要對3億多行的歷史數據進行重復數據刪除。
這些案例表明,數據信任不是奢侈品,而是基本要求。數據質量差的代價不僅是技術性的,更是戰略性的。
常見的數據信任問題
以下是人們遇到的數據真實性一些問題:
1.模式漂移
像event_ts或user_status這樣的列被靜默地刪除或添加,導致下游作業失敗或行為不一致。例如,在電子商務流程中,缺少的discount_code列破壞了對主要活動的轉化跟蹤。
2.靜默錯誤
字段可能通過驗證,但包含邏輯錯誤值。例如,發現調查數據中login_time晚于logout_time,從而扭曲了會話時間指標。
3.重復事件或延遲事件
點擊流(Clickstream)會話中存在重復的行動號召(CTA)或由于重復數據刪除邏輯不佳而導致延遲的事件,從而導致參與度指標虛高。
4.離群值(Outliers)
用戶在頁面上停留時間為24小時,雖然這在技術上有效,但極不可能發生。這些異常值如果不加以標記,可能扭曲平均值并導致錯誤決策。
確保信任的實用技術
以下是在管道中使用的實用技術:
1.數據分析
使用像AWS Deequ或Great Expectations這樣的工具來定義基線預期并及早發現異常。
1 from great_expectations.dataset import PandasDataset
2
3 df = PandasDataset(my_dataframe)
4 df.expect_column_values_to_not_be_null("user_id")
5 df.expect_column_values_to_be_between("age", 18, 99)
這些工具允許定義類似于軟件中單元測試的測試。可以在CI/CD管道或日常檢查中執行這些測試。
2.模式驗證
使用Glue模式注冊表、Avro模式或JSON模式定義來強制執行數據結構。
1 from pyspark.sql.types import StructType, StructField, StringType, TimestampType
2
3 schema = StructType([
4 StructField("user_id", StringType(), True),
5 StructField("event_ts", TimestampType(), True)
6 ])
7
8 df = spark.read.schema(schema).json("s3://bucket/input/")
這確保下游的消費者不會因為缺失或字段錯位而中斷。
3.時間窗口檢查
確保數據在預期的時間范圍內,避免處理舊數據或無效數據。
1 from datetime import datetime, timedelta
2
3 now = datetime.utcnow()
4 df = df.filter((df.event_ts > now - timedelta(hours=1)) & (df.event_ts <= now))
4.自動異常檢測
除了規則之外,還可以利用統計檢查或輕量級機器學習模型來檢測模式變化。諸如Evidently AI、蒙特卡洛(Monte Carlo)等工具或使用z分數的自定義腳本可幫助發現分布隨時間漂移的情況。
5.契約執行
如果在數據網格或微服務環境中工作,可以將數據模式視為API。使用Pact或OpenMetadata來建立生產者-消費者契約,并在部署前捕獲模式違規。
前后對比:實際影響
在一個醫療保健用例中,在接觸者追蹤數據攝入管道中實現了模式驗證和時間戳檢查。其結果如下: ?警報誤報率降低87%。
- 下游模型精度提高22%。
- 內部數據質量得分從68%上升到94%。
在另一個數字產品分析用例中,通過添加每日分析和重復數據刪除檢查:
- 檢測并修復了持續10天的指標虛高問題。
- 防止組織管理層發起誤導性的營銷活動。
這些變化帶來了更安全的工作場所訪問控制、更加精準的數據分析以及增強高管對儀表板的信心。
結論
對數據的信任并非與生俱來,而是需要精心設計和構建。通過將數據分析、驗證、監控和契約直接嵌入到管道中,可以幫助確保分析、指示板和模型反映現實世界。
以下是開始提升數據信任的簡單三步清單:
- 每日分析并驗證關鍵數據集。
- 在生產者和消費者之間強制執行模式和契約。
- 持續監測數據時效性、漂移和異常情況。
無論人們是在醫療保健、金融還是數字產品分析領域工作,值得信賴的數據都能讓一切變得更好。
原文標題:How Trustworthy Is Big Data? A Guide to Real-World Challenges and Solutions,作者:Vivek Venkatesan