天天看點

《資料驅動安全:資料安全分析、可視化和儀表盤》一3.4 探索資料

本節書摘來華章計算機《資料驅動安全:資料安全分析、可視化和儀表盤》一書中的第3章 ,第3.4節,[美]傑·雅克布(jay jacobs)鮑布·魯迪斯(bob rudis) 著 薛傑 王占一 張卓 胡開勇 蔣夢飏 趙爽 譯, 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

你大緻了解變量及其形式,現在是時候把你的安全領域專業知識加進來以探索與發現資料中的奧秘。這将促使你提出和回答好的問題。即便有近26萬條記錄,也會有很多工具随時告知你資料中有什麼内容。

在開始深入探索資料之前,我們總結了一些關于資料的資訊:

reliability、risk和x是整型。

ip、type、country、locale和coords是字元串。

ip位址使用點分四組表示法存儲,而不是主機名或十進制格式。

每個記錄與唯一的ip位址關聯,是以共有258 626個ip位址(在本次下載下傳中)。

每個ip位址已經通過coords字段被地理定位為經度和緯度,且記錄在同一個字段中并用逗号分隔。如果你希望使用該字段,就必須進一步解析。

當你有描述數量的變量(這是一種奇特的方式說“代表數量的數字”),你可以嘗試分析變量的基本描述性統計資料。這些統計資料包括:

最小和最大值;求差可以得到範圍(範圍=最大值–最小值)。

中位數(資料集正中的數值)。

第一和第三個四分位數(是第25和75百分位數,或者你可以認為它是第一個半部分資料的中間值和最後一個半部分資料的中間值)。

均值(所有資料值求和然後除以資料數量)。

你可以認為最大值、最小值、中位數和兩個四分位數是一個資料集的五數概括法(由tukey發明),并且兩種語言都有内置函數計算它們,即r中的summary()和python中的describe(),兩種語言同樣有函數可以計算均值。請閱讀reliability和risk(程式清單3-7和程式清單3-8)兩個主要資料行的概要。

程式清單3-7

《資料驅動安全:資料安全分析、可視化和儀表盤》一3.4 探索資料

程式清單3-8

《資料驅動安全:資料安全分析、可視化和儀表盤》一3.4 探索資料
《資料驅動安全:資料安全分析、可視化和儀表盤》一3.4 探索資料

你現在可以深入一些,共同使用reliability、risk、type和country這些字段定義資料集的種類。盡管我們認為reliability和risk僅是數值,但是它們實際上是序數,這意味着各列中的每個項都可以賦予一個整數,在reliability和risk中數值4實際意義不一定指的是數值2的兩倍,這意味着當reliability和risk的值為4時僅表示相比于它們值為2時程度更高。換言之,這些資料更像是标簽而不是僅代表數值大小。分類資料也看做“标稱值”(nominal values)、“因子”(factor),或在某些情況下是“定性變量”(qualitative variables)。

“資料”不僅僅是“資料”嗎?

你可能已經習慣了從整體的角度處理資料,認為日志檔案内容和資料庫提取的資訊僅僅是資料。如果你習慣了處理電子表格形式的資料(如microsoft的excel),你很難改變對它的固有認識。實際上,單個的資料元素可以分為兩類:定量(quantitative)資料和定性(qualitative)資料。定量資料元素代表實際數量,而定性資料(或分類資料)元素是對性質的描述。

tcp或udp的端口号是數字,但是它們不代表數量;當使用資料命名實體時,它們隻是分類資訊的一部分。接口“22”實際上并不大于或小于接口“7070”。相反,“傳輸的位元組數”或者“染毒主機數”代表了具體數量并且可以對比大小。

分類資料在r中作為factor進行操作被控制,在python中作為pandas categorical類。實際上r和python都有豐富的函數來實作因子的組建、分割、提取和分析。在程式清單3-4中,在掃描了alienvault ip信譽資料檔案後,r做出了合理的推測,ip、類型、國家和區域在本質上都是分類。國家名稱和惡意軟體類型簡單定義為類型(統計方面的标稱資料)。你也會發現r不能正确地識别出reliability和risk的定性性質,盡管有意義明确的序列數值,例如風險級别“5”高于“1”,但是序列數值不代表具體數量。(這意味着你不能計算risk的均值或與其他risk值做減法。)

