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): bucket = cluster.bucket('model_repository') model_bytes = bucket.get(model_id).value model = pickle.loads(model_bytes) key = model_id + "_metadata" feature_names = bucket.get(key).value['feature_names'] return {'model': model, 'feature_names': set(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 |
# We will use the Query interface in the Couchbase Python SDK to get multiple customer # records that satisfy a condition. Alternatively, the GET interface in the Couchbase Python SDK can # be used to get individual customer records e.g. bucket.get(customer_key).value def read_data_from_couchbase(select_clause = "", where_clause = ""): if select_clause: query_statement = "SELECT customer.*, " + select_clause else: query_statement = "SELECT customer.*" query_statement = query_statement + " FROM `online_streaming` as customer" if where_clause: query_statement = query_statement + " WHERE " + where_clause # Use the Query API to get customer records query_result = cb.query(query_statement) return pd.DataFrame.from_dict(list(query_result)) |
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 predict(model_id, select_clause = "", where_clause = ""): # Step 1: Read the model and its metadata from Couchbase rv = read_model_from_couchbase(model_id) model = rv['model'] feature_names = rv['feature_names'] # Step 2: Read customer records from Couchbase df = read_data_from_couchbase(select_clause, where_clause) customer_prediction = df # Step 3: Convert the raw data into features expected by the model df = pd.get_dummies(df) drop_cols = set(list(df.columns)) - feature_names df.drop(drop_cols, axis = 1, inplace = True) df = df.reindex(columns=feature_names, fill_value=0) # Step 4: Predict prediction = model.predict(df) customer_prediction['Churn Prediction'] = prediction return customer_prediction |
|
1 2 3 |
# Example: Predict churn for a customer with given ID prediction = predict('churn_predictor_model_v1', where_clause = "customer.CustomerID = 100002")[['CustomerID', 'Churn Prediction']] prediction |
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 |
bucket = cluster.bucket('predictions') to_save = prediction.to_dict(orient="records")[0] key = str(prediction.iloc[0]['CustomerID']) bucket.upsert(key, to_save) |
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 |
# Connect to predictions bucket on Couchbase and relevant scope and collection bucket = cluster.bucket('predictions') wa_scope = bucket.scope("what_if_analysis") wa_collection = wa_scope.collection("increase_monthly_cost") # Predict the churn rate if the monthly cost of existing customers is increased by # $1, $2 .. $5 for increase_by in range (1, 6): # where_cluase is set to customer.Churn = 0 because we are interested # only in existing customers # The following select_clause will update the MonthlyCost as shown while returning the # query result. In each iteration of this loop the MonthlyCost will increase by $1, $2 ... select_clause = "customer.`MonthlyCost` + " + str(increase_by) + " as `MonthlyCost`" # The updated MonthlyCost is passed as input along with other attributes to the prediction # function. The output tells which of the existing customers are likely to # to churn if the MonthlyCost is increased by the specified amount. rv = predict('churn_predictor_model_v1', select_clause = select_clause, where_clause = "customer.Churn = 0") # Monthly revenues are predicted by adding the monthly cost of the customers not likely to churn. rv['Predicted Monthly Revenue'] = (1 - rv['Churn Prediction']) * rv['MonthlyCost'] predicted_churn_rate = rv['Churn Prediction'].value_counts(normalize=True).mul(100)[1] # Save predictions to Couchbase. to_save = {'Monthly Cost Increase ($)': increase_by, 'Predicted Monthly Revenue': rv['Predicted Monthly Revenue'].sum(), 'Predicted Churn Rate': predicted_churn_rate} key = "increase_by_$" + str(increase_by) wa_collection.upsert(key, to_save) # Use the Query API to calculate current revenue. Store it also on the predictions bucket. This is # used for comparison current = cb.query('SELECT sum(customer.`MonthlyCost`) as CurrentRevenue FROM `online_streaming` customer where customer.Churn = 0') to_save = {'Monthly Cost Increase ($)': 0, 'Predicted Monthly Revenue': list(current)[0]['CurrentRevenue'], 'Predicted Churn Rate': 0} wa_collection.upsert("current", to_save) |
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 |
analytics_result = cb.analytics_query("SELECT customer.* FROM online_streaming customer") analytics_raw_data = pd.DataFrame(analytics_result) |
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: