談到Big Data,大家一定會舉Wal-Mart藉由歷年的結帳交易資料分析,創造出「尿布與啤酒」的神奇故事,原本大家認為兩者完全不相干的事物,卻存在著互相影響的攸關性,但這也蘊藏著不為人知的致勝秘訣,很明顯地展現出商業分析之重要性;而過去一年Big Data的議題不僅未見絲毫疲態,這把火反倒愈燒愈旺,成為企業蓄積智慧與洞察力的絕佳寶庫,許多高階主管,都樂此不疲從巨量資料中探索致勝秘訣,據此建立競爭優勢。
Big Data可以當醫生嗎?我們看到另外一個應用案例,IBM Watson機器人也可以被利用來協助醫生聽診,醫生可能跟你講五句話,就差不多確定你是生什麼病了,傳統上,這個叫做問診,其他時間就拿來聊天話家常,而許多美國的醫療機構為了避免醫生的一時疏失,開始與IBM合作,利用Watson陪同醫生聽診,聽診完它會透過病徵列出病患可能患的疾病有哪些?醫生可能想到的病徵只有三、五個,可是Watson會從海量數據分析的角度幫他列出高達20個病徵選項,這可以大大的減少醫生產生疏忽的機會,醫生看了Watson的分析報告,可以再多問病人一些身體不舒服狀況的問題來縮小看診判斷的誤差,尤其是遠距醫療時,這項服務特別受用。不過Watson機器人主要還是做協助的工作,而不會告訴你,就是這個病,最後要把關、負責任的人還是醫生本人,不過,從國內惡烈的醫療環境來看,經常可以聽到醫生進行外科手術時,開錯部位,或是用錯藥,打錯針,原因在於電腦系統中,病患的診療記錄錯誤所致,或者是醫生或護士看錯資料,想一想,Big Data(海量資料)所提供專業醫療的建議,幫助真的非常大,成果豐碩,但是,一旦誤用資料所造成的後果,卻是很嚴重的,值得大家特別注意。
所謂Big Data(海量資料)?有非常多的定義說明,但業界共識的3V1C是很好的描述,如下圖:
- 資料量(Volume):動輒以Terabyte計,甚至要處理Petabyte等級的資料量;
- 處理速度(Velocity):從批次、即時到串流,線上廣告要在40毫秒內決定回應內容,而授信系統必須在1毫秒裡面完成客戶信評的計算;
- 內容多樣性(Variety):資料的樣式包括結構化、非結構化與半結構化,以及三種型式的組合;
- 複雜性(Complexity):面對前述3V的綜合需求,Gartner說結構複雜,筆者則詮釋為「構成複雜的挑戰」。
註: 本資料參考自「耐特普羅資訊網頁關於巨量資料 (Big Data) 簡介」說明。http://www.netpro.com.tw/?FID=23&CID=168&category=1
我們從BI(Business Intelligence) 商業智慧觀念的使用來看,它又稱商業智能,指用現代資料倉儲技術、線上分析技術、資料採礦、和資料呈現技術進行數據資料分析,以實現商業價值。從以上圖示可以瞭解,商業智慧的關鍵是從許多來自不同的企業運作系統的數據中提取出有用的數據並進行清理,以保證數據的正確性,然後經過抽取(Extraction)、轉換(Transformation)和裝載(Load),即ETL過程,合併到一個企業級的資料倉儲裡,從而得到企業數據資料的一個全面透視圖,在這個基礎上利用合適的查詢和分析工具進行資料探勘與挖掘資料比對分析,產生決策數據指標呈現給管理者,不過,剛剛所提的這些動作,非常需要透過內部稽核的方法,進行導入驗證資料的可靠性與正確性,因為,光是透過前段進行ETL作業之前資料清理的動作,很明顯是不夠的,那個大部份只是做資料格式的驗證,卻不能比較出,資料與資料間的不一致,和產生不合理之處。
從資料分析循環的觀點,我們可以瞭解,第一個步驟規劃(Planning)的重要性,它是針對所有系統控制目標所定義資料選取驗證範圍,以及測試的策略,和預期達到的目標,因此,第二個步驟資料擷取(Data Access),才能夠決定選取哪裡的資料,以及資料範圍,再定義資料表格式(Table Layout),到這個步驟,它已經決定資料的聯結及可被讀取分析,也就是相對於ETL的處理作業,然而,許多時候,我們會經常面臨資料的錯誤、不完整或不正確的情況,而這些不能等到「資料分析」時再來處理,必須要在之前,先把它分離出來,釐清資料是可靠的,因此,請大家記得一點,再進行資料探勘分析時,若資料不正確,則所出來任何趨勢分析都是假的,所以,我們必須先採用「資料分析循環(The Data Analysis Cycle)」中第三個步驟資料完整性驗證來處理。
驗證資料完整性(Data Integrity)就是指資料表(Table)中 :
- 沒有中斷的資料或錯誤的欄位定義(No corrupt data or erroneous field definitions):主要在驗證所定義資料檔案結構的有效性,是否有不適當非可列印字元的存在,以及數值欄位存在文字內容,這些都會影響資料分析的結果,使用Verify 指令主要在讓我們的查核工作避免誤判的情形!請參考:Arbutus Data Integrity Verification – 資料有效性驗證 Verify Command
- 只有有效的日期(Only validity dates):主要在驗證所定義資料檔案結構的有效性,是否有無效的日期存在,它會影響資料分析的結果,使用Verify 指令主要在讓我們的查核工作避免誤判的情形!請參考:Arbutus Data Integrity Verification – 資料有效性驗證 Verify Command
- 數值加總和控制數一致(Numeric totals that reconcile to controls):任何資料在進行分析時,都必須確認它的資料取得是否完整?範圍是否正確?這個時候你必須去驗證資料筆數及數值加總合計是否和系統帳載數一致?又資料內容若有因為正負值分別代表前後交易的關係,其加總數、總筆數、或者是平均數、標準差、最大值、最小值、以及時間範圍等,都可以讓我們事先預覽檢核,避免誤用結論發生!請參考:Arbutus Data Integrity Verification – 筆數、總和、及統計 Statistics
- 所有資料及這些都只是你需要的資料(All the data and only the data you requested):資料欄位的內容必須符合原始資料表格的定義,但經常因為不同輸入人員,未依照原先的規範鍵入資料,但它卻符合格式定義,因此,往往與系統文件不符,也會造成資料分析或用來產生決策數據時的偏差,這個經常需要利用分類彙總Arbutus Data Analysis – 資料分類(Classify Command),或是缺漏測試Arbutus Data Integrity Verification – 缺漏測試 GAP Command的方式等各種方法,來檢測資料的正確性與完整性。
- 只有唯一記錄(Only unique records):當我們在進行資料分析時,會要求主檔(參考檔)的關鍵欄位(Key)要是唯一性,不然,所分析的結果,會產生極大的誤解,請參考Arbutus Data Integrity Verification – 重複性測試 Duplicate Command
- 演算欄位包含正確數值(Calculated fields that contain correct values):許多資料表或是報表資料,欄位和欄位之間,存在著演算公式,例如總價格、總計、合計數等,這個時候,我們必須先要驗證它們之間的演算公式是否正確?
- 欄位中的資料符合預期(Data in fields where it is expected):欄位內所儲存的資料必須符合原先預期,而這也是一般人所忽略的,尤其是導入外購的ERP系統,並非所有欄位會依照原始系統設計來使用,皆會依照公司的營運模式修改,或半途變更,但系統未及時更新,因此,容易使人誤解現存資料內容,造成錯誤的數據。
- 欄位間的關係是一致的及有邏輯的(Field relationships that are consistent and logical):資料表(TABLE)中的欄位經常存在某種依存關係或是順序關係,但系統的完整性(Integrity)控制不良,就容易造成資料表及欄位間不一致的情形。
- 資料看起來是合理的(Data that looks reasonable):資料表的數據存在著與交易態別或定義不合常理之處,有必須進行瞭解,是否誤入資訊或是有發生舞弊的地方。
所以,沒有進行資料完整性的驗證,就沒有可靠的資料提供可言,也就沒有後面進行大量資料分析,產生有價值的商業行銷決策數據資料,大家在此務求謹慎!