在r中,定性和定量變量的差别由summary()函數自動處理(見程式清單3-9),而且它會顯示每個類别的計數。這個工作對定量變量不起作用。當變量中存在太多獨立數值時,為了得到計數,可以使用table()函數。在python中,你可以生成一個簡短的函數,利用pandas轉換資料幀的列(它隻是一個數組),将其轉換為一個命名恰當的categorical對象(見程式清單3-10),你可以适當調整來得到相似的有用輸出。

程式清單3-9

《資料驅動安全:資料安全分析、可視化和儀表盤》一3.4 探索資料

程式清單3-10

《資料驅動安全:資料安全分析、可視化和儀表盤》一3.4 探索資料
《資料驅動安全:資料安全分析、可視化和儀表盤》一3.4 探索資料
《資料驅動安全:資料安全分析、可視化和儀表盤》一3.4 探索資料
《資料驅動安全:資料安全分析、可視化和儀表盤》一3.4 探索資料

這些數值表能幫助你了解資料的概況,但是一個資料分布圖能提供一個全新的視角,讓人們了解到單純的數字不足以展示資料。我們以一個簡單的柱狀圖給出country、risk和reliability因子快速直覺的概述(分别參見圖3-2到圖3-4)。你将需要單獨運作每個r代碼來得到每幅圖。

程式清單3-11

《資料驅動安全:資料安全分析、可視化和儀表盤》一3.4 探索資料

程式清單3-12

《資料驅動安全:資料安全分析、可視化和儀表盤》一3.4 探索資料
《資料驅動安全:資料安全分析、可視化和儀表盤》一3.4 探索資料
《資料驅動安全:資料安全分析、可視化和儀表盤》一3.4 探索資料

程式清單3-13

《資料驅動安全:資料安全分析、可視化和儀表盤》一3.4 探索資料
《資料驅動安全:資料安全分析、可視化和儀表盤》一3.4 探索資料

這些可視化程式的python版本在程式清單3-14、程式清單3-15和程式清單3-16中。

程式清單3-14

《資料驅動安全:資料安全分析、可視化和儀表盤》一3.4 探索資料
《資料驅動安全:資料安全分析、可視化和儀表盤》一3.4 探索資料

程式清單3-15

《資料驅動安全:資料安全分析、可視化和儀表盤》一3.4 探索資料

程式清單3-16

《資料驅動安全:資料安全分析、可視化和儀表盤》一3.4 探索資料

圖3-5所示的國家圖說明了确實有一些國家明顯存在更多的惡意節點,你可以通過一個時刻的數量來觀察清單中前十個國家的數量比例(程式清單3-17和程式清單3-18)。

程式清單3-17

《資料驅動安全:資料安全分析、可視化和儀表盤》一3.4 探索資料
《資料驅動安全:資料安全分析、可視化和儀表盤》一3.4 探索資料
《資料驅動安全:資料安全分析、可視化和儀表盤》一3.4 探索資料

程式清單3-18

《資料驅動安全:資料安全分析、可視化和儀表盤》一3.4 探索資料

這個快速計算展示了清單中中國和美國共統計出大約46%的惡意節點,而俄羅斯大約有2.4%。在這裡,探索的關鍵點之一是如何比較各種行業報告,因為你期望這些國家中的多個都出現在前十位。然而,一些國家的節點數量顯示出資料集可能有一些偏差。你還可以看到,3%的節點不能地理定位(在r程式輸出中的[other]分類)。

第5章包含了ip位址的地理定位的挑戰與陷阱,是以我們不在這裡進一步讨論。

對于risk變量,你會發現大多數節點的風險都是微不足道的(非常低以至于可以忽略)。有一些其他元素很有特點,實際上沒有端點在1、5、6或7類别中,同時也沒有端點存在于剩餘的定義範圍[8-10]中。這種異常是一種标志,值得深入挖掘,這個異常是資料集内容不均衡的直接證據。

最後,節點的reliability率也顯得有些偏斜(也就是其分布偏向了均值或呈集中趨勢)。大部分數值被分類到級别2和級别4中,大于級别4的評級不多。可信度評級完全沒有級别3,這個現象應引發一些思考。它也許說明了評級配置設定的一種系統缺陷,也可能你至少有兩個獨立的資料集。無論如何,大量資料集中在級别2和級别4而少量集中在級别3這個現象是一個标志,你應進一步探索,因為它有些奇怪并令人驚訝。

你現在有些線索并對資料核心内容的構成有了更清晰的認識。這個初步的分析給你足夠的資訊來制定研究問題。