Previsão de resultados de pneumonia: modelagem via API DataRobot

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


Esta postagem é um material complementar para uma tarefa. A atribuição faz parte da unidade de Aprendizado de Máquina Aumentado para um Diploma de Especialização em Ciência de Dados para Negócios. O objetivo deste projeto é classificar se os pacientes com Pneumonia Adquirida na Comunidade (PAC) melhoraram após consultar um médico ou pioraram apesar de consultar um médico.
Anteriormente, EDA (parte 1, parte 2) e engenharia de recursos eram feitos em R. O conjunto de dados foi então importado para DataRobot para modelagem preditiva (o objetivo da tarefa era usar DataRobot)

A postagem aqui irá delinear a modelagem básica feita em DataRobot e como eu usei R para conduzir a seleção de recursos avançados para aprimorar o desempenho na modelagem subsequente.

Preditores para modelagem

Quando os dados são importados para DataRobot, a raw features irá passar por uma verificação de “razoabilidade” para informações úteis (por exemplo, não são duplicatas ou ids de referência e não um valor constante) ”. Os preditores que passarem neste rastreador formarão Informative Features qual DataRobot considera ser mais adequado para modelagem.

DataRobot considerou todas as variáveis ​​informativas, incluindo o identificador de caso, Pt_CaseNumber. A exclusividade do identificador de caso deve ter sido interrompida quando o conjunto de dados foi dividido entre dados não vistos e dados para DataRobot. Uma lista de recursos personalizados, L1, incluiu todas as variáveis, exceto Pt_CaseNumber.

Os resultados da primeira rodada do Modo Rápido foram usados ​​para a seleção de recursos avançados. Um subconjunto de variáveis ​​menor, mas possivelmente mais influente, foi usado em uma segunda rodada do Modo rápido. A seleção de recursos avançados usou os resultados da primeira rodada do Modo rápido para criar 2 novas Listas de recursos. A criação dessas 2 novas listas de recursos necessária RStudio estar conectado a DataRobot por meio de sua API.

Leia Também  Incidência de COVID-19 no Texas após o ajuste para a positividade do teste por @ ellis2013nz

DataRobot API

library(datarobot)
library(tidyverse)
theme_set(theme_light())

Conectando-se ao DataRobot

DataRobot estava conectado a RStudio através da datarobot::ConnectToDataRobot. o endpoint para nuvem DataRobot é https://app.datarobot.com/api/v2. O token pode ser encontrado em Developer Tools opção.

ConnectToDataRobot(endpoint = "https://app.datarobot.com/api/v2", 
                   token = "API token key")
## [1] "Authentication token saved"

Salvando o ID do projeto relevante

projects_inDR% filter(name=="Classify CAP") %>% pull(ID)
## # A tibble: 11 x 2
##    name                        ID                      
##                                              
##  1 Classify CAP                5f54dce5e5e3f924b99408ee
##  2 CAP Experiment 3            5f3678ff735d1f59f99534ed
##  3 CAP Experiment 2            5f33f9899071ae44ded6de84
##  4 CAP Experiment 1            5f269f896c6a7a1cefaff780
##  5 CAP informative ft          5f2694a9d6e13f1dc8ae17d4
##  6 CleanDR OG cv10             5f2655a8d6e13f1c26ae17c7
##  7 CleanDR OG cv5              5f263758ce243f1bfac853eb
##  8 P04_Readmission(1).csv      5f16dd3b99c1372d672bdde4
##  9 P03_Advertising(1).csv      5f0da6861c29b917239402dc
## 10 P02_LendingClubData2(1).csv 5f047ce3c40c123f3487346b
## 11 P01_TitanicData.csv         5efb44cc60882464b616c03b

Salvando os modelos

List_Model3% as.data.frame(simple = F) 

List_Model3 %>% select(modelType, expandedModel, featurelistName, `Weighted AUC.crossValidation`) %>% arrange(-`Weighted AUC.crossValidation`)DT::datatable(rownames = F, options = list(searchHighlight = TRUE, paging= T))

Na 1ª rodada do Modo Rápido, 13 modelos foram criados. O melhor modelo foi o Extreme Gradient Boosted Tree Classifier, com uma validação cruzada de 10 vezes AUC ponderada de 0,9299.

1. Seleção de recursos avançados (recursos reduzidos de DR)

Durante a primeira rodada do Modo rápido, DataRobot criou outras listas de recursos, incluindo DR Reduced Features. Essas listas de recursos continham variáveis ​​selecionadas que consistiam nos recursos mais importantes com base nas pontuações de impacto de recursos dos modelos.

Ft_DR% as_tibble()
Ft_DR$description %>% unqiue()
## [1] "The most important features based on Feature Impact scores from a particular model."

Os modelos 3/13 usaram Recursos Reduzidos de DR na 1ª rodada do Modo Rápido.

List_Model3  %>% count(featurelistName)
## # A tibble: 3 x 2
##   featurelistName            n
##                     
## 1 DR Reduced Features M8     3
## 2 L1                         9
## 3 Multiple featurelists      1

Originalmente, 70 variáveis ​​foram usadas para o Modo rápido. 33 variáveis ​​foram identificadas para DR Reduced Features M8 (32 preditores + 1 resultado).

n_distinct(Ft_DR$features)
## [1] 33

O número de preditores foi mantido igual ao número de preditores em Recursos Reduzidos de DR para ver qual técnica obteve melhor desempenho. As etapas para identificar essas variáveis ​​foram as seguintes:

Leia Também  Estourar os balões - jogo de matemática para educação em casa
cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
  1. Todas as pontuações de validação cruzada para todos os modelos foram ativadas em DataRobot GUI (por padrão, DataRobot calcula a pontuação de validação cruzada para os poucos modelos principais com base na primeira pontuação de dobra de validação cruzada). Os 80% principais dos modelos com base na validação cruzada AUC foram selecionados. Esses modelos selecionados também deveriam ter tamanho de amostra suficiente de> 64%. 9/13 modelos passaram neste rastreador.
Ft_mean_screenModelstop80AUC & m$samplePct >= 64 , models_listdetails)
}

Ft_mean_screened% select(expandedModel, featurelistName, `Weighted AUC.crossValidation`) %>% arrange(-`Weighted AUC.crossValidation`) DT::datatable(rownames = F, options = list(searchHighlight = TRUE, paging= T))
  1. A pontuação de impacto de recurso não normalizado para todas as variáveis ​​nesses modelos foi calculada. As variáveis ​​entre as 32 principais pontuações de impacto de recurso médio foram usadas para criar um novo conjunto de Lista de Recursos.
Ft_mean_var% group_by(featureName) %>% 
    summarise(avg_impact = mean(impactUnnormalized), .groups="drop")

#top X mean feature impact scores 
## number of predictors for DR
no_of_DRft% as.data.frame() %>% filter(str_detect(name, "DR Reduced")) %>% nrow()-1 # minus 1 as one of the variables is the target 

##top X mean feature impact scores 
top_mean_names% slice_max(order_by = avg_impact, n=no_of_DRft ) %>% pull(featureName)

# multiple output https://stackoverflow.com/questions/1826519/how-to-assign-from-a-function-which-returns-more-than-one-value
output

O cálculo pode ser visto em DataRobotGUI de.

As 32 principais variáveis ​​com base na pontuação média do impacto do recurso e sua respectiva pontuação de impacto do recurso para cada modelo são plotados aqui.

Ft_mean_varOutput[[1]]%>%  
  filter(featureName %in% Ft_mean_varOutput[[2]]) %>% 
  mutate(featureName= fct_reorder(featureName, impactUnnormalized, .fun =mean)) %>%
     ggplot(aes(featureName, impactUnnormalized, colour=featureName))+ geom_point(alpha=.5) + coord_flip() + theme(legend.position="none") + labs(title = "Top 32 variables based on mean feature impact score", subtitle = "each dot is the score for a specific model")

Foi criada uma nova lista de recursos usando as 32 principais variáveis ​​de impacto de recursos médios.

Feature_id_percent_rank = CreateFeaturelist(project_ID, 
                                            listName= "mean ft impact" , 
                                            featureNames= 
  Ft_mean_varOutput[[2]][1:length(Ft_mean_varOutput[[2]])])$featurelistId
## [1] "Featurelist mean ft impact created"
Leia Também  Você não vai se aposentar como seus pais

Recursos de DR vs. 32 principais variáveis ​​médias de impacto de recursos

Ambas as listas de recursos tinham esses preditores em comum

intersect(Ft_mean_varOutput[[2]], Ft_DR$features)
##  [1] "Abx_AmoxicillinSulbactamOral" "Abx_Duration"                
##  [3] "Pt_Age"                       "PE_AMS"                      
##  [5] "Lab_RBC"                      "PE_HR"                       
##  [7] "Care_daysUnfit"               "Care_admit"                  
##  [9] "Lab_Hb"                       "Lab_urea"                    
## [11] "Care_BPSupport"               "Lab_Neu"                     
## [13] "Lab_WBC"                      "Lab_plt"                     
## [15] "Care_GP/OutptVisit"           "Care_breathingAid"           
## [17] "PE_temp"                      "Lab_Sugar"                   
## [19] "SS_daysOfRespSymp"            "Hx_comorbidities"            
## [21] "Lab_Cr"                       "Abx_LowFreq"                 
## [23] "PE_RR"                        "PE_BP_MAP"                   
## [25] "SS_breathing"                 "Social_smoke"                
## [27] "Abx_Ceftriaxone"              "Abx_ClarithromycinIV"        
## [29] "HCAP_IVAbx"                   "Abx_no"                      
## [31] "Hx_brainMental"

A única diferença era que as 32 principais variáveis ​​médias do Feature Impact continham histórico médico sobre o tipo de doença cardíaca que o paciente tinha.

setdiff(Ft_mean_varOutput[[2]], Ft_DR$features)
## [1] "Hx_heart_type"

Executando o 2º Modo Rápido

Outra rodada do Modo rápido foi executada com ambas as novas Listas de recursos criadas com seleção de recursos avançados. Novamente, os escores de validação cruzada para todos os modelos foram calculados.
8 modelos adicionais foram gerados com recursos DR Reduced (os outros 3 foram gerados anteriormente na 1ª rodada do Modo Rápido). 10 modelos adicionais foram gerados com as 32 variáveis ​​de pontuação média de impacto de recurso.

#Get all the models from 1st and 2nd Quick Mode 
List_Model322% as.data.frame(simple = F) 

List_Model322 %>% count(featurelistName)
## # A tibble: 4 x 2
##   featurelistName            n
##                     
## 1 DR Reduced Features M8    11
## 2 L1                         9
## 3 mean ft impact            10
## 4 Multiple featurelists      1

No próximo post, serão analisados ​​os resultados de todos os modelos de ambas as execuções do Modo Rápido.



cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br