paint-brush
Մինչ AI-ն կանխատեսում է ձեր սոցիալական կյանքը, այն պետք է մաքրի իր տվյալներըկողմից@andrei9735
188 ընթերցումներ Նոր պատմություն

Մինչ AI-ն կանխատեսում է ձեր սոցիալական կյանքը, այն պետք է մաքրի իր տվյալները

կողմից Andrei12m2025/02/12
Read on Terminal Reader

Չափազանց երկար; Կարդալ

Այս գրառման մեջ մենք կշարունակենք աշխատել Twitch տվյալների բազայի հետ կապի կանխատեսման վրա:
featured image - Մինչ AI-ն կանխատեսում է ձեր սոցիալական կյանքը, այն պետք է մաքրի իր տվյալները
Andrei HackerNoon profile picture
0-item

Այս գրառման մեջ մենք կշարունակենք աշխատել Twitch տվյալների բազայի հետ կապի կանխատեսման վրա:


Մենք արդեն ունենք գրաֆիկական տվյալներ, որոնք արտահանվել են Նեպտունից՝ օգտագործելով neptune-export utility և «neptune_ml» պրոֆիլը: Նախորդ քայլերը նկարագրված են սույն ուղեցույցի 2-րդ և 1-ին մասերում:


1-ին մասը կարդացեք այստեղ , իսկ 2-րդ մասը ՝ այստեղ։


Տվյալները ներկայումս պահվում են S3-ում և ունեն հետևյալ տեսքը.


Vertices CSV (nodes/user.consolidated.csv):

 ~id,~label,days,mature,views,partner "6980","user",771,true,2935,false "547","user",2602,true,18099,false "2173","user",1973,false,3939,false ...

Edges CSV (edges/user-follows-user.consolidated.csv):

 ~id,~label,~from,~to,~fromLabels,~toLabels "3","follows","6194","2507","user","user" "19","follows","3","3739","user","user" "35","follows","6","2126","user","user" ...

Արտահանման ծրագիրը նաև ստեղծել է այս կազմաձևման ֆայլը մեզ համար.

training-data-configuration.json:

 { "version" : "v2.0", "query_engine" : "gremlin", "graph" : { "nodes" : [ { "file_name" : "nodes/user.consolidated.csv", "separator" : ",", "node" : [ "~id", "user" ], "features" : [ { "feature" : [ "days", "days", "numerical" ], "norm" : "min-max", "imputer" : "median" }, { "feature" : [ "mature", "mature", "auto" ] }, { "feature" : [ "views", "views", "numerical" ], "norm" : "min-max", "imputer" : "median" }, { "feature" : [ "partner", "partner", "auto" ] } ] } ], "edges" : [ { "file_name" : "edges/%28user%29-follows-%28user%29.consolidated.csv", "separator" : ",", "source" : [ "~from", "user" ], "relation" : [ "", "follows" ], "dest" : [ "~to", "user" ], "features" : [ ] } ] }, "warnings" : [ ] }

Մեր ներկայիս նպատակն է կատարել տվյալների մշակում, ինչը նշանակում է, որ մեր ունեցած տվյալները փոխակերպում ենք այնպիսի ձևաչափի, որը Deep Graph Library-ի շրջանակը կարող է օգտագործել մոդելային ուսուցման համար: (Ուղղակի DGL-ով կապի կանխատեսման ակնարկի համար տես այս գրառումը ): Դա ներառում է թվային հատկանիշների նորմալացում, դասակարգային հատկանիշների կոդավորում, գոյություն ունեցող և գոյություն չունեցող հղումներով հանգույցների զույգերի ցուցակների ստեղծում՝ մեր հղումների կանխատեսման առաջադրանքի համար վերահսկվող ուսուցումը հնարավոր դարձնելու համար, և տվյալների բաժանումը վերապատրաստման, վավերացման և փորձարկման խմբերի:


Ինչպես տեսնում եք training-data-configuration.json ֆայլում, հանգույցի «օրեր» (հաշվի տարիք) և «դիտումներ» հատկանիշները ճանաչվել են թվային, և առաջարկվել է min-max նորմալացում: Min-max նորմալացումը չափում է կամայական արժեքները մինչև [0; 1] այսպես՝ x_normalized = (x - x_min) / (x_max - x_min): Իսկ imputer = մեդիան նշանակում է, որ բաց թողնված արժեքները լրացնելու են միջին արժեքով:


