Algoritmo de Análisis de RFM


    Vamos a ver como podemos definir los pasos para poder escribir un programa informático del Análisis de RFM (Recencia, Frecuencia, Monto):

    1)Tenemos que tener una base de datos de clientes con 3 campos (frecuencia de compra, recencia de compra, y monto de compra) preprocesados.
    Y debemos tener en la una base aparte o en la misma base de clientes 3 campos más:
    score_frecuencia
    score_recencia
    score_monto
    Estos campos estarán definidos de 1 a 5

    2) El programa principal estará definido como sigue:

    BEGIN PROGRAM

    // Contamos la cantidad de clientes que existe en la base
    SELECT COUNT(*) INTO cantidadClientes
    FROM clientes
    // Calculamos los umbrales para poder establecer los límites de los
    // quintiles

    VAR umbral1 = cantidadClientes * 0.20
    VAR umbral2 = cantidadClientes * 0.40
    VAR umbral3 = cantidadClientes * 0.60
    VAR umbral4 = cantidadClientes * 0.80

    // poner en cero los atributos score_frecuencia, score_recencia,
    // score_monto de cada cliente

    // dividir el problema en 3 subproblemas

    LLAMAR f_proceso_recency(umbral1, umbral2, umbral3, umbral4)

    LLAMAR f_proceso_frequency(umbral1, umbral2, umbral3, umbral4)

    LLAMAR f_proceso_monetary(umbral1, umbral2, umbral3, umbral4)

    END PROGRAM

    // Procedimiento que resuelve el puntaje de 1 a 5 del score de recencia
    BEGIN PROCEDURE f_proceso_recency(umbral1, umbral2, umbral3, umbral4)

    // Ordeno la base de datos en sentido ascendente a través del campo
    // recencia de compra

    Recorre cada cliente y asigna un 1 al numeroIterador:

    // Con los valores de umbrales realizo las asignaciones

    //QUINTIL 1
    De numeroIterador <= umbral1
    Asigno -> score_recencia = 5

    //QUINTIL 2
    De numeroIterador > umbral1 AND numeroIterador <= umbral2
    Asigno -> score_recencia = 4

    //QUINTIL 3
    De numeroIterador > umbral2 AND numeroIterador <= umbral3
    Asigno -> score_recencia = 3

    //QUINTIL 4
    De numeroIterador > pumbral3 AND numeroIterador <= pumbral4
    Asigno -> score_recencia = 2

    //QUINTIL 5
    De numeroIterador > pumbral4
    Asigno -> score_recencia = 1

    END PROCEDURE

    // Procedimiento que resuelve el puntaje de 1 a 5 del score de frecuencia
    BEGIN PROCEDURE f_proceso_frequency(umbral1, umbral2, umbral3, umbral4)

    // Ordeno la base de datos en sentido descendente a través del campo
    // frecuencia de compra

    Recorre cada cliente y asigna un 1 al numeroIterador:

    // Con los valores de umbrales realizo las asignaciones

    //QUINTIL 1
    De numeroIterador <= umbral1
    Asigno -> score_frecuencia = 5

    //QUINTIL 2
    De numeroIterador > umbral1 AND numeroIterador <= umbral2
    Asigno -> score_frecuencia = 4

    //QUINTIL 3
    De numeroIterador > umbral2 AND numeroIterador <= umbral3
    Asigno -> score_frecuencia = 3

    //QUINTIL 4
    De numeroIterador > pumbral3 AND numeroIterador <= pumbral4
    Asigno -> score_frecuencia = 2

    //QUINTIL 5
    De numeroIterador > pumbral4
    Asigno -> score_frecuencia = 1

    END PROCEDURE

    // Procedimiento que resuelve el puntaje de 1 a 5 del score del monto
    BEGIN PROCEDURE f_proceso_monetary(umbral1, umbral2, umbral3, umbral4)

    // Ordeno la base de datos en sentido descendente a través del campo
    // monto de compra

    Recorre cada cliente y asigna un 1 al numeroIterador:

    // Con los valores de umbrales realizo las asignaciones

    //QUINTIL 1
    De numeroIterador <= umbral1
    Asigno -> score_monto = 5

    //QUINTIL 2
    De numeroIterador > umbral1 AND numeroIterador <= umbral2
    Asigno -> score_monto = 4

    //QUINTIL 3
    De numeroIterador > umbral2 AND numeroIterador <= umbral3
    Asigno -> score_monto = 3

    //QUINTIL 4
    De numeroIterador > pumbral3 AND numeroIterador <= pumbral4
    Asigno -> score_monto = 2

    //QUINTIL 5
    De numeroIterador > pumbral4
    Asigno -> score_monto = 1

    END PROCEDURE
Tema: CRM

'Algoritmo de Análisis de RFM' aparece también en las siguientes entradas:


¿Mejoramos la definición?
Puntos: 5( 1 votos)



Publicado el 13/07/2018.