การรวมข้อมูล

การออกแบบ Machine Learning Workflows ด้วย Python

Dr. Chris Anagnostopoulos

Honorary Associate Professor

คอมพิวเตอร์ พอร์ต และโปรโตคอล

การรับส่งข้อมูลของคอมพิวเตอร์จะถูกส่งเป็นแพ็กเก็ตจากพอร์ตของคอมพิวเตอร์ต้นทางไปยังพอร์ตของคอมพิวเตอร์ปลายทาง

การออกแบบ Machine Learning Workflows ด้วย Python

ชุดข้อมูลไซเบอร์ LANL

flows: Flow คือเซสชันการถ่ายโอนข้อมูลต่อเนื่องระหว่างพอร์ตบนคอมพิวเตอร์ต้นทางกับพอร์ตบนคอมพิวเตอร์ปลายทาง โดยใช้โปรโตคอลที่กำหนด

flows.iloc[1]
time                    471692
duration                     0
source_computer          C5808
source_port              N2414
destination_computer    C26871
destination_port        N19148
protocol                     6
packet_count                 1
byte_count                  60
1 https://csr.lanl.gov/data/cyber1/
การออกแบบ Machine Learning Workflows ด้วย Python

ชุดข้อมูลไซเบอร์ LANL

attack: ข้อมูลเกี่ยวกับการโจมตีที่ทีมรักษาความปลอดภัยดำเนินการเองในระหว่างการทดสอบ

attacks.head()
     time user@domain source_computer destination_computer
0  151036   U748@DOM1          C17693                 C305
1  151648   U748@DOM1          C17693                 C728
2  151993  U6115@DOM1          C17693                C1173
3  153792   U636@DOM1          C17693                 C294
4  155219   U748@DOM1          C17693                C5693

จะสร้างตัวอย่างที่มีป้ายกำกับจากข้อมูลนี้ได้อย่างไร?

1 https://csr.lanl.gov/data/cyber1/
การออกแบบ Machine Learning Workflows ด้วย Python

การกำหนดป้ายกำกับให้เหตุการณ์กับคอมพิวเตอร์

เหตุการณ์เดียวไม่สามารถกำหนดป้ายกำกับได้ง่าย ธุรกรรมเดียวระหว่างต้นทางที่ติดไวรัสกับคอมพิวเตอร์ปลายทาง

แต่คอมพิวเตอร์ทั้งเครื่องจะติดไวรัสหรือไม่ติดไวรัส ต้นทางที่ติดไวรัสพยายามเชื่อมต่อกับทุกพอร์ตที่เป็นไปได้ในคอมพิวเตอร์สองเครื่อง

การออกแบบ Machine Learning Workflows ด้วย Python

จัดกลุ่มและสร้างฟีเจอร์

หน่วยการวิเคราะห์ = destination_computer

flows_grouped = flows.groupby('destination_computer')

list(flows_grouped)[0]
('C10047',         
        time  duration    ...     packet_count byte_count
2791  471694         0    ...               12       6988
2792  471694         0    ...                1        193
...
2846  471694        38    ...              157      84120
การออกแบบ Machine Learning Workflows ด้วย Python

จัดกลุ่มและสร้างฟีเจอร์

จาก DataFrame หนึ่งชุดต่อคอมพิวเตอร์ ไปสู่เวกเตอร์ฟีเจอร์หนึ่งชุดต่อคอมพิวเตอร์

def featurize(df):
    return {
        'unique_ports': len(set(df['destination_port'])),
        'average_packet': np.mean(df['packet_count']),
        'average_duration': np.mean(df['duration'])
    }
การออกแบบ Machine Learning Workflows ด้วย Python

จัดกลุ่มและสร้างฟีเจอร์

out = flows.groupby('destination_computer').apply(featurize)
X = pd.DataFrame(list(out), index=out.index)

X.head()
                      average_duration      ...       unique_ports
destination_computer                        ...                   
C10047                        7.538462      ...                 13
C10054                        0.000000      ...                  1
C10131                       55.000000      ...                  1
...
[5 rows x 3 columns]
การออกแบบ Machine Learning Workflows ด้วย Python

ชุดข้อมูลที่มีป้ายกำกับ

bads = set(attacks['source_computer'].append(attacks['destination_computer']))
y = [x in bads for x in X.index]

คู่ (X, y) กลายเป็นชุดข้อมูลการจำแนกประเภทที่มีป้ายกำกับตามมาตรฐานแล้ว

X_train, X_test, y_train, y_test = train_test_split(X, y)
clf = AdaBoostClassifier()
accuracy_score(y_test, clf.fit(X_train, y_train).predict(X_test))
0.92
การออกแบบ Machine Learning Workflows ด้วย Python

พร้อมจับแฮกเกอร์แล้วหรือยัง?

การออกแบบ Machine Learning Workflows ด้วย Python

Preparing Video For Download...