Հանգույցի «հասուն» և «գործընկեր» հատկանիշները պիտակավորված են որպես «ավտո», և քանի որ այդ սյունակները պարունակում են միայն բուլյան արժեքներ, մենք ակնկալում ենք, որ դրանք կճանաչվեն որպես դասակարգային հատկանիշներ և կոդավորված կլինեն տվյալների մշակման փուլում: Train-validation-test split-ը ներառված չէ այս ավտոմատ ստեղծվող ֆայլում, և հղումների կանխատեսման առաջադրանքի լռելյայն բաժանումը 0.9, 0.05, 0.05 է:


Դուք կարող եք կարգավորել նորմալացման և կոդավորման կարգավորումները, ինչպես նաև կարող եք ընտրել հատուկ գնացքի վավերացման թեստի բաժանում: Եթե որոշեք դա անել, պարզապես S3-ի նախնական training-data-configuration.json ֆայլը փոխարինեք թարմացված տարբերակով: Այդ JSON-ի աջակցվող դաշտերի ամբողջական ցանկը հասանելի է այստեղ : Այս գրառման մեջ մենք այս ֆայլը կթողնենք անփոփոխ:

ՏՎՅԱԼՆԵՐԻ ՄՇԱԿՄԱՆ ՀԱՄԱՐ ԱՆՀՐԱԺԵՇՏ IAM ԴԵՐԵՐ

Ճիշտ այնպես, ինչպես տվյալների բեռնման փուլում (որը նկարագրված է այս ձեռնարկի 1-ին մասում), մենք պետք է ստեղծենք IAM դերեր, որոնք թույլ են տալիս մուտք գործել այն ծառայությունները, որոնք մենք կօգտագործենք, և մենք նաև պետք է ավելացնենք այդ դերերը մեր Նեպտունի կլաստերին: Տվյալների մշակման փուլի համար մեզ անհրաժեշտ է երկու դեր. Առաջինը Նեպտունի դերն է, որն ապահովում է Նեպտունի մուտքը SageMaker և S3: Երկրորդը SageMaker-ի կատարման դերն է, որն օգտագործվում է SageMaker-ի կողմից տվյալների մշակման առաջադրանքն իրականացնելիս և թույլ է տալիս մուտք գործել S3:


Այս դերերը պետք է ունենան վստահության քաղաքականություն, որը թույլ կտա Neptune և SageMaker ծառայություններին ստանձնել դրանք.

 { "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "sagemaker.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Sid": "", "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Դերերը ստեղծելուց և վստահության քաղաքականությունը թարմացնելուց հետո մենք դրանք կավելացնենք Նեպտունի կլաստերին (Neptune -> Databases -> YOUR_NEPTUNE_CLUSTER_ID -> Connectivity & Security -> IAM Roles -> Add role):

ՏՎՅԱԼՆԵՐԻ ՄՇԱԿՈՒՄ NEPTUNE ML HTTP API-ով

Այժմ, երբ մենք թարմացրել ենք training-data-configuration.json ֆայլը և ավելացրել ենք IAM դերերը Նեպտունի կլաստերին, մենք պատրաստ ենք սկսել տվյալների մշակման աշխատանքը: Դա անելու համար մենք պետք է հարցում ուղարկենք Neptune կլաստերի HTTP API-ին VPC-ի ներսից, որտեղ գտնվում է կլաստերը: Դա անելու համար մենք կօգտագործենք և EC2 օրինակը:

Մենք կօգտագործենք curl-ը՝ տվյալների մշակման աշխատանքը սկսելու համար.

 curl -XPOST https://(YOUR_NEPTUNE_ENDPOINT):8182/ml/dataprocessing \ -H 'Content-Type: application/json' \ -d '{ "inputDataS3Location" : "s3://SOURCE_BUCKET/neptune-export/...", "processedDataS3Location" : "s3://OUTPUT_BUCKET/neptune-export-processed/...", "neptuneIamRoleArn": "arn:aws:iam::123456789012:role/NeptuneMLDataProcessingNeptuneRole", "sagemakerIamRoleArn": "arn:aws:iam::123456789012:role/NeptuneMLDataProcessingSagemakerRole" }'

Պարզապես այս 4 պարամետրերն են պահանջվում՝ մուտքագրման տվյալներ S3 գտնվելու վայրը, մշակված տվյալներ S3 գտնվելու վայրը, Նեպտունի դերը, Sagemaker դերը: Կան բազմաթիվ ընտրովի պարամետրեր. օրինակ, մենք կարող ենք ձեռքով ընտրել EC2 օրինակի տեսակը, որը կստեղծվի մեր տվյալների մշակման առաջադրանքի համար processingInstanceType ով և սահմանել դրա պահպանման ծավալի չափը processingInstanceVolumeSizeInGB ով: Պարամետրերի ամբողջական ցանկը կարող եք գտնել այստեղ :

Կլաստերը պատասխանում է JSON-ով, որը պարունակում է տվյալների մշակման աշխատանքի ID-ն, որը մենք հենց նոր ստեղծեցինք.

 {"id":"d584f5bc-d90e-4957-be01-523e07a7562e"}

Մենք կարող ենք օգտագործել այն այս հրամանով աշխատանքի կարգավիճակը ստանալու համար (օգտագործեք նույն neptuneIamRoleArn-ը, ինչպես նախորդ հարցումում).

 curl https://YOUR_NEPTUNE_CLUSTER_ENDPOINT:8182/ml/dataprocessing/YOUR_JOB_ID?neptuneIamRoleArn='arn:aws:iam::123456789012:role/NeptuneMLDataProcessingNeptuneRole'

Երբ նա պատասխանում է նման բանով,

 { "processingJob": {...}, "id":"d584f5bc-d90e-4957-be01-523e07a7562e", "status":"Completed" }

մենք կարող ենք ստուգել արդյունքը: Այս ֆայլերը ստեղծվել են նպատակակետ S3 դույլով.


Գրաֆիկ.* ֆայլերը պարունակում են մշակված գրաֆիկի տվյալները:

Features.json ֆայլը պարունակում է հանգույցների և եզրերի առանձնահատկությունների ցուցակները.

 { "nodeProperties": { "user": [ "days", "mature", "views", "partner" ] }, "edgeProperties": {} }

Մանրամասները, թե ինչպես են մշակվել տվյալները և ինչպես են կոդավորվել հնարավորությունները, կարելի է գտնել updated_training_config.json ֆայլում՝

 { "graph": { "nodes": [ { "file_name": "nodes/user.consolidated.csv", "separator": ",", "node": [ "~id", "user" ], "features": [ { "feature": [ "days", "days", "numerical" ], "norm": "min-max", "imputer": "median" }, { "feature": [ "mature", "mature", "category" ] }, { "feature": [ "views", "views", "numerical" ], "norm": "min-max", "imputer": "median" }, { "feature": [ "partner", "partner", "category" ] } ] } ], "edges": [ { "file_name": "edges/%28user%29-follows-%28user%29.consolidated.csv", "separator": ",", "source": [ "~from", "user" ], "relation": [ "", "follows" ], "dest": [ "~to", "user" ] } ] } }

Մենք կարող ենք տեսնել, որ բուլյան արժեքներով «հասուն» և «գործընկեր» սյունակները, որոնք ի սկզբանե պիտակավորված էին որպես «ավտո» train-data-configuration.json ֆայլում, կոդավորված էին որպես կատեգորիայի հատկանիշներ:


«train_instance_recommendation.json» ֆայլը պարունակում է SageMaker օրինակի տեսակը և պահեստավորման չափը, որն առաջարկվում է մոդելային ուսուցման համար.

 { "instance": "ml.g4dn.2xlarge", "cpu_instance": "ml.m5.2xlarge", "disk_size": 14126462, "mem_size": 4349122131.111111 }

Model-hpo-configuration.json ֆայլը պարունակում է մոդելի տեսակը, դրա գնահատման համար օգտագործվող չափումները, գնահատման հաճախականությունը և հիպերպարամետրերը:


Սա ավարտում է գործընթացի տվյալների մշակման փուլը, քանի որ մենք այժմ պատրաստ ենք սկսել ML մոդելի ուսուցումը: Այն կքննարկվի այս ուղեցույցի հաջորդ մասում: