Jojooa

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

Exit mobile version