Trimma ML-modeller för ytterligare mål som rättvisa med SageMaker Automatic Model Tuning

Trimma ML-modeller för ytterligare mål som rättvisa med SageMaker Automatic Model Tuning

Modellinställning är den experimentella processen att hitta de optimala parametrarna och konfigurationerna för en maskininlärningsmodell (ML) som resulterar i bästa möjliga önskade resultat med en valideringsdatauppsättning. Enstaka objektiv optimering med ett prestandamått är det vanligaste tillvägagångssättet för att trimma ML-modeller. Men förutom prediktiv prestanda kan det finnas flera mål som måste beaktas för vissa tillämpningar. Till exempel,

  1. Rättvisa – Syftet här är att uppmuntra modeller för att mildra partiskhet i modellresultat mellan vissa undergrupper i data, särskilt när människor är föremål för algoritmiska beslut. Till exempel bör en kreditansökan inte bara vara korrekt utan också vara opartisk för olika befolkningsundergrupper.
  2. Slutledningstid – Syftet här är att minska slutledningstiden under modellanrop. Till exempel måste ett taligenkänningssystem inte bara förstå olika dialekter av samma språk korrekt, utan också fungera inom en specificerad tidsgräns som är acceptabel av affärsprocessen.
  3. Energieffektivitet – Målet här är att utbilda mindre energieffektiva modeller. Till exempel komprimeras neurala nätverksmodeller för användning på mobila enheter och minskar därmed naturligt sin energiförbrukning genom att minska antalet FLOPS som krävs för att passera nätverket.

Multi-objektiv optimeringsmetoder representerar olika avvägningar mellan de önskade måtten. Detta kan innebära att hitta ett globalt minimum av en objektiv funktion under förutsättning att en uppsättning begränsningar för olika mätvärden samtidigt är uppfyllda.

Amazon SageMaker Automatic Model Tuning (AMT) hittar den bästa versionen av en modell genom att köra många SageMaker-utbildningsjobb på din datauppsättning med hjälp av algoritmen och intervallen för hyperparametrar. Den väljer sedan hyperparametervärdena som resulterar i en modell som presterar bäst, mätt med ett mått (t.ex. noggrannhet, auc, återkallelse) som du definierar. Med Amazon SageMaker automatisk modellinställning kan du hitta den bästa versionen av din modell genom att köra träningsjobb på din datauppsättning med flera sökstrategier, såsom Bayesian, Random Search, Grid Search och Hyperband.

Amazon SageMaker Clarify kan upptäcka potentiell bias under dataförberedelse, efter modellträning och i din utplacerade modell. För närvarande erbjuder den 21 olika mätvärden att välja mellan. Dessa mätvärden är också öppet tillgängliga med förtydliga python-paketet och github-förrådet här.. Du kan lära dig mer om att mäta bias med mätvärden från Amazon SageMaker Clarify på Lär dig hur Amazon SageMaker Clarify hjälper till att upptäcka partiskhet.

I den här bloggen visar vi dig hur du automatiskt ställer in en ML-modell med Amazon SageMaker AMT för både noggrannhet och rättvisa mål genom att skapa ett enda kombinerat mått. Vi visar ett användningsfall för finansiella tjänster av kreditriskförutsägelse med ett noggrannhetsmått på Area Under the Curve (AUC) att mäta prestanda och ett biasmått på Skillnad i positiva proportioner i förutspådda etiketter (DPPL) från SageMaker Clarify för att mäta obalansen i modellprognoser för olika demografiska grupper. Koden för detta exempel finns tillgänglig på GitHub.

Rättvisa förutsägelser om kreditrisk

