1. 程式人生 > 其它 >商業智慧中的決策, 資料和資料處理方法

商業智慧中的決策, 資料和資料處理方法

-- 人會說謊, 但是資料不會

宣告

個人原創, 轉載需註明來源 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

轉換中, 需要完成的工作包括資料識別, 資料清洗, 格式轉換和屬性擴充. 目標是要轉換為結構化的元資料.

資料識別

對每個維度/欄位/特徵, 根據資料的形態, 依次判斷

  1. 資料的基礎型別(字串, 數值, 時間)
  2. 高階型別(細化數值和時間型別)
  3. 元型別, 進一步跟進資料的格式和特徵進行判斷, 例如一組字串, 是否為身份證號? 是否為手機號? 是否為IP地址?

並非所有的資料都完成上面三步的判斷.

  • 第一步是一定要完成的, 無論如何, 資料可以作為字串處理.
  • 有些資料, 可能是多個數據的組合, 或者一個數據的區域性, 需要通過格式轉換階段處理, 這一步可以先識別為字串或某種數值型別.
  • 對於欄位混雜, 或者未對齊的資料, 一個維度可能存在多種型別, 對型別的判斷可用
    • 僅通過前100條(或者其它數量)
    • 根據各種型別的比例, 選擇比例大的
    • 判斷資料來源無效, 提示錯誤

資料清洗

根據第一步得到的元型別, 如果無法判斷的, 需要人手工指定元型別

  1. 對欄位中的所有數值進行判斷, 是否滿足
  2. 根據預先制定的規則, 或者人手工下達的指令, 對不滿足的資料進行濾除, 替換或修改

這一步結束後, 欄位的數值應當符合元資料型別的要求

格式轉換和屬性擴充

轉換和擴充, 指的是資料在清洗之後, 在載入模型之前的所有資料編輯操作. 這些操作豐富多樣, 大體有以下型別

  • 特殊格式處理
    • 例如前面提到的多資料欄位, 需要將資料從一個欄位中提出, 填充到多個欄位
    • 而資料區域性, 則需要將多個欄位提出, 合併填充為一個欄位
    • 半格式化資料, 例如JSON字串, 根據解析出的內容, 提取並填充到多個欄位
  • 擴充屬性, 例如從手機號資料, 擴充出手機號歸屬地資訊, 填入省, 市, 區欄位
  • 多值歸一, 例如將各種交易描述: "收款", "入賬", "借入", 統一轉換為"IN".
  • 濾除資料, 例如從簡訊記錄中刪除所有傳送手機號以10開頭的營銷廣告資料
  • 資料替換, 例如為匹配模型資料中的省市名稱, 將"烏市"替換為"烏魯木齊市"

因為這一步之後不再處理清洗, 所以這一步的操作, 其結果都要滿足當前欄位的元資料型別對資料格式的要求

轉換規則

對於動態產生的資料, 需要儲存各欄位的元型別, 需要儲存上面得到的轉換規則, 以便新資料產生時自動轉換為目標資料

載入 Load

載入是基於資料模型的, 將對應元型別的資料, 對映到資料模型的某個特徵並載入.

在開發上, 涉及到兩部分工作

模型識別

通過抽取和轉換之後的資料集, 是一個欄位/維度/特徵的集合, 根據這個集合中的元資料型別, 與系統中存在的資料模型進行匹配, 判斷與各個模型的相似程度, 並確定或推薦最合適的資料模型.

  1. 元資料型別判斷. 根據資料模型中各個特徵的元資料型別, 與資料集中的元資料型別進行對比
  2. 欄位名/表頭判斷. 如果原始資料帶表頭, 能提供更有效的匹配依據
  3. 建立資料集與資料模型之間的欄位對映關係

模型匹配和識別通常是一次性的, 甚至在有些場合完全需要通過手工. 這部分是錦上添花的功能, 可以提升使用者體驗, 但是不會對BI的performance造成實質影響.

資料載入

資料載入就是將建立對映關係的資料載入到模型中. 根據BI的處理機制, 通常分為動態和靜態兩種

靜態載入

資料匯入後, 不會經常更新, 常用於歷史資料分析, 以及一些長效的決策. 這種載入對系統的要求不高, 按元資料格式入庫即可.

動態載入

動態載入用於處理頻繁更新, 或需要實時決策的場景, 根據來源資料的情況, 動態載入對系統的要求可能會很高

  1. 資料的頻率, 總量和視窗
    處理五秒鐘交易資料還是日交易資料, 處理一支股票還是所有上交所股票, 回溯一個季度的資料還是回溯五年資料
  2. 資料處理的實時性
    做高頻交易, 還是做行研分析
  3. 資料可靠性的標準
    是否允許中間有丟失的資料, 是否允許區域性的時間不一致

不同的場景, 對系統的設計思路是不一樣的, 需要具體問題具體分析

總結

以上說明了BI系統中決策的型別, 資料對決策的重要性, 資料的型別, 以及最重要的 -- 在BI系統中如何進行資料處理.


參考