Este blog tem a coautoria de Karen Yuan, estagiária do ensino médio
Em nosso Artigo anterior, aprendemos a fazer análise exploratória de dados usando o serviço Couchbase Query. Também aprendemos a ler com eficiência os dados de treinamento com as APIs de consulta no Couchbase Python SDK e a salvá-los perfeitamente em um dataframe pandas adequado para aprendizado de máquina (ML). E, por fim, armazenamos modelos de ML e seus metadados no Couchbase. Neste artigo, aprenderemos a fazer previsões, armazená-las no Couchbase e usar os gráficos de consulta para analisá-las.
Previsão em tempo real
O cientista de dados usa o modelo treinado para gerar previsões.
Usaremos o fluxo de previsão da Figura 1 para prever a pontuação de rotatividade em tempo real e armazenar a previsão no Couchbase. Usaremos o modelo de previsão de rotatividade que treinamos no artigo anterior.
Função para ler o modelo e seus metadados armazenados no Couchbase:
1 2 3 4 5 6 7 |
def read_model_from_couchbase(model_id): balde = agrupamento.balde('model_repository') model_bytes = balde.obter(model_id).valor modelo = picles.cargas(model_bytes) chave = model_id + "_metadata" feature_names = balde.obter(chave).valor['feature_names'] retorno {'modelo': modelo, 'feature_names': definir(feature_names)} |
Função para ler os dados do cliente armazenados no Couchbase:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# Usaremos a interface Query no Couchbase Python SDK para obter vários clientes Registros # que satisfazem uma condição. Como alternativa, a interface GET no Couchbase Python SDK pode # ser usado para obter registros individuais de clientes, por exemplo, bucket.get(customer_key).value def read_data_from_couchbase(select_clause = "", where_clause = ""): se select_clause: declaração_de_consulta = "SELECT cliente.*, " + select_clause mais: declaração_de_consulta = "SELECT customer.*" declaração_de_consulta = declaração_de_consulta + " FROM `online_streaming` as customer" se where_clause: declaração_de_consulta = declaração_de_consulta + " ONDE " + onde_cláusula # Use a API de consulta para obter registros de clientes resultado_da_consulta = cb.consulta(declaração_de_consulta) retorno pd.DataFrame.from_dict(lista(resultado_da_consulta)) |
O seguinte prever lê o modelo, seus metadados e registros de clientes usando as funções acima. Ela converte os dados do cliente em recursos usando o mesmo processo usado durante o treinamento (ou seja, codificação de um ponto). Em seguida, ela prevê a pontuação de rotatividade executando o modelo nos recursos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
def prever(model_id, select_clause = "", where_clause = ""): # Etapa 1: Ler o modelo e seus metadados do Couchbase rv = read_model_from_couchbase(model_id) modelo = rv['modelo'] feature_names = rv['feature_names'] # Etapa 2: Ler registros de clientes do Couchbase df = read_data_from_couchbase(select_clause, where_clause) previsão_do_cliente = df # Etapa 3: Converter os dados brutos em recursos esperados pelo modelo df = pd.get_dummies(df) drop_cols = definir(lista(df.colunas)) - feature_names df.queda(drop_cols, eixo = 1, no local = Verdadeiro) df = df.reindexar(colunas=feature_names, valor_preenchimento=0) # Etapa 4: Prever previsão = modelo.prever(df) previsão_do_cliente["Previsão de rotatividade] = previsão retorno previsão_do_cliente |
1 2 3 |
# Exemplo: Prever a rotatividade de um cliente com um determinado ID previsão = prever('churn_predictor_model_v1', where_clause = "customer.CustomerID = 100002")[['CustomerID', "Previsão de rotatividade]] previsão |
Previsão de rotatividade para ID do cliente 100002 é 1, o que indica que eles provavelmente deixarão o serviço de streaming.
A previsão é salva em um bucket do Couchbase chamado previsões usando o código mostrado abaixo. Crie o bucket de previsões em seu cluster do Couchbase antes de continuar.
1 2 3 4 |
balde = agrupamento.balde('previsões') para salvar = previsão.to_dict(orientar="registros")[0] chave = str(previsão.iloc[0]['CustomerID']) balde.upsert(chave, para salvar) |
Verifique se a previsão foi salva com êxito no Couchbase.
Você também pode executar o modelo treinado e gerar previsões no Couchbase Analytics usando o recurso Python UDF (atualmente em visualização para desenvolvedores). Consulte o artigo sobre Execução de modelos de ML usando o Couchbase Analytics Python UDF para obter mais informações.
Análise de variações hipotéticas
O cientista de dados analisará as previsões para responder a perguntas que ajudem a tomar decisões.
O problema que definimos no artigo anterior era uma equipe de vendas da empresa de serviços de streaming on-line que queria saber se o aumento do custo mensal maximizaria a receita e, ao mesmo tempo, manteria a rotatividade de clientes sob controle.
Para responder a isso, usaremos o código abaixo para prever as pontuações de rotatividade quando os custos mensais forem aumentados em $1, $2 etc. Os resultados dessa análise serão armazenados no bucket de previsões.
Usando a interface do usuário do cluster do Couchbase, crie um escopo chamado análise what_if e uma coleção chamada increase_monthly_cost no bucket de previsões. (Os escopos e as coleções estão disponíveis no Couchbase Server 7.0 e posterior)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# Conecte-se ao bucket de previsões no Couchbase e ao escopo e à coleção relevantes balde = agrupamento.balde('previsões') escopo = balde.escopo("what_if_analysis") wa_collection = escopo.coleção("increase_monthly_cost") # Preveja a taxa de rotatividade se o custo mensal dos clientes existentes for aumentado em # $1, $2 .. $5 para aumentar_por em alcance (1, 6): # where_cluase é definido como customer.Churn = 0 porque estamos interessados # somente para clientes existentes # A seguinte cláusula select_clause atualizará o MonthlyCost, conforme mostrado, enquanto retorna o Resultado da consulta #. Em cada iteração desse loop, o MonthlyCost aumentará em $1, $2 ... select_clause = "customer.`MonthlyCost` + " + str(aumentar_por) + " as `MonthlyCost`" # O MonthlyCost atualizado é passado como entrada junto com outros atributos para a previsão Função #. O resultado informa quais dos clientes existentes provavelmente irão # para churn se o MonthlyCost for aumentado no valor especificado. rv = prever('churn_predictor_model_v1', select_clause = select_clause, where_clause = "customer.Churn = 0") # As receitas mensais são previstas com a adição do custo mensal dos clientes que não têm probabilidade de cancelar. rv['Receita mensal prevista'] = (1 - rv["Previsão de rotatividade]) * rv['MonthlyCost' (Custo mensal)] taxa_de_churn_prevista = rv["Previsão de rotatividade].contagens_de_valores(normalizar=Verdadeiro).mul(100)[1] # Salvar previsões no Couchbase. para salvar = {'Aumento de custo mensal ($)': aumentar_por, 'Receita mensal prevista': rv['Receita mensal prevista'].soma(), "Taxa de rotatividade prevista: taxa_de_churn_prevista} chave = "increase_by_$" + str(aumentar_por) wa_collection.upsert(chave, para salvar) # Use a API de consulta para calcular a receita atual. Armazene-a também no bucket de previsões. Isso é # usado para comparação atual = cb.consulta('SELECT sum(customer.`MonthlyCost`) as CurrentRevenue FROM `online_streaming` customer where customer.Churn = 0') para salvar = {'Aumento de custo mensal ($)': 0, 'Receita mensal prevista': lista(atual)[0]['CurrentRevenue'], "Taxa de rotatividade prevista: 0} wa_collection.upsert("atual", para salvar) |
Para analisar os resultados da previsão usando o Couchbase Query, crie um índice primário no análise what_if conforme mostrado na interface do usuário da consulta abaixo. Observe que o contexto da consulta deve ser definido conforme mostrado.
Os gráficos de consulta podem ser usados para analisar os resultados da previsão. O gráfico abaixo mostra que ~7% dos clientes existentes têm previsão de cancelamento se o custo mensal for aumentado em $1, ~10% provavelmente cancelarão se o custo mensal for aumentado em $2, etc.
O gráfico abaixo mostra que a receita mensal atual é de $3,15 milhões. Prevê-se que essa receita aumente em ~$50K se o custo da assinatura mensal dos clientes existentes for aumentado em $1 e em ~$230k se o custo mensal for aumentado em $2. Mas prevê-se que a receita diminua se o custo mensal for aumentado em $3 ou mais, devido à maior taxa de rotatividade prevista.
Com essa análise, podemos concluir que a equipe de vendas da empresa de serviços de streaming on-line pode aumentar o custo da assinatura mensal em $2 para maximizar a receita e, ao mesmo tempo, manter a taxa de rotatividade sob controle.
A opção "Download chart" (Baixar gráfico) na interface do usuário da consulta pode ser usada para salvar os gráficos.
Serviço de análise do Couchbase
Usamos a API de consulta do Couchbase no Python SDK para ler dados do Couchbase. Se, em vez disso, você quiser usar a API do Couchbase Analytics, aqui está um exemplo para ler os dados do Couchbase e armazená-los em um dataframe do pandas.
1 2 |
resultado da análise = cb.consulta_analítica("SELECT customer.* FROM online_streaming customer") dados brutos de análise = pd.DataFrame(resultado da análise) |
O serviço Couchbase Analytics também pode ser usado para EDA, visualização de dados e para executar modelos de ML treinados (visualização do desenvolvedor). Consulte a seção Referência da linguagem N1QL for Analytics e o artigo sobre Execução de modelos de ML usando o Couchbase Analytics Python UDF para obter mais informações.
Conclusão
Neste artigo e no anterior, aprendemos como o Couchbase facilita a ciência de dados. Usando a previsão de rotatividade de clientes como exemplo, vimos como realizar análises exploratórias usando o serviço Query, como ler com eficiência grandes conjuntos de dados de treinamento usando o Python SDK e como armazená-los facilmente em uma estrutura de dados adequada para ML.
Também vimos como armazenar modelos de ML, seus metadados e previsões no Couchbase e como usar os gráficos de consulta para analisar as previsões.
A plataforma de dados Couchbase pode ser usada para armazenar dados brutos, recursos, modelos de ML, seus metadados e previsões no mesmo cluster que executa os serviços de consulta e análise. Isso torna o processo rápido e fácil, reduzindo o número de ferramentas necessárias para a ciência de dados.
Próximas etapas
Se você estiver interessado em aprender mais sobre aprendizado de máquina e Couchbase, aqui estão algumas etapas e recursos excelentes para você começar:
- Inicie sua avaliação gratuita do Couchbase Cloud - Não é necessária instalação.
- Couchbase Under the Hood: uma visão geral da arquitetura - Aprofunde-se nos detalhes técnicos com este white paper.
- Explore o Couchbase Consulta, Pesquisa de texto completo, Eventose Análises serviços.
- Dê uma olhada nesses blogs do ML: