商業智慧中的決策, 資料和資料處理方法
-- 人會說謊, 但是資料不會
宣告
個人原創, 轉載需註明來源 https://www.cnblogs.com/milton/p/16296974.html
資料和決策
商業智慧(Business Intelligence)是一個總稱: 包括資料的定義, 生成, 收集, 儲存和分析, 以及最後的一環 -- 決策.
資料化是對資訊進行收集, 量化和儲存. 這個趨勢將一切活動數字化
- 可以電子化的活動: 媒體, 通訊, 交易, 票據, 音樂, 娛樂等, 資訊化的變革直接取代了過去傳統的工作方式
- 無法電子化的活動: 建築, 製造, 運輸, 食品, 醫護, 商超等, 因為必須以物理形態交付, 這些活動無法數字化, 但是可以通過IOT將過程數字化, 這方面現在有個流行名詞叫數字孿生
由於科技的發展, 儲存與傳輸的成本越來越低, 資訊的產生速度與日俱增, 作為企業如何利用資料價值變得前所未有的重要.
資料對於決策的重要性 -- 傳說羅斯柴爾德家族通過信鴿, 在滑鐵盧戰役還沒有結束時就提前知道結果, 從而大量買入英國國債, 雖然未必是真事, 也未必就是其成功的關鍵因素, 但是可以看出資訊如何關鍵.
商業智慧作為高價值服務, 自20世紀60年代計算機出現時就已經存在, 當時主要的使用者是大型企業和政府部門, 經過半個世紀的發展, 商業智慧已經成為中小企業的必備技能.
資料驅動決策
如果一個人把決策建立在主觀認知而不是事實基礎上, 就容易產生錯誤的決策. 企業也是如此.
使用BI, 企業可以從實際資料中提取關鍵事實, 將其轉化為決策的依據. 是否高效地使用商業智慧和分析, 是現代環境中成功的關鍵.
商業決策根據頻率和影響, 通常分為三類: 運營, 管理和戰略.
運營決策
運營決策通常頻繁發生, 每小時每分鐘, 與企業的業務相關. 運營決策影響企業的日常經營情況以及盈利能力. 對於生產經營中存在的具體問題, 通過BI系統進行自動決策或輔助決策, 可以提升工作效率, 減小風險, 例如
- 媒體通過分析使用者的閱讀歷史, 向用戶推薦喜歡的內容, 提升使用者粘度.
- 產線通過收集當前的庫存, 產量, 成品率, 未來的訂單, 向採購部門提示可能出現短缺風險
- 風控根據使用者的信貸歷史, 行業, 收入, 住址, 電話, 人際關係, 判斷使用者的風險等級, 決定信貸額度
- 高頻交易系統. 這算是BI系統的一個極端例子.
管理決策
管理決策的頻率不會很頻繁, 例如每週或每月, 屬於企業中的中層管理決策, 通常這些決策與戰略決策的息息相關. 例子包括產品價格調整, 營銷策略, 優惠政策等:
- 廣告投放中, 根據各通道同類業務的歷史performance, 確定在各通道的投放比例和投放策略
- 根據生產原料, 期貨市場的市場供給情況預估成本, 確定未來一個季度的產品價格空間
- 根據營銷目標, 流量通道的變化, 流量成本和轉換成本, 調整營銷策略.
戰略決策
戰略決策通常由一個組織的最高管理層制定, 將對組織未來長時間的活動造成重大影響. 需要對多種方案進行仔細分析和評估後確定, 這種決策通常是不可重複的. 通過BI可以分析巨集觀環境, 通過市場趨勢, 貨幣週期, 政策風向, 市場監管, 領導人偏好等重要資訊, 結合內生資料對各種方案進行量化, 為最終的戰略決策提供依據.
戰略決策的例子包括
- 資產的兼併收購和出售
- 事業部整合, 組織架構調整
- 預算和目標調整, 對新市場的投資
- 產線的擴張, 連鎖店面的擴張, 新城市的佈局
決策的一致性
決策中, 每一個層級都為實現上一層的決策服務, 一個大的決策會隨著時間不斷分解為更小的決策, 直至目標達成, 或目標無法達成不得不更換上層決策.
以俄政府決定武裝進攻烏克蘭為例
- 戰略決策: 制定發動戰爭的目的, 確定要武裝進攻, 確定進攻目標, 對各種情況的推演(需要多少物資和人力, 什麼時間開打, 如何應對戰爭帶來的內外風險和Plan B)
- 管理決策: 具體到某一階段的進攻, 階段目標, 預估對方規模, 投入的資源, 如何協調各職能, 前線和後勤, 對可能存在風險的預估
- 運營決策: 具體到一個具體的進攻, 對方有哪些工事和火力點, 己方有哪些武器裝置, 進攻的選項和判斷, 以及戰鬥過程中出現各種情況的應對.
隨著每一個區域性戰鬥(運營決策)的執行, 結果與預期的差距, 導致上層決策(戰略決策)不斷調整, 從最初的空降基輔, 到五月初的戰線收縮轉為集中兵力從東部推進. 可以看出在開戰之初, 俄政府的資料和決策是有問題的, 基於錯誤的資料和判斷, 做出了開戰和冒進的決策.
用於決策的資料
從整體看, 這些資料分為
公共資料
公共資料指的是能從公開的渠道獲取的資料, 例如貨幣匯率, 證券資產的價格; 某一地的人口, 氣溫, 降水量和溼度, 手機號歸屬地, IP歸屬地, 身份證歸屬地, 企業所處行業的原材料和商品價格行情, 等等.
不同的業務對公共資料有不同的需求, 體現在精度(準確性), 實時性, 回溯性等方面. 例如交易資料, 可以分為不同的時間間隔, 五秒, 五分鐘, 日, 周.
要求不高的資料, 可以從公開渠道下載或自行採集, 但是對精度和實時性要求高的資料, 需要從非公共渠道購買.
非公共資料
這部分資料指非公開渠道的資料, 或者需要付費的商業資料. 例如上面提到的高頻交易資料, 有專人維護的地理資訊和交通訊息, 一些行研收集的行業資料, 還有監管機構從被監管機構提取的運營資料等.
內生資料
企業運營中產生的資料: 財務資料, 業務資料, 大部分BI系統, 處理的是這部分內容, 配合公共和非公共資料, 產生報表或做出決策.
資料的型別
資料的型別, 從不同的角度有不同的分類:
- 定性和定量
- 離散和連續
- 單維和多維 (例如地理座標)
對於定性資料, 必須將定性資料轉化為定量資料, 才能進行正確的分析.
BI系統對資料的分類
BI系統對資料的分類有三層, 分別是 Raw(原始資料), Meta(元), Model(模型), 每一層都是對前一層資料的細分.
Raw 原始資料
原始資料泛指各種未經校驗的, 未處理的, 未結構化的, 無直接的自然含義的資料. 這一階段的資料是粗糙的, 可能存在噪音, 可能存在不匹配的格式, 需要處理後才能被軟體使用.
原始資料的例子
- 從感測器採集的每秒的角度讀數
根據ADC的取樣頻率和精度, 感測器讀數會是一個固定時間間隔的數字, 這個數字有可能是一個區間的整數值, 例如對於10bit精度的ADC, 取樣值範圍為[0, 1024], 邊界和中點未校準, 例如搖桿角度範圍為120度, 讀數中點(60度)在 508 而不是 511, 邊界是[5, 1021], 而且讀數的變化在各個角度是不均勻的, 中間解析度大, 兩邊解析度小. 對於這種資料, 要經過校準, 去噪, 轉換等方式, 將讀數轉變為對下一個階段有意義的資料. - 媒體的網頁資料
從爬蟲的角度, 如果是一個HTML結構的頁面, 資料是一個很大的字串, 當中包含了各種HTML標籤, 廣告和固定的介面元素, 如果需要的是其中的新聞內容, 則需要對資料進行HTML解析, 根據路徑提取某一個id或class中的內容. 內容中如果存在一些特殊字元, 例如內嵌了廣告, 或者站內的連結, 還需要進一步過濾 - 通話錄音
通話錄音是一個二進位制檔案, 根據資料處理的需要, 例如希望做文字分析和關鍵詞提取, 則首先需要根據錄音的編碼格式, G.726, 還是AC3, MP3, 還原迴音頻, 使用ASR工具提取文字
原始資料的型別
基礎型別
從BI軟體的角度, 原始資料有以下基礎型別
- 字串
- 數值
- 時間
- 二進位制(*)
實際上通用的型別只有三種: 字串, 數值, 時間. 二進位制是一種特殊的型別, 用於處理其它的例外情況, 例如無法識別的資料. 對於二進位制資料, 通常需要轉換為以上的三種通用型別才能被BI軟體處理.
基於以上的基礎型別, 進行排列組合可以得到派生型別, 例如
- 多維資料(例如X-Y-Z軸座標值)
- 陣列
高階型別
對於數值型別和時間型別, 可以進一步衍生出高階型別
- 數值
- 整數
- 小整數(絕對值不超過255的整數)
- 長整數
- 浮點數
- 百分比(取值在0 - 1區間的值)
- 小數位數固定的浮點數
- 整數
- 時間
- 日期(不包含時間部分)
- 時間(不包含日期部分)
- 完整時間(包含年月日時分秒)
Meta 元資料
元資料是經過加工清洗後, 具有自然含義的資料. 這一階段的資料是可以被BI軟體直觀理解的, 與現實世界相關的資料.
元資料的例子
- 校準後的角度讀數
經過校準和轉換, 在規定的誤差範圍內反映機械搖桿的角度 - 攝氏度氣溫值
在規定的誤差範圍內以攝氏度反映溫度值 - 中國身份證號
- IPv4地址
元資料的型別
不同的基礎型別, 可以派生出的元資料型別有
- 字串
- 身份證號
- 手機號
- 銀行卡號
- IP地址
- 郵政編碼
- 姓名
- ...
- 數值
- 金額
- 氣溫
- 海拔高度
- 兩地距離
- 速度
- 加速度
- 時間長度
- ...
同樣地元資料也可以通過排列組合產生派生型別, 例如
- 一個經度和一個緯度組合產生的地理座標點
- 兩個經緯度組合產生的一條地理連線, 或者一個地理矩形區域
Model 模型資料
模型資料是對映到模型中具體欄位的元資料. 這一階段的資料, 在模型中是確定的欄位(或者說特徵量). 將用於模型訓練和計算, 影響最終的決策.
模型資料的例子
- 財務模型中某個子公司月營收金額
- 交易模型中某個證券資產每天的收盤價格
- 快遞物流模型中的發件人手機號
- 快遞物流模型中的收件人手機號
模型資料的型別
因為從元資料可以派生出無窮盡的模型資料, 這部分就無法列舉了.
以手機號這個元資料型別舉一個簡單的例子, 根據不同的模型結構, 手機號可以體現為各種具體的欄位
- 銀行卡預留手機號
- 交易方手機號
- 交易對手方手機號
- 發件人手機號
- 收件人手機號
- 簡訊接收方手機號
模型資料的屬性
模型資料根據模型要求, 對資料有額外的屬性要求
- 是否允許空值 NULL, 如果不允許空, 則在轉換階段要對空值進行過濾或替換處理
- 是否有限, 例如各種列舉值, 性別, 年齡, 郵政編碼, 都屬於有限資料
- 是否連續, 例如金額, 速度, 經緯度, 這些屬於連續值, 對於連續值欄位不能作聚合處理
- 是否無符號, 例如時間長度, 尺寸長度, 這些使用負值沒有意義
BI系統對資料的處理
BI系統對資料的處理, 可以用ETL的過程進行理解. 借用 Power BI 的資料匯入和型別作為示例
[圖]
抽取 Extract
抽取可以通俗的理解為資料匯入. BI系統的第一件事就是將資料匯入. 不管主動還是被動, 通過檔案或者介面. 在這個過程中需要適配各種資料來源的容量, 頻次和格式, 作為BI系統, 這部分也許並不能體現高科技, 但是需要實實在在地投入成本, 控制好質量.
資料的質量, 匯入的效率, 異常的處理, 決定了BI系統performance的上限.
技術處理
這裡不討論方式和介面適配, 只對入庫進行說明.
在抽取階段, 每個維度/欄位/特徵的資料格式必須為可用的格式: 字串, 數值或時間. 如果連字串都無法儲存, 例如二進位制資料, 必須通過專用的抽取方法或工具轉換為可用的格式.
在實際應用中, 有兩種形態: 桌面應用 和 伺服器應用
桌面應用
如果BI軟體直接執行在使用者的個人電腦上, 例如 Power BI, 這種情況下, 系統的資源是有限的, 通常只有4G - 8G的記憶體, 以及幾十GB的儲存, 但是BI軟體可以直接訪問檔案(例如Excel和CSV資料來源).
在桌面應用中, 匯入可以簡化為連線資料來源, 將資料來源作為轉換和載入的基礎.
伺服器應用
如果BI軟體執行在伺服器上, 使用者通過客戶端或瀏覽器使用BI軟體提供的服務, 這種情況下, 系統的資源會充裕得多, 例如32G或更多的記憶體, 數個TB的儲存, 但是BI軟體面對的資料都在遠端, 例如使用者個人電腦上儲存的Excel, 公司財務系統上儲存的報表.
在伺服器應用中, 通常需要將資料快取至服務端, 再進行後續的清洗和轉換. 對於通用的場景, 可以將原始資料都儲存為字串, 對於存在二進位制資料的場景可以考慮區域性使用二進位制欄位.
轉換 Transform
轉換中, 需要完成的工作包括資料識別, 資料清洗, 格式轉換和屬性擴充. 目標是要轉換為結構化的元資料.
資料識別
對每個維度/欄位/特徵, 根據資料的形態, 依次判斷
- 資料的基礎型別(字串, 數值, 時間)
- 高階型別(細化數值和時間型別)
- 元型別, 進一步跟進資料的格式和特徵進行判斷, 例如一組字串, 是否為身份證號? 是否為手機號? 是否為IP地址?
並非所有的資料都完成上面三步的判斷.
- 第一步是一定要完成的, 無論如何, 資料可以作為字串處理.
- 有些資料, 可能是多個數據的組合, 或者一個數據的區域性, 需要通過格式轉換階段處理, 這一步可以先識別為字串或某種數值型別.
- 對於欄位混雜, 或者未對齊的資料, 一個維度可能存在多種型別, 對型別的判斷可用
- 僅通過前100條(或者其它數量)
- 根據各種型別的比例, 選擇比例大的
- 判斷資料來源無效, 提示錯誤
資料清洗
根據第一步得到的元型別, 如果無法判斷的, 需要人手工指定元型別
- 對欄位中的所有數值進行判斷, 是否滿足
- 根據預先制定的規則, 或者人手工下達的指令, 對不滿足的資料進行濾除, 替換或修改
這一步結束後, 欄位的數值應當符合元資料型別的要求
格式轉換和屬性擴充
轉換和擴充, 指的是資料在清洗之後, 在載入模型之前的所有資料編輯操作. 這些操作豐富多樣, 大體有以下型別
- 特殊格式處理
- 例如前面提到的多資料欄位, 需要將資料從一個欄位中提出, 填充到多個欄位
- 而資料區域性, 則需要將多個欄位提出, 合併填充為一個欄位
- 半格式化資料, 例如JSON字串, 根據解析出的內容, 提取並填充到多個欄位
- 擴充屬性, 例如從手機號資料, 擴充出手機號歸屬地資訊, 填入省, 市, 區欄位
- 多值歸一, 例如將各種交易描述: "收款", "入賬", "借入", 統一轉換為"IN".
- 濾除資料, 例如從簡訊記錄中刪除所有傳送手機號以10開頭的營銷廣告資料
- 資料替換, 例如為匹配模型資料中的省市名稱, 將"烏市"替換為"烏魯木齊市"
因為這一步之後不再處理清洗, 所以這一步的操作, 其結果都要滿足當前欄位的元資料型別對資料格式的要求
轉換規則
對於動態產生的資料, 需要儲存各欄位的元型別, 需要儲存上面得到的轉換規則, 以便新資料產生時自動轉換為目標資料
載入 Load
載入是基於資料模型的, 將對應元型別的資料, 對映到資料模型的某個特徵並載入.
在開發上, 涉及到兩部分工作
模型識別
通過抽取和轉換之後的資料集, 是一個欄位/維度/特徵的集合, 根據這個集合中的元資料型別, 與系統中存在的資料模型進行匹配, 判斷與各個模型的相似程度, 並確定或推薦最合適的資料模型.
- 元資料型別判斷. 根據資料模型中各個特徵的元資料型別, 與資料集中的元資料型別進行對比
- 欄位名/表頭判斷. 如果原始資料帶表頭, 能提供更有效的匹配依據
- 建立資料集與資料模型之間的欄位對映關係
模型匹配和識別通常是一次性的, 甚至在有些場合完全需要通過手工. 這部分是錦上添花的功能, 可以提升使用者體驗, 但是不會對BI的performance造成實質影響.
資料載入
資料載入就是將建立對映關係的資料載入到模型中. 根據BI的處理機制, 通常分為動態和靜態兩種
靜態載入
資料匯入後, 不會經常更新, 常用於歷史資料分析, 以及一些長效的決策. 這種載入對系統的要求不高, 按元資料格式入庫即可.
動態載入
動態載入用於處理頻繁更新, 或需要實時決策的場景, 根據來源資料的情況, 動態載入對系統的要求可能會很高
- 資料的頻率, 總量和視窗
處理五秒鐘交易資料還是日交易資料, 處理一支股票還是所有上交所股票, 回溯一個季度的資料還是回溯五年資料 - 資料處理的實時性
做高頻交易, 還是做行研分析 - 資料可靠性的標準
是否允許中間有丟失的資料, 是否允許區域性的時間不一致
不同的場景, 對系統的設計思路是不一樣的, 需要具體問題具體分析
總結
以上說明了BI系統中決策的型別, 資料對決策的重要性, 資料的型別, 以及最重要的 -- 在BI系統中如何進行資料處理.
參考
- Business intelligence https://en.wikipedia.org/wiki/Business_intelligence
- An in-depth guide to data preparation https://www.techtarget.com/searchbusinessanalytics/definition/data-preparation
- Data Types in Business Intelligence https://buh-lah-kay.medium.com/data-basics-of-business-intelligence-f31ca2fbdcd0
- Data Types Supported by Oracle BI Enterprise Edition https://docs.oracle.com/cd/E28280_01/bi.1111/e10540/data_types.htm
- Enduring lessons from the legend of Rothschild’s carrier pigeon https://www.ft.com/content/255b75e0-c77d-11e2-be27-00144feab7de
- Quantitative Data: Definition, Types, Analysis and Examples https://www.questionpro.com/blog/quantitative-data/