Kreditlånebranschen är starkt beroende av kreditpoäng för att behandla låneansökningar. Generellt sett återspeglar kreditpoäng en sökandes historia av att låna och betala tillbaka pengar, och långivare hänvisar till dem när de avgör en individs kreditvärdighet. Betalningsföretag och banker är intresserade av att bygga system som kan hjälpa till att identifiera risken förknippad med en viss applikation och tillhandahålla konkurrenskraftiga kreditprodukter. Maskininlärningsmodeller (ML) kan användas för att bygga ett sådant system som bearbetar historiska sökandedata och förutsäger kreditriskprofilen. Data kan inkludera ekonomisk och anställningshistorik för den sökande, deras demografi och den nya kredit-/lånekontexten. Det finns alltid en viss statistisk osäkerhet med varje modell som förutsäger om en viss sökande kommer att fallera i framtiden. Systemen måste tillhandahålla en avvägning mellan att avvisa ansökningar som kan gå i konkurs med tiden och att acceptera ansökningar som så småningom är kreditvärdiga.

Företagsägare av ett sådant system måste säkerställa giltigheten och kvaliteten på modellerna enligt befintliga och kommande regelefterlevnadskrav. De är skyldiga att behandla kunder rättvist och ge transparens i sitt beslutsfattande. De kanske vill säkerställa att positiva modellförutsägelser inte är obalanserade mellan olika grupper (till exempel kön, ras, etnicitet, immigrationsstatus och andra). När de nödvändiga uppgifterna har samlats in, optimerar ML-modellträningen vanligtvis för förutsägelseprestanda som ett primärt mål med ett mått som klassificeringsnoggrannhet eller AUC-poäng. Alternativt kan en modell med ett givet prestationsmål begränsas med ett rättvisemått för att säkerställa att vissa krav upprätthålls. En sådan teknik för att begränsa modellen är rättvisa hyperparameterjustering. Genom att tillämpa dessa strategier kan den bästa kandidatmodellen ha lägre bias än den obegränsade modellen samtidigt som den bibehåller en hög prediktiv prestanda.

Scenario - Kreditrisk

I scenariot som avbildas i detta schema,

  1. ML-modellen är byggd med historisk kundkreditprofildata. Modelltränings- och hyperparameterjusteringsprocessen maximerar för flera mål, inklusive klassificeringsnoggrannhet och rättvisa. Modellen distribueras till en befintlig affärsprocess i ett produktionssystem.
  2. En ny kundkreditprofil utvärderas för kreditrisk. Om risken är låg kan den gå igenom en automatiserad process. Ansökningar med hög risk kan innefatta mänsklig granskning innan ett slutgiltigt beslut om godkännande eller avslag.

De beslut och mått som samlas in under design och utveckling, driftsättning och drift kan dokumenteras med SageMaker modellkort och delas med intressenterna.

Detta användningsfall visar hur man minskar modellbias mot en specifik grupp genom att finjustera hyperparametrar för ett kombinerat objektivt mått på både noggrannhet och rättvisa med SageMaker Automatic Model Tuning. Vi använder den sydtyska kredituppsättningen (Sydtyska kredituppsättningar).

Sökandedata kan delas in i följande kategorier:

  1. Demografisk
  2. Finansiell data
  3. anställnings historia
  4. Lånets syfte

Kreditriskdatastruktur

I det här exemplet tittar vi specifikt på demografin för "utländsk arbetare" och justerar en modell som förutsäger kreditansökningsbeslut med hög noggrannhet och låg fördom mot just den undergruppen.

Det finns olika bias mått som kan användas för att utvärdera systemets rättvisa med avseende på specifika undergrupper i data. Här använder vi det absoluta värdet av skillnaden i positiva proportioner i predikterade etiketter (DPPL) från SageMaker Clarify. Enkelt uttryckt mäter DPPL skillnaden i positiva klassuppdrag (god kredit) mellan utländska arbetstagare och utländska arbetstagare.

Till exempel, om 4.5 % av alla utländska arbetstagare tilldelas den positiva märkningen av modellen och 13.7 % av alla icke-utländska arbetstagare tilldelas den positiva märkningen, då DPPL = 0.137 – 0.045 = 0.092.

