Executar o Portrait Uplift a partir do Portrait Miner
Transcrição
Executar o Portrait Uplift a partir do Portrait Miner
Uplift Guia do usuário Versão 7.0A © 2013 Pitney Bowes Software Inc. Todos os direitos reservados. Esse documento pode conter informações confidenciais ou protegidas por direitos autorais pertencentes à Pitney Bowes Inc. e/ou a seus subsidiários e suas empresas associadas. Portrait Software, o logotipo Portrait Software, Portrait e a marca Portrait Software’s Portrait são marcas comerciais da Portrait Software International Limited e não podem ser usadas nem exploradas de forma alguma sem prévia autorização expressa por escrito da Portrait Software International Limited. Reconhecimento de marcas comerciais Outros nomes do produto, nomes, marcas, logotipos e símbolos da empresa referenciados aqui podem ser marcas comerciais ou marcas comerciais registradas de seus proprietários registrados. Suporte Portrait Software Se precisar de ajuda com algo que não se encontre nesses documentos, visite a Base de Conhecimentos em nosso site da Web. http://support.portraitsoftware.com e siga os links para seu produto. Também é possível baixar outros documentos da Portrait Software a partir desse site. Se não tiver um nome de usuário e senha - ou se os esqueceu - contate-nos através de um dos canais abaixo. Se tiver algum problema com o uso, a instalação ou os documentos desse produto, contate-nos usando um dos seguintes métodos: E-mail: [email protected] Telefone • EUA/Canadá 1-800-335-3860 (número gratuito) • Resto do mundo +44 800 840 0001 Quando estiver reportando um problema, ajuda se nos disser: • • • • O nome do aplicativo de software As circunstâncias em que o problema apareceu Que mensagens de erro você viu (se tiver visto alguma) A versão do software que você estava usando Pitney Bowes Software Inc. July 01, 2013 Sumário Capítulo 1: Introdução................................................................................................9 Objetivo..............................................................................................................................10 Público-alvo.......................................................................................................................10 Visão geral.........................................................................................................................10 Metodologia do Uplift........................................................................................................11 Principais funcionalidades...............................................................................................11 Capítulo 2: Executar o Portrait Uplift......................................................................13 Preparar seus dados para o Portrait Uplift.....................................................................14 Executar o Portrait Uplift a partir do Portrait Miner.......................................................14 Executar o Portrait Uplift a partir da Linha de Comando..............................................18 Sinopse..........................................................................................................................18 Uso típico.......................................................................................................................20 Parar o Portrait Uplift......................................................................................................22 Aplicar modelos Uplift de Agregação por Bootstrap a novos dados..............................22 Estrutura de Diretório Sugerida.....................................................................................23 Configurar SAS para chamar o Portrait Uplift................................................................23 Executar Portrait Uplift a partir do SAS..........................................................................24 Seleção variável a partir do SAS...................................................................................24 Construir modelos uplift a partir do SAS........................................................................25 Modelos uplift de pontuação no SAS.............................................................................27 Capítulo 3: Visão Geral da Metodologia.................................................................29 Introdução..........................................................................................................................30 Estrutura de Modelo..........................................................................................................30 Desenho de Campanha para Análise Uplift....................................................................31 Preparação de Dados........................................................................................................32 Ajuste de Tratamento e Validação de Modelo................................................................32 Vários Tratamentos...........................................................................................................35 Capítulo 4: Seleção Variável e Metodologia de Binning........................................37 Introdução..........................................................................................................................38 Impacto na Estabilidade do Modelo................................................................................38 Seleção variável automatizada........................................................................................39 Binning Automatizado......................................................................................................40 Otimizar os Binnings......................................................................................................40 Reutilização de Estimativas de Qini Baixas...................................................................41 Resultados e Relatórios de Seleção Variável.................................................................41 Perfis de Uplift................................................................................................................42 Relatório de Validação de Partição (o Relatório "Roxo")...............................................42 Campo de Estabilização de Perfil (o Relatório "Drumstick")..........................................42 Capítulo 5: Metodologia de Construção de Modelo..............................................45 Introdução..........................................................................................................................46 Amostragem e Estratificação...........................................................................................46 Agregação por bootstrap..................................................................................................47 Remoção............................................................................................................................48 Exploração de Parâmetros Automatizada......................................................................48 Recomendação de Parâmetros Automatizada...............................................................49 Reconstrução Final...........................................................................................................50 Contaminação de Modelo.................................................................................................50 Capítulo 6: Metodologia de Avaliação de Modelo..................................................53 Introdução..........................................................................................................................54 Interpretação de Valores Qini (Q e q0)............................................................................54 Interpretação das Curvas Qini.........................................................................................55 Uma Curva de Ganhos para Elevação..........................................................................55 Eixo Vertical para Resultados Binários (pc pt)...............................................................55 Eixo Vertical Para Resultados Contínuos (photp)..........................................................55 Curva Qini como um Diagnóstico..................................................................................56 Resultados e Relatórios....................................................................................................56 Perfis de Pontuação.......................................................................................................57 Relatório de Validação de Partição (o Relatório "Roxo")...............................................58 Ponderações Divididas..................................................................................................58 4 Portrait Uplift 7.0A Capítulo 7: Diretrizes de Parâmetros......................................................................59 Introdução..........................................................................................................................60 Limite de remoção.............................................................................................................60 Tentativas de Árvores Máximas.......................................................................................61 Níveis de Divisão de Árvores...........................................................................................61 Tamanhos Mínimos de População...................................................................................61 Número Mínimo de Nós por Árvore.................................................................................62 Candidatos de Análise e Binnings...................................................................................62 Número de Sacos..............................................................................................................62 Número de Repetições......................................................................................................63 Campo de Estratificação...................................................................................................63 Capítulo 8: Referência de Parâmetros....................................................................65 Introdução..........................................................................................................................66 Parâmetros de Descrição de Focus................................................................................67 focusName (necessário)................................................................................................67 Tipo de Modelo e Campos de Resultados: Visão geral.................................................67 modelType (necessário).................................................................................................68 objectiveField (necessário)............................................................................................68 outcomeSizeActual (opcional).......................................................................................68 outcomeSizeEstimate (necessário para modelos de duas fases).................................68 partitionField (necessário)..............................................................................................69 fixedTrainValidateField (opcional)..................................................................................69 stratificationField (opcional, mas recomendado)...........................................................69 championModelField (opcional).....................................................................................70 userWeightingField (opcional)........................................................................................70 yQiniAxis (opcional; Uplift Cumulativo padrão (pc pt))...................................................71 Parâmetros de Especificação da Árvore.........................................................................71 minPopSize (opcional; padrão 2000).............................................................................71 autoMinPopSize (opcional; padrão 1)............................................................................71 searchMinPopSize (opcional; padrão 0)........................................................................71 nLevels (opcional; padrão 4)..........................................................................................72 Parâmetros Gerais.............................................................................................................72 Parâmetros da seleção variável.......................................................................................72 setacsFocusName (opcional)........................................................................................72 allowOverwrite (opcional; padrão 0)..............................................................................73 nBestACs (opcional; padrão: 5).....................................................................................73 Uplift Guia do usuário 5 saveBestACs (opcional; padrão: 1)...............................................................................73 setacsNEvals (opcional; padrão: 5)...............................................................................73 setacsSigmaWeight (opcional; padrão: auto)................................................................73 setacsRebin (opcional; padrão: 0).................................................................................74 setacsRebinCriterion (opcional; padrão: T)...................................................................74 setacsRebinMean (opcional; padrão: Trim)...................................................................74 setacsUseRebinLQE (opcional; padrão: 1)....................................................................74 Parâmetros de configuração de execução geral............................................................75 nBagsValues (necessário).............................................................................................75 pruneThresholdValues (necessário)..............................................................................76 nRuns (opcional; padrão: 1)...........................................................................................76 Parâmetros de controle de remoção...............................................................................76 prune (opcional; padrão: 1)............................................................................................76 autoPrune (opcional; padrão: 0)....................................................................................76 pruneMethod (opcional; padrão: sd)..............................................................................77 minLeafNodes (opcional; padrão: 4)..............................................................................77 maxTreeAttempts (opcional; padrão: 2).........................................................................77 propAnalysisCandidates (opcional; padrão: 1.0)...........................................................77 Geração de números aleatórios / parâmetros do repetidor de execução...................77 prngSetState (opcional; em branco por padrão)............................................................78 prngCurrentState (opcional)...........................................................................................78 prngInitialState (opcional)..............................................................................................78 tvTrainProp (opcional; padrão: 50%).............................................................................78 Parâmetros de relatório e saída.......................................................................................79 resultsDirStem (opcional; padrão: results).....................................................................79 addTimeStamp (opcional; padrão: 1).............................................................................79 saveFocusStem (opcional; padrão: (blank))..................................................................79 saveModelStem (opcional; padrão: model)...................................................................80 saveTreeStem (opcional; padrão: (blank)).....................................................................80 xmlResultsStem (opcional; padrão: out)........................................................................80 tvNewFieldName (opcional; padrão: TrainValidate).......................................................80 overallUpliftField (opcional; padrão: UpliftScore)...........................................................80 Parâmetros de ROI............................................................................................................80 roiCurrencySymbol (opcional; padrão: $)......................................................................81 roiCostOfTreatment (opcional; padrão: 0.00).................................................................81 roiValueOfBenefit (opcional; padrão: 1.00)....................................................................81 roiCostOfFulfillment (opcional; padrão: 0.00)................................................................81 Parâmetros somente para informação............................................................................81 6 Portrait Uplift 7.0A currentNBags (configurado durante a construção de modelo)......................................81 currentPruneThreshold (configurado durante a construção de modelo).......................81 applyFocusName...........................................................................................................81 Exemplo de Arquivo de Parâmetros Completo..............................................................82 Uplift Guia do usuário 7 Capítulo Introdução Nesta seção: • • • • • Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 Público-alvo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 Visão geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 Metodologia do Uplift . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11 Principais funcionalidades . . . . . . . . . . . . . . . . . . . . . . . .11 1 Objetivo Objetivo Esse documento descreve como criar e gerenciar modelos preditivos do Portrait Uplift. Público-alvo O Guia do Usuário do Uplift é indicado para profissionais de estatística e analistas de marketing com conhecimentos básicos de: • Modelagem preditiva • Portrait Miner (workbench analítico) • Análise de marketing Visão geral O Portrait Uplift é uma solução de modelagem automatizada, que supera os modelos tradicionais de resposta do cliente, risco e comportamento de retenção para modelar a forma como essa probabilidade se altera devido a um tratamento de marketing. O Portrait Uplift usa uma abordagem de marketing que retém grupos de clientes selecionados de forma aleatória que não foram tratados por uma campanha. Analisando os clientes não tratados, conjuntamente com os clientes tratados, o Portrait Uplift pode prever como cada probabilidade de comportamento de cliente irá aumentar (ou diminuir) se for tratado. Em cada caso, o Portrait Uplift cria quatro segmentos de resposta distintos. Por exemplo, em uma campanha de venda cruzada, esses segmentos podem ser descritos como: Segmento de mercado Descrição Persuadíveis: Clientes que compram a oferta de venda cruzada, que não o fariam se não tivessem sido tratados. Casos Certos: Clientes que compram independentemente de terem sido contatados. Casos Perdidos: Clientes que não compram, independentemente de terem sido contatados. Não Incomodar: Clientes nos quais a campanha resulta em uma resposta negativa. As ferramentas comuns de modelagem preditiva se focam em uma visualização simples de uma base de clientes, isto é, os clientes que compram e os que não compram. O Portrait Uplift vai mais longe e classifica os clientes em segmentos (identificados acima) que lhe permitem: • Refinar seu público-alvo, reduzindo os custos gerais da campanha 10 Portrait Uplift 7.0A Capítulo 1: Introdução • Identificar o segmento de mercado mais importante, "os persuadíveis" • Identificar clientes que irão responder negativamente, potencialmente os perdendo a longo prazo Metodologia do Uplift O Portrait Uplift foi criado com base no algoritmo de árvore de uplift no in Portrait Miner e encapsula uma melhor prática metodológica para criar modelos uplift robustos. Essa metodologia se baseia em anos de experiência prática com instituições financeiras e de telecomunicações líderes e inclui técnicas poderosas para a redução de ruído. Também identifica e isola efeitos de elevação pequenos, mas reais, do comportamento de linha de base subjacente. Principais funcionalidades O Portrait Uplift oferece: • Uma interface de usuário visual interativa para construir e usar modelos uplift (consulte a seção Executar o Portrait Uplift a partir do Portrait Miner na página 14), e também uma interface de linha de comando, que aceita scripts (consulte a seção Executar o Portrait Uplift a partir da Linha de Comando na página 18) • Uma interface de linha de comando, que aceita scripts, para construir modelos uplift sem interação do usuário (consulte a seção Executar o Portrait Uplift a partir da Linha de Comando na página 18) • Uma extensão para o ambiente de programação SAS que permite que os usuários do SAS criem e usem modelos uplift diretamente a partir de programas SAS, sem qualquer necessidade de aprender a trabalhar em novos aplicativos (consulte a seção Executar Portrait Uplift a partir do SAS na página 24) • Modelos expressos como código SAS ou SQL, permitindo que modelos uplift sejam pontuados diretamente nesses ambientes • Um aplicativo projetado para possuir transparência de resultados. Esse inclui visibilidade clara de fatores contributivos, validação de modelos e metodologia de modelos uplift (consulte a seção Visão Geral da Metodologia na página 29, Seleção Variável e Metodologia de Binning na página 37, Metodologia de Construção de Modelo na página 45) • A saída do relatório otimizado compatível com Microsoft Office que habilita os usuários de negócios para tomadas de decisão e análises ad hoc rapidamente. Esses relatórios incluem a identificação automática dos melhores "pontos de decisão" da campanha, como lucro máximo, custo mínimo de tratamento e resposta adicional máxima (consulte a seção Metodologia de Avaliação de Modelo na página 53). Uplift Guia do usuário 11 Capítulo Executar o Portrait Uplift Nesta seção: • • • • • Preparar seus dados para o Portrait Uplift . . . . . . . . . . . .14 Executar o Portrait Uplift a partir do Portrait Miner . . . .14 Executar o Portrait Uplift a partir da Linha de Comando .18 Configurar SAS para chamar o Portrait Uplift . . . . . . . . .23 Executar Portrait Uplift a partir do SAS . . . . . . . . . . . . . .24 2 Preparar seus dados para o Portrait Uplift Preparar seus dados para o Portrait Uplift A sequência básica de etapas para usar o Portrait Uplift é descrita abaixo, interativamente, pelo Portrait Miner (consulte a seção Executar o Portrait Uplift a partir do Portrait Miner na página 14), ou por meio da linha de comandos (consulte a seção Executar o Portrait Uplift a partir da Linha de Comando na página 18). Ambas as abordagens usam etapas similares. O Portrait Miner orienta o usuário através do processo, fornecendo uma sequência de assistentes para o guiar a cada etapa, enquanto a linha de comandos oferece um maior controle granular sobre a metodologia e a oportunidade de um processamento em lotes automatizado. Em ambos os casos, assumimos que nosso focus base tem o nome example.ftr e a primeira tarefa é a preparação do focus para análise (usando o Decision Studio interativamente ou importando metadados), tendo especial atenção em: • Configurar um objetivo apropriado, campo de partição e marcar candidatos de análise; • Marcar campos como categóricos, sendo necessário; • Se preferir, criar uma divisão ou um campo de estratificação de treinamento-validação fixos, campo de ponderação de caso e/ou pontuação de sua melhor opção (consulte a seção Visão Geral da Metodologia na página 29 para mais informações). • Se preferir, adicione binnings apropriados aos candidatos de análise, se não pretende otimizar binnings (consulte a seção Seleção Variável e Metodologia de Binning na página 37); Executar o Portrait Uplift a partir do Portrait Miner Para usar o Portrait Uplift a partir do Portrait Miner, clique com o botão direito do mouse no conjunto de dados de modelagem (ou arquivo de parâmetros) para iniciar um dos vários assistentes, conforme descrito abaixo. Observação: Um arquivo params.xml é fornecido no diretório de instalação do Portrait Uplift que proporciona definições de todo o site para a seleção variável e para os parâmetros de construção de modelo (consulte a seção Referência de Parâmetros na página 65). Quando um desses assistentes é iniciado, essas definições são usadas. Assim que um desses assistentes tiver sido usado, os parâmetros usados são salvos e recarregados para o assistente ao executá-lo novamente, o que lhe permite criar suas próprias definições de parâmetros específicas para um conjunto de dados especial. Também é possível editar diretamente o arquivo de parâmetros para alterar parâmetros avançados que não são exibidos pelo assistente. Todas as alterações serão mescladas com quaisquer configurações que sejam alteradas mais tarde no próprio assistente. • Prepare seu focus (example.ftr) conforme descrito acima. 14 Portrait Uplift 7.0A Capítulo 2: Executar o Portrait Uplift • Se preferir, para avaliar o conjunto de dados para a modelagem uplift, clique com o botão direito do mouse no focus (example.ftr) e escolha Portrait Uplift > Avaliar Dados. É possível, opcionalmente, configurar valores apropriados para os parâmetros de ROI na caixa de diálogo Portrait Uplift - Avaliar Dados. Depois de clicar em Ir, será apresentado um relatório sobre os dados e sua adequação à modelagem uplift na guia Saída. • Se preferir, para selecionar os melhores candidatos de análise, clique com o botão direito do mouse no focus do qual pretende escolher (example.ftr) e escolha Portrait Uplift > Selecionar Variáveis (Figura 1). A metodologia para a seleção variável é explicada de forma mais detalhada na seção Seleção Variável e Metodologia de Binning na página 37. Na caixa de diálogo Portrait Uplift - Selecionar Variáveis (Figura 2), escolha se pretende otimizar os binnings (e, nesse caso, o número máximo de bins a considerar), o número de candidatos de análise finais a selecionar, se pretende usar um campo de ponderamento de caso para ajuste de tratamento (consulte a seção userWeightingField (opcional) na página 70) e uma localização para o focus de saída (que não pode ser a mesma que a do focus de entrada). O arquivo de parâmetros é salvo automaticamente com um nome de arquivo baseado nos nomes dos foci de entrada e de saída. Clique em Ir. A saída resultante será criada em uma pasta com um nome como resultsYYYYMMDD-HHMMSS, onde YYYYMMDD corresponde a uma data com oito dígitos e HHMMSS a um timestamp, por ex., results20121212-121212. Se tiver escolhido otimizar binnings, um conjunto de gráficos de binnings otimizados será incluído em uplift-optimizer-setacs-report_YYYYMMDD-HHMMSS.xsl. • Para executar o Portrait Uplift para localizar os "melhores" parâmetros de modelo, clique com o botão direito do mouse no focus que pretende usar (esse será normalmente o focus de saída da fase de seleção variável, example_BestACs.ftr), e escolha Portrait Uplift > Construir e Analisar Modelos. A metodologia usada para construir modelos é descrita mais detalhadamente na seção Metodologia de Construção de Modelo na página 45. Na caixa de diálogo Portrait Uplift - Construir e Analisar Modelos, escolha os parâmetros para o processo de construção (seguindo as diretrizes da seção Diretrizes de Parâmetros na página 59): • O número de árvores a serem usadas por modelo (nBagsValues, seção nBagsValues (necessário) na página 75); • O número de modelos uplift a construir para cada conjunto de parâmetros (nRuns, seção nRuns (opcional; padrão: 1) na página 76); • Se devem ser analisados múltiplos tamanhos mínimos dos segmentos (searchMinPopSize, seção searchMinPopSize (opcional; padrão 0) na página 71); • Se é permitido que o software configure o tamanho mínimo da população (autoMinPopSize, seção autoMinPopSize (opcional; padrão 1) na página 71); • Especificar o tamanho mínimo da população do segmento de uma árvore de decisão (minPopSize, seção minPopSize (opcional; padrão 2000) na página 71); • O número mínimo de segmentos ramificados após a remoção (minLeafNodes, seção minLeafNodes (opcional; padrão: 4) na página 77); • O número máximo de níveis para construir árvores de decisão (nLevels, seção nLevels (opcional; padrão 4) na página 72); Uplift Guia do usuário 15 Executar o Portrait Uplift a partir do Portrait Miner • Configurar o nome do arquivo de parâmetros de saída (nLevels, seção nLevels (opcional; padrão 4) na página 72). Clique em Seguinte para visualizar a guia Finanças e (opcionalmente) configure os parâmetros financeiros. Clique em Seguinte para visualizar a guia Avançadas e (opcionalmente) configure: • O tipo de modelo a construir (modelType, seção modelType (necessário) na página 68); • Se é permitido que o software escolha o limite de remoção; • Uma lista de limites de remoção a usar (pruneThresholdValues, seção pruneThresholdValues (necessário) na página 76); • Uma semente aleatória específica a usar, em vez de permitir que o Portrait Uplift escolha uma (prngCurrentState, seção prngCurrentState (opcional) na página 78); • O campo a usar para treinamento/validação, se houver (fixedTrainValidateField, seção fixedTrainValidateField (opcional) na página 69); • A proporção de dados a usar para o conjunto de treinamento, se o campo treinamento/validação for criado automaticamente (tvTrainProp, seção tvTrainProp (opcional; padrão: 50%) na página 78); • O campo a usar para ponderamento de caso, se os registros representarem diferentes números de clientes reais, (userWeightingField, seção userWeightingField (opcional) na página 70); • A proporção de candidatos de análise escolhidos aleatoriamente a usar (propAnalysisCandidates, seção propAnalysisCandidates (opcional; padrão: 1.0) na página 77); • O número máximo de tentativas para construir cada árvore (maxTreeAttempts, seção maxTreeAttempts (opcional; padrão: 2) na página 77); Clique em Seguinte para visualizar a guia Parâmetros do resultado e (opcionalmente) configure: • O nome do campo de elevação prevista a criar overallUpliftField, seção overallUpliftField (opcional; padrão: UpliftScore) na página 80); • Se pretende guardar foci intermediários após cada construção de modelo (saveFocusStem, seção saveFocusStem (opcional; padrão: (blank)) na página 79); • O campo a usar no modelo para sua melhor opção, se houver (championModelField, seção championModelField (opcional) na página 70); • Se pretende criar um modelo SAS. Clique em Ir. Isso irá criar saída em uma pasta com um nome de formato resultsYYYYMMDD-HHMMSS, onde YYYYMMDD corresponde a uma data com oito dígitos e HHMMSS a um timestamp, por ex., results20121212-121212 (Figura 9 na seção Metodologia de Construção de Modelo na página 45). À medida que a execução avança, a informação é exibida na guia Saída. Quaisquer erros ou avisos serão normalmente apresentados em uma guia separada. Quando a execução estiver concluída, clique em Seguinte para criar os resultados: é criada uma planilha do Excel na pasta mencionada acima e ela será aberta automaticamente. 16 Portrait Uplift 7.0A Capítulo 2: Executar o Portrait Uplift Também é possível abrir a planilha do Excel em uma fase posterior, se procurar pela pasta, clicar com o botão direito do mouse no arquivo e selecionar Enviar para o Excel. O arquivo de planilha terá um nome com o formato uplift-optimizer-report_YYYYMMDD-HHMMSS.xls. São também produzidos os relatórios HTML herdados BestACs_recommended_parameters.xml. Os relatórios são descritos mais detalhadamente na seção Metodologia de Avaliação de Modelo na página 53. Se tiver sido recomendado um conjunto de parâmetros, será criado um novo arquivo de parâmetros com um nome com o formato <focusname>_recommended_parameters.xml (example_BestACs_recommended_params Deploy Recommended Model .xml), em conjunto com um arquivo de focus, e a recomendação será realçada na planilha. O novo arquivo de parâmetros contém parâmetros que são apropriados para a fase seguinte, a construção do modelo final. • Se preferir, a análise e escolha de parâmetros para a construção final pode ser realizada visualmente. Selecione os melhores parâmetros de modelo, dando especial atenção ao desempenho de validação (isto é, o grau de proximidade entre as linhas de treinamento e de validação no gráfico), mas também ao valor global q0 (Qini), à forma da curva, à elevação máxima (ou mínima) alcançada, à proporção de população a considerar alvo, etc. Assim que encontrar um bom conjunto de parâmetros de construção de modelo, crie uma construção de modelo de agregação por booststrap final em todo o conjunto de dados (sem divisão treinamento/validação). Consulte a seção Reconstrução Final na página 50 para mais informações. • Para executar novamente o Portrait Uplift para construir o modelo recomendado, clique com o botão direito do mouse no focus (example_BestACs.ftr) ou no próprio arquivo de parâmetros recomendado e escolha Portrait Uplift > Construir Modelo Recomendado. Isso irá construir um único modelo usando os parâmetros recomendados na fase anterior, mas com um grande número de sacos e sem dados de validação. Na caixa de diálogo Portrait Uplift - Construir Modelo Recomendado, escolha os parâmetros para o processo de construção e clique em Ir. À medida que a execução avança, a informação é exibida na guia Saída. Quando a execução estiver concluída, são criados novos relatórios de resultados e o modelo será criado em um arquivo, em conjunto com o focus, com um nome com o formato <focusname>_recommended_model.xml por exemplo, (BestACs_recommended_model.xml). Esse arquivo modelo é semelhante ao modelo que é gerado na pasta de resultados, mas foi processado para que seja gerado somente um campo quando o modelo é implementado. • Para implementar o modelo final em um novo conjunto de dados, clique com o botão direito do mouse no arquivo modelo criado na fase anterior (example_bestACs_recommended_model.xml) ou no arquivo de focus no qual pretende implementar e escolha Portrait Uplift > Implementar Modelo. Na caixa de diálogo Portrait Uplift - Implementar Modelo, escolha os parâmetros e clique em Ir. (Essa ação é basicamente idêntica à ação "Derivar campos" do Portrait Miner.) • Para parar uma execução em andamento, no Portrait Miner, clique com o botão direito do mouse na pasta de resultados ou em um arquivo XML na pasta de resultados e escolha Portrait Uplift > Parar. • À medida que as pastas de resultados se acumulam, você pode pretender remover algumas delas. Para remover somente uma pasta do Portrait Miner, clique com o botão direito do mouse em qualquer arquivo .ftr ou .xml e escolha Portrait Uplift > Excluir Resultados. Para remover uma ou mais pastas de resultados do Portrait Miner, clique com o botão direito do mouse em qualquer arquivo .ftr ou .xml em qualquer pasta que contenha os resultados e escolha Portrait Uplift > Excluir Resultados. Uplift Guia do usuário 17 Executar o Portrait Uplift a partir da Linha de Comando Na caixa de diálogo Portrait Uplift - Excluir Resultados, escolha as pastas de resultados que pretende remover. • O Portrait Uplift cria automaticamente descrições de modelo no formato do Portrait Miner e em código SAS (se selecionado). Para converter manualmente um modelo para o formato SAS, clique com o botão direito do mouse no arquivo XML de modelo (na subpasta do diretório de resultados chamada models) e escolha Converter > para SAS. Isso converte o modelo em um fragmento de etapa DADOS SAS. Normalmente, o código é colado entre uma instrução DATA, que se refere a um conjunto de dados de entrada com variáveis de origem apropriadas (as listas de códigos geradas exigem variáveis de entrada em um comentário inicial), e uma instrução subsequente RUN. Por exemplo: data scores; set inputs; <...paste converted model here...> run; Para mais informações sobre a etapa DADOS SAS, consulte a documentação SAS. • Para converter manualmente um modelo para o formato SQL, clique com o botão direito do mouse no arquivo XML de modelo (na subpasta do diretório de resultados, chamada models) e escolha Converter > para SQL. Executar o Portrait Uplift a partir da Linha de Comando Sinopse A maior parte das funcionalidades do Portrait Uplift são invocadas por meio do comando qsupliftplus. Existem três variantes básicas desse comando: • qsupliftplus -s [ params.xml ]: é usado para selecionar variáveis preditivas (candidatos de análise) para uso com o Portrait Uplift. Para isso, esse comando gera estimativas de Qini baixas para cada candidato de análise no focus de entrada e, opcionalmente, cria um campo de estratificação. • qsupliftplus [ params.xml ]: realiza uma série de construções de modelo, cada uma das quais produz uma árvore uplift de agregação por bootstrap de modo k e apresenta os resultados sobre uma divisão de treinamento/validação. • qsupliftplus -a [ params.xml ]: aplica a construção de modelo com o Portrait Uplift a um novo focus e grava informações da construção de modelo original, juntamente com informações Qini sobre os modelos aplicados para produzir gráficos Qini (consulte a seção Aplicar modelos Uplift de Agregação por Bootstrap a novos dados na página 22). O comando qsupliftplus também suporta os seguintes argumentos: 18 Opção Efeito -h Mostra mensagem de ajuda Portrait Uplift 7.0A Capítulo 2: Executar o Portrait Uplift Opção Efeito -v Mostra informação da versão -d Aciona a saída de depuração -D Esvazia todo o rastreamento da pilha em caso de erro -o <arquivo de parâmetros> Esvazia um arquivo de parâmetros XML. Se o nome de focus opcional também for fornecido, os parâmetros relevantes serão deduzidos. -P <campo de partição> Especifica o campo de partição quando cria um arquivo de parâmetros com a opção -o -O <campo de objetivo> Especifica o campo de objetivo quando cria um arquivo de parâmetros com a opção -o As opções de execução detalhadas de todas as variantes de qsupliftplus são controladas por um arquivo de parâmetros XML. Por padrão, procura um arquivo chamado params.xml no diretório atual, mas é possível usar um arquivo de parâmetros alternativo ao especificar seu nome na linha de comando, por exemplo, qsupliftplus -s /some/path/myconfig.xml. Um arquivo de parâmetros modelo pode ser gerado ao executar qualquer uma das variantes básicas acima, sem especificar quaisquer argumentos adicionais, ou ao especificar somente o nome do caminho para um focus de entrada (nesse caso, alguns dos parâmetros serão deduzidos desse focus). Uma referência de parâmetro completa é fornecida na seção Referência de Parâmetros na página 65, mas os parâmetros usados com mais frequência estão resumidos abaixo: Tabela 1: Descrição do focus Seleção variável setacsFocusName: focus para nBestACs: para a seleção variável escolher a seleção variável focusName: escrito após a seleção variável e lido pela construção de modelo setacsRebin: 1, 0, ou binfile.xml modelType: auto, binary, real setacsRebinCriterion: L, M, E ou T objectiveField: resultado partitionField: tratado=1, controlado=0 stratificationField: resumir campos-chave championModelField: plotados em gráficos Uplift Guia do usuário 19 Uso típico Descrição do focus Seleção variável allowOverwrite: permite a substituição após a seleção variável Especificações da árvore Geral searchMinPopSize: 0 ou 1 nBagsValues: c. 10–20 autoMinPopSize: 0 ou 1 pruneThresholdValues: por ex., [3%, 2%, 1%, 0,5%] minPopSize: c. 500–4.000 nRuns: por valor superior nLevels: de divisões minLeafNodes: c. 3–8 (após remoção) maxTreeAttempts: para satisfazer minLeafNodes tvTrainProp: c. 50–70%; por isso, 100% fixedTrainValidateField: valores de string "T" e "V" propAnalysisCandidates: usado para cada árvore userWeightingField: ponderação de caso para cada registro Os resultados da execução do Portrait Uplift são escritos em um arquivo XML, a partir do qual podem ser produzidos gráficos e relatórios. Use o qsupliftresults para processar resultados no diretório atual ou especificar o nome de um diretório opcional para processar resultados nesse local. Uso típico A sequência básica de operações para um uso típico do Portrait Uplift é a que se encontra descrita abaixo. Aqui, presumimos que nosso focus base se chama example.ftr e que foi preparado conforme descrito abaixo. 1. Crie um arquivo de parâmetros modelo se ainda não tiver um adequado. Se planejar otimizar binnings e/ou selecionar candidatos de análise, faça isso executando o qsupliftplus -s focus.ftr Se planejar executar o Portrait Uplift sem seleção variável, use o qsupliftplus focus.ftr (A principal diferença entre os dois é que, ao usar -s, a seleção é variável no focus fornecido e, em seguida, é criada a entrada para a construção de modelo; quando se trata da construção de modelo isoladamente, usa o focus fornecido diretamente.) Isso irá preencher todos os parâmetros que conseguir, incluindo a configuração de um minPopSize razoável se os campos de objetivo e de partição estiverem configurados no focus especificado. 20 Portrait Uplift 7.0A Capítulo 2: Executar o Portrait Uplift Se pretender que o arquivo de saída tenha outro nome que não params.xml, é possível especificar isso por meio da marcação -o, ou seja, qsupliftplus -s -o foo.xml focus.ftr irá produzir um arquivo de parâmetros modelo chamado foo.xml. É possível omitir o nome do focus e, nesse caso, será criado um arquivo de parâmetros de modelo genérico. 2. Edite o arquivo de parâmetros params.xml e salve-o, normalmente, com um novo nome. Nesse caso, exampleParams.xml pode ser apropriado. Os detalhes sobre o que existe no arquivo podem ser encontrados na seção Referência de Parâmetros na página 65. Às vezes, é útil armazenar os parâmetros em um subdiretório chamado params, para reduzir a confusão. 3. Se preferir, selecione os melhores candidatos de análise e otimize os binnings (consulte a seção Seleção Variável e Metodologia de Binning na página 37) com um comando, como qsupliftplus -s params/exampleParams.xml (Isso assume que o arquivo de parâmetros esteja armazenado em um subdiretório de parâmetros.) Assim que a seleção variável estiver concluída, construa o relatório de resultados, mudando para o subdiretório criado e usando o comando qsupliftresults, por ex., cd results20121212-121212 qsupliftresults 4. Se preferir, crie manualmente um campo de estratificação (por ex., strat) para ser usado pelo Portrait Uplift, conforme descrito na seção Amostragem e Estratificação na página 46, e edite adequadamente o arquivo de parâmetros exampleParams.xml. (Normalmente, esse passo é realizado de forma automática durante a seleção variável.) 5. Execute o Portrait Uplift para construir modelos (consulte a seção Metodologia de Construção de Modelo na página 45) digitando: qsupliftplus params/exampleParams.xml Geralmente, isso irá criar saída em um diretório com um nome semelhante a resultsAAAAMMDD-HHMMSS, onde AAAAMMDD corresponde a uma data com oito dígitos e HHMMSS a um timestamp, por ex., results20121212-121212. 6. Agora, crie os gráficos Qini e o relatório de modelo (consulte a seção Metodologia de Avaliação de Modelo na página 53), mudando para o diretório de resultados e digitando em seguida: qsupliftresults Isso irá produzir um arquivo PDF de gráficos com um nome semelhante a results20121212-121212.pdf e uma página da web com um nome semelhante a report20121212-121212.html que apresenta os gráficos e que contém outras informações resumidas sobre as repetições. 7. Possivelmente, você já iterou algumas vezes, encontrando gradualmente melhores parâmetros de construção de modelo e ajustando o conjunto de campos ou seus binnings. Alguns dos parâmetros de construção de modelo mais importantes são: • O limite de remoção, controlado por pruneThresholdValues; • O tamanho mínimo de população minPopSize; • O número mínimo de nós filhos por árvore minLeafNodes. Uplift Guia do usuário 21 Parar o Portrait Uplift Esses três interagem bastante, por isso, alterar um pode implicar alterar os restantes. Existem também muitos outros parâmetros que podem ser alterados com utilidade em algumas circunstâncias. Consulte a seção Diretrizes de Parâmetros na página 59 para uma maior orientação. 8. Ao avaliar o desempenho do modelo, tenha especial atenção com relação ao desempenho de validação (ou seja, o grau de proximidade entre as linhas de treinamento e de validação no gráfico), mas também ao valor global q0 (Qini), à forma da curva, à elevação máxima (ou mínima) alcançada, à proporção da população a considerar alvo, etc. Lembre-se de que as curvas Qini podem ter valores Qini idênticos, mas formas muito diferentes e que o modelo será mais útil dependendo da estratégia/critérios adotados para selecionar alvos. 9. Assim que tiver encontrado um bom conjunto de parâmetros de construção de modelo, considere alguns modelos de agregação por bootstrap finais usando todo o conjunto de dados (sem divisão treinamento/validação). Consulte a seção Reconstrução Final na página 50 para mais informações 10. Se estiver satisfeito com o modelo, você pode desejar usá-lo para pontuar a população adequada. Normalmente, isso será alcançado usando o qsderive, com um comando, como qsderive -derivations modelB03T2.00pcR0001.xml -input deploy.ftr -output deployScored.ftr onde, deploy.ftr é o focus a pontuar. 11. Posteriormente, você pode pretender adicionar resultados reais ao focus implantado e, em seguida, traçar um gráfico Qini para o desempenho real do modelo. O comando qsupliftplus -a irá permitir isso, normalmente, com a seguinte sequência: cd results20121212-121212 qsupliftplus -a out.xml ../foci/deployScoredplusActual.ftr Consulte a seção Aplicar modelos Uplift de Agregação por Bootstrap a novos dados na página 22 para mais informações. Parar o Portrait Uplift Por várias razões, normalmente não é uma boa ideia parar o Portrait Uplift pressionando control-C ou algo semelhante. Entre outras consequências indesejadas, isso pode fazer com que os foci fiquem em estado "bloqueado", dificultando sua utilização. Um mecanismo adequado para parar consiste em criar um arquivo chamado stop.now no diretório de resultados. Isso fará com que o software pare logo que seja seguro. Normalmente, isso é bastante rápido. Nos sistemas UNIX, a forma mais fácil para fazer isso é usar o comando touch stop.now no diretório de resultados. Nos sistemas Windows, a forma mais fácil é provavelmente copiar e colar params.xml, que já deve se encontrar nesse diretório e, em seguida, renomear Copy of params.xml como stop.now. Aplicar modelos Uplift de Agregação por Bootstrap a novos dados O comando qsupliftplus -a é igualmente fornecido com o Portrait Uplift e pode ser usado para aplicar um conjunto de modelos uplift previamente construídos com o Portrait Uplift a novos dados. 22 Portrait Uplift 7.0A Capítulo 2: Executar o Portrait Uplift Todas as informações-chave sobre uma execução são armazenadas pelo Portrait Uplift no arquivo especificado pelo parâmetro xmlResultsStem. Como o arquivo é direcionado à saída, ele normalmente é chamado out.xml. O comando qsupliftplus -a lê o arquivo de resultados XML out.xml e, com base na informação contida nele, grava um novo arquivo de resultados XML em um subdiretório que contém, não só os gráficos Qini para os dados de treinamento e de validação originais, mas também uma linha para os novos dados ("aplicados"). Como exemplo concreto, suponha que o Portrait Uplift é executado a partir de um diretório chamado Projects e que, inicialmente, produz a saída no diretório de resultados results20121212-121212 e use foci do diretório foci. No dia seguinte, às 13h13 e 13 segundos, a seguinte sequência de comando é enviada, iniciando a partir do diretório Projects: cd results20121212-121212 qsupliftplus -a out.xml ../foci/newdata.ftr cd results20051213-131313 Estrutura de Diretório Sugerida Ter conjuntos de dados, parâmetros, resultados (e mais) tudo no mesmo diretório pode ser confuso, especialmente se forem realizadas várias repetições. Algumas pessoas gostam de usar uma estrutura de diretório para organizar as coisas. Dado um projeto chamado ProjectX usando um diretório base ProjectX, pode ser útil criar os subdiretórios ProjectX/foci, ProjectX/params e ProjectX/runs. Se isso for feito, mas ainda forem executados comandos a partir do diretório ProjectX, será necessário alterar o parâmetroresultsDir para runs/results. Apesar do Portrait Uplift não criar o diretório ProjectX/runs, devido a essa configuração de parâmetro, o software irá criar corretamente os subdiretórios de resultados como ProjectX/runs/results20121212-121212. e assim por diante. Da mesma forma, se seu arquivo de parâmetros for criado com um comando, como qsupliftplus -s foci/CampaignX.ftr os parâmetros ficarão corretamente configurados no arquivo de parâmetros para permitir a execução a partir do diretório ProjectX. Configurar SAS para chamar o Portrait Uplift É fornecido um conjunto experimental de macros SAS com o Portrait Uplift para permitir que as operações principais sejam executadas diretamente de um programa SAS. Para usar essas macros, você deve configurar sua instalação SAS para carregar o arquivo autoexec em <pmhome>/ext/upliftplus/autoexec.sas (onde <pmhome> é o diretório de instalação do Portrait Miner). Uplift Guia do usuário 23 Executar Portrait Uplift a partir do SAS Uma forma de fazer isso é configurando o atalho da área de trabalho SAS para usar o arquivo autoexec; por exemplo: "C:\Program FilesSASSAS Learning Edition 4.1SAS.exe" -autoexec "PMHOME\ext\upliftplus\autoexec.sas" Executar Portrait Uplift a partir do SAS É fornecido um conjunto experimental de macros SAS com o Portrait Uplift para permitir que as operações principais sejam executadas diretamente de um programa SAS. Se o SAS não tiver sido configurado para carregar as macros do Portrait Uplift automaticamente, inclua linhas em seu código SAS similares às seguintes, onde c:/PortraitMiner é a pasta de instalação do Portrait Uplift: libname uplift "c:\PortraitMiner\ext\upliftplus" ; options mstored sasmstore=uplift ; Seleção variável a partir do SAS Uma macro uplift_variable_selection dá acesso à funcionalidade de seleção variável dentro do Portrait Uplift. Ela assume os seguintes argumentos: data (Necessário: caminho do arquivo) Localização do conjunto de dados SAS (.sas7bdat) para análise. objectiveField Necessário: nome da variável) Nome da variável dependente para análise: consulte a seção objectiveField (necessário) na página 68. partitionField (Necessário: nome da variável) Nome da variável de divisão tratada/controlada: consulte a seção partitionField (necessário) na página 69. analysisFields (Opcional: lista de nomes de variáveis, separados por vírgulas) Lista de variáveis independentes a considerar para a seleção variável. Se não estiver presente, serão consideradas todas as variáveis. xanalysisFields (Necessário: lista de nomes de variáveis, separados por vírgulas) Lista de variáveis independentes a excluir de consideração para a seleção variável. categoricalFields (Opcional: lista de nomes de variáveis separadas por vírgulas) Lista de variáveis a interpretar como variáveis nominais. nBestACs (Necessário: integer) Número de variáveis a selecionar: consulte a seção nBestACs (opcional; padrão: 5) na página 73. setacsRebin (Opcional: 0 ou 1) se for configurado para 1, otimize a classificação da variável (binning) baseada na correlação com a elevação: consulte a seção setacsRebin (opcional; padrão: 0) na página 74. setacsRebinMaxBins (Opcional: inteiro) Número máximo de bins (buckets) a considerar ao otimizar a classificação de variáveis. 24 Portrait Uplift 7.0A Capítulo 2: Executar o Portrait Uplift stratificationField (Opcional: nome da variável) variável a usar para estratificar os dados: consulte a seção stratificationField (opcional, mas recomendado) na página 69. Ao completar, será preenchida uma nova pasta de resultados com carimbo de hora ao lado do conjunto de dados SAS, e os arquivos report.html e results.pdf criados serão abertos automaticamente. A lista de variáveis selecionadas é devolvida ao SAS na macro &upliftSelVar para ser usada posteriormente nas chamadas de macros do SAS. Por exemplo, o script abaixo irá selecionar variáveis a partir do conjunto de dados SAS em c:\data\DirectBank.sas7bdat, usando a variável TrialRespond como a variável dependente e TrialMailing como a variável de tratamento, selecionando as três melhores variáveis independentes entre Age, Income, Gender, MaritalStatus e CardVisa: libname testlib 'c:\data' ; %uplift_variable_selection( data=testlib.DirectBank ,objectiveField=TrialRespond ,partitionField=TrialMailing ,analysisFields="Age,Income,Gender,MaritalStatus,CardVisa" ,nBestACs=3 ) Observação: as listas devem ser separadas por vírgulas e contidas entre aspas duplas. Construir modelos uplift a partir do SAS Uma macro uplift_variable_selection dá acesso à funcionalidade de construção de modelo dentro do Portrait Uplift. Ela assume os seguintes argumentos: data (Necessário: caminho do arquivo) Localização do conjunto de dados SAS (.sas7bdat) para análise. objectiveField Necessário: nome da variável) Nome da variável dependente para análise: consulte a seção objectiveField (necessário) na página 68. partitionField (Necessário: nome da variável) Nome da variável de divisão tratada/controlada: consulte a seção partitionField (necessário) na página 69. analysisFields (Opcional: lista de nomes de variáveis separadas por vírgulas) Lista de variáveis independentes a considerar para a construção de modelo. Essa pode ser a macro &upliftSelVar se executar depois de %uplift_variable_selection. Se não estiver presente, serão consideradas todas as variáveis. xanalysisFields (Necessário: lista de nomes de variáveis separadas por vírgulas) Lista de variáveis independentes a excluir de consideração para construção de modelo. categoricalFields (Opcional: lista de nomes de variáveis separadas por vírgulas) Lista de variáveis a interpretar como variáveis nominais. useExisting (Opcional: 0 ou 1) Sinaliza para usar interpretações de dados existentes e binnings da execução de seleção variável anterior. metadata (Opcional: nome do arquivo) Arquivo de metadados do Portrait (.qsfm) para definir as interpretações a aplicar aos dados antes de construir o modelo. Uplift Guia do usuário 25 Construir modelos uplift a partir do SAS params (Opcional: nome do arquivo) Arquivo de parâmetros do Portrait Uplift (.xml) para usar em vez de os parâmetros da macro. nBagsValues (Opcional: lista de inteiros contidos entre colchetes) lista do número de sacos: consulte a seção nBagsValues (necessário) na página 75. pruneThresholdValues (Opcional: lista de porcentagens contidas entre colchetes) lista de valores limites de remoção a usar: consulte a seção pruneThresholdValues (necessário) na página 76. autoPrune (Opcional: 0 ou 1): consulte a seção autoPrune (opcional; padrão: 0) na página 76. nRuns (Opcional: integer) número de repetições para cada conjunto de parâmetros: consulte a seção nRuns (opcional; padrão: 1) na página 76. nLevels (Opcional: integer) profundidade máxima das árvores a construir: consulte a seção nLevels (opcional; padrão 4) na página 72. maxTreeAttempts (Opcional: integer) número máximo de tentativas para cada árvore: consulte a seção maxTreeAttempts (opcional; padrão: 2) na página 77. minLeafNodes (Opcional: integer): consulte a seção minLeafNodes (opcional; padrão: 4) na página 77. autoMinPopSize (Opcional: 0 ou 1): consulte a seção autoMinPopSize (opcional; padrão 1) na página 71. searchMinPopSize (Opcional: 0 ou 1): consulte a seção searchMinPopSize (opcional; padrão 0) na página 71. minPopSize (Opcional: integer): consulte a seção minPopSize (opcional; padrão 2000) na página 71. propAnalysisCandidates (Opcional: percentage) proporção de variáveis independentes a usar: consulte a seção propAnalysisCandidates (opcional; padrão: 1.0) na página 77. saveFocusStem (Opcional: string) tronco de nome de arquivos dos conjuntos de dados intermediários salvos: consulte a seção saveFocusStem (opcional; padrão: (blank)) na página 79. saveTreeStem (Opcional: string) tronco de nome de arquivos das árvores intermediárias salvas: consulte a seção saveTreeStem (opcional; padrão: (blank)) na página 80. tvTrainProp (Opcional: percentage) proporção de dados usados para o conjunto de treinamento: consulte a seção tvTrainProp (opcional; padrão: 50%) na página 78. modelType (Opcional: auto | binary | real | twostage): consulte a seção modelType (necessário) na página 68. yQiniAxis (Opcional: string) texto a ser usado como rótulo do eixo Qini vertical: consulte a seção yQiniAxis (opcional; Uplift Cumulativo padrão (pc pt)) na página 71. outcomeSizeActual (Opcional: nome da variável) variável real do resultado: consulte a seção outcomeSizeActual (opcional) na página 68. outcomeSizeEstimate (Opcional: nome da variável) variável estimada do resultado: consulte a seção outcomeSizeEstimate (necessário para modelos de duas fases) na página 68. championModelField (Opcional: nome da variável) variável do modelo para sua melhor opção para comparação: consulte a seção championModelField (opcional) na página 70. 26 Portrait Uplift 7.0A Capítulo 2: Executar o Portrait Uplift prngInitialState (Opcional: string) semente aleatória a usar: consulte a seção prngInitialState (opcional) na página 78. roiCurrencySymbol (Opcional: string): consulte a seção roiCurrencySymbol (opcional; padrão: $) na página 81. roiCostOfTreatment (Opcional: string): consulte a seção roiCostOfTreatment (opcional; padrão: 0.00) na página 81. roiValueOfBenefit (Opcional: string): consulte a seção roiValueOfBenefit (opcional; padrão: 1.00) na página 81. roiCostOfFulfillment (Opcional: string): consulte a seção roiCostOfFulfillment (opcional; padrão: 0.00) na página 81. Observação: as porcentagens devem incluir o símbolo de porcentagem, por ex. 50%. Observação: As listas nBagsValues e pruneThresholdValues devem ficar contidas entre aspas duplas e colchetes, por ex. "[1%,2%]". Ao completar, será preenchida uma nova pasta de resultados com carimbo de hora ao lado do conjunto de dados SAS, e o SAS irá criar três relatórios nos formatos PDF, Excel e HTML, contendo tabelas de resultados de modelos e gráficos Qini. Uma visualização do relatório HTML será exibida no Visualizador de Resultados SAS. Por exemplo, o script abaixo irá construir modelos uplift em conjuntos de dados SAS em c:\data\DirectBank.sas7bdat, usando a variável TrialRespond com a variável dependente e TrialMailing como a variável de tratamento, usando as variáveis independentes Age, Income, Gender, MaritalStatus e CardVisa, construindo quatro modelos no total: libname testlib 'c:\data' ; %uplift_build_model( data=testlib.DirectBank ,objectiveField=TrialRespond ,partitionField=TrialMailing ,analysisFields="Age,Income,Gender,MaritalStatus,CardVisa" ,nBagsValues="[1,2]" ,pruneThresholdValues="[1%,2%]" ,nRuns=1 ,nLevels=3 ) Modelos uplift de pontuação no SAS Uma macro uplift_score_model dá acesso à funcionalidade de pontuação de modelos no Portrait Uplift. Ela assume os seguintes argumentos: data (Necessário: caminho do arquivo) Localização do conjunto de dados SAS (.sas7bdat) a ser pontuado. model (Necessário: caminho do arquivo) Localização do código de modelo SAS (.sas) para pontuar. outputData (Opcional: caminho do arquivo) Localização do conjunto de dados SAS (.sas7bdat) pontuado. Se estiver em falta, o conjunto de dados pontuado será criado como uma versão com carimbo de hora dos dados de origem. Uplift Guia do usuário 27 Modelos uplift de pontuação no SAS outputFields (Opcional: lista de nomes de variáveis) Lista de variáveis a criar no conjunto de dados pontuado além dos campos de pontuação. force (Opcional: 0 ou 1) Força a substituição de um conjunto de dados de saída existente. Ao completar, será criado um novo conjunto de dados SAS. Por exemplo, o script abaixo irá pontuar o conjunto de dados SAS em c:\data\DirectBank.sas7bdat, usando código de modelos SAS de elevação em c:\data\results20080208-165048\models\modelB02T1.00pcR0001.sas criando um novo conjunto de dados em c:\data\results.sas7bdat (e substituindo qualquer conjunto de dados existente com esse nome) contendo as variáveis HomePostcode, Age e Gender. libname testlib 'c:\data' ; %uplift_score_model( data=testlib.DirectBank , model="C:\data\results20080208-165048\models\modelB02T1.00pcR0001.sas" , outputData=testlib.results , outputFields="HomePostcode, Age, Gender" , force=1 ) 28 Portrait Uplift 7.0A Capítulo Visão Geral da Metodologia Nesta seção: • • • • • • Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30 Estrutura de Modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30 Desenho de Campanha para Análise Uplift . . . . . . . . . . .31 Preparação de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32 Ajuste de Tratamento e Validação de Modelo . . . . . . . . .32 Vários Tratamentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .35 3 Introdução Introdução O Portrait Uplift implementa uma metodologia de boas práticas para construir modelos uplift. A própria metodologia tem duas amplas etapas: a seleção variável, envolvendo a criação de recursos por meio de binnings otimizados, assim como a redução de variáveis (consulte a seção Seleção Variável e Metodologia de Binning na página 37), e a construção de modelo (consulte a seção Metodologia de Construção de Modelo na página 45). Orientação na compreensão de resultados de modelos e avaliação da qualidade dos modelos na seção Metodologia de Avaliação de Modelo na página 53, juntamente com uma vista geral de parâmetros-chave de modelagem na seção Diretrizes de Parâmetros na página 59 e uma referência abrangente na seção Referência de Parâmetros na página 65. A modelagem uplift é indicada para vários cenários de modelagem, incluindo resultados binários, resultados contínuos e modelos de duas fases, tal como descrito na seção Estrutura de Modelo na página 30. No entanto, antes de aplicar o Portrait Uplift, é necessário obter dados históricos de campanha apropriados. Em uma situação ideal, ocorreria um planejamento antecipado da campanha para maximizar a eficácia da próxima modelagem uplift. As recomendações para essa abordagem de "design para análise" estão presentes na seção Desenho de Campanha para Análise Uplift na página 31. Assim que um conjunto de dados de modelagem fica disponível, ele precisa ser preparado para o Portrait Uplift, conforme descrito na seção Preparação de Dados na página 32. Quando não ocorre um planejamento explícito, como é comum acontecer, é fundamental validar que os dados de modelagem satisfaçam os pressupostos que o Portrait Uplift faz, garantindo especificamente que não existam ajustes na divisão tratada/controlada que invalidem as predições do modelo. Em alguns casos, é possível que os ajustes sejam corrigidos usando ponderamento de caso, conforme descrito na seção Ajuste de Tratamento e Validação de Modelo na página 32. Estrutura de Modelo O Portrait Uplift suporta três estruturas de modelo: • Resultado binário (binary); • Resultado discreto contínuo ou ordenado (real); • Duas fases (twostage). Os modelos de resultado binário são usados para problemas onde existem exatamente dois possíveis resultados, por ex., ir ou ficar (retenção/desgaste/rotatividade), comprar ou não comprar (confira "resposta") ou padrão ou não padrão (risco de crédito). É necessário que esse resultado seja representado por uma variável inteira 0 ou 1. Nesses casos, o modelo uplift prevê a alteração na probabilidade de 1-resultado para cada cliente, por ex., redução da probabilidade de rotação, aumento da probabilidade de resposta, aumento na probabilidade padrão, etc. Os modelos contínuos (real) são usados para problemas cujo objetivo é estimular o nível ou tamanho da atividade do cliente, por ex., aumentar os gastos dos clientes. Aqui, o modelo uplift ajusta diretamente a alteração no resultado como resultado do tratamento. 30 Portrait Uplift 7.0A Capítulo 3: Visão Geral da Metodologia Os modelos de duas fases estão relacionados com os modelos contínuos, mas agora o objetivo da campanha é aumentar a probabilidade (ou frequência) da atividade do cliente, (por ex., frequência das compras) ou para aumentar o nível de atividade ao orientar compras ou a frequência da utilização. Aqui, o modelo uplift é usado para estimar o aumento da probabilidade do resultado, mas isso é depois combinado com uma estimativa (fornecida) de tamanho do resultado (outcomeSizeActual) caso aconteça, quando reportar o desempenho de cada modelo. Não é sempre claro se o principal efeito de um tratamento de estímulo será aumentar o volume das compras de um cliente (por exemplo) ou a probabilidade de que o cliente vai comprar. Muitas vezes, é possível obter algum conhecimento ao examinar separadamente a elevação na probabilidade de compra e a elevação no nível de gastos para compradores. Se a elevação geral em gastos é explicada em sua maioria por uma elevação na taxa de compra (multiplicada por uma quantidade de compra média), então, um modelo de duas fases é certamente o apropriado. Se a elevação na probabilidade de compra for quase zero, um modelo contínuo será certamente o mais indicado. Em outras circunstâncias, pode ser apropriado tentar um modelo uplift "real" e de duas fases, e possivelmente combinar os dois. Desenho de Campanha para Análise Uplift O procedimento recomendado para conceber uma campanha a ser analisada com a modelagem uplift é: 1. Selecionar a população candidata P para avaliação. 2. Subdividir P aleatoriamente entre uma população tratada e outra controlada. A estratificação (amostra aleatória de tamanho exato) pode ser usada e pode até ser benéfica na redução do ruído. 3. A modelagem torna-se mais simples se toda a população tratada receber um tratamento idêntico ou se seus tratamentos forem alocados aleatoriamente. Se não for esse o caso, a modelagem continua a ser possível, mas é mais complexa e pode ser menos precisa. Consulte a seção Vários Tratamentos na página 35. No caso ideal, a menor das duas populações (normalmente a população de controle) será avaliada de acordo com a seguinte regra: "Para que as árvores de uplift sejam construídas satisfatoriamente e sejam capazes de detectar variações de elevação de x%, devemos assegurar que as populações tratadas e controladas sejam grandes o suficiente para que x% delas representem cerca de 1000 pessoas. Assim, se pretendermos ser capazes de modelar variações de 1% em elevação, poderemos esperar ter populações de controle e tratadas de pelo menos 100.000." No entanto, a Portrait está consciente de que essa regra é muitas vezes violada e o Portrait Uplift foi formulado para tentar extrair o máximo valor possível dos dados, mesmo quando essa regra é extremamente violada. Uplift Guia do usuário 31 Preparação de Dados Preparação de Dados Antes da análise de elevação, é necessário que o conjunto de dados de modelagem seja preparado de forma apropriada da seguinte forma: • Selecione o campo de objetivo, um campo numérico 0/1 para um modelo binário (por ex., resposta, rotatividade), ou um campo de valor real para um modelo contínuo (por ex., gasto). • Selecione o campo de partição, um campo numérico 0/1 onde 1 indica os clientes tratados e 0 indica clientes controlados. Para obter opções de análise de campanhas com vários tratamentos, consulte a seção Vários Tratamentos na página 35. • Observe todos os campos de modelo para sua melhor opção, qualquer campo numérico com o objetivo de classificar clientes por elevação (valores mais altos indicam uma maior elevação). Isso poderá ser um modelo de elevação alternativo, um modelo tradicional ou uma segmentação usada anteriormente para considerar alvos. • Adicione interpretações categóricas para candidatos de análise, quando necessárias. Recomendamos que os valores categóricos sejam armazenados como dados inteiros em vez de strings, devido à maior necessidade de uso de memória do último. • Faça todas as seleções de registros necessárias para identificar a população de modelagem. Valores NULOS nos campos de objetivo, tratamento e partição normalmente devem ser excluídos. (Os valores NULOS em candidatos de análise serão analisados corretamente, sendo possível também serem divididos como uma categoria separada durante o crescimento da árvore.) • Se preferir, adicione binnings apropriados aos candidatos de análise, se não pretender otimizar binnings automaticamente; consulte a seção Seleção Variável e Metodologia de Binning na página 37); • Se preferir, crie ou indique uma divisão de treinamento-validação fixa contendo valores da string "T" E "V"; consulte a seção fixedTrainValidateField (opcional) na página 69. • Se preferir, crie ou indique um campo de ponderação de caso contendo valores numéricos não negativos; consulte a seção Ajuste de Tratamento e Validação de Modelo na página 32. Ajuste de Tratamento e Validação de Modelo A modelagem uplift assume que a única diferença sistemática entre a população tratada e a de controle é o tratamento que está sendo modelado. Se a divisão de tratamento não for aleatória (por exemplo, se for possível prever o indicador de tratamento por meio de modelo convencional), os resultados da modelagem uplift não serão confiáveis. O Portrait Uplift fornece o Relatório de Validação de Partição automatizado (ou Relatório "Roxo", seção Relatório de Validação de Partição (o Relatório "Roxo") na página 42) para testar se o indicador de tratamento surge aleatoriamente com respeito a cada candidato de análise, de forma a alertar o usuário quanto a possíveis problemas nessa área. 32 Portrait Uplift 7.0A Capítulo 3: Visão Geral da Metodologia Muitos tipos de ajustes conhecidos no indicador de tratamento podem ser corrigidos ao especificar um campo de ponderamento que define um valor de ponderação de caso para cada registro (consulte a seção userWeightingField (opcional) na página 70). Exemplos desses ajustes incluem: Ajuste de Tratamento Frequentemente, diferentes partes da base de clientes são tratadas a taxas diferentes. Desde que o tratamento em cada segmento seja aleatório, esse ajuste é facilmente ultrapassado por meio de um ponderamento de caso. Por exemplo, imagine que os três decis de valores da parte superior foram segmentados a uma taxa de 90%, com os sete decis da parte inferior segmentados a uma taxa de 10%. Isso faz com que os registros tratados sejam sobre-representados nos decis da parte superior e sub-representados nos decis da parte inferior. No geral, assume que temos uma taxa de tratamento que varia (somente) de acordo com um campo de segmentação conhecido, com uma taxa de tratamento global T e uma taxa de tratamento Ts para cada segmento s naquele campo. Em seguida, é possível ponderar cada registro tratado em s por T / Ts e cada registro de controle (não tratado) em s por (1-T) / (1-Ts). Após o ponderamento de caso, proporciona uma taxa de tratamento constante para todos os segmentos e preserva a contagem de registros total (ponderada) em cada segmento. É possível implementar esse tipo de ponderamento como um campo derivado no Decision Studio, assumindo um campo de segmentação categórico chamado segment e um indicador de tratamento treatment, usando FDL semelhante a: create weight := ( q := mean(treatment); // overall treatment rate p := mean(treatment) by segment; // rate for this segment if treatment then q/p else (1-q)/(1-p) ); Observação: Em casos onde o ajuste de tratamento seja desconhecido, não podendo assim ser facilmente capturado em somente um campo de segmentação, por vezes ainda é possível corrigir aproximadamente o ajuste por meio de modelagem do indicador de tratamento. Nessa abordagem, é construído um modelo de regressão tradicional (por exemplo, usando o assistente de scorecard) com o indicador de tratamento como o objetivo. (Isso oferece frequentemente uma visão útil para a compreensão da origem do ajuste.) Ao pontuar os dados de modelagem, é possível gerar uma probabilidade de "verossimilhança de tratamento" para cada registro. Depois é possível usar essa probabilidade diretamente no lugar da taxa de tratamento do segmento, Ts, na discussão acima, produzindo FDL semelhante a: create weight := ( q := mean(treatment); // overall treatment rate p := treatment_probability; // as predicted by treatment model if treatment then q/p else (1-q)/(1-p) ); É evidente que deve ser dada atenção extrema à validação e interpretação de resultados de modelagem nessa situação! Segmentação de ajuste Às vezes, a população disponível para a modelagem constitui uma representação polarizada da população total que será, posteriormente, pontuada. Nesses casos, é frequentemente desejável reponderar o arquivo modelado para aumentar sua fidelidade para a pontuação. Por exemplo, imagine um decil de valor definido ao longo de toda a base de clientes (com números iguais de clientes em cada decil), onde Uplift Guia do usuário 33 Ajuste de Tratamento e Validação de Modelo consideramos alvo 90% dos três decis da parte superior (com 10% marcados como controle) e 9% dos sete decis da parte inferior (com 1% fornecido como controle). Assim, temos uma taxa de tratamento constante de 90% ao longo do arquivo e podemos construir um modelo uplift em segurança. Contudo, os decis de valor da parte inferior são sub-representados e nosso modelo pode ser menos preciso aí (no sentido em que a qualidade de nosso modelo será muito mais influenciada pelo desempenho nos três decis da parte superior). Mais uma vez, no geral, presumimos que o ajuste de segmentação é capturado por somente um campo de segmentação, com uma taxa de alvo Rs em cada segmento s (em nosso exemplo, R=1, nos três decis da parte superior e R=0,1 nos sete da parte inferior). Simplesmente ponderamos cada registro por 1/Rs para refletir a população total representada pelo arquivo de modelagem (polarizado). Para nosso exemplo, seria possível derivar um campo de ponderamento de caso no Decision Studio por meio de FDL semelhante a: create weight := ( case value_decile <= 3: otherwise: ); 1.0; 10.0; // we have all high-value customers // but only 10% of the lower deciles Combinações de ponderações Quando é necessário aplicar múltiplas ponderações (digamos, ponderação de segmentação e ponderação de tratamento) ao mesmo conjunto de dados, deve-se ter especial atenção. Essas ponderações devem ser determinadas sequencialmente, não de forma independente. Se houver um campo de ponderação de segmentação weight_target, o campo derivado para o ajuste de tratamento será: create t := treatment * weight_target; // weighted value for a treated record create weight_treat := weight_target * ( q := sum(t) / sum(weight_target); // overall weighted treatment rate p := ( sum(t) by segment ) / sum(weight_target) by segment ; // treatment rate for this segment if treatment then q / p else (1-q) / (1-p) ); mais uma vez, assumindo um campo de segmentação categórico chamado segment e um indicador de tratamento treatment. Amostragem de Resposta Estratificada Muitas vezes, quando as taxas de resposta são baixas, é considerado desnecessário incluir todas as instâncias de não respondedor. Por exemplo, o arquivo de modelagem pode conter todos os respondedores mas somente 10% de não respondedores (selecionados de forma aleatória). Isso não apresenta qualquer ajuste de tratamento ou de segmentação, mas infla artificialmente a taxa de resposta. É possível usar uma ponderação de caso para tratar cada registro de respondedor como somente um cliente e de não respondedor como 10 clientes (1/10%), ou seja, weight := if response then 1 else 10; Alternativamente, é possível modelar o arquivo estratificado sem uma ponderação de caso, com a pontuação final ajustada para refletir a estratificação. Se ω representa a fração de não respondedores reais que surgem no arquivo de modelagem (1/10 em nosso exemplo), é possível que a probabilidade 34 Portrait Uplift 7.0A Capítulo 3: Visão Geral da Metodologia de elevação real pactual esteja relacionada com a pontuação de probabilidade de elevação modelada p por meio de: Vários Tratamentos O Portrait Uplift, conforme é disponibilizado atualmente, está formulado para lidar, primeiramente, com ações ou tratamentos únicos aplicados a um subconjunto de uma população alvo potencial, escolhida aleatoriamente, com o restante da população funcionando como controle. Porém, as empresas muitas vezes testam, ou pretendem testar, diversos tratamentos ou ações simultaneamente. Referimos essa situação no cabeçalho principal de Vários Tratamentos. É possível distinguir vários casos. • O caso mais simples é o que apresenta vários tratamentos diferentes, que foram alocados aleatoriamente, e o objetivo é compreender qual é a melhor população-alvo e qual é o melhor tratamento, e não tentar entender especificamente a interação dos dois, por ex., não tentar coincidir especificamente os tratamentos com as pessoas. A abordagem mais simples para esse caso é lidar com as duas partes do problema separadamente. Reunir todos os tratamentos e criar um campo de partição onde 1 agrupa as pessoas que receberam qualquer tratamento e 0 agrupa pessoas que não receberam nenhum (o controle). Depois, criar um modelo uplift comum, que irá indicar quais pessoas são mais afetadas positivamente por um tratamento aleatório. Avalie separadamente a elevação geral com os controles associados a cada tratamento. É simplesmente uma questão de calcular o resultado médio mean (objetivo) para cada tratamento e subtrair o resultado médio para o grupo de controle. • Talvez, o próximo caso mais simples é aquele onde a alocação de tratamentos é aleatória mas o objetivo é compreender qual o melhor tratamento para cada pessoa. Desde que o número de tratamentos seja pequeno, a abordagem preferida aqui passa por compilar conjuntos de dados separados contendo a população que recebe somente um tratamento, juntamente com todo o grupo de controle, e construir um modelo uplift separado para cada um. Depois, é possível ao cliente ser pontuado com cada modelo uplift e tratamento com a maior elevação prevista para que o cliente possa ser escolhido. Se o número de tratamentos for maior, mas alguns forem mais comuns que outros, é possível agrupar os demais tratamentos. Essa abordagem não irá funcionar com o chamado design fatorial, onde existem diversos fatores a serem variados (por ex., tamanho do papel, cor do papel e nível de desconto), à medida que o número de combinação aumenta. Sendo fornecidas ni escolhas para cada uma das decisões de tratamento Uplift Guia do usuário 35 Vários Tratamentos k, isso conduz obviamente a modelos . Se k é 6 e cada escolha é binária, isso leva a um requisito para 26 = 64 modelos, que não é realista. É possível, no entanto, assumirmos um pressuposto simplificador de que os fatores de tratamento são independentes. Graças a isso, é possível então construir um modelo para cada opção de tratamento independentemente, nos dando antes modelos para construir. Com 10 fatores binários, isso reduz o número de modelos de 64 para 2 × 6 = 12, e com mais fatores, a redução se torna proporcionalmente maior. Os diferentes modelos permitem que a escolha seja feita separadamente para cada fator para cada cliente, ignorando efeitos de interação. • O caso mais complexo é aquele onde existem vários tratamentos que foram alocados de forma não aleatória. Nesse caso, é impossível distinguir entre o efeito do tratamento e o efeito da consideração de alvo. No entanto, é possível um modelo uplift avisar sobre quem considerar alvo dada a estratégia em uso para alocar tratamentos. É possível usar as variáveis de tratamento como candidatos de análise. Para usar o modelo resultante, simplesmente calcule a elevação prevista de cada pessoa, depois, aloque seu tratamento na mesma base usada para alocar tratamentos para a campanha usada para construir o modelo uplift. 36 Portrait Uplift 7.0A Capítulo Seleção Variável e Metodologia de Binning Nesta seção: • • • • • Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38 Impacto na Estabilidade do Modelo . . . . . . . . . . . . . . . . .38 Seleção variável automatizada . . . . . . . . . . . . . . . . . . . . .39 Binning Automatizado . . . . . . . . . . . . . . . . . . . . . . . . . . . .40 Resultados e Relatórios de Seleção Variável . . . . . . . . .41 4 Introdução Introdução O Portrait Uplift cria modelos uplift usando os campos marcados como candidatos de análise no conjunto de dados de modelagem. Os binnings nesses campos definem os pontos de divisão considerados durante o processo de crescimento da árvore. Assim, é possível ao conjunto de candidatos de análise selecionados e aos binnings escolhidos terem um impacto significativo na qualidade dos modelos produzidos, como discutido na seção Impacto na Estabilidade do Modelo na página 38. É possível ao Portrait Uplift automatizar o processo de seleção de boas variáveis de candidatos (seção Seleção variável automatizada na página 39) e escolher binnings de "boa qualidade" para prever elevação (seção Binning Automatizado na página 40). São criados vários relatórios de diagnóstico durante a fase de pré-processamento para fornecer conhecimento sobre a validade dos dados, estabilidade da elevação e perfis relativos a campos (seção Resultados e Relatórios de Seleção Variável na página 41). Impacto na Estabilidade do Modelo Tanto a seleção variável como o controle de ajuda do binning, e normalmente o limite, o número de graus de liberdade permitidos no processo subsequente de construção de modelo, que normalmente ajuda muito, em parte ao ultrapassar alguns dos problemas associados a testes estatísticos repetidos. A seleção variável considera somente divisões em limites do bin para variáveis ordenadas e trata as categorias das variáveis categóricas como indivisíveis, por isso, a escolha do binning é importante. Apesar de parecer que usando um binning muito estreito (com muitos bins) damos ao software uma flexibilidade máxima, assim como com outros fatores em situações de alta variação, muitas vezes é melhor escolher um binning com um número relativamente menor de bins para reduzir a hipótese de sobreajuste. Os métodos para avaliar a estabilidade de uma variável para modelagem uplift descritos abaixo dependem do binning usado, por isso, a seleção variável e a seleção de binnings andam de mãos dadas. Como regra básica, em situações de alta variação, tendemos a recomendar iniciar com um binning mais amplo de talvez 5 bins de população igual (20-percentis). Se esses se demonstrarem estáveis, então pode valer a pena aumentar o número de bins, talvez até 10, mas se for feito, devemos tomar cuidado para não reduzir os tamanhos da população até ao ponto das estimativas de elevação se tornam duvidosas. Mesmo quando são realizados binnings otimizados e seleção variável, é fortemente recomendado que o usuário dedique tempo para analisar os relatórios criados, considerando uma variável por vez e verificando se: • • • • 38 O binning escolhido está estável (use o Campo de Estabilização de Perfil para isso); A variação na elevação aparenta ser significativa e plausível (use o Perfil de Uplift para isso); A partição é válida (use o Relatório de Validação de Partição para isso); Os padrões mostrados nos campos escolhidos e a elevação mostrada sugerem outras variáveis ou combinações de variáveis que devem ser consideradas para a modelagem. Portrait Uplift 7.0A Capítulo 4: Seleção Variável e Metodologia de Binning Apesar de parecer um clichê falar sobre "lixo que entra, lixo que sai", isso permanece a ser uma observação importante e só é possível ao usuário fazer uma verificação de integridade à saída da seleção variável e construção de modelo. O aspecto mais positivo do clichê é que melhorando a qualidade dos dados de entrada usados para modelagem irá muitas vezes produzir melhorias mesuráveis e significativas na qualidade de saída (modelo). Obviamente, enquanto todo o ênfase nessa documentação está na redução do número de graus de liberdade disponíveis à modelagem limitando o número de candidatos de análise e usando binnings relativamente mais amplos, o aspecto negativo disso é que a possível potência expressiva dos modelos é reduzida. Como o controle de ruído é a principal questão na maioria das situações de modelagem uplift, normalmente é mais benéfico limitar, em vez de expandir, o número de graus de liberdade, inversamente, o usuário tem de estar consciente de que haverá casos onde isto não irá acontecer e é possível mexer à vontade em todos os "botões". Seleção variável automatizada O Portrait Miner nomeia as variáveis independentes disponíveis para modelagem de candidatos de análise. Em alguns casos, é aceitável disponibilizar todos os candidatos de análise para a construção da árvore e confiar que a árvore irá selecionar os que sejam apropriados para a inclusão no modelo. No entanto, em situações de alta variação, isto é normalmente uma má ideia, em especial se houver grandes números de candidatos de análise. O problema é que nessas circunstâncias, as divisões que serão frequentemente escolhidas não são robustas. A remoção irá garantir que as divisões não robustas 1 sejam normalmente removidas, mas não as ávidas natureza dos métodos de construção de árvore significa que a oportunidade para dividir naquele nó é então perdida e o resultado será geralmente um modelo ruim. Por essa razão, o Portrait Uplift contém uma opção auxiliar que seleciona os melhores n candidatos de análise dos que se encontram disponíveis, com base em uma estimativa conservativa de seu valor preditivo baseada na métrica Qini (consulte a seção Interpretação de Valores Qini (Q e q0) na página 54). A seleção variável usa a mesma estrutura do arquivo XML de parâmetros como construção de modelo e apresentam alguns parâmetros dedicados (consulte a seção Parâmetros da seleção variável na página 72), em especial: • nBestACs, o número de candidatos de análise a selecionar; • saveBestACs, que é 1, se os melhores candidatos de análise forem configurados, eles devem ser salvos, e 0 ou em branco caso contrário. 1 Os chamados algoritmos "ávidos" são aqueles que tentam maximizar sua vantagem em cada ponto de decisão e nunca revisitam, reavaliam ou alteram decisões anteriores. A maior parte dos métodos de construção de árvore tem uma fase de construção ávida, durante a qual, em cada etapa, escolhem a melhor divisão para segmentar um nó (de acordo com algum critério de divisão). Uma fase de remoção posterior remove as divisões instáveis, mas não as substitui por alternativas. Uplift Guia do usuário 39 Binning Automatizado Binning Automatizado O Portrait Uplift também tem a capacidade de escolher binnings para campos. Tal como ter candidatos de análise demais pode prejudicar a qualidade do modelo, permitir que as árvores explorem grandes números de divisões em variáveis pode ser igualmente prejudicial, especialmente em situações de ruído elevado que tendem a caracterizar problemas de elevação reais. O parâmetro que controla o rebinning de campos e, caso seja realizado, a forma como esse rebinning é efetuado, é o setacsRebin. • Se setacsRebin estiver configurado para zero (0), o rebinning não é realizado e são escolhidos somente candidatos de análise. • Se setacsRebin estiver configurado para 1 (ou qualquer outro inteiro diferente de zero), o software tentará otimizar o número de bins para todos os candidatos de análise numéricos e categóricos (exceto campos de datas). O software também irá gravar um arquivo XML, chamado binnings.xml, no diretório de resultados (seção Parâmetros de relatório e saída na página 79), que pode ser usado posteriormente para configurar binnings em campos. • Finalmente, se setacsRebin estiver configurado para o nome de um arquivo XML de binnings, o software irá configurar os binnings nos campos, conforme especificado nesse arquivo. Otimizar os Binnings A forma como o software tenta otimizar binnings para a modelagem uplift é por meio de avaliação de uma forma especial de estimativa de Qini baixa para cada binning possível de cada campo, considerando binnings de população igual com (potencialmente) 1 para M bins (não nulos), onde M é controlado pelo parâmetro setacsRebinMaxBins, que por padrão é 10. Em princípio, a forma como isso funciona é que um binning é formado, os dados (reamostrados) são alvo de partição aleatória em oito formas, os bins são classificados em ordem decrescente de elevação na primeira partição e, em seguida, a Qini (Q) é avaliada nessa e nas sete partições restantes. São calculados quatro valores para cada binning: • LQE — a estimativa de Qini baixa nesse caso é μ(Q) - σ(Q)/√n, onde n corresponde ao número de observações (8, no cenário de base) • μ (Q) — o valor da Qini média • MinSE — o menor erro padrão (σ / √n). • TPAQ — o "ponto de mudança ajustado" de Qini, que é uma variante do cálculo de Qini que penaliza os pontos de mudança na curva Qini. Em princípio, em seguida, é possível selecionar um binning com base em qualquer um desses, ou seja, a mais alta LQE, a Qini média máxima, o mais baixo erro padrão ou o mais alto ponto de mudança ajustado de Qini (TPAQ). Por padrão, usamos o mais alto TPAQ, mas é possível alterar isso por meio do parâmetro setacsRebinCriterion (seção setacsRebinCriterion (opcional; padrão: T) na página 74). Existe um problema grave com ruído, que descobrimos poder ser normalmente ajudado usando trimming ou winsoring. Existem duas técnicas para reduzir a variação de amostras. Trimming envolve descartar 40 Portrait Uplift 7.0A Capítulo 4: Seleção Variável e Metodologia de Binning os N valores extremos da distribuição e winsoring envolve modificar esses mesmos valores extremos, "fixando-os" no valor no (ou somente dentro do) valor de corte. Uma vez que sempre temos exatamente oito observações, a implementação de trimming é simplesmente para descartar o valor mais baixo e o mais alto, e a implementação de winsoring é para fixar o valor do mais alto no segundo mais alto e o mais baixo no segundo mais baixo. Outro parâmetro, setacsRebinMean, controla esse comportamento e pode ser configurado para Normal, Trim ou Winsorize. Como pode ser observado, o número de bins, para binnings de 1 a 10 bins, é apresentado ao longo do eixo horizontal e a altura dos pontos mostra um valor Qini. Cada círculo cinza representa somente uma observação. (Tal como indicado no subtítulo, aqui foi usado trimming, por isso o número de observações sofreu uma redução de oito para seis.) O ponto negro para cada binning representa o valor de Q média e as barras de erro mostram um erro padrão (σ(Q)/√6, nesse caso.) Três recursos são assinalados em vermelho. O círculo na parte inferior da barra de erro em nove bins é a mais alta estimativa de Qini baixa. O disco vermelho é a mais alta Qini média, também visível aqui para 9 bins. A barra de erro vermelha é o menor erro, que resulta da menor variação. Onde são apresentados triângulos vermelhos na parte superior ou inferior do gráfico, isso indica que alguns pontos de dados estão além dos limites do eixo y. Nesse caso, esses estão realmente visíveis, mas, muitas vezes, isso não se verificará. Com base nesse gráfico, é evidente que, apesar de usar trimming, a variação permanece elevada e não é fácil decidir qual o melhor binning desses dados, em particular dado o comportamento aparentemente anômalo em 8 bins, e um caso poderia ser feito de somente 5, 7 ou 9 bins. Reutilização de Estimativas de Qini Baixas Claramente, um efeito secundário de otimizar um binning é que as estimativas de Qini baixa são geradas para cada campo. É possível forçar o software a reutilizar essas estimativas quando selecionar candidatos de análise e isso está definido por padrão. O parâmetro que controla isso é o setacsUseRebinLQE (1 ou 0). Deve ser salientado que a seleção variável, no geral, avalia as estimativas de Qini baixa várias vezes e, por isso, podem ser obtidos resultados bastante diferentes por meio dos dois métodos. No geral, configurar setacsUseRebinLQE para zero (0) irá resultar em binnings mais estáveis, por isso é aconselhável em situações de ruído elevado. Deve também ser observado que o binning otimizado não considera o valor de setacsSigmaWeight e suas LQE são sempre do formato μ - σ/√n. Resultados e Relatórios de Seleção Variável Depois da seleção variável ser executada, é possível usar o comando qsupliftresults no diretório de resultados para gerar um ou mais relatórios. O relatório principal contém um número de seções autoexplicativas, juntamente com algumas que irão se beneficiar de explicação. As três tabelas-chave incluídas nesse relatório são: • Um Perfil de Uplift, que mostra a variação da elevação com cada campo. Uplift Guia do usuário 41 Perfis de Uplift • Um Relatório de Validação de Partição, que mostra o grau de estabilidade e, por isso, o grau de validade da divisão de controle tratada. • Um Campo de Estabilização de Perfil, que permite avaliar a estabilidade do binning em um campo no contexto de elevação. Os três relatórios também podem ser gerados a partir de um conjunto de dados se for usada a opção -p para qsupliftplus. O formato do comando é qsupliftplus -p params.xml com o focus, objetivo e campo de partição, entre outros, especificados no arquivo de parâmetros params.xml, como de costume (seção Executar o Portrait Uplift a partir da Linha de Comando na página 18). O resultado (assim que processado com qsupliftresults) será um arquivo, reportYYYYMMDD-HHMMSS.html, onde YYYYMMDD corresponde a uma data com oito dígitos e HHMMSS a um timestamp, por exemplo, report20121212-121212.html, que contém esses três relatórios para o focus especificado pelo parâmetro focusName. Ao executar a seleção variável, é possível usar o parâmetro setacsProfile para controlar se esses relatórios são produzidos para o focus de entrada, para o focus de saída ou para ambos (isto é, se abrange todos os candidatos de análise ou somente aqueles escolhidos pela seleção variável para a construção de modelo). Os valores para esses parâmetros são both, input, output ou none ou pode ficar em branco, o que equivale a escolher none. Perfis de Uplift Os Perfis de Uplift mostram a elevação média real como uma função de cada campo. É apresentado um exemplo na Figura 4. Os campos são listados na mesma ordem em que aparecem no conjunto de dados. O Perfil de Uplift é útil para compreender a variação não processada na elevação em cada campo. Note que, apesar da similaridade visual (proposital), essa tabela difere crucialmente de um Perfil de Pontuação (seção Perfis de Pontuação na página 57) no qual é apresentada a elevação real, não a prevista. Relatório de Validação de Partição (o Relatório "Roxo") É apresentado um Relatório de Validação de Partição na Figura 5. Esse relatório realça, em várias tonalidades de roxo, quaisquer bins nos quais a proporção tratada/controlada é significativamente diferente da proporção tratada global. (Os campos são listados em ordem descendente de variação da proporção tratada/controlada.) A presença de mais de uma ou duas células roxas escuras podem indicar um problema ou ajuste com a divisão tratada/controlada, que pode invalidar os resultados da modelagem. Por vezes, é possível corrigir esse ajuste por meio de ponderamento de caso; consulte a seção Ajuste de Tratamento e Validação de Modelo na página 32. Campo de Estabilização de Perfil (o Relatório "Drumstick") É apresentado um Campo de Estabilização de Perfil na Figura 6. O Campo de Estabilização de Perfil oferece uma forma rápida e eficiente de identificar binnings problemáticos que possam precisar ser ajustados manualmente. Cada listra colorida mostra a elevação para um segmento aleatório da população. O objetivo consiste em compreender o grau de estabilidade do binning com relação à elevação. No 42 Portrait Uplift 7.0A Capítulo 4: Seleção Variável e Metodologia de Binning caso de um binning estável, cada listra em somente um bin terá uma cor semelhante (e também uma elevação semelhante). Como pode ser observado, isso ocorre em muitos dos bins aqui apresentados. Porém, em alguns, isso não acontece. Se houver grande variação em um bin, isso pode indicar que o binning não é estável e que o melhor seria reduzir o número de bins. O parâmetro nStabilityPartitions controla o número de listras. Por padrão, são 3 e esse número deve estar no intervalo 2 — 10. Uplift Guia do usuário 43 Capítulo Metodologia de Construção de Modelo Nesta seção: • • • • • • • • Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .46 Amostragem e Estratificação . . . . . . . . . . . . . . . . . . . . . .46 Agregação por bootstrap . . . . . . . . . . . . . . . . . . . . . . . . . .47 Remoção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48 Exploração de Parâmetros Automatizada . . . . . . . . . . . .48 Recomendação de Parâmetros Automatizada . . . . . . . . .49 Reconstrução Final . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .50 Contaminação de Modelo . . . . . . . . . . . . . . . . . . . . . . . . .50 5 Introdução Introdução Assim que as variáveis forem selecionadas e apropriadamente binadas, é possível iniciar a fase de construção de modelo. Isso envolve, primeiramente, a criação de uma partição de treinamento e de validação (se não for especificada pelo usuário), com estratificação cuidada para minimizar o ruído (consulte a seção Amostragem e Estratificação na página 46). Nos dados de treinamento, a reamostragem é usada para criar conjuntos de dados com diversas variáveis, com uma construção de modelo de árvore diferente em cada versão e combinados para criar um modelo de agregação por bootstrap (consulte a seção Agregação por bootstrap na página 47). Cada modelo de árvore é removido por meio de análise de sua variação nos conjuntos de dados reamostrados novamente para reduzir o ruído (consulte a seção Remoção na página 48). Os parâmetros-chave usados para fazer crescer árvores podem ser explorados de forma manual e automática para sintonizar o desempenho da construção de modelo (consulte a seção Exploração de Parâmetros Automatizada na página 48), com os melhores parâmetros recomendados automaticamente (consulte a seção Recomendação de Parâmetros Automatizada na página 49). Muitas vezes, o modelo final é reajustado no conjunto de dados completo de modelagem (sem dados de validação) usando parâmetros ótimos (consulte a seção Reconstrução Final na página 50). Embora seja utilizado um processo de treinamento e de validação rigoroso, sempre é importante considerar possíveis origens de contaminação do modelo (consulte a seção Contaminação de Modelo na página 50). Amostragem e Estratificação Em situações de grande variação, é importante que quando os dados disponíveis para treinamento estiverem para ser divididos para fins de teste/treinamento/validação, os dados realmente usados para a construção de modelo sejam representativos do todo. Por essa razão, o Portrait Uplift oferece amostragem (estratificada) para garantir que os dados sejam o mais representativos possível. Usamos a terminologia: • Dados de Validação. Um subconjunto aleatório de todos os dados disponíveis que não é usado durante o processo de construção de modelo. Os dados de validação somente são usados para apresentar o desempenho sobre esses dados ("retidos"). • Dados de Treinamento. Todos os dados que não são usados para a validação. Esses dados de treinamento são, posteriormente, divididos em partições reamostradas de treinamento e de teste. (Existe, claramente, a possibilidade de confusão entre os dados de treinamento — todos os dados disponíveis para treinamento — e os dados de treinamento reamostrados — o subconjunto de dados de treinamento usado na fase de crescimento de uma árvore.) • Dados de Teste. Subconjuntos reamostrados dos dados de treinamento usados para avaliar o desempenho da árvore para remoção. Isso é ilustrado na Figura 7. A amostragem estratificada é baseada em um campo de estratificação, que divide o conjunto de dados de modelagem em segmentos, cada um dos quais deve ser equilibrado (por meio de amostragem 46 Portrait Uplift 7.0A Capítulo 5: Metodologia de Construção de Modelo aleatória de tamanho exato) ao gerar a divisão de treinamento e de validação. É possível criar o campo de estratificação automaticamente, como parte do processo de seleção variável, ou ele pode ser fornecido pelo usuário (consulte a seção stratificationField (opcional, mas recomendado) na página 69). De qualquer das formas, o campo é normalmente produzido com uma derivação, como segindex() by Objective, Partition, BestPredictor onde Objective e Partition correspondem aos campos de objetivo e de partição, respectivamente, e BestPredictor é um campo altamente preditivo de elevação. Se o preditor da parte superior não apresentar muitos bins, pode ser interessante estratificar também o preditor seguinte, objetivando um número total de bins (não vazios) no campo de estratificação entre 20 e 60. Observação: A estratificação é definida pelo binning no campo de estratificação, e não pelos valores. Na prática, isso significa que, normalmente, deve ser categórica. Observação: Ao usar um ponderamento de caso (consulte a seção userWeightingField (opcional) na página 70), a amostragem aleatória de tamanho exato não resulta, garantidamente, em uma amostra perfeitamente equilibrada, em particular no caso de grande variação em valores de ponderação de caso. Uma vez que a amostragem continua com "altos e baixos", nessas situações pode ser útil classificar o conjunto de dados de modelagem por ponderação inversa, para garantir que os maiores registros ponderados apareçam em primeiro lugar. Agregação por bootstrap Os modelos construídos pelo Portrait Uplift são "agregados por bootstrap", uma vez que são uma combinação de vários modelos de árvore individuais. A agregação por bootstrap é um método para tentar "fazer com que os dados cheguem mais longe" para fins de modelagem quando esses são escassos. A ideia básica consiste em reamostrar os dados de treinamento k vezes e construir k modelos e, em seguida, combinar seus resultados de alguma forma — normalmente, calculando somente a média. Isso conduz normalmente a uma maior robustez de modelo. train Dado um conjunto de dados de treinamento T de tamanho N, um conjunto de dados reamostrados T do mesmo tamanho é construído retirando repetidamente um membro escolhido de forma aleatória dos train dados de treinamento T, colocando-o na população reamostrada T e substituindo-o, seguidamente, em T (amostragem com substituição). Esse procedimento é repetido N vezes. Obviamente, no geral, train alguns registros serão repetidos em T e alguns estarão ausentes. Versões reamostradas diferentes do mesmo conjunto de dados terão frequências diferentes para os registros, incentivando modelos construídos nas várias versões reamostradas a se "concentrarem" em ajustar diferentes partes do conjunto de dados. O Portrait Uplift implementa a reamostragem com substituição, gerando campos de ponderação de caso aleatórios. O Portrait Uplift usa uma variável nBags para especificar o número de modelos a combinar. Essa variável é configurada a partir do parâmetro do usuário nBagsValues (seção nBagsValues (necessário) na página 75). Atualmente, a predição final é formada ao combinar as predições de árvore individual, por meio de média aritmética simples. Uplift Guia do usuário 47 Remoção Remoção O método de remoção fornecido com o Portrait Miner é uma variação da remoção por complexidade de custos padrão, usando Qini como uma medida (inversa) de custos. Isso não é eficiente em situações de grande variação para as quais o Portrait Uplift foi desenvolvido. O Portrait Uplift implementa um método de remoção baseado na variação, no qual são removidas as divisões que dão origem a nós filhos que apresentam uma grande variação de elevação no conjunto de cópias reamostradas dos dados de treinamento. A remoção é controlada por um conjunto de parâmetros descritos na seção Parâmetros de controle de remoção na página 76. Desses parâmetros, o mais importante é a variável pruneThreshold, que é configurada pelo parâmetro do usuário pruneThresholdValues (seção pruneThresholdValues (necessário) na página 76). Se os limites de remoção forem configurados muito baixos, podem ser geradas árvores excessivamente pequenas. O software possui parâmetros adicionais para permitir um número de reconstruções nessa situação, primeiro mantendo o limite de remoção constante e, em seguida, aumentando-o. É possível usar um parâmetro autoPrune (seção autoPrune (opcional; padrão: 0) na página 76) para configurar automaticamente somente um valor em pruneThresholdValues. Exploração de Parâmetros Automatizada O loop principal da construção do modelo uplift tem o seguinte formato (em pseudocódigo): for nBags in nBagsValues: for minPopSize in minPopSizeValues for pruneThreshold in pruneThresholdValues: for i = 1, 2, ..., nRuns: Build Uplift Model onde, nBagsValues é um conjunto de valores para nBags, minPopSizeValues é um conjunto de valores gerado internamente para minPopSize, pruneThresholdValues é um conjunto de valores para pruneThreshold e nRuns é o número de repetições a realizar para cada valor do número de sacos e limite de remoção. Isso faz com que seja mais fácil configurar um conjunto de repetições em lotes e realizar uma pesquisa de parâmetros de tamanhos mínimos de população, limites de remoção e número de sacos. 48 Portrait Uplift 7.0A Capítulo 5: Metodologia de Construção de Modelo Recomendação de Parâmetros Automatizada O Portrait Uplift inclui uma recomendação dos "melhores" parâmetros de modelo, se existirem, no arquivo out.xml. Os parâmetros de modelo recomendados são escolhidos da seguinte forma: • Se não existirem dados de validação, não são recomendados parâmetros de modelo. Caso contrário, cada grupo de modelos construídos usando os mesmos parâmetros é analisado para determinar: • O número de modelos no subgrupo aprovados em um teste de validação. Por padrão, um modelo é "válido" se o Qini de validação for inferior a ±20% de seu valor Qini de treinamento. • Se os modelos no subgrupo são ou não aprovados em um "teste de consistência". Por padrão, um grupo de modelos é consistente se o erro padrão dos valores Qini de validação for inferior a 20% da média desses valores. • Se, no mínimo, n de m modelos (onde, por padrão, n corresponde a 3 e m a 4) forem aprovados no teste de validação e os modelos válidos forem coletivamente aprovados no teste de consistência, o grupo é um candidato a "melhor". Se nenhum grupo satisfizer os critérios acima, não são recomendados parâmetros de modelo. • Se um ou mais grupos satisfizerem os critérios acima, o grupo que contiver os melhores "valores de qualidade", para os modelos que foram aprovados no teste de validação, é marcado como recomendado. Quando o usuário fornecer parâmetros financeiros, conforme descrito anteriormente nesse documento, o "valor de qualidade" usado para avaliar o melhor modelo é o valor de lucro do pico mais elevado (média dos modelos que foram aprovados no teste de validação) calculado por meio dos parâmetros financeiros. Esse cálculo exclui o ponto final na curva de lucro (isto é, considera todos os clientes como alvo), uma vez que esse valor não é útil para diferenciar um modelo de outro. Se o usuário não tiver fornecido valores financeiros, o Qini de validação médio mais elevado é usado para indicar o melhor modelo. Quando é efetuada uma recomendação, um arquivo recommended_params.xml indica que é adequado para executar a construção de modelo final usando os parâmetros identificados como "melhores"'. Esse arquivo é gravado no diretório de saída, em conjunto com 'out.xml', e é configurado para o passo de "reconstrução final" (consulte a seção Reconstrução Final na página 50) de forma que: • • • • • nRuns = 1 nBagsValues = [20] tvTrainProp = 1,0 autoPrune = 0 pruneThresholdValues = o valor limite da melhor repetição • autoMinPopSize = 0 • searchMinPopSize = 0 • minPopSize = o minPopSize da melhor repetição Uplift Guia do usuário 49 Reconstrução Final Reconstrução Final Nosso objetivo na modelagem é aproveitar ao máximo os dados que temos disponíveis para nos ajudar a construir o melhor modelo possível. Normalmente, escolhemos sacrificar alguns dos dados que podemos usar durante a construção de modelo na "validação". Fazemos isso porque reconhecemos o perigo de sobreajustar os dados que usamos diretamente na construção de modelo e queremos isso. Ao tentar criar modelos, nos quais o desempenho (especificamente, o desempenho Qini) é semelhante em nossos conjuntos de dados de treinamento e de validação, reduzimos o risco de sobreajuste, a custo de negar o acesso a nosso processo de construção de modelo a alguns de nossos escassos dados. No entanto, se tudo o resto se mantiver igual, esperamos ser capazes de construir modelos mais precisos se usarmos todos os dados e reduzir a probabilidade de sobreajuste ao usar mais dados. Dessa forma, sugerimos o uso de uma divisão treinamento/validação para um conjunto de repetições, nas quais os parâmetros-chave de modelagem são explorados, incluindo, em particular, o limite de remoção e os tamanhos mínimos de população para as árvores. Assim que for encontrado um bom conjunto de parâmetros, que pareça contribuir para um bom desempenho de validação, recomendamos uma ou mais construções finais, normalmente com um maior número de sacos (árvores por modelo), com a proporção de treinamento configurada para 100%, a fim de não existirem dados de validação. Para isso, todos os demais parâmetros podem se manter os mesmos, exceto o tamanho mínimo de população, que deve ser aumentado na mesma quantidade dos dados de treinamento. Por exemplo, se tiver usado a proporção de treinamento padrão de 66%, você pode pretender multiplicar o tamanho mínimo da população em aproximadamente 1.5 (100/66). O objetivo de construir mais de um modelo "final" é simplesmente verificar se o desempenho é estável; em condições ideais, todos os modelos finais devem produzir pontuações semelhantes para a grande maioria dos clientes. Contaminação de Modelo O Portrait Uplift utiliza uma metodologia de treinamento/validação rigorosa, conforme descrito na seção Amostragem e Estratificação na página 46. Ainda assim, vale a pena abordar a contaminação de modelo. Isso ocorre quando os dados do conjunto de validação são acessados durante a construção de modelo e pode reduzir a robustez de modelos (em termos de capacidade para generalizar futuros dados invisíveis). Muitas vezes, a contaminação é sutil e tem somente consequências menores, mas o usuário deve estar ciente de sua possibilidade e tomar medidas pertinentes para a combater, se for apropriado. Abaixo são apresentadas algumas possíveis origens de contaminação: • Se um modelo for selecionado a partir de modelos candidatos com base em seu desempenho nos dados de validação (metodologia padrão), existe algum grau de contaminação porque a escolha de modelo foi indicada pelos dados de validação. Esse efeito é reduzido, desde que somente um número modesto de modelos seja comparado dessa forma. Teoricamente, uma melhor metodologia consiste em usar os dados de validação em um conjunto de repetições comparáveis para selecionar parâmetros 50 Portrait Uplift 7.0A Capítulo 5: Metodologia de Construção de Modelo para a construção de um modelo e então construir um novo modelo, abrangendo toda a população, usando esses parâmetros (escalados, se apropriado). • Recomendamos a estratificação, não somente em variáveis de tratamento e de resultado, mas também em, pelo menos, uma variável-chave driver (consulte a seção Amostragem e Estratificação na página 46). Uma forma natural de selecionar essa variável driver é explorar os dados. Porém, uma vez que o resultado dessa exploração será determinar as variáveis de estratificação a usar na definição da divisão treinamento/validação, existe aqui um elemento inevitável de contaminação. Esperamos, contudo, que essa seja muito reduzida. No entanto, na teoria, esse procedimento deve ser evitado se toda a contaminação for rejeitada, nesse caso, as variáveis driver para a estratificação teriam de ser selecionadas de outra forma ou omitidas. • Tecnicamente, os candidatos de análise devem ser selecionados com base somente no desempenho nos dados de treinamento. Se todos os dados (Treinamento mais Validação) forem usados para a seleção variável, existe algum grau de contaminação, mas é normalmente muito reduzido. A abordagem de estratificação no preditor da parte superior torna mais difícil evitar essa contaminação menor. Se o usuário estiver particularmente preocupado com isso, pode querer separar os dados de treinamento e de validação em arquivos separados e usar somente o arquivo de treinamento para a seleção variável. Um arquivo combinado com um campo treinamento/validação pode, então, ser usado em conjunto com o parâmetro fixedTrainValidateField para permitir que o software produza relatórios sobre o desempenho de treinamento e de validação. Uplift Guia do usuário 51 Capítulo Metodologia de Avaliação de Modelo Nesta seção: • • • • Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .54 Interpretação de Valores Qini (Q e q0) . . . . . . . . . . . . . . .54 Interpretação das Curvas Qini . . . . . . . . . . . . . . . . . . . . . .55 Resultados e Relatórios . . . . . . . . . . . . . . . . . . . . . . . . . . .56 6 Introdução Introdução As saídas primárias da construção de modelo do Portrait Uplift são • As estatísticas Qini (para dados de treinamento, de validação e combinados e, opcionalmente, também para um modelo "melhor opção"); • A curva Qini (um gráfico de ganhos de elevação); • Um relatório de modelo, incluindo uma representação gráfica do modelo; • Os clientes pontuados; • FDL representando cada modelo de agregação por bootstrap, armazenado no XML do Portrait incorporado em FDL, como usado pela ferramenta de pontuação qsderive. Gráficos e valores Qini são discutidos detalhadamente em um documento separado, mas discutimos aqui especificamente a interpretação dos valores Q e q0. Interpretação de Valores Qini (Q e q0) Os coeficientes Qini Q e q0 são medições do grau de eficiência do modelo em classificar clientes por elevação. Uma vez que não sabemos a real diferença em resultados de nenhum cliente individual, isso somente pode ser avaliado com base na segmentação. O verdadeiro valor Qini Q executa de 100% (no caso de um modelo perfeito), passando por zero em um modelo aleatório, até -100% no caso de um modelo perfeito invertido. Devido à possibilidade de elevação negativa em alguns segmentos, o modelo teoricamente ideal pode dar origem a mais respostas se for considerado alvo uma subpopulação do que se for considerada alvo toda a população. Os modelos reais são avaliados dividindo a área delimitada pela sua curva Qini e a diagonal pela área comparável do modelo ideal. Como resultado, os verdadeiros valores Qini para modelos uplift reais e bons são frequentemente muito pequenos porque, apesar de os efeitos negativos poderem ocorrer, e ocorrerem no mundo real, eles geralmente ocorrem com muito menos frequência que o teoricamente possível. O Portrait Uplift registra dois valores Qini em muitos casos — Q e q0 . O valor q0 é calculado da mesma forma que o valor Q, mas em vez de dividir pela área do modelo teoricamente ideal, o q0 divide pela curva de elevação perfeita , assumindo que não existem efeitos negativos. (Por essa razão, por vezes, chamamos q0 de "Zero Downlift Qini" e, por isso, usamos o subscrito 0.) Os valores de q0 são mais idênticos aos valores Gini (ROC) tradicionais, mas com uma diferença importante: se existirem efeitos negativos nas porções da população, os valores q0 podem exceder os 100% (e descer até aos -100%). Quando o efeito global de um tratamento por toda a população é muito pequeno (próximo de zero), o valor q0 fica muito grande e, se a elevação global for exatamente zero, o q0 normalmente se torna infinito. Nesse caso, o valor q0 apresentado será zero e irrelevante. Essa é uma das razões por que a medida total Qini, Q, é igualmente reportada. 54 Portrait Uplift 7.0A Capítulo 6: Metodologia de Avaliação de Modelo É importante estar ciente de que, uma vez que o valor q0 tem efetivamente a elevação global como parte de seu denominador, até mesmo pequenas mudanças na elevação global podem ter um amplo efeito nos tamanhos de Qini e esses não são fáceis de comparar entre problemas. Interpretação das Curvas Qini A curva Qini é discutida em detalhe em um documento de acompanhamento chamado "A Medida de Desempenho Qini para Modelos Uplift", mas algumas propriedades-chave são discutidas aqui. Uma Curva de Ganhos para Elevação Fundamentalmente, a curva Qini é um gráfico de ganhos para elevação. Quanto a um gráfico de ganhos padrão, a população está classificada (ordenada), em primeiro, de "melhor" a "pior" com base em um modelo. Depois, o eixo horizontal mostra a proporção da população alvo, no pressuposto de que a "melhor" população será a primeira analisada (isto é, à esquerda). Depois, o eixo vertical mostra uma estimativa da elevação total cumulativa (normalizada) obtida ao considerar alguma população como alvo. É crucial entender que essa elevação é sempre quantificada relativamente a toda a população. Eixo Vertical para Resultados Binários (pc pt) No caso de um modelo binário, a elevação cumulativa é expressa como uma porcentagem da população total — isto é, em "pontos de porcentuais" da elevação. Por exemplo, considere um problema com uma população de 100.000 onde uma resposta é uma compra e existe uma taxa de compra geral no grupo de controle de 5%. Então, um ponto a (30%, 10%) em uma curva Qini significa que se os melhores 30% da população são considerados alvo, haverá uma elevação de 10 pontos porcentuais sobre toda a população, isto é, uma taxa de compra geral de 5% + 10% = 15% de 100.000 = 15.000, um aumento de 10.000 compras. Isso não significa uma elevação de 10% em 30% da população, isto é, somente 3000 compras extra. Eixo Vertical Para Resultados Contínuos (photp) Da mesma forma, no caso de um resultado contínuo, com o tamanho da compra, o eixo vertical mostra a elevação média por cabeça da população total. Um ponto na curva Qini a (30%, $35) significa que se os melhores 30% da população fossem considerados alvos, haveria uma elevação de $35 por cabeça da população total. Assim, com uma população total de 100.000 e um nível de compra médio no grupo de controle de $100, a receita total ao não considerar ninguém alvo seria $100 × 100.000 = $10.000.000. Se 30% fossem considerados alvo, o valor de compra médio iria aumentar para $100 + $35 = $135, por isso, a receita total seria $135 × 100.000 = $13.500.000, e iria aumentar $3,5 milhões. De novo, não significa um aumento de $35 por cabeça para 30% da população, isto é, $1,05 milhões. Os rótulos padrão para o eixo vertical de um resultado contínuo incluem (photp), o que significa "por cabeça da população total". Uplift Guia do usuário 55 Curva Qini como um Diagnóstico Curva Qini como um Diagnóstico Na avaliação e comparação de desempenho do modelo, é fortemente recomendado que a curva Qini seja examinada, assim como o valor q0. As propriedades de modelos robustos incluem: • Monotônico ou de pico único. Em condições ideais, a curva Qini deve subir até um pico único (ou cair em somente um declive). Se esse pico (ou declive) não estiver a 100%, deve então cair (ou subir) para o valor de 100% a 100%. Apesar de serem aceites oscilações menores, normalmente, as oscilações maiores apontam para um modelo instável. • Proximidade das curvas de treinamento e validação. Naturalmente, o objetivo é que as curvas Qini estejam próximas umas das outras para os conjuntos de treinamento e validação. Com a opção entre dois modelos, é geralmente mais seguro escolher o que possui melhor correspondência entre desempenho de validação e treinamento do que um com melhor desempenho absoluto. Apesar dessa recomendação geral, o desempenho de validação tende a ser mais fraco com a modelagem do Portrait Uplift quando comparado à modelagem convencional porque 1. A elevação é um efeito de segunda ordem, difícil de medir com precisão e ainda mais difícil de modelar; 2. O Portrait Uplift tende a ser usado especificamente em situações onde volumes de dados são limitados, tornando a validação muito menos confiável; 3. Os conjuntos de dados de validação são muitas vezes menores que os conjuntos de dados de treinamento, aumentando o erro inerentemente. • Seleção de Corte. Em princípio, o corte ideal está no ponto máximo (ou mínimo) do gráfico se o objetivo for simplesmente maximizar o número total de "respostas" adicionais. No entanto, cortar no ponto máximo (ou mínimo) não é sempre a opção mais segura. Deve ser lembrado que, no geral, a classificação de dados que não sejam dados de treinamento por modelos, tende a ser mais fraca que a classificação de dados de treinamento, assim (se não houver efeitos negativos), será necessário considerar mais pessoas como alvo mais vezes que o estritamente previsto pelo modelo de forma a atingir a maior elevação cumulativa atual. Porém, se os custos forem considerados, a seleção de corte é mais complexa. Todas essas observações são somente diretrizes e o melhor curso de ação é fortemente dependente de problemas e situações. Resultados e Relatórios Os resultados de um conjunto de repetições de construção de modelo são armazenados em um arquivo XML, frequentemente chamado out.xml. O pós-processamento é realizado para transformar esse arquivo XML em um conjunto de gráficos Qini como um arquivo PDF e um conjunto de relatórios modelo como um arquivo HTML. Além disso, somente para a seleção variável, é possível criar um relatório Excel. Se estiver executando a partir do Portrait Miner, eles serão produzidos automaticamente, sendo exibida a versão Excel. 56 Portrait Uplift 7.0A Capítulo 6: Metodologia de Avaliação de Modelo Se estiver executando a partir da linha de comandos, os relatórios serão produzidos executando o comando qsupliftresults para o relatório html ou o comando uogenreport para o relatório Excel. No caso do relatório Excel, existe um limite no número de modelos e conjuntos de parâmetros suportados pela estrutura dos relatórios. Existe um limite de 64 conjuntos de parâmetros e um limite de 320 modelos. A documentação abaixo descreve o relatório HTML. O relatório Excel contém informações similares mas também exibe gráficos e números financeiros com base nos parâmetros ROI fornecidos ao executar a seleção variável. Porém, na planilha Excel resultante, esses parâmetros financeiros (células realçadas a amarelo) podem também ser editados "após o fato" e os gráficos irão se atualizar em conformidade. O arquivo PDF contém gráficos Qini, parecidos com esse: O relatório modelo contém um número de tabelas que podem necessitar de alguma explicação. Perfis de Pontuação Os relatórios modelo contêm um Perfil de Pontuação (Figura 8). Ele apresenta a tabela com todos os campos usados na árvore de agregação por bootstrap, classificados do mais importante para o menos importante. O número em cada caixa mostra a elevação média prevista ("pontuação") alocada aos relatórios (clientes) no bin para o campo em questão e o código de cor, usando uma escala de "mapa de calor", mostra a mesma coisa (uma chave para essa escala é apresentada no topo do relatório). Uplift Guia do usuário 57 Relatório de Validação de Partição (o Relatório "Roxo") Por isso, no exemplo, a variável mais importante é a BehaviourSeg e as pontuações médias mais elevadas são dadas a clientes baixos e de SMS (cerca de + 11.6% cada), enquanto a pontuação média mais baixa é fornecida ao segmento mais Elevado (-8.94%). O ponto médio da escala, em amarelo, é configurado para a elevação global para a população; vermelho está acima da média e azul abaixo da média. Os bins pequenos e os bins com valores de elevação indefinidos são de cor cinza. É importante notar que o Perfil de Pontuação descreve o efeito de pontuar usando o modelo, mas não define o modelo. O valor em uma célula, como -8.94% no segmento Elevado, não significa que a pontuação do cliente é reduzida por essa quantidade por pertencer ao Segmento Elevado: em vez disso, significa que a elevação média prevista alocada para todos os clientes nesse segmento é de -8.94%. Relatório de Validação de Partição (o Relatório "Roxo") O Relatório de Validação de Partição da construção de modelo é o mesmo que para a seleção variável e é descrito na seção Relatório de Validação de Partição (o Relatório "Roxo") na página 42. No caso do relatório Excel, o número de bins por campo exibido na página da validação de partição e na Pontuação de Perfil por modelo está limitado a 100. Se um campo tiver mais de 100 bins e for usado no modelo, será apresentada uma mensagem de aviso nesses relatórios para esse campo em particular. Ponderações Divididas Sempre que o Portrait Uplift completa a construção de um modelo de agregação por bootstrap, reporta alguma informação sobre o desempenho Qini q0 e também o grau de importância de cada campo usado, por exemplo: Nome do Campo Importância u1 1.0833 n12 0.5833 c11 0.4167 u5 0.2917 c10 0.0417 O cálculo desses valores é efetuado da seguinte forma. Para somente uma árvore, um campo usado n-1 para dividir nós no nível n recebe uma ponderação de 1/2 , isto é, a divisão superior tem uma ponderação de 1, divide no nível seguinte e tem uma ponderação de 0,5, etc. É possível que os campos atinjam uma ponderação de mais de um ao surgirem no primeiro nível e níveis inferiores da árvore, as ponderações são somadas por toda a árvore. Dado um determinado modelo de agregação por bootstrap com N árvores, as ponderações são simplesmente a média ao longo do conjunto de modelos. 58 Portrait Uplift 7.0A Capítulo Diretrizes de Parâmetros Nesta seção: • • • • • • • • • • Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60 Limite de remoção . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60 Tentativas de Árvores Máximas . . . . . . . . . . . . . . . . . . . .61 Níveis de Divisão de Árvores . . . . . . . . . . . . . . . . . . . . . . .61 Tamanhos Mínimos de População . . . . . . . . . . . . . . . . . .61 Número Mínimo de Nós por Árvore . . . . . . . . . . . . . . . . .62 Candidatos de Análise e Binnings . . . . . . . . . . . . . . . . . .62 Número de Sacos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .62 Número de Repetições . . . . . . . . . . . . . . . . . . . . . . . . . . . .63 Campo de Estratificação . . . . . . . . . . . . . . . . . . . . . . . . . .63 7 Introdução Introdução Apesar de o Portrait Uplift automatizar grande parte do processo da seleção de parâmetros de modelagem uplift de boa qualidade, pode ser possível melhorar ligeiramente nessas configurações padrão em alguns aplicativos. É difícil proporcionar uma orientação geral para melhorar configurações de parâmetros, uma vez que esses são obrigatoriamente dependentes do problema a ser abordado e do tamanho e estrutura dos dados disponíveis. Em vez disso, proporcionamos algumas orientações e regras básicas como pontos de partida para exploração. Os parâmetros que talvez apresentem o maior impacto são: • • • • • • • • • O limite de remoção; O número máximo de tentativas de árvore Níveis de divisão de árvores; Os tamanhos mínimos de população; O número mínimo de nós por árvore; Os candidatos de análise e os binnings; O número de sacos (ou seja, árvores por modelo de agregação por bootstrap). O número de repetições (isto é, o número de repetições aleatórias com cada conjunto de parâmetros) O campo de estratificação Eles interagem de várias formas, mas abordaremos cada uma delas resumidamente. Limite de remoção O limite de remoção controla a compensação entre o tamanho da árvore (e, por isso, da precisão possível) e a estabilidade de predições. Quando o usuário determina um tamanho mínimo de árvore, é normalmente desejável remover de forma bastante agressiva em direção a esse tamanho. Na prática, por isso, temos tendência para considerar que uma boa abordagem consiste em usar o limite de remoção mais baixo que não resulta na rejeição de um número de árvores inaceitável por possuir um número demasiado reduzido de nós após a remoção. Normalmente, é eficiente ter 50 — 75% de construções de árvores sendo rejeitadas. A informação sobre o desvio padrão em elevação apresentada pelo software é útil para a configuração desse parâmetro. Na prática, para problemas binários, os valores no intervalo 0,5% a 3.0% parecem normalmente ser os mais eficientes, embora tenhamos observado problemas, nos quais valores tão baixos como 0,1% e tão elevados como 5% funcionaram bem. Para problemas contínuos, é difícil especificar um valor numérico típico, uma vez que esse valor depende da escala dos dados e da variação nesses mesmos dados. Uma forma de ter uma noção do intervalo de variação subjacente nos dados é observar as tabelas de referência cruzada para dividir os dados por meio de um campo aleatório e alguns candidatos de análise arbitrários. É improvável que seja obtido sucesso ao configurar o limite muito abaixo da escala natural de variação aqui apresentada. 60 Portrait Uplift 7.0A Capítulo 7: Diretrizes de Parâmetros Tentativas de Árvores Máximas Isso está claramente vinculado ao limite de remoção. Limites de remoção baixos tendem a exigir valores mais elevados para isso. Embora o padrão seja 2, se a remoção não for excessiva, ele pode, muitas vezes, ser aumentado de forma útil para cerca de 5. Níveis de Divisão de Árvores Encontra-se normalmente no intervalo 3 — 5, sendo 4 um valor comum. Árvores com mais níveis de profundidade podem permitir divisões "desbalanceadas" mas, tipicamente, irão levar a um sobreajuste, a menos que combinado com um tamanho mínimo de população para restringir o número total de filhos. Tamanhos Mínimos de População O tamanho mínimo de população restringe os nós filhos da árvore para ter, no mínimo, a quantidade especificada (ponderada) de registros de tratamento e de controle. Assim, é a população menor (na maior parte dos casos, o grupo de controle) que ativa a restrição. Obviamente, o tamanho mínimo da população interage com a profundidade da árvore e com o número mínimo de nós por árvore. n Para uma árvore com n níveis de divisões (n+1 níveis de nós), a população média de filhos será 1/2 da população total, mas pode existir uma variação considerável devido a divisões desiguais. Concretamente, suponha que temos uma população de controle de 60.000, com divisão treinamento/validação igual (isto é, tvTrainProp=50%). Se planejarmos 3 níveis de divisões, teremos (potencialmente) 8 nós filhos e a população de controle média será um pouco abaixo dos 4.000. Ao contrário, para explorar divisões muito assimétricas, onde poderíamos dividir somente um bin com talvez 3 20% da população até três vezes, teríamos de permitir a possibilidade de somente 1/5 da população (225) em um nó filho. Obviamente, isso seria provavelmente muito pequeno pelo que escolheríamos algum valor intermediário. Mais uma vez, é difícil fornecer diretrizes concretas, mas raramente configuramos tamanhos mínimos da população inferiores a 500 e normalmente esses se encontram entre 1.000 — 3.000. Normalmente, recomendamos iniciar com a sugestão de tamanho mínimo automática gerada pelo Portrait Uplift com o parâmetro autoMinPopSize (consulte a seção autoMinPopSize (opcional; padrão 1) na página 71) e varie a partir desse valor. Uplift Guia do usuário 61 Número Mínimo de Nós por Árvore Número Mínimo de Nós por Árvore Claramente, esse número interage amplamente com o limite de remoção e também com o número de tentativas efetuadas pelo software com cada limite de remoção antes de o aumentar. Uma vez que estamos calculando a média de algumas árvores, podemos usar frequentemente árvores menos profundas no Portrait Uplift do que com uma abordagem que não seja de agregação por bootstrap. Na prática, configuramos o número mínimo de nós filhos para 4 com maior frequência, mas valores no intervalo 2 a 8 são comuns. Candidatos de Análise e Binnings Os modelos de construção de árvore convencionais envolvem avaliações de divisões entre cada par de valores de dados para cada campo e usando todos os campos disponíveis. No contexto do Portrait Uplift, porém, existem grandes benefícios em limitar o número de divisões sob análise. O desejo de limitar ambas as variáveis sob análise e o número de divisões por variável surge do problema de divisões invasoras, que são semelhantes aos problemas que surgem com outros tipos de avaliações repetidas. Da mesma forma, se testarmos várias divisões para centenas de campos, as chances de encontrar uma correlação invasora em um deles ficaram bastante elevadas. Essas divisões invasoras podem deslocar divisões muito mais estáveis e úteis. Embora a remoção elimine divisões instáveis, o dano ainda é causado porque o algoritmo de construção de árvore não se reconstrói após a remoção de uma divisão. Por essa razão, recomendamos normalmente a restrição do número de campos para um número gerenciável (talvez 10 — 25) e essa é a razão pela qual a seleção variável está incluída no software. Recomendamos também alguma atenção para com os binnings. No geral, os binnings de igual população são preferíveis porque apresentam um número inferior de pequenos bins e recomendamos que sejam selecionados binnings com uma elevação razoavelmente estável ao longo do binning. Número de Sacos É mais fácil orientar sobre isso, uma vez que é menos dependente de problemas. Normalmente, exploramos parâmetros usando 5-10 sacos e construímos modelos finais com 20 sacos. O número de sacos (árvores por modelo) está sujeito à lei dos rendimentos decrescentes e só observamos benefícios marginais além dos 10 sacos e muito poucos benefícios marginais além dos 20. 62 Portrait Uplift 7.0A Capítulo 7: Diretrizes de Parâmetros Número de Repetições Normalmente, executamos com a configuração para, no mínimo, 5 quando exploramos parâmetros, mas, em princípio, qualquer valor entre 1 e cerca de 20 é razoável aqui. Campo de Estratificação Conforme realçado na seção Amostragem e Estratificação na página 46, uma boa estratificação ajuda consideravelmente. O campo de estratificação pode ter uma quantidade elevada de bins, porém, recomendamos normalmente que exceda com folga a 100. O Portrait Uplift necessita que o campo de estratificação seja binado com somente um valor por bin e, se esse não for o caso, a estratificação não será aplicada corretamente. Na prática, a melhor forma de garantir isso consiste em tornar o campo categórico. Se o campo especificado não for categórico, o Portrait Uplift irá emitir um aviso e adicionar ele mesmo uma interpretação categórica, mas essa mudança não é salva no focus de entrada. Uplift Guia do usuário 63 Capítulo Referência de Parâmetros Nesta seção: • • • • • • • • • • • • Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .66 Parâmetros de Descrição de Focus . . . . . . . . . . . . . . . . .67 Parâmetros de Especificação da Árvore . . . . . . . . . . . . .71 Parâmetros Gerais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .72 Parâmetros da seleção variável . . . . . . . . . . . . . . . . . . . .72 Parâmetros de configuração de execução geral . . . . . . .75 Parâmetros de controle de remoção . . . . . . . . . . . . . . . . .76 Geração de números aleatórios / parâmetros do repetidor de execução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .77 Parâmetros de relatório e saída . . . . . . . . . . . . . . . . . . . .79 Parâmetros de ROI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80 Parâmetros somente para informação . . . . . . . . . . . . . . .81 Exemplo de Arquivo de Parâmetros Completo . . . . . . . .82 8 Introdução Introdução Os parâmetros são fornecidos ao Portrait Uplift por meio de um arquivo XML, cujo nome é especificado na linha de comando. Um arquivo modelo de formato correto (params.xml) será gerado se o Portrait Uplift for executado sem especificar quaisquer argumentos. O XML apresenta a seguinte estrutura de tópicos (consulte a seção Exemplo de Arquivo de Parâmetros Completo na página 82 para observar um exemplo de um arquivo de parâmetros completo): <?xml version="1.0" encoding="UTF-8"?> <params class="Globals"> <fd class="FocusDescription"> <!-- Focus description parameters --> <focusName>foci/RetentionData.ftr</focusName> <modelType>binary</modelType> ... </fd> <treeSpec class="TreeSpec"> <!-- tree specification parameters --> <minPopSize>1000</minPopSize> <nLevels>4</nLevels> ... </treeSpec> <!-- general parameters --> <nBagsValues>[5]</nBagsValues> <nRuns>1</nRuns> ... </params> A ordem na qual os parâmetros e os blocos de parâmetros são colocados no arquivo não tem importância. Alguns são necessários, enquanto outros são opcionais, e isso é indicado na descrição de parâmetros individuais abaixo. Os usuários devem perceber que omitir um parâmetro opcional (ao não o incluir no arquivo) é diferente de o incluir e deixar o seu valor vazio, uma vez que um parâmetro omitido adota um padrão, enquanto um parâmetro em branco é configurado para em branco. É altamente recomendável que, se o arquivo XML estiver sendo editado, seja usado um editor com suporte a XML. A Portrait recomenda o GNU-Emacs 21.3 com o modo nxml de James Clark para isso. Se não for usado um editor com suporte a XML, os usuários podem achar útil um navegador da Web, como o Internet Explorer ou o Firefox, para validar se o XML de entrada está bem formado. No geral, os parâmetros binários (yes/no ou true/false) assumem os valores numéricos 1 (para yes/true) e 0 (para no/false) no Portrait Uplift. Na maior parte desses casos, qualquer string não vazia será também considerada como true (1) e strings vazias serão consideradas como false (0). É altamente recomendável que sejam usados 1 e 0. 66 Portrait Uplift 7.0A Capítulo 8: Referência de Parâmetros Parâmetros de Descrição de Focus Os seguintes parâmetros surgem entre as etiquetas <fd> ... </fd>, a menos que seja indicado. Os parâmetros setacsFocusName e allowOverwrite, que surgem também entre essas etiquetas, são descritos nas seções setacsFocusName (opcional) na página 72 e allowOverwrite (opcional; padrão 0) na página 73. focusName (necessário) O nome do focus a ser usado pelo Portrait Uplift para construir modelos. Esse pode ser um caminho absoluto (começando com / em UNIX ou uma letra de unidade, como c: no Windows) ou relativo ao diretório (pasta) no qual o programa está sendo executado. Observação: Esse parâmetro também é usado pela seleção variável como o nome do focus para gravar se <saveBestACs> estiver configurado para 1. Os caminhos do Windows podem ser especificados por meio do separador \ do Windows, mas o Portrait Uplift sempre irá converter esses caminhos para barras (/) (que o Windows também compreende). Observação: O Portrait Uplift usa sempre o subfocus padrão no focus. Os espaços nos nomes de diretórios e de arquivos podem causar problemas; o melhor é evitá-los. Tipo de Modelo e Campos de Resultados: Visão geral O Portrait Uplift suporta três tipos de modelos: • Resultado binário (binary). Esse é o tipo de modelo usado para problemas, como desgaste/retenção; probabilidade de compra, etc. Aqui, o modelo uplift ajusta a alteração no resultado derivado do tratamento, por ex., redução da probabilidade de rotatividade, aumento da probabilidade de resposta, etc. • Resultado discreto contínuo ou ordenado (real). Esse é o tipo de modelo usado para problemas nos quais o objetivo seja estimular o nível ou o tamanho da atividade do cliente, por ex., aumentar a taxa de compra do cliente. Aqui, o modelo uplift ajusta diretamente a alteração no valor do resultado como uma consequência do tratamento. • Duas fases (twostage). Esse tipo de modelo é usado quando o objetivo de uma campanha é aumentar a frequência da atividade do cliente (por ex., frequência de compra) ou aumentar o nível de atividade ao conduzir a frequência de compra ou de utilização. Aqui, o modelo uplift é usado para estimar o aumento da frequência ou da probabilidade do resultado e isso é combinado com uma estimativa (fornecida) de tamanho do resultado (outcomeSizeActual) caso ocorra. Dependendo do tipo de modelo que estiver sendo desenvolvido, podem ser fornecidos até três campos de resultados: • objectiveField — sempre necessário: o resultado (alvo, variável dependente) para a análise; Uplift Guia do usuário 67 modelType (necessário) • outcomeSizeActual — usado somente para modelos de duas fases, para a comparação entre predições de modelo e resultados reais. Esse é o tamanho real do efeito para aquele indivíduo, por ex., gasto real após a campanha; • outcomeSizeEstimate — usado somente para modelos de duas fases. Essa estimativa de tamanho do resultado é combinada (por multiplicação) com a alteração estimada na probabilidade de resultado do modelo uplift de produzir a alteração estimada no valor de expectativa do tamanho do resultado. Isto é: E(outcomeSize) = U(outcomeProbability) × outcomeSizeEstimate onde, U corresponde à estimativa de elevação produzida pelo modelo uplift. Se não estiver disponível nenhuma estimativa (separada) de tamanho do resultado, é possível usar o tamanho real do resultado quando este for conhecido. Por exemplo, em um aplicativo de retenção, tanto a estimativa do resultado, como os valores reais, podem ser configurados para a receita anual do cliente. Isso resultaria no traçado de uma curva Qini que iria representar a elevação na receita anual retida, ao invés de o número de clientes retidos, no pressuposto de que as receitas futuras serão semelhantes às receitas históricas. (De uma perspectiva alternativa, está sendo usado um modelo simples que prevê que a receita do próximo ano para um cliente será igual à desse ano.) modelType (necessário) Valores possíveis: • auto • binary • real • twostage O parâmetro pode assumir um valor de auto, em vez de um tipo de modelo real. Nesse caso, o tipo de modelo é determinado em tempo de execução para binary ou real, com base nos dados e objetivo. Em tempo de execução, o tipo computado substitui o valor auto no arquivo de parâmetros de saída. objectiveField (necessário) O campo que indica o resultado a ser modelado. Esse tanto pode ser um campo binário, com valores 0 e 1, ou um campo numérico com qualquer valor. Se for usado em um modelo de duas fases, esse campo deve ser 1 se outcomeSizeActual for diferente de zero, e 0 caso contrário. outcomeSizeActual (opcional) O campo que indica o tamanho do resultado para cada cliente. Como referido acima, somente é usado para modelos de duas fases. outcomeSizeEstimate (necessário para modelos de duas fases) O campo que indica o tamanho estimado do resultado para cada cliente. Como referido acima, somente é usado para modelos de duas fases. Isso seria normalmente o resultado de um modelo de regressão (ou semelhante) no subconjunto de clientes com tamanhos de resultado diferentes de zero, isto é, corresponde à estimativa condicional de tamanho do resultado face a um resultado diferente de zero. 68 Portrait Uplift 7.0A Capítulo 8: Referência de Parâmetros partitionField (necessário) Esse é um campo binário com 1 para pessoas que receberam tratamento e 0 para pessoas que não receberam tratamento. É altamente recomendável que esse campo não seja invertido, uma vez que isso conduz normalmente a uma grave confusão. Se os dados apresentarem um campo de partição que seja invertido, um novo campo de partição pode ser derivado por meio do FDL. Se o campo existente se chamar Reversed, FDL irá funcionar da mesma forma que qualquer um dos seguintes 1 - Reversed if Reversed = 1 then 0 else 1 Reversed = 0 Se o campo possuir valores de string, tais como treated e control, nesse caso, uma das seguintes expressões FDL seria apropriada: if StringPartition = "treated" then 1 else 0 StringPartition = "treated" fixedTrainValidateField (opcional) Valores possíveis: • Nome de um campo treinamento/validação existente • Em branco (nesse caso, o sistema gera uma divisão treinamento/validação automaticamente) A população é dividida em um conjunto de treinamento (T) e um conjunto de validação (V). O conjunto de validação não é usado durante a fase de construção de modelo, mas é usado para apresentar resultados do modelo nos dados de validação (bem como nos dados de treinamento). Normalmente, o sistema computa uma divisão treinamento/validação por meio de amostragem estratificada e escolhe diferentes divisões para diferentes construções de modelos. Porém, é possível que o usuário efetue uma pré-partição dos dados para um conjunto de treinamento e de validação. Se isso for efetuado, esse parâmetro especifica o nome do campo usado. É necessário apresentar exatamente dois valores no campo — T para dados de treinamento e V para dados de validação. Observação: Se o usuário escolher efetuar a partição de dados, é essencial que os dois conjuntos de dados tenham distribuições semelhantes. stratificationField (opcional, mas recomendado) O campo a usar para a estratificação da divisão treinamento/validação. A seleção variável irá criar o campo de estratificação automaticamente se seu nome estiver configurado para um campo que ainda não esteja presente no focus. Se fixedTrainValidateField estiver em branco, o sistema irá gerar sua divisão treinamento/validação. Ao fazê-lo, ele pode estratificar a partição relativamente a um campo fornecido. Uplift Guia do usuário 69 championModelField (opcional) 2 Isso significa que a proporção de registros nas partições de treinamento e de validação serão idênticas ao longo de diferentes valores do campo fornecido. Isso ajuda a garantir que o conjunto de treinamento seja representativo de todo o conjunto de dados e reduz, dessa forma, a probabilidade de sobreajustar os dados não representativos. É recomendável que o campo fornecido resuma pelo menos o campo partitionField, o objectiveField e os bins do campo outcomeSizeActual, se usados. Preferencialmente, também deve resumir pelo menos um campo-chave de segmentação — um forte fator de elevação, se conhecido, ou um campo importante na discriminação entre diferentes tipos de clientes. No Decision Studio, uma derivação de FDL adequada para alcançar isso seria, por exemplo: segindex () by Partition, Objective, TopPredictor É necessário que esse campo seja binado em valores individuais. Normalmente, iríamos esperar no mínimo quatro e, mais frequentemente, entre 10 e 100 bins para esse campo de estratificação. championModelField (opcional) O nome de um ou mais campos que apresentam a pontuação ou pontuações a partir de outros modelos ("sua melhor opção") para comparação de fins. Se existir mais de um, esses devem ser separados por espaços ou vírgulas. Será frequente que o usuário pretenda comparar o desempenho de um modelo uplift com o de um outro modelo. Se esse for o caso, um modelo para sua melhor opção pode ser fornecido aqui e a curva Qini também será fornecida para esse modelo, para sua melhor opção. Observação: Normalmente, qualquer modelo para sua melhor opção fornecido não terá sido construído na mesma partição de treinamento que o modelo uplift, por isso, é necessário ter especial atenção nas comparações. Em alguns casos, os dados de validação não irão representar dados "retidos" para o modelo para sua melhor opção e é necessário levar isso em conta nas comparações. userWeightingField (opcional) Um campo a usar para ponderar registros, tanto para a seleção variável como para a construção de modelo uplift. Isto não replica fisicamente registros; é uma direção para o Portrait Uplift para tratar cada registro no conjunto de dados como se aparecesse um número (possivelmente fracional) de vezes igual ao valor nesse campo. Nesse caso, o ponderamento de caso é normalmente usado para corrigir os vários tipos de diferenças que podem surgir no conjunto de dados de modelagem. Vários cenários são descritos na seção Ajuste de Tratamento e Validação de Modelo na página 32. Observação: Uma vez que, normalmente, os níveis de significância aumentam com quantidade, a metodologia de modelagem não é invariável à escala constante do campo de ponderação. Por exemplo, uma ponderação constante grande faria com que ocorrências de registro 2 70 Em rigor, as proporções serão o mais semelhantes possível dadas as restrições de inteiros e terão valores de expectativa idênticos. Portrait Uplift 7.0A Capítulo 8: Referência de Parâmetros únicas parecessem relativamente mais significativas que com uma ponderação da unidade. yQiniAxis (opcional; Uplift Cumulativo padrão (pc pt)) (Esse parâmetro aparece na seção de parâmetros gerais.) Esse parâmetro define o texto para o eixo vertical do gráfico Qini. No caso de resultados contínuos, recomendamos que inclua o qualificador "(photp)", referente a "por cabeça da população total", que é discutido na seção Eixo Vertical Para Resultados Contínuos (photp) na página 55. Parâmetros de Especificação da Árvore Estes parâmetros aparecem dentro das etiquetas <treeSpec> ... </treeSpec> a menos que sejam indicados de forma diferente. minPopSize (opcional; padrão 2000) Isso especifica o tamanho mínimo de população de treinamento em qualquer nó na árvore. Divisões que poderão resultar em populações tratadas ou controladas menores que o especificado são descartadas. O Portrait Uplift pode sugerir automaticamente um tamanho mínimo de população baseado em níveis de elevação gerais e volumes de dados disponíveis, o que é sempre um bom ponto inicial. Consulte a seção autoMinPopSize (opcional; padrão 1) na página 71. autoMinPopSize (opcional; padrão 1) Esse parâmetro aparece na seção de parâmetros gerais. Quando é configurado para 1 (isto é, verdadeiro), o software computa um valor mínimo apropriado de tamanho de população no tempo de execução, substituindo qualquer valor fornecido no parâmetro minPopSize dentro da seção de especificação da árvore e configura o parâmetro minLeafnodes para 2, reduzindo o risco de o tamanho de população mínimo gerado automaticamente resultar na impossibilidade de criar uma árvore. Para um resultado binário, o tamanho é escolhido com base na menor população, dentro da qual o nível de elevação geral (diferença nas taxas de resposta entre os tratados e controlados) pode ser seguramente detectado. Se o nível de elevação geral é baixo, ou o resultado é contínuo, a recomendação de tamanho da população é simplesmente o maior número razoável que permite que o número necessário de nós filhos sejam gerados. searchMinPopSize (opcional; padrão 0) Esse parâmetro aparece na seção de parâmetros gerais. Uplift Guia do usuário 71 nLevels (opcional; padrão 4) Quando é configurado para 1 (isto é, verdadeiro), o software computa árvores para vários conjuntos de parâmetros, da mesma forma que o faz quando é fornecido um vetor de nBags ou pruneThresholds. Os valores reais de minPopSize são 100%, 75%, 50% e 25% do minPopSize especificado ou gerado automaticamente. nLevels (opcional; padrão 4) Isso especifica o número máximo de níveis de divisões na árvore. No Decision Studio, a profundidade da árvore é expressa normalmente em termos do número de níveis de nós, enquanto aqui estamos especificando o número de níveis das divisões. Claramente, uma árvore com n níveis de divisões tem n+1 níveis de nós. Assim, a configuração padrão dos quatro produz "árvores de cinco níveis" na terminologia normal do Decision Studio. Parâmetros Gerais Todos os parâmetros seguintes aparecem entre as etiquetas de nível superior <params> ... </params>, a menos se indicado. Parâmetros da seleção variável A seleção variável no Portrait Uplift usa o mesmo arquivo XML de entrada como construção de modelo. Ela usa somente um subconjunto dos principais parâmetros (principalmente focusName, partitionField e objectiveField), em conjunto com alguns parâmetros dedicados extra. setacsFocusName (opcional) O nome do focus a usar como entrada para a seleção variável. Se saveBestACs estiver configurado para 1, é salvo um focus com o número necessário de candidatos de análise configurado, usando o nome do focus especificado em focusName. Se o focus já existir, será substituído, desde que allowOverwrite esteja configurado para 1; caso contrário, o focus não poderá ser salvo. Observação: a seleção variável aplica interpretações de exportação a todos os campos configurados como candidatos de análise nesse focus quando salva com o nome especificado pelo parâmetro focusName e irá limpar quaisquer outras interpretações de exportação. Isso permite visualizar quais campos estavam disponíveis para a seleção variável como candidatos de análise. 72 Portrait Uplift 7.0A Capítulo 8: Referência de Parâmetros allowOverwrite (opcional; padrão 0) Se configurada, a seleção variável pode substituir um focus existente (com o nome especificado por focusName); caso contrário, não será possível salvar o focus, se isso for solicitado. nBestACs (opcional; padrão: 5) Especifica o número de candidatos de análise a selecionar. (As estatísticas são apresentadas sobre todos os candidatos de análise no focus de entrada.) saveBestACs (opcional; padrão: 1) Se esse estiver configurado para 1, assim que os melhores candidatos de análise para a modelagem uplift tiverem sido identificados, será salva uma nova cópia do focus com esses candidatos configurados. O novo focus será salvo no mesmo diretório do focus inicial. Seu nome será o mesmo, mas com 'BestnACs' anexado, onde n corresponde ao número de candidatos de análise escolhidos. (Ao executar o Portrait Uplift a partir do Portrait Miner, esse focus terá o sufixo 'BestACs'.) Se o focus já existir, será adicionado um número no final do nome do focus. setacsNEvals (opcional; padrão: 5) Ao avaliar estimativas de Qini baixas, a seleção variável calcula a média referente a um número de repetições. Esse parâmetro controla o número de repetições, por padrão 5. A seleção variável irá funcionar perfeitamente com esse parâmetro configurado para 1, mas, no geral, um valor superior produz resultados mais precisos, a custo de um tempo de execução proporcionalmente maior. Em ambientes com ruído elevado, verificamos por vezes a necessidade de aumentar setacsNEvals para valores no intervalo 25 — 100 (consulte abaixo para explicações). setacsSigmaWeight (opcional; padrão: auto) Ao avaliar estimativas de Qini baixas, a seleção variável computa a Qini média menos um múltiplo w do desvio padrão, ou seja, a estimativa de Qini baixa é: μ(q0) - wσ(q0). O parâmetro w é controlado por esse parâmetro, setacsSigmaWeight. Por padrão é auto, o que configura o valor para 1/√n onde n corresponde ao número de repetições, no qual a média da estimativa de Qini baixa é calculada (isto é, o parâmetro setacsNEvals). Isso configura a estimativa de Qini baixa para μ(q0) - σ(q0)/√n. que é o limite inferior aproximado de um intervalo de confiança para q0. Em situações nas quais a variação é muito elevada, esta estimativa de Qini baixa padrão (com setacsNEvals=5 e um valor efetivo para setacsSigmaWeight de 1/√5 0,447) pode não funcionar corretamente ou até produzir quaisquer campos com estimativas de Qini baixas positivas. Nessa situação, a classificação dos campos pode não ser útil. Quando isso ocorre, pode ser útil aumentar o número de Uplift Guia do usuário 73 setacsRebin (opcional; padrão: 0) avaliações (setacsNEvals), que irá restringir o intervalo de confiança e, dessa forma, reduzir efetivamente setacsSigmaWeight, quando esse estiver configurado para auto. Em ambientes com ruído elevado, verificamos, por vezes, a necessidade de aumentar o setacsNEvals para valores no intervalo 25 — 100. Observação: As estimativas de Qini baixas usadas para o rebinning de campos ignoram o valor desse parâmetro. setacsRebin (opcional; padrão: 0) Para uma discussão detalhada sobre esse parâmetro consulte a seção Binning Automatizado na página 40. • Se setacsRebin estiver configurado para zero, não é efetuado o rebinning e são escolhidos somente os candidatos de análise. • Se setacsRebin estiver configurado para 1 (ou qualquer inteiro diferente de zero), o software otimiza o binning de todos os candidatos de análise que não sejam datas e grava um arquivo, binnings.xml, no diretório de resultados. • Finalmente, se setacsRebin estiver configurado para o nome de um arquivo XML de binnings, o software irá configurar os binnings nos campos, conforme especificado nesse arquivo. setacsRebinCriterion (opcional; padrão: T) Controla qual medida é usada para escolher o binning. Os valores possíveis são: • L, para as mais altas Estimativas de Qini baixas; • M, para a mais alta Qini Média; • S, para o mais baixo Erro Padrão; • T, para o maior Ponto de Mudança Ajustado de Qini (TPAQ). O TPAQ somente é definido para campos numéricos; para os categóricos, S é usado se esse parâmetro estiver configurado para T. (Consulte a seção Otimizar os Binnings na página 40 para as definições desses valores.) setacsRebinMean (opcional; padrão: Trim) Controla a forma como são tratados os pontos usados para avaliar uma Qini baixa para binning otimizado. Se estiver configurado para Normal, todos os pontos são mantidos. Se estiver configurado para Trim, o valor mais alto e o mais baixo de Qini são descartados. Se estiver configurado para Winsorize, os valores mais alto e mais baixo de Qini são substituídos pelo segundo mais alto e pelo segundo mais baixo. setacsUseRebinLQE (opcional; padrão: 1) Se estiver configurado para 1, ao invés de calcular (novas) estimativas de Qini baixa para determinar quais variáveis selecionar, reutiliza valores calculados por um binning otimizado, onde isso tiver sido realizado. 74 Portrait Uplift 7.0A Capítulo 8: Referência de Parâmetros Esse valor é ignorado se o binning otimizado não for usado. Enquanto o valor padrão de 1 resulta em maior velocidade, em problemas de ruído elevado ele é menos preciso, assim, pode ser desejado configurar esse valor para zero (0). Parâmetros de configuração de execução geral Existem três parâmetros principais que controlam o número de modelos que são construídos. Eles especificam um conjunto de números de sacos a usar, um conjunto de limites e um número de repetições a realizar em cada configuração. Em pseudocódigo, o loop principal diz: for b in nBagsValues: for t in pruneThresholdValues: for i = 1, 2, ..., nRuns: Build Uplift Model Então, se o número de sacos a usar for 10 e 20, os limites de remoção a usar forem 1.2, 1.1 e 1.0 e houver 5 repetições por valor, serão construídos 30 modelos uplift, da seguinte forma: nBags pruneThreshold nRuns 10 1.2 5 10 1.1 5 10 1.0 5 20 1.2 5 20 1.1 5 20 1.0 5 nBagsValues (necessário) Forma: <nBagsValues>[10,20]<nBagsValues/> Conjunto de valores para nBags — o número de sacos a usar na construção de um modelo uplift de agregação por bootstrap. Orientação: O intervalo normal é de 5 a 20. Mesmo que seja fornecido somente um valor para os nBags, é necessário estarem contidos entre colchetes. Assim, para usar exatamente 10 sacos para todas as repetições, use <nBagsValues>[10]<nBagsValues/>. Se forem fornecidos vários valores, é necessário separá-los por vírgulas. Uplift Guia do usuário 75 pruneThresholdValues (necessário) pruneThresholdValues (necessário) Forma: <pruneThresholdValues>[1.2%, 1.1%, 1.0%]<pruneThresholdValues/> Conjunto de valores de remoção de limite. Assumindo que o pruneMethod está configurado para sd, ele controla o desvio padrão máximo permitido de elevação em qualquer nó (não raiz) na árvore ao longo de oito partições reamostradas dos dados de treinamento. Mesmo que seja fornecido somente um valor para os pruneThresholdValues, ele deve estar contido entre colchetes. Assim, para usar o limite de 1% para todas as repetições, use <pruneThresholdValues>[1.0%]<pruneThresholdValues/> Se forem fornecidos vários valores, é necessário separá-los por vírgulas. Para modelos binários e de duas fases, isso é expresso normalmente como uma porcentagem, incluindo um sinal de porcentagem explícito (%). Os valores de entrada [1.2%, 1.1%, 1.0%] e [0.012, 0.011, 0.01] são equivalentes. Para modelos reais, o valor é um desvio padrão absoluto em elevação. Se prune é configurado para 0, esse valor é ignorado, mas é necessário fornecer algum valor. nRuns (opcional; padrão: 1) Número de repetições a realizar para cada valor de nBagsValues e pruneThresholdValues. Parâmetros de controle de remoção prune (opcional; padrão: 1) 1 se for necessária a remoção, 0 (ou em branco) em caso negativo. Todos os outros parâmetros de remoção são ignorados se a opção de remoção estiver desligada. autoPrune (opcional; padrão: 0) Quando é configurada para 1 (isto é, verdadeiro) é configurado automaticamente um valor único no tempo de execução em pruneThresholdValues. O valor gerado automaticamente é baseado na variação em elevação observada ao longo de um conjunto de amostras aleatórias de nm com o tamanho N/m em todo o conjunto de dados, onde N corresponde ao número de registros no conjunto de dados, e m e n são configurados para 10 e 5 respectivamente. 76 Portrait Uplift 7.0A Capítulo 8: Referência de Parâmetros pruneMethod (opcional; padrão: sd) Atualmente, o único método de remoção suportado é a remoção baseada no desvio padrão, sd. minLeafNodes (opcional; padrão: 4) As árvores com um número de nós filhos inferior ao especificado após a remoção serão rejeitadas e será iniciada uma nova construção de árvore. maxTreeAttempts (opcional; padrão: 2) Este é o número máximo de tentativas para gerar uma árvores com pelo menos minLeafNodes no limite de remoção especificado. Se as várias tentativas resultarem em árvores com nós insuficientes, o limite é aumentado (para essa construção de árvore) com a multiplicação por um fator de 1.2. Daí em diante, sempre que uma construção de árvore falhar (por ter nós filhos insuficientes), o limite é aumentado novamente através da multiplicação, isto é, será feita somente uma tentativa sempre que o limite aumentar. Isso será repetido até um máximo de 12 construções de árvore. Se após as 12 construções a árvore continuar a ter nós insuficientes, ela é aceita de qualquer forma. O software fornece um aviso sempre que rejeita uma árvore. propAnalysisCandidates (opcional; padrão: 1.0) Se for configurado para uma fração p < 1.0, uma proporção p aleatória dos candidatos de análise é selecionada para usar com cada construção de modelo. Assim, árvores diferentes (em somente um modelo de agregação por bootstrap) irão usar, em geral, diferentes campos de candidatos de análise. Observação: Não é tomado nenhum cuidado especial para garantir que o número de candidatos de análise seja superior a zero após essa operação. O Portrait Uplift irá falhar se for usado um valor de propAnalysisCandidates pequeno e isso levar à não seleção de campos como candidatos de análise. Observação: É possível expressar o valor como uma porcentagem, por exemplo, 1.0 e 100% são equivalentes para esse parâmetro. Geração de números aleatórios / parâmetros do repetidor de execução O Portrait Uplift gerencia cuidadosamente números aleatórios para garantir que seja possível reproduzir uma execução completa ou um modelo individual de uma execução. Sempre que o Portrait Uplift é executado, é produzido um arquivo XML contendo os parâmetros para essa execução (normalmente params.xml), com prngSetState em branco e prngInitialState configurado para a semente geradora de números aleatórios inicial para a família de repetições. Uplift Guia do usuário 77 prngSetState (opcional; em branco por padrão) Além disso, o arquivo XML que contém os resultados das repetições (normalmente out.xml) contém uma cópia dos parâmetros para esse modelo uplift em particular, incluindo o prngCurrentState. O valor de prngSetState determina a forma como o gerador de números aleatórios é inicializado e qual dos dois parâmetros prng é usado. prngSetState (opcional; em branco por padrão) Os valores válidos são: • Em branco. Neste caso, ambos os valores de prngInitialState e prngCurrentState no arquivo de entrada são ignorados e é gerada uma nova semente aleatoriamente. Isso significa que o mesmo arquivo de parâmetros pode ser usado repetidamente e irá gerar diferentes repetições. (Note, no entanto, que o arquivo de saída, params.xml, reflete sempre esses valores atuais usados.) • initial (isto é, <prngSetState>initial<prngSetState/>). Nesse caso, o valor em prngInitialState é usado para propagar o gerador de números aleatórios. • current (isto é, <prngSetState>current<prngSetState/>). Nesse caso, o valor em prngCurrentState é usado para propagar o gerador de números aleatórios. De forma a reproduzir uma execução individual, copie o XML para essa execução a partir do arquivo de saída (normalmente out.xml) para um arquivo de parâmetros (normalmente params.xml), configure prngSetState para current, configure nBags para o valor de currentNBags (entre colchetes) e pruneThresholdValues para o valor de currentPruneThreshold (entre colchetes). Apesar de não serem parâmetros de entrada, esses dois últimos valores são reportados no XML de saída. prngCurrentState (opcional) Se prngSetState é configurado para current, esse valor é usado para propagar o gerador de números aleatórios. Observação: Ele só deve ser configurado para um valor copiado diretamente dos resultados de um XML de saída ou arquivo de parâmetros. Normalmente, tem uma forma como (1, (26494, 3705, 301), None). prngInitialState (opcional) Se prngSetState é configurado para initial, esse valor é usado para propagar o gerador de números aleatórios. Observação: Ele só deve ser configurado para um valor copiado diretamente dos resultados de um XML de saída ou arquivo de parâmetros. Normalmente, tem uma forma como (1, (26494, 3705, 301), None). tvTrainProp (opcional; padrão: 50%) Se o parâmetro fixedTrainValidateField nos parâmetros de descrição do arquivo estiver em branco, será criada uma divisão de treinamento/validação. Esse parâmetro específica a proporção dos 78 Portrait Uplift 7.0A Capítulo 8: Referência de Parâmetros registros a alocar à partição de treinamento. É obrigatório que seja um número entre 0 e 1.0 ou entre 0% e 100%. Se a proporção de treinamento é configurada para 100% (ou muito próximo), o Portrait Uplift não irá produzir uma saída para um conjunto de validação ou para um conjunto de treinamento e validação combinado, isto é, irá estar em falta tanto em out.xml como em quaisquer gráficos produzidos. Parâmetros de relatório e saída A saída padrão da construção de modelo é organizada na estrutura do diretório apresentada na Figura 9. resultsDirStem (opcional; padrão: results) O nome base do diretório no qual os arquivos de saída serão colocados. Se addTimeStamp estiver configurado ou se o diretório especificado já existir, ele apresentará um timestamp adicionado. Pode ser um caminho relativo ou absoluto. addTimeStamp (opcional; padrão: 1) Se for diferente de zero, um timestamp com o formato AAAAMMDD-HHMMSS é anexado ao tronco do diretório de resultados. Assim, se o tronco de resultados estiver configurado para o seu padrão (results) e for iniciada uma execução exatamente às 18h35 do dia 8 de setembro de 2012, o diretório de resultados será results20120908-183500. Se o diretório especificado em resultsDirStem já existir, é adicionado um timestamp, após um sublinhado, mesmo que esse parâmetro esteja configurado para zero. saveFocusStem (opcional; padrão: (blank)) Se não estiver em branco, após cada construção de modelo, o focus é salvo com o nome do tronco em um subdiretório do diretório de resultados chamado foci. O tronco tem uma assinatura anexada especificando o número de sacos, o limite de remoção e o número da execução (a partir de 1). Se estiver em branco, os foci não são salvos. Observação: O software sempre salva os metadados para os foci intermediários como arquivos .qsfm, independentemente do estado desse parâmetro. Isso significa que os foci intermediários podem sempre ser construídos usando qsimportmetadata. Porém, esse processo pode ser bastante lento, por isso, se souber que vai necessitar deles, salvar os foci intermediários é mais rápido. Uplift Guia do usuário 79 saveModelStem (opcional; padrão: model) saveModelStem (opcional; padrão: model) Se não estiver em branco, após cada construção de modelo ser salva por meio de uma representação XML de FDL com o nome de tronco fornecido em um subdiretório do diretório de resultados chamado models. O tronco tem uma assinatura anexada especificando o número de sacos, o limite de remoção e o número da execução (a partir de 1). Um modelo salvo típico estará em um subdiretório do diretório de resultados chamado models com um nome semelhante a models/modelB03T3.00pcR0001.xml indicando que usou 3 sacos (B03, isto é, foi uma média de 3 árvores), tinha um limite de remoção de 3.00% (T3.00pc) e foi a execução 1 de um lote (R0001). Se estiver em branco, os modelos não são salvos. saveTreeStem (opcional; padrão: (blank)) Se não estiver em branco, após cada árvore ser construída, ela é salva com o nome do tronco em um subdiretório do diretório de resultados chamado trees. O tronco tem uma assinatura anexada especificando o número de sacos, o limite de remoção, o número da execução (a iniciar em 1) e o número do modelo (a iniciar com 1 e com uma "tentativa" de sufixo da forma A02, se o modelo for uma reconstrução após uma grande remoção da árvore). Se estiver em branco, nenhuma árvore é salva. xmlResultsStem (opcional; padrão: out) O nome do tronco do arquivo no qual os resultados da curva Qini são salvos como XML. tvNewFieldName (opcional; padrão: TrainValidate) O nome do campo a criar para a divisão treinamento/validação se o parâmetro de descrição do arquivo fixedTrainValidateField estiver em branco. overallUpliftField (opcional; padrão: UpliftScore) O nome do campo que deve conter a predição de elevação final para cada cliente. Parâmetros de ROI Os seguintes parâmetros são usados ao gerar relatórios Excel e ao avaliar os parâmetros de modelo recomendados. 80 Portrait Uplift 7.0A Capítulo 8: Referência de Parâmetros roiCurrencySymbol (opcional; padrão: $) O símbolo de moeda a usar. Os símbolos de moeda para o Euro (€) e a Libra esterlina (£) devem ser configurados usando as abreviações de três letras EUR E GBP, respectivamente roiCostOfTreatment (opcional; padrão: 0.00) O custo por cliente do tratamento de campanha. roiValueOfBenefit (opcional; padrão: 1.00) O benefício acumulado por cada cliente que responde. roiCostOfFulfillment (opcional; padrão: 0.00) O custo incorrido por resposta tratada. Parâmetros somente para informação currentNBags (configurado durante a construção de modelo) Ignorado na entrada mas, na saída (no arquivo especificado por xmlResultsStem), contém o valor de nBags para o modelo uplift atual. Isso pode ser usado em conjunto com prngSetState e currentPruneThreshold para reconstruir um modelo específico. currentPruneThreshold (configurado durante a construção de modelo) Ignorado na entrada mas, na saída (no arquivo especificado por xmlResultsStem), contém o valor de pruneThreshold para o modelo uplift atual. Isso pode ser usado em conjunto com prngSetState e currentNBags para reconstruir um modelo específico. applyFocusName Quando os modelos uplift são aplicados a novos dados (seção Aplicar modelos Uplift de Agregação por Bootstrap a novos dados na página 22), esse parâmetro é configurado para o nome do focus ao qual será aplicado um conjunto de modelos gerado anteriormente. Uplift Guia do usuário 81 Exemplo de Arquivo de Parâmetros Completo Exemplo de Arquivo de Parâmetros Completo <?xml version="1.0" encoding="UTF-8"?> <params class="Globals"> <fd class="FocusDescription"> <setacsFocusName>foci/RetentionData.ftr</focusName> <focusName>foci/RetentionDataACs.ftr</focusName> <modelType>binary</modelType> <objectiveField>AccountClosed</objectiveField> <outcomeSizeActual></outcomeSizeActual> <outcomeSizeEstimate></outcomeSizeEstimate> <partitionField>RetentionCampaign</partitionField> <fixedTrainValidateField></fixedTrainValidateField> <stratificationField>ObjectiveByTreatmentBySpend</stratificationField> <championModelField>RetentionScore</championModelField> <allowOverwrite>0</allowOverwrite> </fd> <treeSpec class="TreeSpec"> <minPopSize>1000</minPopSize> <nLevels>4</nLevels> </treeSpec> <!-- overall run set parameters --> <nBagsValues>[5]</nBagsValues> <pruneThresholdValues>[0.7%]</pruneThresholdValues> <nRuns>1</nRuns> <!-- pruning control parameters --> <autoPrune>0</autoPrune> <prune>1</prune> <pruneMethod>sd</pruneMethod> <minLeafNodes>4</minLeafNodes> <maxTreeAttempts>2</maxTreeAttempts> <!-- minimum population size parameters --> <autoMinPopSize>1</autoMinPopSize> <searchMinPopSize>0</searchMinPopSize> <!-- problem interpretation parameters --> <yQiniAxis>Increase in Churn (pc pt)</yQiniAxis> <!-- setacs parameters (Automatic selection of analysis candidates --> <nBestACs>10</nBestACs> <!-- Random number generation / run repeater parameters --> 82 Portrait Uplift 7.0A Capítulo 8: Referência de Parâmetros <prngCurrentState>(1, (26494, 3705, 301), None)</prngCurrentState> <prngInitialState>(1, (26494, 3705, 301), None)</prngInitialState> <prngSetState></prngSetState> <tvTrainProp>50%</tvTrainProp> <!-- Reporting and output parameters --> <resultsDirStem>results</resultsDirStem> <addTimeStamp>1</addTimeStamp> <saveFocusStem>snapshot</saveFocusStem> <saveTreeStem>tree</saveTreeStem> <xmlResultsStem>out</xmlResultsStem> <tvNewFieldName>TrainValidate</tvNewFieldName> <overallUpliftField>UpliftScore</overallUpliftField> <!-- RoI parameters --> <roiCurrencySymbol>$</roiCurrencySymbol> <roiCostOfTreatment>0.00</roiCostOfTreatment> <roiValueOfBenefit>1.00</roiValueOfBenefit> <roiCostOfFulfillment>0.00</roiCostOfFulfillment> <!-- information-only parameters: these are not set by the user or needed on input, but are set and reported by UpliftPlus --> <propAnalysisCandidates>1.0</propAnalysisCandidates> <applyFocusName>1.0</applyFocusName> <currentNBags>5</currentNBags> <currentPruneThreshold>0.7%</currentPruneThreshold> </params> Uplift Guia do usuário 83 Exemplo de Arquivo de Parâmetros Completo Figura 1: A opção do botão direito do mouse para selecionar variáveis. Figura 2: A caixa de diálogo de seleção variável. 84 Portrait Uplift 7.0A Capítulo 8: Referência de Parâmetros Figura 3: Um gráfico que mostra valores Qini (Q) como uma função de número de bins. Figura 4: Um Perfil de Uplift. Figura 5: Um Relatório de Validação de Partição. Nesse exemplo, exceto alguns bins (de cor cinza) que contêm poucos registros de interesse, nenhum dos bins tem uma proporção que se desvie de forma significativa da proporção global de 89.87%. Uplift Guia do usuário 85 Exemplo de Arquivo de Parâmetros Completo Figura 6: Um Campo de Estabilização de Perfil. Figura 7: A Estrutura de dados de Validação e de Treinamento e a reamostragem dos dados de treinamento para produzir treinamento reamostrado e conjuntos de teste reamostrados. Figura 8: Um Perfil de Pontuação. Figura 9: Estrutura de diretório de saída padrão. 86 Portrait Uplift 7.0A