Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
0
respuestas

Haz lo que hicimos en el aula: Construyendo una Red Bayesiana

Iniciamos creando una tabla de probabilidades condicionales (CPT, Conditional Probability Table) de una red bayesiana simplificada que será el modelo probabilístico que representará las relaciones de causa-efecto entre variables. En este caso, modelamos factores que influyen en la decisión de compra.

Estructura de nuestro mode: loHistorialCompras + TiempoEnElSitio+ ClicóEnPromocion--> Compra

Esto significa que la probabilidad de compra DEPENDE de estos tres factores.
A continuación, se definen las probabilidades iniciales de cada variable.
probabilidades = {
"HistorialCompras": {0: 0.7, 1: 0.3}, # 0: No tiene historial 70%, 1: Tiene historial 30%
"TiempoEnElSitio": {0: 0.6, 1: 0.4}, # 0: Poco tiempo 60%, 1: Mucho tiempo 40%
"ClicóEnPromocion": {0: 0.8, 1: 0.2}, # 0: No clicó 80%, 1: Clicó 20%

Se realiza una tabla de probabilidades de compra con tuplas de la forma (historial, tiempo, promocion)

"Compra": {
    (0, 0, 0): 0.1,  # No tiene historial, poco tiempo, no clicó
    (0, 0, 1): 0.3,  # No tiene historial, poco tiempo, clicó
    (0, 1, 0): 0.2,  # No tiene historial, mucho tiempo, no clicó
    (0, 1, 1): 0.6,  # No tiene historial, mucho tiempo, clicó
    (1, 0, 0): 0.4,  # Tiene historial, poco tiempo, no clicó
    (1, 0, 1): 0.7,  # Tiene historial, poco tiempo, clicó
    (1, 1, 0): 0.8,  # Tiene historial, mucho tiempo, no clicó
    (1, 1, 1): 0.9   # Tiene historial, mucho tiempo, clicó

creamos la función de inferencia que recibirá los datos observados del cliente, es decir la función que calculara la probabilidad de compra.

y se ingresan los valores extraídos para el cálculo.

def calcular_probabilidad_compra(evidencias):
    historial = evidencias["HistorialCompras"]
    tiempo = evidencias["TiempoEnElSitio"]
    promocion = evidencias["ClicóEnPromocion"]
    prob_compra = probabilidades["Compra"][(historial, tiempo, promocion)]
    prob_no_compra = 1 - prob_compra
    return {"Comprar": prob_compra, "No Comprar": prob_no_compra}

Ejemplo: se generan caso hipotético con valore de prueba

evidencias = {
    "HistorialCompras": 1  # Cliente tiene historial de compras
    "TiempoEnElSitio": 0   # Cliente pasó poco tiempo en el sitio
    "ClicóEnPromocion": 1    # Cliente clicó en promociones
}

ingresamos los valores de prueba a la función creada y reportamos el resultado calculado

resultados = calcular_probabilidad_compra(evidencias)
print("Probabilidades de Compra:")
for resultado, probabilidad in resultados.items():
    print(f"{resultado}: {probabilidad:.2f}")