paint-brush
Pirms AI prognozē jūsu sociālo dzīvi, tai ir jānotīra savi datiautors@andrei9735
188 lasījumi Jauna vēsture

Pirms AI prognozē jūsu sociālo dzīvi, tai ir jānotīra savi dati

autors Andrei12m2025/02/12
Read on Terminal Reader

Pārāk ilgi; Lasīt

Šajā ziņojumā mēs turpināsim darbu pie saites prognozēšanas ar Twitch datu kopu.
featured image - Pirms AI prognozē jūsu sociālo dzīvi, tai ir jānotīra savi dati
Andrei HackerNoon profile picture
0-item

Šajā ziņojumā mēs turpināsim darbu pie saites prognozēšanas ar Twitch datu kopu.


Mums jau ir diagrammas dati, kas eksportēti no Neptune, izmantojot neptune-export utilītu un “neptune_ml” profilu. Iepriekšējās darbības ir aprakstītas šīs rokasgrāmatas 2. un 1. daļā.


1. daļu lasiet šeit un 2. daļu šeit.


Dati pašlaik tiek glabāti S3 un izskatās šādi:


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" ...

Eksportēšanas utilīta mums arī ģenerēja šo konfigurācijas failu:

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" : [ ] }

Mūsu pašreizējais mērķis ir veikt datu apstrādi, kas nozīmē mūsu rīcībā esošo datu konvertēšanu formātā, ko Deep Graph Library ietvars var izmantot modeļu apmācībai. (Lai iegūtu pārskatu par saišu prognozēšanu tikai ar DGL, skatiet šo ziņu ). Tas ietver skaitlisko pazīmju normalizēšanu, kategorisko pazīmju kodēšanu, mezglu pāru sarakstu izveidi ar esošām un neesošām saitēm, lai nodrošinātu uzraudzītu mācīšanos mūsu saišu prognozēšanas uzdevumam, un datu sadalīšanu apmācības, validācijas un testa kopās.


Kā redzams failā training-data-configuration.json , mezgla līdzekļi “dienas” (konta vecums) un “skatījumi” tika atzīti par skaitliski, un tika ieteikta minimālā un maksimālā normalizēšana. Min-max normalizācija mērogo patvaļīgas vērtības līdz diapazonam [0; 1] šādi: x_normalized = (x - x_min) / (x_max - x_min). Un imputer = mediāna nozīmē, ka trūkstošās vērtības tiks aizpildītas ar vidējo vērtību.


Mezgla līdzekļi “nobriedis” un “partneris” ir apzīmēti kā “auto”, un, tā kā šajās kolonnās ir tikai Būla vērtības, mēs sagaidām, ka tie tiks atpazīti kā kategoriski līdzekļi un kodēti datu apstrādes posmā. Vilcienu validācijas testa sadalījums nav iekļauts šajā automātiski ģenerētajā failā, un noklusējuma sadalījums saites prognozēšanas uzdevumam ir 0,9, 0,05, 0,05.


Varat pielāgot normalizācijas un kodēšanas iestatījumus, kā arī izvēlēties pielāgotu vilciena validācijas un testa sadalījumu. Ja izvēlaties to darīt, vienkārši aizstājiet sākotnējo failu training-data-configuration.json S3 ar atjaunināto versiju. Pilns atbalstīto lauku saraksts šajā JSON ir pieejams šeit . Šajā ziņā mēs atstāsim šo failu nemainītu.

DATU APSTRĀDEI VAJADZĪGAS IAM LOMAS

Tāpat kā datu ielādes posmā (kas ir aprakstīts šīs apmācības 1. daļā), mums ir jāizveido IAM lomas, kas ļauj piekļūt pakalpojumiem, kurus mēs izmantosim, un mums arī jāpievieno šīs lomas mūsu Neptune klasterim. Datu apstrādes posmā mums ir vajadzīgas divas lomas. Pirmā ir Neptune loma, kas nodrošina Neptune piekļuvi SageMaker un S3. Otrais ir SageMaker izpildes loma, ko SageMaker izmanto datu apstrādes uzdevuma izpildes laikā un ļauj piekļūt S3.


Šīm lomām ir jābūt uzticamības politikām, kas ļauj Neptune un SageMaker pakalpojumiem tās uzņemties:

 { "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" } ] }

Pēc lomu izveides un to uzticamības politiku atjaunināšanas mēs tās pievienosim Neptune klasterim (Neptune -> Datubāzes -> YOUR_NEPTUNE_CLUSTER_ID -> Savienojamība un drošība -> IAM lomas -> Pievienot lomu).

DATU APSTRĀDE AR NEPTUNE ML HTTP API

Tagad, kad esam atjauninājuši failu training-data-configuration.json un pievienojuši IAM lomas Neptune klasterim, esam gatavi sākt datu apstrādes darbu. Lai to izdarītu, mums ir jānosūta pieprasījums uz Neptune klastera HTTP API no VPC iekšpuses, kurā atrodas klasteris. Lai to izdarītu, mēs izmantosim EC2 instanci.

Mēs izmantosim curl, lai sāktu datu apstrādes darbu:

 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" }'

Nepieciešami tikai šie 4 parametri: ievades datu S3 atrašanās vieta, apstrādāto datu S3 atrašanās vieta, Neptūna loma, Sagemaker loma. Ir daudz izvēles parametru: piemēram, mēs varam manuāli atlasīt EC2 instances veidu, kas tiks izveidots mūsu datu apstrādes uzdevumam, izmantojot processingInstanceType , un iestatīt tā krātuves apjomu, izmantojot processingInstanceVolumeSizeInGB . Ar pilnu parametru sarakstu var iepazīties šeit .

Klasteris atbild ar JSON, kas satur tikko izveidotā datu apstrādes darba ID:

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

Mēs varam to izmantot, lai iegūtu darba statusu ar šo komandu (izmantojiet to pašu neptuneIamRoleArn kā iepriekšējā pieprasījumā):

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

Kad tas atbild ar kaut ko līdzīgu šim,

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

mēs varam pārbaudīt izvadi. Šie faili tika izveidoti galamērķa S3 segmentā:


Grafika.* faili satur apstrādātos diagrammas datus.

Fails features.json satur mezglu un malu līdzekļu sarakstus:

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

Detalizētu informāciju par datu apstrādi un līdzekļu kodēšanu var atrast failā 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" ] } ] } }

Mēs redzam, ka kolonnas “mature” un “partner” ar Būla vērtībām, kas sākotnēji apmācību-data-configuration.json failā tika apzīmētas kā “auto”, tika kodētas kā kategorijas līdzekļi.


Fails “train_instance_recommendation.json” satur SageMaker instances veidu un krātuves lielumu, kas ir ieteicams modeļa apmācībai:

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

Failā model-hpo-configuration.json ir iekļauts modeļa veids, tā novērtēšanai izmantotā metrika, novērtēšanas biežums un hiperparametri.


Ar to noslēdzas procesa datu apstrādes posms, jo tagad esam gatavi uzsākt ML modeļa apmācību. Tas tiks apspriests šīs rokasgrāmatas nākamajā daļā.