Lösningsarkitektur

Bilden nedan visar en översikt på hög nivå av arkitekturen för ett jobb med automatisk modellinställning med XGBoost på Amazon SageMaker.

Lösningsarkitektur på hög nivå

I lösningen förbearbetar SageMaker Processing träningsdataset från Amazon S3. Amazon SageMaker Automatic Tuning instansierar flera SageMaker-utbildningsjobb med tillhörande EC2-instanser och EBS-volymer. Behållaren för algoritmen (XGBoost) laddas från Amazon ECR i varje jobb. SageMaker AMT hittar den bästa versionen av en modell genom att köra många träningsjobb på den förbearbetade datamängden med det angivna algoritmskriptet och intervallet av hyperparametrar. Utdatavärdena loggas i Amazon CloudWatch för övervakning.

Hyperparametrarna vi ställer in i det här användningsfallet är följande:

  1. eta – Krympning i stegstorlek som används i uppdateringar för att förhindra övermontering.
  2. min_barnvikt – Minsta summa av instansvikt (hessian) som behövs för ett barn.
  3. gamma – Minsta förlustreduktion som krävs för att göra ytterligare en partition på en lövnod av trädet.
  4. Max djup – Maximalt djup av ett träd.

Definitionen av dessa hyperparametrar och andra tillgängliga med SageMaker AMT kan hittas här..

Först visar vi ett baslinjescenario med ett enda prestandamål för att ställa in hyperparametrar med automatisk modellinställning. Sedan visar vi det optimerade scenariot för ett multi-objektiv mätvärde specificerat som en kombination av prestationsmått och rättvisa mätvärde.

Enkel metrisk hyperparameterjustering (baslinje)

Det finns ett urval av flera mätvärden för ett trimjobb för att utvärdera de individuella träningsjobben. Enligt kodavsnittet nedan anger vi det enskilda objektivet som  objective_metric_name. Hyperparameterjusteringsjobbet returnerar det träningsjobb som gav det bästa värdet för det valda målmåttet.

I detta baslinjescenario ställer vi in ​​oss på Area Under Curve (AUC) enligt nedan. Det är viktigt att notera att vi bara optimerar AUC och inte optimerar för andra mätvärden som rättvisa.

from sagemaker.tuner import IntegerParameter, CategoricalParameter, ContinuousParameter, HyperparameterTuner hyperparameter_ranges = {'eta': ContinuousParameter(0, 1), 'min_child_weight': IntegerParameter(1, 10), 'gamma': IntegerParameter(1, 5), 'max_depth': IntegerParameter(1, 10)} objective_metric_name = 'validation:auc' tuner = HyperparameterTuner(estimator,
objective_metric_name,
hyperparameter_ranges,
max_jobs=100,
max_parallel_jobs=10,
) tuning_job_name = "xgb-tuner-{}".format(strftime("%d-%H-%M-%S", gmtime()))
inputs = {'train': train_data_path, 'validation': val_data_path}
tuner.fit(inputs, job_name=tuning_job_name)
tuner.wait()
tuner_metrics = sagemaker.HyperparameterTuningJobAnalytics(tuning_job_name)

I detta sammanhang max jobs tillåter oss att specificera hur många gånger ett enskilt träningsjobb kommer att trimmas och hitta det bästa träningsjobbet därifrån.

Multi Objective Hyperparameter Tuning (Fairness Optimized)

Vi vill optimera flera objektiva mätvärden med hyperparameterjustering som beskrivs i detta papper. SageMaker AMT accepterar dock fortfarande bara ett enda mått som indata.

För att möta denna utmaning uttrycker vi flera mätvärden som en enda mätvärdesfunktion och optimerar detta mätvärde:

  • maxM(y1​,y2​,θ)
  • y1​,y2​ är olika mått. Till exempel AUC-poäng och DPPL.
  • M(⋅,⋅,θ) är en skalariseringsfunktion och parametriseras av en fast parameter

Högre vikt gynnar just det målet vid modellinställning. Vikter kan vara försiktiga från fall till fall och du kan behöva prova olika vikter för ditt användningsfall. I detta exempel har vikter för AUC och DPPL ställts in heuristiskt. Låt oss gå igenom hur detta skulle se ut i kod. Du kan se att träningsjobbet returnerar ett enda mått baserat på en kombinationsfunktion av AUC-poäng för prestation och DPPL för rättvisa. Hyperparameteroptimeringsintervallen för flera mål är desamma som det enda målet. Vi skickar valideringsmåttet som "auc" men bakom kulisserna returnerar vi resultaten av den kombinerade metriska funktionen som beskrivs sist i listan med funktioner nedan:

Här är funktionen Multi Objective optimering:

objective_metric_name = 'validation:auc'
tuner = HyperparameterTuner(estimator,
                            objective_metric_name,
                            hyperparameter_ranges,
                            max_jobs=100,
                            max_parallel_jobs=10
                           )

Här är funktionen för att beräkna AUC-poäng:

def eval_auc_score(predt, dtrain):
   fY = [1 if p > 0.5 else 0 for p in predt]
   y = dtrain.get_label()
   auc_score = roc_auc_score(y, fY)
   return auc_score

Här är funktionen för att beräkna DPPL-poäng:

def eval_dppl(predt, dtrain):
    dtrain_np = dmatrix_to_numpy(dtrain)
    # groups: an np array containing 1 or 2
    groups = dtrain_np[:, -1]
    # sensitive_facet_index: boolean column indicating sensitive group
    sensitive_facet_index = pd.Series(groups - 1, dtype=bool)
    # positive_predicted_label_index: boolean column indicating positive predicted labels
    positive_label_index = pd.Series(predt > 0.5)
    return abs(DPPL(predt, sensitive_facet_index, positive_label_index))

Här är funktionen för det kombinerade måttet:

def eval_combined_metric(predt, dtrain):
    auc_score = eval_auc_score(predt, dtrain)
    DPPL = eval_dppl(predt, dtrain)
    # Assign weight of 3 to AUC and 1 to DPPL
    # Maximize (1-DPPL) for the purpose of minimizing DPPL     combined_metric = ((3*auc_score)+(1-DPPL))/4           print("DPPL, AUC Score, Combined Metric: ", DPPL, auc_score, combined_metric)
    return "auc", combined_metric

Experiment & resultat

Syntetisk datagenerering för biasdatauppsättning

Den ursprungliga sydtyska kredituppsättningen innehöll 1000 poster, och vi genererade ytterligare 100 poster syntetiskt för att skapa en datauppsättning där snedvridningen i modellförutsägelser missgynnar utländska arbetare. Detta görs för att simulera fördomar som kan visa sig i den verkliga världen. Nya register över utländska arbetstagare märkta som "dålig kredit"-sökande extrapolerades från befintliga utländska arbetstagare med samma etikett.

Det finns många bibliotek/tekniker för att skapa syntetisk data och vi använder Syntetiskt datavalv (DPLV).

Från följande kodavsnitt kan vi se hur syntetisk data genereras med DPPLV med den sydtyska kreditdatauppsättningen:

# Parameters for generated data
# How many rows of synthetic data
num_rows = 100 # Select all foreign workers who were accepted (foreign_worker value 1 credit_risk 1)
ForeignWorkerData = training_data.loc[(training_data['foreign_worker'] == 1) & (training_data['credit_risk'] == 1)] # Fit Foreign Worker data to SDV model
model = GaussianCopula()
model.fit(ForeignWorkerData) # Generate Synthetic foreign worker data based on rows stated
SynthForeignWorkers = model.sample(Rows)

Vi genererade 100 nya syntetiska register över utländska arbetare baserat på utländska arbetare som accepterades i den ursprungliga datamängden. Vi kommer nu att ta dessa poster och konvertera etiketten "credit_risk" till 0 (dålig kredit). Detta kommer att markera dessa utländska arbetare orättvist som dålig kredit, och därför infogas partiskhet i vår datauppsättning

SynthForeignWorkers.loc[SynthForeignWorkers['credit_risk'] == 1, 'credit_risk'] = 0

Vi utforskar fördomen i datamängden genom graferna nedan.
Kreditriskkvot för utländska arbetstagare

Cirkeldiagrammet överst visar procentandelen icke-utländska arbetare märkta som god kredit eller dålig kredit, och den nedersta cirkeldiagrammet visar samma sak för utländska arbetare. Andelen utländska arbetstagare som märks som "dålig kredit" är 75.90 % och uppväger vida de 30.70 % av icke-utländska arbetstagare som är märkta med samma. Stapelfältet visar nästan liknande procentuell uppdelning av det totala antalet anställda över kategorin utländska och icke-utländska arbetare.

Vi vill undvika att ML-modellen lär sig en stark partiskhet mot utländska arbetare antingen genom explicita egenskaper eller implicita proxyfunktioner i data. Med ytterligare ett rättvisemål vägleder vi ML-modellen för att mildra partiskheten med lägre kreditvärdighet gentemot utländska arbetare.

Modellprestanda efter trimning för både prestanda och rättvisa

Det här diagrammet visar densitetsdiagrammet för upp till 100 trimningsjobb som drivs av SageMaker AMT och deras motsvarande kombinerade objektiva metriska värden. Fast vi har satt max jobs till 100 kan den ändras enligt användarens gottfinnande. Det kombinerade måttet var en kombination av AUC och DPPL med en funktion av: (3*AUC + (1-DPPL)) / 4. Anledningen till att vi använder (1-DPPL) istället för (DPPL) är för att vi skulle vilja maximera det kombinerade målet för lägsta möjliga DPPL (lägre DPPL innebär lägre partiskhet mot utländska arbetstagare). Plottet visar hur AMT hjälper till att identifiera de bästa hyperparametrarna för XGBoost-modellen som returnerar det högsta kombinerade utvärderingsmåttvärdet på 0.68.

Modellprestanda med kombinerad metrik
Modellprestanda med kombinerade mätvärden

Nedan tar vi en titt på pareto-frontdiagrammet för individuella mätvärden för AUC och DPPL. Ett Pareto Front-diagram används här för att visuellt representera avvägningarna mellan flera mål, i detta fall de två metriska värdena (AUC & DPPL). Punkter på kurvfronten anses vara lika bra och det ena måttet kan inte förbättras utan att försämra det andra. Pareto-diagrammet låter oss se hur olika jobb presterade mot baslinjen (röd cirkel) i termer av båda måtten. Den visar oss också det mest optimala jobbet (grön triangel). Placeringen av den röda cirkeln och den gröna triangeln är viktiga eftersom det gör det möjligt för oss att förstå om vårt kombinerade mätvärde faktiskt fungerar som förväntat och verkligen optimerar för båda måtten. Koden för att generera pareto-frontdiagrammet ingår i anteckningsboken i GitHub.

Pareto-diagram

I detta scenario är ett lägre DPPL-värde mer önskvärt (mindre bias), medan högre AUC är bättre (ökad prestanda).

Här representerar baslinjen (röd cirkel) scenariot där det objektiva måttet är enbart AUC. Med andra ord, baslinjen beaktar inte DPPL alls och optimerar endast för AUC (ingen finjustering för rättvisa). Vi ser att baslinjen har ett bra AUC-poäng på 0.74, men presterar inte bra på rättvisa med ett DPPL-poäng på 0.75.

Den optimerade modellen (grön triangel) representerar den bästa kandidatmodellen när den är finjusterad för ett kombinerat mått med ett viktförhållande på 3:1 för AUC:DPPL. Vi ser att den optimerade modellen har ett bra AUC-poäng på 0.72 och även ett lågt DPPL-poäng på 0.43 (låg bias). Detta inställningsjobb hittade en modellkonfiguration där DPPL kan vara betydligt lägre än baslinjen, utan en signifikant minskning av AUC. Modeller med ännu lägre DPPL-poäng kan identifieras genom att flytta den gröna triangeln längre åt vänster längs Pareto-fronten. Vi uppnådde därmed det kombinerade målet om en väl fungerande modell med rättvisa för undergrupper av utländska arbetare.

I diagrammet nedan kan vi se resultaten av förutsägelserna från baslinjemodellen och den optimerade modellen. Den optimerade modellen med ett kombinerat mål om prestation och rättvisa förutspår ett positivt resultat för 30.6 % utländska arbetare i motsats till 13.9 % från basmodellen. Den optimerade modellen minskar alltså modellbias mot denna undergrupp.

Andel accepterade arbetare

Slutsats

Bloggen visar dig att implementera multi-objektiv optimering med SageMaker Automatic Model Tuning för verkliga applikationer. I många fall kan insamlad data i den verkliga världen vara partisk mot vissa undergrupper. Multi-objektiv optimering med automatisk modellinställning gör det möjligt för kunder att enkelt bygga ML-modeller som optimerar rättvisa utöver noggrannhet. Vi visar ett exempel på kreditriskförutsägelser och tittar specifikt på rättvisa för utländska arbetstagare. Vi visar att det är möjligt att maximera för ett annat mått som rättvisa samtidigt som vi fortsätter att träna modeller med hög prestanda. Om det du har läst har väckt ditt intresse kan du prova kodexemplet som finns i Github här..


Om författarna

Trimma ML-modeller för ytterligare mål som rättvisa med SageMaker Automatic Model Tuning PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Munish Dabra är Senior Solutions Architect på Amazon Web Services (AWS). Hans nuvarande fokusområden är AI/ML, Data Analytics och Observability. Han har en stark bakgrund inom att designa och bygga skalbara distribuerade system. Han tycker om att hjälpa kunder att förnya och förändra sin verksamhet i AWS. LinkedIn: /mdabra

Trimma ML-modeller för ytterligare mål som rättvisa med SageMaker Automatic Model Tuning PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Hasan Poonawala är Senior AI/ML Specialist Solutions Architect på AWS, Hasan hjälper kunder att designa och distribuera maskininlärningsapplikationer i produktion på AWS. Han har över 12 års arbetslivserfarenhet som datavetare, maskininlärningsutövare och mjukvaruutvecklare. På sin fritid älskar Hasan att utforska naturen och umgås med vänner och familj.

Trimma ML-modeller för ytterligare mål som rättvisa med SageMaker Automatic Model Tuning PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Mohammad (Moh) Tahsin är en associerad AI/ML Specialist Solutions Architect för AWS. Moh har erfarenhet av att lära elever om ansvarsfulla AI-koncept och brinner för att förmedla dessa koncept genom molnbaserade arkitekturer. På fritiden älskar han att lyfta vikter, spela spel och utforska naturen.

Trimma ML-modeller för ytterligare mål som rättvisa med SageMaker Automatic Model Tuning PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Xingchen Ma är tillämpad forskare vid AWS. Han arbetar i serviceteam för SageMaker Automatic Model Tuning.

Trimma ML-modeller för ytterligare mål som rättvisa med SageMaker Automatic Model Tuning PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.Rahul Sureka är en Enterprise Solution Architect på AWS baserad i Indien. Rahul har mer än 22 års erfarenhet av att utforma och leda stora affärstransformationsprogram inom flera industrisegment. Hans intresseområden är data och analys, streaming och AI/ML-applikationer.

Tidsstämpel:

Mer från AWS maskininlärning