Академический Документы
Профессиональный Документы
Культура Документы
FACULTAD DE INGENIERIA
UNIVERSIDAD DE BUENOS AIRES
MARZO 2004
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES
NEURONALES
FACULTAD DE INGENIERIA
UNIVERSIDAD DE BUENOS AIRES
Tesista Director
MARZO 2004
Agradecimientos
Al Dr. Ramón García Martinez por haberme conducido hacia la construcción de un trabajo de
investigación de alta calidad y haberme guíado durante todo el proceso de elaboración. A la M. Ing.
Paola Britos por corregirme hasta el último punto y coma, ayudarme y escucharme en todo
momento. A ambos, por ser parte importante de mi formación académica y profesional. A los
profesores Sicre, Servetto y Perichinsky por ayudarme en la confección del artículo para el
Congreso de Ciencias de la Computación de la Universidad de La Plata sobre el tema tratado en
este trabajo. A los departamentos de Sistemas y Control de Fraude de Nextel Argentina por
haberme ayudado y apoyado con todo lo que necesité. A mi abuela Berta por haberme dado casa y
“mucha“ comida en los primeros años de facultad y por estar convencida que soy “un chico muy
inteligente”. A mis padres por haberme apoyado para estudiar y darme la libertad de tomar mis
propias decisiones. A mis compañeros de facultad y amigos de la vida (Fernando, Pablo y Sergio) y
en especial a Erica, el amor de mi vida que me da las fuerzas, las ganas y la felicidad para seguir
creciendo y ser mejor persona cada día.
Resumen
Abstract
This work deals with the problem of detection of changes in cell phones’ usage for users out
of the normal behavior, the developing of structures of data that represent the recent and historic
behavior of each user, taking into account the information that resides in a call and the complexity
of the development of a function with so many imput variables where the parameterization is not
always known. Even though several fraud detection tools have been developed, all of them evaluate
high usage variables or fixed rules, that not always indicate non normal behaviour. The solution that
is presented uses the technology of non supervised neural networks, in particular the SOM
networks.
INDICE
INDICE.............................................................................................................................................................................. 1
TABLA DE GRÁFICOS.................................................................................................................................................. 5
1 INTRODUCCION .................................................................................................................................................. 6
5 PRUEBA EXPERIMENTAL............................................................................................................................... 57
6 CONCLUSIONES................................................................................................................................................. 76
REFERENCIAS.............................................................................................................................................................. 78
APENDICE A ................................................................................................................................................................. 81
APENDICE B.................................................................................................................................................................. 92
Tabla de Figuras
Tabla de Gráficos
1 INTRODUCCION
Las formas de realizar fraude están constantemente evolucionando y cambiando; esto se debe
a que la tecnología en telecomunicaciones avanza y restringe cada vez más las posibilidades de
cometer actos fraudulentos. Cuando las primeras redes móviles de comunicaciones analógicas
fueron lanzadas al mercado, su debilidad principal residía en la seguridad, particularmente en la
falta de encriptación de los datos en los canales de comunicación que permitía la clonación de
teléfonos celulares (dos aparatos diferentes usando la misma cuenta). A medida que la tecnología
evolucionó de analógica a digital, la naturaleza del fraude ha cambiado haciéndose más difícil la
clonación, y llevando estas actividades hacia otros tipos de fraude; sin embargo, tampoco las redes
digitales están libradas completamente del fraude de clonación.
En la sección 1.1 se presenta una definición de fraude y se describen distintos tipos de fraude
existentes.
En la sección 1.2 se abre la discusión sobre las diferentes maneras de detectar el fraude.
La sección 1.3 introduce a las redes neuronales como herramienta para la creación de perfiles
de usuario y detección de cambios de comportamiento.
Finalmente las secciones 1.4 y 1.5 cierran esta introducción detallando el objetivo y la
estructura del presente trabajo.
¿Qué es el fraude? Se puede describir de una manera simple como “cualquier actividad por la
cual un servicio es obtenido sin la intención de pagarlo”. [Gosset & Hyland, 1999]
Muchas veces las organizaciones calculan cuánto dinero pierden debido al fraude
definiéndolo como “el dinero que se pierde en clientes/cuentas por los cuales no se recibe ningún
pago” [Gosset & Hyland, 1999]. Sin embargo, para los fines de detección, tal definición no es
apropiada debido que el fraude solo sería detectado una vez que ha ocurrido. De hecho, especificar
qué es el fraude puede ser muy difícil, debido a que la diferencia entre un comportamiento
fraudulento y uno que no lo es puede ser muy pequeña; por lo tanto lo más prudente es clasificar al
fraude en diferentes tipos y describir cada uno de ellos.
A continuación se presentan diferentes tipos de fraude que deben ser tomados en cuenta
cuando se estudia este problema.
Todos los fraudes en esta categoría generan a priori ganancia para la empresa a través del uso
normal de los teléfonos celulares, pero finalmente el usuario no tiene intenciones de pagar por el
servicio que se le brindó. Un ejemplo de este tipo de fraude es el denominado por suscripción. El
mismo puede tomar varios matices, pero puede ser dividido principalmente en dos casos: 1) aquel
donde el usuario contrata el servicio sin la intención de pagarlo nunca; 2) luego de varias
facturaciones el usuario toma la decisión de no pagar por el uso del mismo. Este último caso
usualmente resulta en un cambio dramático de su comportamiento en el uso del servicio y será el
caso modelo que utilizaremos para nuestro trabajo. De todas maneras, el primer caso no puede ser
detectado a través de información de uso, ya que la misma no existe cuando comienza a utilizar el
servicio y es necesaria información adicional tal como su condición crediticia para analizar el riesgo
que implique darle el servicio a un determinado usuario.
Todos los fraudes en esta categoría le permiten, a quién logra ingresar en sistemas inseguros,
brindar de manera ilegal servicios a terceros. Es decir, utilizar recursos de la compañía de manera
desleal. Ejemplos de tales fraudes son el fraude hacia una PABX (Private Automatic Branch
Exchange – Central telefónica que provee acceso a diferentes servicios de comunicaciones como
conexión a otras redes de telecomunicaciones [ITS, 2000]) y el ataque a la red.
En el fraude hacia una PABX el “atacante” llama repetidamente a la misma, tratando de tener
acceso a una línea externa; una vez que se tiene acceso, pueden realizar llamadas salientes de alto
valor (nacionales o internacionales de larga duración) simplemente pagando un precio de acceso a
la PABX. Usualmente, tales ataques están asociados con el uso de teléfonos clonados, de manera
que ni siquiera pagan los precios de acceso.
En los ataques a la red, se intenta ingresar a las redes de computadoras a través de módems
que se configuran en las mismas para poder realizar tareas remotas de administración y soporte.
Una vez que se accede por uno de ellos, el atacante intenta ingresar a la red y configurar ciertos
equipos para su propio beneficio. Estos fraudes se caracterizan por llamadas cortas y continuas al
mismo número en el caso de fraude a una PABX o llamadas cortas a números secuenciales en el
caso de fraude de red, por lo cual es este el comportamiento que debe ser detectado.
Todos los fraudes en esta categoría involucran ataques contra las debilidades de la tecnología
de los sistemas de telefonía celular (móvil). Tales fraudes típicamente necesitan habilidad y algún
conocimiento técnico inicial, aunque una vez que se encontró una debilidad esta información se
distribuye rápidamente de manera que gente sin los conocimientos necesarios pueda usarla.
Ejemplos de este tipo de fraude son la clonación de teléfonos y el fraude interno técnico. En una
clonación, los parámetros de autenticación de un móvil son copiados a otro equipo, de modo que la
red “crea” que es el teléfono original quien esta intentando validarse.
Todos los fraudes que se describen en esta sección implican la intención de evitar los
procedimientos implementados para detener el fraude. A menudo estos ataques se enfocan en las
debilidades de los procedimientos de negocio usados para dar acceso a los sistemas.
Un ejemplo típico de este fraude es el de Roaming (utilizar el teléfono en otra red, ejemplo
otro país, para luego cobrarse el uso en el país de origen). En este caso, el procedimiento de
facturación generalmente se realiza unos días después que las llamadas fueron realizadas, cuando el
suscriptor puede ya no existir. Sin embargo este tipo de acciones son previstas por casi todos los
sistemas de facturación en telefonía celular.
Otro ejemplo es el de intentar registrarse en la compañía con datos falsos para lo cual los
procesos administrativos deben ser controlados y revisados constantemente para evitar el ingreso de
“falsos” clientes a la red.
Cuando se inicia una llamada de celular, las celdas o switches registran que la misma se está
realizando y producen información referida a este evento. Estos registros de datos son comúnmente
llamados CDR’s (Call Detail Records). Los CDR’s contienen importante información sobre la
llamada para que luego ésta pueda ser cobrada a quien corresponda [ASPeCT, 1997].
Estos registros también pueden ser usados para detectar actividad fraudulenta considerando
indicadores de fraude bien estudiados. Es decir, procesando una cantidad de CDR’s recientes y
comparando una función de los diferentes campos tales como IMSI (International Mobile
Subscriber Identity, que identifica unívocamente un usuario en una red de telefonía celular), fecha
de la llamada, hora de la llamada, duración, tipo de llamada con un cierto criterio determinado
[Moreau & Preneel, 1997]. Si esta función devuelve un valor que se considera fuera de los límites
normales, se activa una alarma, que debe ser tomada en cuenta por los analistas de fraude para
constatar si realmente hubo o no actividad de mala fe.
Para poder procesar estos CDR’s es necesario realizar previamente un proceso conocido en
telecomunicaciones como mediación, en el cual se lee la información con el formato de registro en
el que vienen los CDR’s (el mismo puede ser de longitud variable dependiendo del tipo de llamada
y del proveedor del switch) y se codifica en un nuevo formato de registro entendible por el sistema
de fraude en este caso.
La figura 1.1, que se presenta a continuación, muestra las diferencias entre el análisis absoluto
y el análisis diferencial.
Información
Información
necesaria de cada Análisis diferencial
usuario
Eficiencia
Base de datos
para un análisis
detallado
Mucha información
Análisis absoluto
de algunos usuarios
Datos
Se puede observar en la figura 1.1 que utilizando el análisis absoluto solo se pueden analizar
algunos usuarios cuyo consumo supere cierto nivel, para lo cual es necesario tener mucha
información del mismo. Además la certeza en las alarmas que el sistema emitirá no es
completamente confiable ya que pueden existir muchos casos en los cuales se clasifique a un
usuario como fraudulento cuando realmente no lo es (falsas alarmas). En cambio en el análisis
diferencial la certeza de obtener mejores resultados aumenta permitiendo además poder analizar a
cada uno de los usuarios.
A su vez dentro del análisis diferencial hay diferentes enfoques en la detección de fraude
[Gosset & Hyland, 1999]:
• El enfoque por enseñanza: el cual se tipifica por el uso de redes neuronales supervisadas o
herramientas de detección de fraude basadas en reglas. A estas herramientas se les
presentan casos de fraude existentes y luego tratan de encontrar indicios de fraude basado
en lo que han aprendido o “se les enseñó”. El enfoque por enseñanza es útil para detectar
fraude por suscripción y violación de seguridad. Adicionalmente, una vez que se descubre
En este enfoque, es necesario tener ejemplos reales de fraude. Estos ejemplos son usados para
“enseñar” a la herramienta qué es lo que debe buscar. En el caso de un sistema basado en reglas, los
ejemplos son analizados por sus componentes de fraude que luego se traducen en reglas que utilizan
umbrales o medidas relativas. En el caso de las redes neuronales supervisadas se usan los ejemplos
de fraude y los ejemplos de usuarios no fraudulentos para enseñarle a la herramienta cuáles
comportamientos son buenos y cuáles no lo son. Ambos tipos de herramientas deberían identificar
comportamientos de alguna manera similar a los ejemplos de fraude usados o a los ejemplos de
buen comportamiento; si identifican algún comportamiento como “parecido” al de un ejemplo de
fraude, deben emitir una alarma.
Con las redes neuronales no supervisadas se pueden crear perfiles de usuario basados en su
comportamiento reciente y compararlo con su consumo histórico que evoluciona a través del tiempo
con las llamadas realizadas.
Nuestro trabajo se centrará en la construcción de una herramienta que utilice este enfoque ya
que es muy difícil encontrar a priori un escenario en el cual se conozcan muchos casos de fraude
para utilizar el enfoque por enseñanza. En los capítulos posteriores se presentarán todos los
problemas que surgen al diseñar una herramienta de este tipo, su resolución y posterior prueba.
Basados en esta definición las redes neuronales son capaces de agrupar las llamadas y
clasificarlas de una manera acorde y construir, basados en esta clasificación, perfiles de usuario que
representen su consumo y así luego detectar los cambios de comportamiento.
En este contexto, el objetivo de este trabajo es encontrar una herramienta capaz de detectar
cambios de comportamiento susceptibles de describirse como fraudulentos utilizando redes
neuronales artificiales para construir perfiles de usuario que puedan ser comparables con patrones
históricos del mismo. Esta herramienta debe ser eficaz y eficiente en su funcionamiento
demostrando que es una forma exitosa de detectar fraude. Se estudiará la mejor forma de construir
estos perfiles y adaptarlos a medida que más información se incorpora a los mismos utilizando
redes neuronales no supervisadas en el marco de un análisis diferencial de la información dentro del
enfoque de detección de fraude por aprendizaje.
En el capítulo 3 se presenta el problema y se detallan cada uno de los puntos que deben
tenerse en cuenta a la hora de plantear una solución. Se analiza de qué manera pueden ser
representados el consumo actual e histórico de cada usuario a través de la construcción de “perfiles
de usuario” planteándose un método para detectar cuándo un usuario cambia su comportamiento y
su utilidad como un indicador de fraude. También se definen criterios para la futura evaluación de
la performance y se resume de manera gráfica el problema a resolver en su conjunto.
En el capítulo 5 se presentan los resultados obtenidos en las experiencias realizadas que son
de fundamental importancia para obtener las conclusiones. En el mismo se detalla el conjunto de
datos que se utilizaron para el entrenamiento de las redes neuronales y la construcción de perfiles de
usuarios. Se describen las variables que se observaron durante la experimentación y cómo se
desarrollaron los experimentos.
Finalmente en el capítulo 6 se detallan las conclusiones obtenidas, detallando cada una de las
ventajas obtenidas al encarar la solución de la manera planteada.
En el apéndice B se detallan las tablas con todos los resultados obtenidos para cada una de las
experiencias realizadas. Se presentan los valores obtenidos en el entrenamiento de las redes
neuronales y luego se detallan los valores de todas las alarmas emitidas en dos de las experiencias
realizadas, indicando los valores de los parámetros utililizados en cada una de ellas.
En este capítulo se presenta la teoría necesaria para poder abordar el problema de la detección
de fraude utilizando una solución de la inteligencia artificial. Para ello se describe en la sección 2.1
el funcionamiento y las características de las redes neuronales.
En la sección 2.2 se hace una breve reseña de la red supervisada Perceptrón ya que se hará
referencia a la misma en secciones posteriores. Sin embargo, la red más importante para la
implementación de este trabajo es la SOM (Self Organizing Maps) que será explicada
detalladamente en la sección 2.3 .
La neurona artificial pretende mimetizar las características más importantes de las neuronas
biológicas. Cada neurona i-ésima está caracterizada en cualquier instante por un valor numérico
denominado valor o estado de activación ai(t); asociado a cada unidad existe una función de salida,
fi , que transforma el estado actual de activación en una señal de salida yi. Dicha señal es enviada a
través de los canales de comunicación unidireccionales a otras unidades de la red; en estos canales
la señal se modifica de acuerdo con la sinapsis (el peso, wji) asociada a cada uno de ellos según una
determinada regla. Las señales moduladas que han llegado a la unidad j-ésima se combinan entre
ellas generando así la entrada total, Netj:
Net j = ∑ y i w ji
i
En cualquier sistema de redes neuronales que se esté modelando, es útil caracterizar tres tipos
de unidades:
yh
wjh
Unidad Ui
F(aj(t), Netj)
yi wji F(aj(t+1)) yj
Netj = =
yj
aj(t+1)
wjg
Unidad Uj
Unidad Ug
yg
La figura 2.1 muestra cómo se compone el estado de una neurona basado en los valores que le
“llegan” de cada una de las neuronas de la capa anterior.
N
y i (t + 1) = f ( Net i ) = f ∑ wij y j (t )
j =1
Además, normalmente la función de activación no está centrada en el origen del eje que
representa el valor de la entrada neta, sino que existe cierto desplazamiento debido a las
características internas de la propia neurona y que no es igual en todas ellas. Este valor se denota
como θi y representa el umbral de activación de la neurona i.
N
y i (t + 1) = f ( Net i − θ i ) = f ∑ wij y j (t ) − θ i
j =1
En las redes monocapa (1 capa) se establecen conexiones laterales entre las neuronas que
pertenecen a la única capa que constituye la red. También pueden existir conexiones
autorrecurrrentes (salida de una neurona conectada a su propia entrada).
Las redes multicapa son aquellas que disponen de conjuntos de neuronas agrupadas en varios
niveles o capas. Normalmente, todas las neuronas de una capa reciben señales de entrada de otra
capa anterior, más cercana a las entradas de la red, y envían señales de salida a una capa posterior,
más cercana a la salida de la red; a estas conexiones se les denomina conexiones hacia adelante o
feedforward. Sin embargo, en un gran número de estas redes también existe la posibilidad de
conectar las salidas de las neuronas de capas posteriores a las entradas de las capas anteriores, a
estas conexiones se las denomina conexiones hacia atrás o feedback.
En la figura 2.2 podemos visualizar 5 topologías de redes diferentes: (a) Un Perceptrón de una
capa (SLP) conectado completamente. (b) Un Perceptrón multicapa (MLP) conectado
completamente. (c) Un MLP modular. (d) Una red recurrente conectada completamente. (e) Una
red recurrente conectada parcialmente.
El aprendizaje es el proceso por el cual una red neuronal modifica sus pesos en respuesta a
una información de entrada. Los cambios que se producen durante el proceso de aprendizaje se
reducen a la destrucción, modificación y creación de conexiones. En los modelos de redes
neuronales artificiales, la creación de una nueva conexión implica que el peso de la misma pasa a
tener un valor distinto de cero.
Otro criterio que se puede utilizar para diferenciar las reglas de aprendizaje se basa en
considerar si la red puede aprender durante su funcionamiento habitual o si el aprendizaje supone la
desconexión de la red; es decir su inhabilitación hasta que el proceso termine. En el primer caso, se
trata de un aprendizaje ON LINE, mientras que el segundo es lo que se conoce como aprendizaje
OFF LINE.
Existen varias formas de calcular el error y luego adaptar los pesos con la corrección
correspondiente. Una de las más implementadas utiliza una función que permite cuantificar el error
∑ (y )
1 P N
∑
2
Errorglobal = (k )
j − d (j k )
2 P k =1 j =1
dónde:
Por lo tanto, de lo que se trata es de encontrar unos pesos para las conexiones de la red que
minimicen esta función de error. Para ello, el ajuste de los pesos de las conexiones de la red se
puede hacer de forma proporcional a la variación relativa del error que se obtiene al variar el peso
correspondiente:
∂Errorglobal
∆w ji = k
∂w ji
dónde:
Mediante este procedimiento, se llegan a obtener un conjunto de pesos con los que se
consigue minimizar el error medio, con la presentación de cada nuevo patrón de entrenamiento a la
red.
Las redes con aprendizaje no supervisado no requieren influencia externa para ajustar los
pesos de las conexiones entre sus neuronas. La red no recibe ninguna información por parte del
entorno que le indique si la salida generada en respuesta a una determinada entrada es o no es
correcta; por ello, suele decirse que estas redes son capaces de autoorganizarse. Estas redes deben
encontrar las características, regularidades, correlaciones o categorías que se puedan establecer
entre los datos que se presentan en su entrada.
Existen muchas formas de clasificar a los diferentes tipos de redes neuronales ya sea por su
forma de aprendizaje, su topología, etc. Sin embargo, es interesante citar una clasificación que las
divide en 3 categorías según su funcionamiento [Kohonen, 1995]:
En las redes de transferencia de señal, la señal de entrada se transforma en una señal de salida.
La señal atraviesa la red y experimenta una transformación de algún tipo. Estas redes tienen
usualmente un conjunto de funciones prefijadas, que se parametrizan.
Finalmente, en las redes con aprendizaje competitivo, o redes autoorganizables , todas las
neuronas de la red reciben la misma señal de entrada; las celdas compiten con sus vecinas laterales
y la que mayor actividad tiene “gana”. El aprendizaje se basa en el concepto de la “neurona
ganadora”. En la sección 2.3 se explicará en detalle un modelo fundamental para el objetivo de este
trabajo que se incluye en esta clasificación llamado Self Organizing Maps [Kohonen, 1995].
Este fue el primer modelo de red neuronal artificial desarrollado por Rosenblatt en 1958
[Rosenblatt, 1958]. Un Perceptrón, formado por varias neuronas lineales para recibir las entradas a
la red y una de salida, es capaz de decidir cuándo una entrada presentada a la red y pertenece a una
de las dos clases que es capaz de reconocer. Es una red que utiliza aprendizaje supervisado OFF
LINE con conexiones hacia adelante.
La única salida del Perceptrón realiza la suma ponderada de las entradas, resta el umbral y
pasa el resultado a una función de transferencia de tipo escalón. La regla de decisión se basa en
responder +1 si el patrón presentado pertenece a la clase A, o –1 si el mismo pertenece a la clase B.
La salida dependerá de la entrada neta (suma de las entradas xi ponderadas) y del valor umbral θ.
Sin embargo, este modelo de red neuronal no tiene demasiadas aplicaciones ya que solo puede
clasificar las entradas en solo dos grupos diferentes; es por ello que se utiliza el Perceptrón
multicapa que contiene varias capas de neuronas de entre la entrada y la salida de la misma. Esta
red permite establecer regiones de decisión mucho más complejas.
El Perceptrón básico de dos capas sólo puede establecer dos regiones separadas por una
frontera lineal en el espacio de patrones de entrada; un Perceptrón multicapa puede formar cualquier
región convexa en este espacio.
y
x
(a) (b)
La figura 2.3 muestra en (a) un Perceptrón simple y en (b) un Perceptrón multicapa. Ambos
utilizan la misma técnica de aprendizaje, el segundo es capaz de clasificar la información de una
mejor manera que el primero.
Existen evidencias que demuestran que en el cerebro hay neuronas que se organizan en
muchas zonas, de forma que las informaciones captadas del entorno a través de los órganos
sensoriales se representan internamente en forma de mapas bidimensionales [Beveridge, 1996]. Por
ejemplo, en el sistema visual se han detectado mapas del espacio visual en zonas del córtex (capa
externa del cerebro); también en el sistema auditivo se detecta una organización según la frecuencia
a la que cada neurona alcanza mayor respuesta [Hilera González & Martínez Hernando, 2000].
A partir de estas ideas, Teuvo Kohonen presentó en 1982 [Kohonen, 1982] un sistema con un
comportamiento semejante; se trata de un modelo de red neuronal con capacidad para formar mapas
de características de manera similar a como ocurre en el cerebro. El objetivo de Kohonen era
demostrar que un estímulo externo (información de entrada) por sí solo, suponiendo una estructura
propia y una descripción funcional del comportamiento de la red, era suficiente para forzar la
formación de mapas. Estudiaremos, entonces, este modelo llamado Self Organizing Maps (SOM)
que se basa en el principio de formación de mapas topológicos para establecer características
comunes entre las informaciones (vectores) de entrada a la red. Este modelo es uno de los más
populares que se utilizan en redes neuronales artificiales y pertenece a la categoría de redes con
aprendizaje competitivo.
La neurona tiene las mismas dimensiones que los vectores de entrada (datos de entrada), es
decir que es n-dimensional. Las neuronas están conectadas a las neuronas adyacentes por una
relación de vecinos. Esta dicta la topología, o la estructura, del mapa; usualmente, las neuronas
están conectadas unas con otras en una topología hexagonal o rectangular. En la figura 2.4 podemos
observar (a) una estructura rectangular y (b) una estructura hexagonal.
Se puede definir una distancia entre las neuronas de acuerdo a su relación de topología; las
mismas pueden ser vecinas inmediatas (las neuronas adyacentes) que pertenecen al vecindario Nc
de la neurona mc. La función de vecindario es una función decreciente en el tiempo: Nc = Nc(t).
En el algoritmo básico del SOM, las relaciones topológicas y el número de neuronas son fijos
desde el comienzo; este número de neuronas determina la escala o la granularidad del modelo
resultante. La selección de la granularidad afecta la certeza y la capacidad de generalizar del
Los datos que alimentan al SOM incluyen toda la información que toma la red. Si se le
presenta información errónea, el resultado es erróneo o de mala calidad. Entonces, el SOM, tanto
como los otros modelos de redes neuronales, deben eliminar la información “basura” para que no
ingrese al sistema. Por lo cual se debe trabajar con un subconjunto de los datos; estos deben ser
relevantes para el modelo a analizar. También se deben eliminar los errores en los datos; si los
mismos se obtienen a través de una consulta a una base de datos, el resultado puede incluir datos
erróneos debido a la falta de integridad de la base; entonces estos deben ser filtrados usando
conocimientos previos del dominio del problema y el sentido común.
Comúnmente los componentes de los datos de entrada se normalizan para tener una escala de
0 a 1. Esto asegura que por cada componente, la diferencia entre dos muestras contribuye un valor
igual a la distancia medida calculada entre una muestra de entrada y un patrón. Es decir que los
datos deben previamente codificarse (normalizarse). De lo contrario no será posible usar la distancia
como una medida de similitud. Esta medida debe ser cuantificable por lo que la codificación debe
ser armónica con la medida de similitud utilizada. La medida mayormente utilizada es la distancia
Euclídea. Los datos simbólicos no pueden ser procesados por un SOM como tales, por lo que deben
ser transformados a una codificación adecuada.
2.3.1.2 Inicialización
Existen varios tipos de inicializaciones para los valores de las neuronas (patrones): entre ellos
se pueden nombrar la inicialización al azar y la inicialización utilizando usando las primeras
muestras. En la inicialización al azar se asignan valores aleatorios a los patrones; se utiliza cuando
se sabe muy poco o nada sobre los datos de entrada en el momento de comenzar el entrenamiento.
La inicialización utilizando las primeras muestras utiliza los primeros datos de entrada asignándolos
a los patrones; tiene la ventaja que los automáticamente se ubican en la parte correspondiente del
espacio de entrada.
2.3.1.3 Entrenamiento
En un paso del entrenamiento, un vector muestra se toma de los datos de entrada; este vector
es presentado a todas las neuronas en la red y se calcula la medida de similitud entre la muestra
ingresada y todos los patrones. La unidad más parecida o Best Matching Unit (BMU) se elige como
el prototipo con la mayor similitud con la muestra de entrada; esta similitud usualmente se define
con una medida de distancia vectorial. Por ejemplo, en el caso de la distancia Euclídea la BMU es la
neurona más cercana a la muestra presentada en el espacio representado por todos los datos de
entrada. La norma Euclídea de un vector x se define como:
∑x
2
x = i
i =1
dónde:
Por lo tanto, la distancia Euclídea en términos de la diferencia de la norma Euclídea entre dos
vectores se define como:
d E ( x, y ) = x − y
dónde:
x: corresponde al vector x.
y: corresponde al vector y.
La BMU, usualmente denotada con mc, es el patrón que más se parece al vector de entrada x.
Se define formalmente como la neurona para la cual
x − mc = min{ x − mi }
i
dónde:
Luego de encontrar la BMU, se actualizan todas las neuronas del SOM. Durante el
procedimiento de actualización, la BMU se actualiza para acercarse aún más al vector de entrada.
Los vecinos topológicos de la BMU también se actualizan de manera similar utilizando una tasa de
aprendizaje de menor valor. Este procedimiento acerca a la BMU y a sus vecinos topológicos hacia
la muestra ingresada.
El esfuerzo computacional consiste en encontrar una BMU entre todas las neuronas y
actualizar cada uno de los patrones en el vecindario de la unidad ganadora. Si el vecindario es
grande, entonces más patrones deberán ser actualizados; este es el caso que se presenta en el
comienzo del entrenamiento, donde se recomienda utilizar vecindarios grandes. En el caso de redes
con muchas neuronas, gran parte del tiempo se utiliza buscando a la ganadora. Obviamente que
dependiendo del diseño del software utilizado y el hardware estas consideraciones serán más o
menos significativas.
A través del procedimiento de actualización descrito, la red forma una red elástica que durante
el aprendizaje cae en una nube formada por los datos de entrada. Los patrones tienden a
posicionarse allí donde los datos son densos, mientras que se tiende a tener pocos patrones donde
los datos de entrada están más dispersos. Por lo tanto, la red tiende a aproximar la función de
densidad de probabilidad de los datos de entrada [Kohonen, 1995].
mi (t + 1) = mi (t ) + hci (t )[x(t ) − mi (t )]
dónde:
La función de vecindario que incluye la tasa de aprendizaje α(t) determina la forma en que
serán actualizadas las neuronas vecinas. La misma se puede escribir como:
2
ri − rc
−
hci (t ) = α (t )e 2σ (t ) 2
Se pueden utilizar otras funciones de vecindario como la función que se presenta en la figura
2.6. La única restricción es que sea decreciente alrededor de la neurona mc. Por lo tanto, también
podría ser constante alrededor de la neurona ganadora.
En la figura 2.6 se pueden observar dos funciones de vecindario: (a) función Gaussiana, (b)
función constante.
En la figura 2.7 se pueden observar tipos de tasas de aprendizaje: (a) la función lineal decrece
a cero linealmente durante el aprendizaje, (b) la función inversamente proporcional decrece
rápidamente desde su valor inicial.
( )
α (t ) = α (0) 1 − t r , para el caso de la función inversa y
α (t ) = Cα (0)(C + t ) , para el caso de la función lineal donde C se puede definir como r/100 y r
corresponde a la cantidad total de vectores muestra utilizados en el entrenamiento.
Se debe determinar el valor inicial de α, que define el valor inicial de la tasa de aprendizaje.
Usualmente, cuando se utiliza una función inversa el valor inicial puede ser mayor que en el caso
lineal. El aprendizaje se realiza usualmente en dos fases:
La elección de los valores iniciales de α y la forma en que estos van variando pueden variar
sensiblemente los resultados obtenidos.
2.3.1.4 Visualización
La representación U-Matrix (unified distance Matrix) del SOM visualiza la distancia entre
neuronas adyacentes [Kohonen, 1994]. La misma se calcula y se presenta con diferentes colores
entre los nodos adyacentes. Un color oscuro entre neuronas corresponde a una distancia grande que
representa un espacio importante entre los valores de los patrones en el espacio de entrada. Un color
claro, en cambio, significa que los patrones están cerca unos de otros. Las áreas claras pueden
pensarse como “clases” y las oscuras como “separadores”. Esta puede ser una representación muy
útil de los datos de entrada sin tener información a priori sobre las clases.
En la figura 2.8 podemos observar las neuronas indicadas por un punto negro. La
representación revela que existe una clase separada en la esquina superior derecha de la red. Las
clases están separadas por una zona negra. Este resultado se logra con aprendizaje no supervisado,
es decir, sin intervención humana. Enseñar a un SOM y representarla con la U-Matrix ofrece una
forma rápida de analizar la distribución de los datos.
2.3.1.5 Validación
Se pueden crear la cantidad de modelos que se quiera, pero antes de utilizar alguno de ellos,
deben ser validados. La validación significa que el modelo debe ser probado para asegurar que
devuelve valores razonables y certeros. La misma debe realizarse usando un conjunto independiente
de datos; este es similar al utilizado para el entrenamiento pero no parte de él; puede verse a este
conjunto de prueba como un caso representativo del caso general.
2.3.2 Aplicaciones
Se ha demostrado que los SOM son muy útiles en aplicaciones técnicas. En la industria, se ha
utilizado, por ejemplo, en monitoreo de procesos y máquinas [Alander & Frisk, 1991; Cumming,
1993; Alhoniemi, 1995], identificación de fallas [Vapola, Simula & Kohonen, 1994] y control de
robots [Ritter, Martinetz & Schulten, 1992].
Una vez que la red neuronal ha determinado los patrones que representan el espacio de los
datos de entrada, la red debe ponerse operativa. En el caso que la red funcione como clasificador,
deberá determinar si el dato de entrada pertenece a un patrón u otro sabiendo que aquella neurona
que se encuentre a la mínima distancia será la que más probabilidad tenga de representar a dicho
dato. Sin embargo, sería erróneo pensar que el dato ingresado corresponde cien por ciento al patrón
más cercano, debido a que el espacio total se ha representado basado en datos experimentales
también.
Por lo tanto sería más certero asignar una cierta probabilidad al dato ingresado que pertenezca
a cada uno de los patrones. Para ello Grabec y Mandelj introdujeron el concepto de predicción de un
campo basado en los patrones que lo representan al ingresar un nuevo dato [Grabec & Mandelj,
1998]. A continuación se presentan las características más importante del mismo, que luego
servirán para ser aplicadas en la solución que se presenta en el capítulo 4.
Grabec y Mandelj utilizan en su trabajo la función básica que puede determinar que tan
“parecido” es un dato de entrada X a cada uno de los patrones de la red:
− X −Qi
e
vi = N
∑e
− X −Q j
j =1
La ventaja de esta ecuación es que se define un nuevo patrón v, basado en los patrones
existentes Q resultantes del entrenamiento de la red y luego puede usarse para corregir los patrones
existentes convirtiéndose en un aprendizaje adaptativo ya que incorpora nueva información para
representar el campo.
En nuestro trabajo utilizaremos esta ecuación para codificar cada llamada e incorporarla al
perfil del usuario. sumando nueva información sobre el consumo del mismo.
La selección de información que debe ser analizada y luego procesada es la base de un buen
sistema de detección de fraude [ASPeCT, 1997]. Una vez que se definieron los escenarios posibles
de fraude (ver 1.1.1 Clasificación de Tipos de Fraude), se identifican los indicadores típicos para
detectarlos. Estos indicadores pueden ser clasificados en dos grupos diferentes [Moreau & Preneel,
1997]:
• Por tipo:
• Por uso:
- Indicadores primarios: son aquellos que por sí solos pueden ser empleados en la
detección de fraude. Ejemplo: total de minutos de llamadas internacionales
realizadas.
- Indicadores secundarios: son aquellos que proveen información muy útil, pero no
son suficientes para detectar fraude por sí solos. Ejemplo: frecuencia de llamadas a
un determinado destino.
- Indicadores terciarios: proveen información adicional que combinada con los
indicadores anteriores pueden ser muy útiles. Ejemplo: duración promedio de las
llamadas que realiza un determinado usuario.
Toda la información necesaria para medir los diferentes indicadores se encuentra en los
CDR’s, pero los fraudes más sofisticados no son detectables utilizando un único CDR. Para detectar
tales fraudes es necesario investigar el consumo absoluto del usuario (análisis absoluto) y también
los cambios en el comportamiento del mismo (análisis diferencial). La información del
comportamiento de un usuario se analiza en dos períodos de tiempo o “ventanas” [Burge & Taylor,
1997]: una ventana referida al periodo reciente (CUP) y otra al periodo histórico (UPH); estos
perfiles contienen información condensada en lugar de todo el detalle de los CDR’s. Estos
indicadores son utilizados por las herramientas que se han desarrollado hasta el momento, cada una
con un enfoque diferente, con sus ventajas y desventajas; cada una de ellas construye, codifica y
procesa de manera diferente los perfiles CUP y UPH.
Describiremos en el marco del “Estado del Arte” varios de estos enfoques indicando sus
ventajas y desventajas, para luego explicar por qué la alternativa que se diseñó como solución es
mejor en casos en los que no se tiene demasiada información a priori.
En esta sección se presentarán otras soluciones que se han desarrollado en el marco del uso de
la inteligencia artificial para la detección de fraude.
Para poder construir los perfiles de usuario y que luego se pueda detectar fraude es necesario
que los analistas ajusten los parámetros o ingresen valores específicos de umbrales que puedan
emitir alarmas cuando son superados. Pero si estas reglas son estáticas o deben ser determinadas
manualmente, esto resulta totalmente improductivo; además, los tipos de fraude evolucionan
constantemente y por lo tanto son dinámicos [Sundaram, 1996]. Debido a esta realidad, es necesario
que el sistema de fraude se adapte fácilmente a las nuevas condiciones que se presentan
constantemente. Utilizando técnicas de minería de datos es posible conseguir la adaptabilidad
necesaria.
A continuación se presenta en la figura 2.9 un gráfico que describe el enfoque por reglas que
han implementado Fawcett y Provost
Aprendizaje y selección de
reglas
Reglas
Plantillas
Construcción de monitores de
monitores
CDR's
Monitores
M1 M2 Mn de
perfiles
Entrenamiento y
clasificación
En este enfoque, el sistema aprende primero las reglas que le servirán como indicadores de
fraude. Luego utiliza estas reglas, a través de unas plantillas para crear los perfiles de monitores (M1
a Mn). Estos monitores clasifican el comportamiento típico de cada usuario con respecto a una de
las reglas definidas, que en realidad significa cuán lejos esta cada uno los usuarios de su
comportamiento usual. Finalmente, el sistema aprende a ponderar las salidas de los monitores para
maximizar la efectividad del detector de fraude.
La primer etapa del aprendizaje de reglas se realiza en dos pasos: 1) las reglas se generan
inicialmente localmente basadas en diferencias entre usos normales y usos fraudulentos de cada
usuario. 2) luego son combinadas y se seleccionan si las mismas son válidas para un gran número
de usuarios. Esto lo debe realizar analizando todas las reglas que se generaron para cada uno de los
usuarios. Las reglas que se aprenden caracterizan cambios que ocurren comúnmente cuando se
clona un teléfono celular. Pero como ya se ha citado, estas reglas no son universales. Por lo tanto el
sistema debe saber cuándo aplicar las reglas a los usuarios que se están analizando y cuándo no
hacerlo; esto se logra convirtiendo las reglas en monitores de perfiles [Davis & Goyal, 1993]. Los
monitores de perfiles son creados por el constructor de monitores, que utiliza una serie de plantillas;
las mismas se instancian por un conjunto de reglas de condición; con estas reglas y estas plantillas
se genera un monitor.
En la siguiente etapa, el sistema aprende como combinar la evidencia de cada uno de los
monitores generados en el paso previo; este módulo tiene como datos de entrada el consumo del
usuario y el resultado de los monitores. Con toda la información recolectada, se le puede “enseñar”
al sistema casos de fraude con determinado consumo y determinados valores de los monitores para
que produzca una alarma cuando encuentra casos como los aprendidos; y también es necesario
presentarle a esta red casos de uso normales (no fraudulentos) para que la misma identifique
comportamientos dentro de los parámetros esperados.
Este enfoque tiene una gran ventaja en su capacidad constante de aprender diferentes
escenarios de fraude por clonación basado en la información de cada uno de los usuarios y no
generalizando reglas para todos ellos. Sin embrago, según lo que se describió, esta es una solución
bastante compleja que requiere mucho procesamiento y una cantidad muy grande de información
previa para que pueda comenzar a funcionar. Esta información incluye todo el consumo de los
usuarios, (por lo menos de un día) y lo que hace que sea más difícil de implementar, una serie de
casos fraudulentos para que los monitores se puedan construir con un grado de certeza tal que sirvan
luego para la detección del uso fraudulento. Además, es una herramienta que se enfoca
principalmente en el fraude por clonación, dejando de lado otros tipos de fraude tan importantes
como éste.
Las redes neuronales usualmente proveen las mejores soluciones en situaciones donde es
difícil establecer reglas definidas y rápidas y en las cuales los datos a analizar son complejos
[Seymour, 2000]. Mientras más complejos son los datos, mayor es la ventaja de utilizar redes
neuronales. También debido a su naturaleza aritmética, las redes neuronales son buenas procesando
grandes volúmenes de información [Seymour, 2000].
Las redes neuronales son particularmente aptas para construir sistemas adaptativos, es decir,
que aprenden de la experiencia [Hilera González & Martínez Hernando, 2000]. La habilidad de
responder a los cambios de comportamiento a lo largo del tiempo y procesar grandes volúmenes de
información, hacen que la detección de fraude sea una aplicación ideal para implementar con redes
neuronales [Moreau & Vandervalle, 1997; ASPeCT, 1997]. En este ámbito, el comportamiento de
los usuarios está siempre cambiando.
El motor de detección de fraude en esta arquitectura asocia a cada usuario (IMSI), un CUP y
un UPH. Aquí también se utiliza un CUR (Current User Record) que acumula información sobre los
CDR’s de un determinado lapso de tiempo, por ejemplo 1 día [ASPeCT, 1997]. Una vez que el
CUR tiene la información necesaria de las llamadas de un día, se actualiza el CUP a través de la
siguiente ecuación:
dónde:
Esta técnica evita tener que almacenar todos CDR’s del correspondiente usuario,
almacenando solamente en el CUP una proporción de la información del CUR y quitando parte de
la información más vieja del mismo a través del factor de adaptabilidad α.
De la misma manera, luego se actualiza el UPH con el CUP, obteniendo en dicho perfil
información sobre el consumo histórico del usuario.
DECISION
RED NEURONAL
Usuario
CDR's
El usuario realiza las llamadas y se generan los CDR’s; luego se construye el CUR con la
información de los mismos y se adapta el CUP y el UPH; con esta información se entrena a la red
neuronal para que devuelva los resultados esperados para dicha combinación de CUR, CUP y UPH.
En la etapa de régimen permanente (funcionamiento del motor de detección de fraude), a medida
que ingresan los CDR’s se van actualizando el CUR y CUP del usuario; luego ingresan para ser
analizados junto con el UPH y si la red no lanza ninguna alarma, se actualiza el UPH. La
información de los CUP y UPH se almacenan en una base de datos para ser recuperadas cada vez
que ingresan al sistema CDR’s con información de los usuarios correspondientes.
Este enfoque presenta una gran limitación en la necesidad de tener que ser constantemente
entrenado con nuevos casos de fraude que van apareciendo debido a que tiene dos etapas definidas:
una de entrenamiento y una de funcionamiento. En el caso de aparecer nuevos tipos de fraude será
necesario sacar de línea el sistema para que incorpore los nuevos casos; es decir que no aprovecha
el potencial de la naturaleza adaptativa del problema. Esta necesidad de tener casos de fraude a
priori también obliga a quienes lo quieran implementar que posean información previa de casos
existentes, cuando muchas veces no es posible obtenerla o no se conoce.
La solución que se propone en este trabajo utiliza redes neuronales no supervisadas para
construir los perfiles de usuario [Burge & Taylor, 1997]; en nuestro caso se utilizan redes SOM que
como resultado logran clasificar las millones de llamadas que se procesan en una cantidad
determinadas de prototipos que representan todo el espacio de las mismas. La frecuencia con la cual
un usuario realiza llamadas de cada prototipo corresponde a la representación de los perfiles CUP y
UPH. Una vez que ambos se actualizan, se comparan y se decide si la diferencia entre el consumo
reciente y el histórico es lo suficientemente grande como para emitir una alarma.
En los próximos capítulos se tratarán en detalle los problemas que surgen al tratar de diseñar e
implementar una solución de este tipo. Y luego se propone una solución a cada uno de los
problemas. Posteriormente se presentan los resultados experimentales y las conclusiones.
En la sección 3.1 se analiza de qué manera pueden ser representados el consumo actual e
histórico de cada usuario a través de la construcción de “perfiles de usuario” [Moreau & Preneel,
1996].
La mayoría de los indicadores de fraude no se analizan utilizando un único CDR; gran parte
de los fraudes pueden ser solo detectados utilizando una secuencia de los mismos [Taniguchi, Haft,
Hollmen & Tresp, 1998]. En un sistema de detección de fraude diferencial se necesita información
acerca de la historia sumado a muestras de su actividad más reciente; es decir un conjunto de
CDR’s con suficientes llamadas que puedan describir a un usuario. Un intento inicial podría ser
extractar y codificar la información de los CDR’s y almacenarla en un formato de registro
determinado [ASPeCT, 1997]. Se necesitarían dos tipos de registro inicialmente: uno que almacene
la información más reciente, al que llamaremos CUP (Current User Profile) y otro con la
información histórica al que llamaremos UPH (User Profile History) [Burge & Taylor, 1997]. Cada
vez que un nuevo CDR de un determinado usuario llega para ser procesado, la entrada más vieja del
registro UPH debería ser descartada y la más vieja del CUP debería ingresar al UPH. Entonces este
nuevo registro codificado, debería ingresar al CUP [Gosset & Hyland, 1999].
Esta información debe ser almacenada en una forma compacta y fácil de analizar luego por el
sistema de detección de fraude. Teniendo en cuenta la cantidad de información que contiene un
CDR es necesario encontrar una forma de “clasificar” estas llamadas en grupos o prototipos donde
cada una de éstas debe pertenecer a un único grupo. Es decir que aquí se nos plantean varias
cuestiones importantes que debemos resolver:
Cuestión 2: ¿Cuántos grupos o prototipos deben tener los registros CUP y UPH para tener la
información necesaria?
Cuestión 3: ¿Cómo se puede clasificar a las llamadas en los diferentes prototipos definidos?
Cuestión 4: ¿Cómo codificar las llamadas para que estas puedan “prototiparse”?
Una vez que se ha logrado construir una imagen codificada del consumo reciente e histórico
de cada usuario, es necesario, entonces encontrar la forma de analizar esta información para que
detecte alguna anomalía en el consumo y emita la alarma correspondiente. Es entonces que aquí se
plantea la pregunta más importante de este trabajo:
La performance en este tipo de sistemas es crítica [Seymour, 2000]; se debe tener en cuenta
que se procesarán millones de llamadas por día y que las mismas serán utilizadas para construir los
perfiles de cada uno de los usuarios de la compañía, que dependiendo del tamaño de la misma,
puede variar de cientos de miles a un par de millones [Frank, Hunt & Davey, 1999]. Es decir que la
cantidad de información a almacenar y la forma de acceder a la misma son puntos tan importantes
como el sistema de detección de fraude en sí [Fawcett & Provost , 1997]. También lo es la
velocidad de procesamiento, por la cantidad de información que debe analizarse. Un sistema de
detección de fraude que tarde días en analizar una poca cantidad de llamadas es totalmente obsoleto
y no cumple con los objetivos y tiempos de las compañías.
Habiendo analizado todos los problemas que se nos plantean, podemos hacer un resumen
gráfico de lo que debería ser el sistema de detección de fraude.
CDR's CLASIFICACIÓN y
CDR's MEDIACIÓN
codificados PROTOTIPADO
ANÁLISIS DE
ALARMA CUP y UPH
FRAUDE
almacenen los datos necesarios, los cuales deberán estar codificados y tener un formato conocido
para que el siguiente proceso los tome; el mismo se denomina mediación [ITS, 2000]. El proceso de
clasificación y prototipado es el responsable de tomar cada una de las llamadas, codificarla con la
ayuda de las redes neuronales y generar (o actualizar) los perfiles de usuario CUP y UPH. Una vez
que estos perfiles se han actualizado con la información de las llamadas recibidas, se realiza el
proceso de análisis de fraude por comparación de ambos perfiles; si el valor del parámetro elegido
para la comparación supera el umbral fijado, entonces el sistema emite la alarma; el proceso
completo se repite con cada llamada que ingresa.
4 SOLUCION PROPUESTA
En la sección 4.1 se define el formato de registro necesario. Es decir que se detalla la salida de
la mediación.
La sección 4.2 detalla la forma en que se construyen y se mantienen los perfiles de usuario
utilizando redes neuronales SOM.
La sección 4.3 define una distancia vectorial que sirve para determinar qué tan diferentes son
los perfiles CUP y UPH de un usuario.
La sección 4.4 describe una forma de procesar la información de manera de minimizar los
problemas de performance.
Para cerrar el capítulo, en la sección 4.5 se enumeran algunas limitaciones que tiene la
solución.
Para poder comenzar a procesar los CDR’s se debe crear un formato de registro (salida de la
mediación) con información que identifique al usuario (el IMSI es el dato acorde para dicho fin);
fecha de la llamada en un formato fijo que incluya cuatro dígitos para el año, dos dígitos para el mes
y dos dígitos para el día al que definiremos con la sigla AAAAMMDD; hora de la llamada en otro
formato fijo con 2 dígitos para la hora (00 a 23), 2 dígitos para los minutos y otros dos para los
segundos al que definiremos con la sigla HH24MISS; duración de la llamada en segundos en un
formato que utilice cinco dígitos con ceros a la izquierda si corresponde y tipo de llamada
clasificada en LOC (llamada local), NAT (llamada DDN o nacional) e INT (llamada DDI o
internacional); este formato de registro será el resultado del proceso de mediación. Con esta
información ya acotada a los datos necesarios, se pueden comenzar a resolver las siguientes y más
importantes cuestiones utilizando como datos de entrada la salida de la mediación.
La primera cuestión a resolver es determinar cómo construir los perfiles CUP y UPH; es
decir, que se debe determinar los patrones que compondrán cada uno de estos perfiles. Los patrones
deberán tener información del consumo del usuario, separando el consumo LOC, NAT e INT
respectivamente. Una forma de construir estos patrones es utilizando redes neuronales [ASPeCT,
1997] para discretizar el espacio de todas las llamadas de los usuarios, generando un espacio de n
patrones que representen el consumo de todos los usuarios y luego generando una distribución de
frecuencias por cada usuario en la cuál se represente qué probabilidad de hacer llamadas de ese
patrón tiene un usuario. En resumen, cuando se construya el perfil de usuario se estará
representando la distribución de frecuencia en la cuál un determinado usuario realiza un tipo de
llamada determinado, mostrando esta estructura de datos el patrón de consumo del mismo.
Las redes neuronales, entre otras ventajas, tienen la capacidad de clasificar la información en
determinados patrones [Hilera González & Martínez Hernando, 2000]; en especial, las redes SOM
(Self Organizing Map) pueden tomar esta información y construir estos patrones de manera no
supervisada por criterios de semejanza [Kohonen, 2000]. En nuestro caso, se pueden procesar todas
las llamadas realizadas por todos los usuarios para que las redes, según la cantidad que hay de cada
tipo genere los patrones que representen a todas ellas. Para evitar ruidos en los datos, se utilizan 3
redes neuronales que generen patrones para representar a las llamadas LOC, NAT e INT
respectivamente; el perfil de usuario se construye utilizando todos los patrones generados por las 3
redes. Los datos que se utilizan para representar un patrón son la hora de la llamada y la duración de
la misma; sabemos que si representamos en un eje cartesiano la hora de todas las llamadas y la
duración correspondiente, obtendremos un rectángulo prácticamente lleno de puntos. La idea es
obtener un gráfico en el que sólo aparezcan los puntos más representativos de todo el espacio en
cuestión; esa es la tarea de las redes neuronales. Este diseño de 3 redes neuronales permite, no
solamente detectar cambios de comportamiento sino que también representa de manera general el
comportamiento de todos los usuarios de la compañía; es decir, que visualizando los patrones
generados por cada una de las redes neuronales en un gráfico, podemos fácilmente obtener
conclusiones de cómo se comportan en general los usuarios de la compañía y basado en ello, tomar
decisiones del tipo comercial, agregando una funcionalidad más a la solución diseñada. En los
capítulos 5 y 6 se amplían y remarcan estos conceptos.
Una vez obtenidos los patrones que se utilizarán para representar los perfiles de usuario, es
necesario comenzar a llenar de información a los mismos; el procedimiento consiste en tomar la
llamada a analizar, codificarla y que la red neuronal determine a qué patrón se parece más la misma;
una vez obtenida esta información, se debe adaptar el perfil de usuario CUP de manera que la
distribución de frecuencia muestre que el usuario tiene ahora una probabilidad mayor de realizar
este tipo de llamadas. Sabiendo que el perfil de usuario tiene K patrones que se componen de L
patrones LOC, N patrones NAT e I patrones INT, podemos construir un perfil representativo de la
llamada procesada y luego adaptar el perfil CUP con dicha llamada; si la llamada es LOC, los N
patrones NAT y los I patrones INT tendrán una distribución de frecuencia igual a 0, y los K
patrones LOC tendrán una distribución de frecuencia dada por la ecuación de predicción de campos
estocásticos en redes SOM [Grabec & Mandelj, 1998]:
− X −Qi
e
vi = L
∑e
− X −Q j
j =1
dónde:
Nótese que:
∑v
j =1
j = 1.
Vi = vi, con 1 ≤ i ≤ L
Vi = 0, con L+1 ≤ i ≤ K, cuando la llamada es LOC.
Ahora que tenemos el vector V, podemos adaptar el vector CUP con la información de la
llamada procesada:
CUPi = α INT CUPi − (1 − α INT )Vi , con 1 ≤ i ≤ K, cuando la llamada es INT, dónde
Una vez adaptado el perfil CUP, se compara con el perfil UPH y se determina si ha habido un
cambio significativo de comportamiento (motor de detección de cambios de comportamiento); una
vez realizada esta tarea, se adapta el UPH con la información del CUP solamente si la cantidad de
llamadas necesarias para cambiar el patrón histórico se han procesado:
dónde:
( )
K
H =∑
2
CUPi − UPH i
i =1
La Cuestión 5 queda representada en esta ecuación que define la forma de detectar las
diferencias entre el comportamiento reciente y el histórico utilizándose para lanzar las alarmas si
correspondiese.
La solución propuesta se enfoca, tal cual se describe, en el análisis diferencial del consumo
del usuario. Un caso que no sería detectado es aquel en el cual el usuario siempre realiza muchas
llamadas del mismo tipo con un alto consumo, ya que su patrón de comportamiento nunca
cambiaría. Es por eso que siempre se deben combinar varias soluciones para tener un sistema de
detección de fraude que explore los diferentes tipos de fraude. En este caso, debe considerarse el
análisis absoluto como una solución posible.
La otra restricción se centra en que los patrones son estáticos, con lo que si la forma de
consumo de los usuarios de la empresa cambia completamente, será necesario re-entrenar a las
redes neuronales para que determinen nuevos patrones que representen el espacio total de llamadas
y volver a construir los perfiles CUP y UPH a partir de las nuevas distribuciones.
5 PRUEBA EXPERIMENTAL
En este capítulo se presentan los resultados obtenidos en los experimentos realizados que son
de fundamental importancia para poder sacar conclusiones.
La sección 5.1 detalla el conjunto de datos que se utilizaron para el entrenamiento de las redes
neuronales y la construcción de perfiles de usuarios.
La sección 5.3 muestra cómo se desarrollaron los experimentos cuyos resultados se presentan
en la sección 5.4.
5.1.1 Codificación de las llamadas para ser procesadas por las redes
neuronales
Tipo de llamada: Define a que red neuronal pertenecen (LOC: llamadas locales; NAT:
llamadas DDN; INT: llamadas DDI)
Duración de la llamada: Redondeada a minutos completos. Para ser procesada por las
redes SOM, se normalizó el valor en un intervalo entre 0 y 1, tomando como valor
máximo 30 minutos (la mayoría de llamadas que se realizan en telefonía celular tienen
una duración menor a 30 minutos, las de mayor duración se toman como si fueran de
30 minutos).
Por lo tanto la dimensión de cada neurona de las redes tiene dos valores: Hora de la llamada
normalizada entre 0 y 1; duración de la llamada normalizada entre 0 y 1.
Para el entrenamiento de las redes neuronales que definieron los patrones utilizados en la
construcción de los perfiles de usuario se utilizaron llamadas reales de más de un día realizadas por
TODOS LOS USUARIOS de la red. Esto permitió que los patrones que formaran las redes tuvieran
información de todo el espacio de tipo llamadas existentes.
detectado “la tendencia” al alto consumo en un tiempo inferior al transcurrido hasta que la empresa
determinó que eran casos a analizar.
Se procesaron todas las llamadas de 60 usuarios desde Enero 2003 a Marzo 2003 inclusive
(más de 100,000 llamadas) con las cuales se fueron construyendo los perfiles de cada uno (CUP y
UPH) y se detectaron las alarmas correspondientes.
Una vez que se obtienen las alarmas de cambio de comportamiento debe analizarse
específicamente el detalle de llamadas del usuario y determinar si realmente hubo cambios en su
comportamiento con la llamada detectada por la prueba. Para la construcción de los perfiles de
usuario es necesario definir cuántos patrones se usarán para discretizar el espacio de llamadas. Para
la detección de las alarmas, es necesario definir la sensibilidad del sistema.
- Dimensión de la red neuronal para clasificar llamadas locales (NL x ML): Define la
dimensión de la matriz que describe el mapa auto organizable (SOM) para clasificar
las llamadas locales.
- Dimensión de la red neuronal para clasificar llamadas nacionales (NN x MN):
Define la dimensión de la matriz que describe el mapa auto organizable (SOM) para
clasificar las llamadas nacionales.
- Dimensión de la red neuronal para clasificar llamadas internacionales (NI x MI):
Define la dimensión de la matriz que describe el mapa auto organizable (SOM) para
clasificar las llamadas internacionales.
- Tasa de aprendizaje estática (α): Es la tasa estática de aprendizaje para adaptar cada
una de las neuronas (patrones) de la red. El valor de α se determina
experimentalmente y los valores, en general más adecuados, oscilan entre 0,6 y 0,9.
Si los mismos son menores, el aprendizaje será muy sensible y cada nueva llamada
que ingresa a la red modificará los valores de los patrones muy rápidamente,
perdiéndose la información aprendida con las llamadas anteriores.
- Distancia máxima de neurona “vecina” afectada (DVMAX): Para definir la regla de
actualización en el entrenamiento de las redes SOM, es necesario definir una función
de vecindario que en el presente trabajo se hizo dependiente de la variable DVMAX).
mi (t + 1) = mi (t ) +hci (t )[ x(t ) − mi (t )]
dónde:
DVMAX − d (t )
hci (t ) = α (t )
DVMAX
dónde:
- Frecuencia de actualización del UPH (f): Define cada cuánto tiempo se actualizará
el perfil UPH. Puede ser con cada llamada, cada x horas o cada x días.
- Cantidad mínima de llamadas antes de comparar perfiles (QL): Antes de poder
comparar los perfiles CUP y UPH para determinar si hubo o no cambios en el
comportamiento es necesario tener perfiles de usuario con la suficiente información
que describa correctamente su patrón de consumo. Es decir, que las QL llamadas
iniciales del usuario solo servirán para construir su perfil y no se buscarán alarmas
hasta la llamada QL + 1.
- Sensibilidad del sistema - Umbral Hellinger (H): Es una medida de distancia del tipo
vectorial cuyo valor indica la diferencia entre dos distribuciones de frecuencia
[Burge & Taylor, 1997]. La distancia siempre será un valor entre cero y dos donde
cero es para distribuciones iguales y dos representa ortogonalidad. El valor de H
determinará qué tan diferentes deben ser las distribuciones de frecuencia CUP y UPH
para lanzar una alarma. Variando este valor, habrá más o menos alarmas.
( )
K
H =∑
2
CUPi − UPH i
i =1
Una vez definidos todos estos valores y corridos los experimentos se analizan una por una las
alarmas lanzadas por el sistema, verificando en el detalle de llamadas de cada usuario y
determinando si realmente hubo severos cambios en el comportamiento de los mismos.
- Actualización del perfil UPH con cada llamada (f = 1 llamada) y bajo umbral Hellinger
(H) para el lanzamiento de alarmas de cambio de comportamiento.
- Actualización del perfil UPH una vez por día (f = 1 día) y alto umbral Hellinger (H).
Se construyeron 3 redes neuronales Self Organizing Map (SOM) para la generación de los
patrones para las llamadas locales (LOC), DDN (NAT) y DDI (INT) respectivamente. Cada una de
las redes fue entrenada con una cantidad de llamadas representativa del consumo de los usuarios de
la empresa que los mismos realizaron durante unos días en todos los horarios. Las llamadas se
presentaron a las redes de manera desordenada de manera que los patrones que se generaron no
fueran solamente representativos de los horarios y duraciones de las últimas llamadas.
El resultado de esta experiencia definió los patrones para construir los perfiles de los usuarios.
Los patrones se componen de la hora de la llamada y la duración en minutos de la misma. Estos
patrones lograron discretizar el espacio compuesto por todos los tipos de llamada realizadas por
cualquier usuario en una cantidad fija representativa del mismo.
Una vez obtenidos los patrones que definen el espacio de todas las llamadas, se realizaron las
pruebas de construcción de los perfiles de usuario a través del desarrollo de una distribución de
frecuencias de cada uno de los patrones para cada perfil (CUP y UPH) y la correspondiente
detección de alarmas. El proceso se basó en presentar al sistema las llamadas realizadas en un
período de 3 meses por los usuarios reportados como “alto consumo”. Con cada llamada se
actualizaba el perfil CUP del usuario, se comparaba con el perfil UPH obteniendo la distancia
Hellinger (H) entre ambos, y si la misma superaba el umbral fijado, se lanzaba una alarma.
Dependiendo del parámetro de frecuencia de actualización del perfil UPH (f), se actualizaba el UPH
con el aporte del CUP según corresponda. Vale aclarar que el proceso de construcción y
actualización se hizo desde la primera llamada del usuario, en cambio la comparación y
Esta experiencia se realizó dos veces: la primera actualizando el UPH con cada llamada y por
consiguiente con un bajo umbral Hellinger (H) para la detección de alarmas debido a que la
diferencia que se pudiera presentar entre los perfiles CUP y UPH era muy pequeña actualizando el
perfil histórico con cada llamada, ya que el mismo tendía a ser igual al perfil actual. La segunda
experiencia se realizó actualizando el UPH una vez por día y un umbral Hellinger (H) alto para
detectar diferencias importantes que puedan ser consideradas como cambios de comportamiento.
Los valores utilizados para la generación de los perfiles fueron los siguientes:
Los valores utilizados para la construcción de perfiles y detección de alarmas fueron los
siguientes:
Experiencia 1:
Experiencia 2:
5.4 Resultados
En esta sección se presentan los resultados obtenidos luego del entrenamiento de las 3 redes
neuronales; es decir, que los resultados muestran cada uno de los patrones que las redes
“determinaron” como más representativos del espacio de todas las llamadas de todos los usuarios.
Se presentan 3 gráficos (uno por cada red) en el que se muestra los patrones generados. En el
eje X se muestra la hora de la llamada y en el eje Y la duración expresada en minutos. Cada uno de
los puntos representados corresponde a un patrón elegido por la red como representativo de la
muestra.
35
30
25
Duración
20
15
10
5
0
0 4 8 12 16 20 24
Hora
Se observa en el gráfico 5.1 los 144 patrones generados luego del entrenamiento de la red
neuronal de llamadas locales. A simple vista se puede notar que hay una concentración mayor de
patrones en la banda horaria de las 8 hs. a las 20 hs y una duración entre 0 y 5 minutos. Esto denota
que la mayoría de las llamadas locales realizadas por los clientes de esta empresa ocurren en estos
horarios con los promedios de duración indicados.
35
30
25
Duración
20
15
10
5
0
0 4 8 12 16 20 24
Hora
Se observa en el gráfico 5.2 los 64 patrones generados luego del entrenamiento de la red
neuronal de llamadas nacionales; aquí también se observa una concentración de patrones, pero más
desplazada hacia la banda horaria de las 15 a las 22 con duraciones que oscilan entre los 0 y 7
minutos; también se observa que prácticamente no hay patrones generados para la madrugada, con
lo cual se puede concluir que la mayoría de los usuarios de la empresa analizada no realizan
llamadas DDN en horas muy tempranas.
35
30
25
Duración
20
15
10
5
0
0 4 8 12 16 20 24
Hora
Se observa en el gráfico 5.3 los 36 patrones generados luego del entrenamiento de la red
neuronal de llamadas internacionales; aquí la distribución es un poco más aleatoria, pero la duración
de las llamadas “elegidas” como patrones tienden a tener una duración mayor (entre 7 y 10
minutos).
También se presentan a modo informativo las matrices U-MATRIX que dan una idea de
cómo se han formado zonas que representan distintas categorías entre los grupos de llamadas, es
decir la configuración del mapa. Los puntos negros indican una separación de zonas y los colores
parecidos implican una agrupación de varios patrones en una misma zona.
La figura 5.1 muestra las zonas generadas para los patrones LOC; los puntos más pequeños
representan a cada neurona; los puntos más grandes representan la distancia Euclídea hacia cada
una de sus neuronas vecinas (patrones); mientras más oscuro es el punto, más lejos se encuentra el
patrón vecino.
La figura 5.2 muestra la U-MATRIX de la red neuronal que clasificó las llamadas nacionales
(NAT). Se observa aquí claramente, a diferencia del primer gráfico de las llamadas LOC, que se
han generado menos zonas debido a la menor cantidad de neuronas utilizadas.
Por último se observa en la figura 5.3 el mapa correspondiente a la red neuronal INT. Que
también contiene varias zonas grises y menor cantidad de separaciones que las llamadas LOC.
En esta sección se presentan los resultados obtenidos luego de la construcción de los perfiles y
la detección de las correspondientes alarmas para cada una de las 2 experiencias realizadas. Se
muestran los gráficos 5.4, 5.5, 5.6 y 5.7 con una descripción de los perfiles CUP y UPH de uno
algunos casos en el momento que se lanzó una alarma.
En el eje X se presentan los 244 patrones (144 LOC, 64 NAT y 36 INT) y en el eje Y la
distribución de frecuencias de cada uno de los patrones para el usuario analizado en el momento que
fue lanzada la alarma (la sumatoria de todas está normalizada a 1).
También se realizará una explicación general del por qué de alarmas lanzadas por el sistema y
un análisis de la confiabilidad y veracidad de las mismas basadas en el detalle de llamadas de cada
usuario.
Experiencia 1 (Actualización UPH con cada llamada, alta sensibilidad con bajo Umbral
Hellinger):
0.016
0.014
0.012
Frecuencia
0.01
0.008
0.006
0.004
0.002
0
1
15
29
43
57
71
85
99
113
127
141
155
169
183
197
211
225
239
PATRONES
(1-144: LOC, 145-208: NAT, 209-244: INT)
El gráfico 5.4 muestra el CUP de un usuario en el momento que se lanzó una alarma. Se
puede observar en el mismo que la distribución de frecuencias indica una mayor tendencia a realizar
llamadas DDN (patrones 145 a 208).
0.01
0.008
Frecuencia
0.006
0.004
0.002
0
1
15
29
43
57
71
85
99
113
127
141
155
169
183
197
211
225
239
PATRONES
(1-144: LOC, 145-208: NAT, 209-244: INT)
El gráfico 5.5 muestra el UPH del mismo usuario en el momento que se lanzó la alarma. Se
puede observar en el mismo que la distribución de frecuencias indica una mayor tendencia a realizar
llamadas locales (patrones 1 a 144).
El total de alarmas lanzadas luego de analizar los 60 usuarios fue de 88, de las cuales 33
corresponden a diferentes casos. Esto se debe a que una vez lanzada una alarma para un usuario, las
siguientes llamadas del mismo vuelven a lanzar alarmas hasta tanto el UPH no se adapta
definitivamente al cambio de comportamiento. La mayoría de las mismas siguen el patrón del caso
que se muestra en los gráficos 5.4 y 5.5 en el cual una llamada diferente al patrón normal de
comportamiento alcanza para que el sistema defina al usuario como sospechoso.
Experiencia 2 (Actualización UPH una vez por día, moderada sensibilidad con Umbral
Hellinger):
0.01
0.008
Frecuencia
0.006
0.004
0.002
0
1
15
29
43
57
71
85
99
113
127
141
155
169
183
197
211
225
239
PATRONES
(1-144: LOC, 145-208: NAT, 209-244: INT)
El gráfico 5.6 muestra el CUP de un usuario en el momento que se lanzó una alarma. Se
puede observar en el mismo que la distribución de frecuencias indica una tendencia a realizar
llamadas locales (patrones 1 a 144) e internacionales (patrones 209 a 244).
0.04
0.035
0.03
Frecuencia
0.025
0.02
0.015
0.01
0.005
0
1
15
29
43
57
71
85
99
113
127
141
155
169
183
197
211
225
239
PATRONES
(1-144: LOC, 145-208: NAT, 209-244: INT)
El gráfico 5.7 muestra el UPH del mismo usuario en el momento que se lanzó la alarma; se
puede observar en el mismo que la distribución de frecuencias indica una tendencia a realizar
llamadas internacionales solamente (patrones 209 a 244).
El total de alarmas lanzadas luego de analizar los 60 usuarios fue de 64, de las cuales 14
corresponden a diferentes casos. Esto se debe a que una vez lanzada una alarma para un usuario, las
siguientes llamadas del mismo vuelven a lanzar alarmas hasta tanto el UPH no se adapta
definitivamente al cambio de comportamiento; aquí este fenómeno se acentúa debido a que recién
cuando se procesan llamadas del día siguiente se actualiza el UPH. La mayoría de las mismas
siguen el patrón del caso que muestran los gráficos 5.6 y 5.7 en el cual debe haber varias llamadas
fuera del patrón de comportamiento para que el sistema encuentre al usuario sospechoso. Esto es
mucho más satisfactorio que lo obtenido en la experiencia 1 en la cual la alta sensibilidad mostraba
usuarios como sospechosos simplemente por el hecho de haber realizado una sola llamada
diferente.
Se presentan en esta sección una breve conclusión de los resultados obtenidos. En el capítulo
6 se analizará en detalle cada una de las cuestiones planteadas con su correspondiente respuesta.
Los resultados obtenidos fueron muy satisfactorios en el sentido que pudieron determinar
cambios de comportamiento en los usuarios analizados. Si bien el cambio de comportamiento no
implica necesariamente actividad fraudulenta, logra acotar la investigación de los analistas de
fraude a este grupo de usuarios. Utilizando luego otro tipo de técnicas se puede llegar a obtener con
un alto grado de certeza usuarios que estén utilizando sus teléfonos celulares “deslealmente”.
Además, las experiencias han servido para encontrar usuarios que efectivamente cambiaron su
comportamiento, pero de manera inversa. Es decir que eran usuarios con alto consumo INT y luego
comenzaron a realizar llamadas locales. Comercialmente puede ser un dato interesante evaluar a
este tipo de usuarios ya que por algún motivo en particular decidieron no utilizar más su teléfono
celular para realizar llamadas internacionales y puede servir para sacar conclusiones y crear nuevos
planes de tarifa basado en estas situaciones.
También se desprende de las experiencias realizadas que el análisis diferencial provee mucha
más información que el análisis absoluto, el cual solo puede detectar picos de consumo y no puede
describir al usuario en cuestión.
Como última conclusión se puede decir que las redes neuronales han demostrado ser una
excelente herramienta para la clasificación de las llamadas y construcción de perfiles de usuario ya
que representaron fielmente y eficazmente el comportamiento de los mismos.
6 CONCLUSIONES
La solución propuesta, no solo ha demostrado ser viable y posible sino que además tiene
aplicaciones adicionales no planteadas a priori, tales como la detección de cambios de
comportamiento en los usuarios hacia modalidades que pueden hacer replantear los planes de tarifa
definidos en la empresa u ofrecerle algún otro tipo de servicio al cliente.
Si bien esta solución tiene las restricciones descriptas en el capítulo 4, se debe destacar que no
hay otra opción viable en una empresa que desea comenzar a detectar fraude por suscripción y no
tiene información adicional previa con ejemplos reales de fraude. Dicho escenario fue el que se
tomó como punto de partida en este trabajo.
Cuestión 2: ¿Cuántos grupos o prototipos deben tener los registros CUP y UPH para tener la
información necesaria?
Experimentalmente se definió la estructura con 144 patrones LOC, 64 NAT y 32 INT que
mostró ser suficiente para describir el comportamiento de los usuarios tal cual se resolvió en la
Cuestión 1.
Cuestión 3: ¿Cómo se puede clasificar a las llamadas en los diferentes prototipos definidos?
Las redes neuronales SOM han probado ser excelentes clasificadoras de las llamadas. Si se
observan los gráficos presentados en la sección 5.4.1 y el análisis correspondiente de cada uno de
llos se podrá ver que el espacio de llamadas se logró discretizar en grupos completamente
representativos del consumo de los usuarios, teniendo en cuenta que los clientes de la empresa
analizada son en su mayoría empresas y no usuarios individuales (el mayor uso se encuentra en la
franja horaria laboral de 8 a 20hs. con duraciones de entre 0 y 7 minutos). Por lo tanto, una vez
definidos estos patrones, cada llamada que llegaba al sistema era muy fácilmente clasificada en el
patrón que más se le parecía y “adaptada” al perfil a través de la ecuación de Grabec para predecir
campos estocásticos en redes SOM; esto agregaba información a los perfiles, cambiando la
distribución de frecuencia según correspondiese.
Cuestión 4: ¿Cómo codificar las llamadas para que estas puedan “prototiparse”?
La información que se utilizó de las llamadas fueron el tipo de llamada, la hora y la duración.
La primer dimensión determinó qué red neuronal se utilizaba para clasificarla y las dos siguientes
definieron la entrada a la red neuronal correspondiente; se puede decir que la información
presentada y codificada (normalizada a valores entre 0 y 1) fue suficiente para construir los perfiles
y definir los patrones correspondientes.
Referencias
Alander J., Frisk M., 1991. Process error detection using self-organizing feature maps. Artificial
Neural Networks, volume II, pp 1229-1232. Amsterdam, Netherlands.
Alhoniemi E., 1995. Monitoring of complex processes using the self-organizing map. Master’s
thesis, Helsinki University of Technology.
ASPeCT, 1997. Fraud Management tools: First Prototype, Deliverable D08. 31 páginas.
ASPeCT, 1997. Fraud management tool: evaluation report, Deliverable D13, 30 páginas.
ASPeCT, 1997. Fraud Detection Concepts: Final Report, Deliverable D18, 27 páginas.
Banzhaf W., 2000, Self organizing Systems. Dept. of Computer Science University of Dortmund
Dortmund Germany Informatik Centrum Dortmund ICD, Dortmund Germany.
Booch G., Jacobson I. , Rumbaugh J., 2000, El lenguaje unificado de modelado. Addison-Wesley
Iberoa
Burge P., Shawe-Taylor J., 1996. Frameworks for Fraud Detection in Mobile Telecommunications
Networks, Department of Computer Science Royal Holloway, University of London.
Burge P., Shawe-Taylor J., 1997. Detecting Cellular Fraud Using Adaptive Prototypes, Department
of Computer Science Royal Holloway, University of London.
Burge P., Shawe-Taylor J., 1997. Fraud Detection and Management in Mobile Telecommunications
networks, Department of Computer Science Royal Holloway, University of London.
Vodafone, England. Siemens A. G. Proceedings of the 2nd European Conference on
Security and Detection, IEE Conference publication 437, pp. 91-96, London
Cahill M., Labert D., Pinheiro J, 2001. Detecting Fraud in the Real World.
http://cm.bell-labs.com/cm/ms/departments/sia/doc/hmds.pdf
Calhoun G., 1988. Digital Celluar Radio. Norwood, MA. Artech House.
Cumming S., 1993. Neural Networks for monitoring of engine condition data. Neural Computing &
Applications, pp. 96-102.
Essenreiter R., Treitel S., 1999. Identification and classification of multiple reflections with self-
organizing maps. Geophysical Institute, University of Karlsruhe, Germany.
Falconer D., Adachi F., Gudmundson B., 1995. Time Division Multiple Access Methods for
Wireless Personal Communications. IEEE Communications Magazine, pp. 50-57.
Farley T., 2001. Digital Wireless Basics. Sitio con información sobre telefonía celular
http://www.privateline.com/PCS/PCS.htm
Fawcett T., Provost F. 1997. Adaptive Fraud Detection, NYNEX Science and Technology.
Frank R. J., Hunt S. P., Davey N., 1999. Applications of Neural Networks to Telecommunications
Systems, Department of Computer Science, University of Hertfordshire.
Gosset P., Hyland M., 1999. Classification, Detection and Prosecution of Fraud on Mobile
Networks. http://www.esat.kuleuven.ac.be/cosic/aspect/papers/mobsummit.doc
Grabec I., Mandelj S., 1998. Prediction of Stochastic Fields by RBFNN. IEEE Word Congres on
Computational Intelligence WCCI'98, Anchorage, Alaska.
Grosser H., Britos P., Sicre J., Servetto C., García Martínez R., Perichinsky G., 2003. Detección de
fraude en telefonía celular usando redes neuronales. Proceedings IX Congreso
Argentino de Ciencias de la Computación. Universidad Nacional de La Plata.
Hollmen J, 1996. Process Modeling using the Self-Organizing Map, Helsinki University of
Technology Department of Computer Science.
Hollmén J. 2000, User profiling and classification for fraud detection in mobile communications
network, Helsinki University of Technology Department of Computer Science and
Engineering Laboratory of Computer and Information Science.
Hollmen J., Tresp V., 1998. Call-based Fraud Detection in Mobile Communication Networks using
a Hierarchical Regime-Switching Model, Helsinki University of Technology
Department of Computer Science and Engineering Laboratory of Computer and
Information Science. Siemens A. G., Corporate Technology.
Kohonen , T., 2000, A Look into the Self-Organizing Maps. Helsinki University of Technology
Neural Networks Research Centre.
Kunkle D., 2001. Self-organizing Computation and Information Systems: Ant Systems and
Algorithms. Computer Science Dept.College of Computing and Information
SciencesRochester Institute of TechnologyRochester, NY.
Moreau Y., Vandewalle J., 1997. Fraud Detection in Mobile Communications using Supervised
Neural Networks, Departement Elektrotechniek Katholieke Universiteit Leuven.
Moreau Y., Vandewalle J., 1997. Fraud Detection in Mobile Communications using Supervised
Neural Networks: A First Prototype, Departement Elektrotechniek Katholieke
Universiteit Leuven.
Moreau Y, Preneel B, Burge P., Shawe-Taylor J, 1996. Novel Techniques for Fraud Detection in
Mobile Telecommunication Networks.
Noll M., 1999. Introduction to Telephones and Telephone Systems. Artech House
Telecommunications Library.
Ritter H., Martinetz T., Schulten K., 1992. Neural Computation and Self-Organizing Maps.
Addison-Wesley Publishing Company.
Seymour B., 2000, How Neural NetworkTechnology Can Tackle the Growing Telecom Fraud
Problem.
http://www.chi-publishing.com/portal/backissues/pdfs/ISB_2000/ISB0503/ISB0503BS.pdf
Taner M., 1997. Kohonen’s Self Organizing Networks with “Conscience”. Rock Solid Images.
http://www.rocksolidimages.com/pdf/kohonen.pdf
Taniguchi M., Haft M., Hollmén J., Volker Tresp, 1998. Fraud Detection In Communications
Networks Using Neural And Probabilistic Methods.
http://citeseer.nj.nec.com/taniguchi98fraud.html
Vapola M., Simula O., Kohonen T., 1994. Representation and identification of fault conditions of
an anaesthesia system by means of the Self-Organizing Map. Int. Conference on
Artificial Neural Networks, volume I, pp. 350-353, London, UK.
Vesanto J., Alhoniemi E., 2000, Clustering of the Self-Organizing Map. IEEE transactions on
neural networks, Vol 11, No. 3.
Weiss G., Eddy J., Weiss S, 1998. Intelligent Telecommunication technologies, Network &
Computing Services. AT & T Labs. AT & T Corporation. United States.
APENDICE A
A Teoría de telefonía celular
En la sección A.1 se realiza una introducción al tema para luego describir los principios
básicos en la sección A.2. Luego se comienzan a detallar algunas características de estas redes,
presentando en la sección A.3 la problemática de las múltiples rutas. En la sección A.4 se marcan
las diferencias existentes entre las diferentes implementaciones y en la sección A.5 se aborda el
problema del acceso múltiple a los canales de comunicación. La sección A.6 describe la forma de
operación de estas redes para luego poder describir en detalle la estructura de una red de telefonía
celular en la sección A.7. Finalmente, y a modo informativo, se presenta en la sección A.8 una tabla
con las diferentes implementaciones existentes.
A.1 Introducción
Inicialmente, el servicio de telefonía celular se orientó hacia el uso en los automóviles, pero
luego el mercado se fue extendiendo a cualquier persona con necesidad de comunicarse incluyendo
nuevas unidades que pueden llevarse en un bolsillo [Noll, 1999].
fuera de uso por el avance de la tecnología. Ejemplos de estas implementaciones son AMPS
(Advanced Mobile Phone Service) y GSM (Global System for Mobile); AMPS fue el primer
sistema implementado y era de tecnología analógica; en cambio, GSM, así como el resto de las
implementaciones actuales están basadas en tecnología digital. Los estándares, son un tema a tener
en cuenta en el campo de la telefonía celular, ya que cada país ha adoptado el enfoque más
conveniente que consideró, e inclusive, en varios países como Estados Unidos, se han
implementado varios de ellos [Calhoun, 1988].
Previo al desarrollo de la telefonía celular, el servicio telefónico móvil se obtenía de una única
fuente de transmisión que servía a un área geográfica específica. Este servicio solo podía ser
utilizado por un número pequeño de usuarios y era muy caro. Con el servicio de telefonía celular, se
utilizó un ancho de banda de 50 Mhz en la banda de radio de 800-900 Mhz para crear 832 canales
bidireccionales de radio. Solamente este cambio representó un crecimiento sustancial por sobre las
pocas docenas de canales previos disponibles en la telefonía móvil convencional. Sin embargo, la
cantidad de clientes que pueden utilizar el servicio se aumenta reutilizando canales en la misma área
geográfica. Esto se logra utilizando una cierta cantidad de radio transmisores de baja potencia, cada
uno cubriendo una zona pequeña o celda, dentro de una zona geográfica de servicio mucho mayor
[Noll, 1999]; la celda típica tiene un radio de entre 10 y 20 km; el transmisor de baja potencia
permite que el mismo canal pueda ser usado nuevamente en otra parte de la zona geográfica sin
causar interferencia. Por lo tanto, toda el área de cobertura, se divide en celdas, con cada celda
dando servicio a su transmisor; la configuración de las celdas se elige para minimizar la
interferencia causada por la reutilización de canales, de aquí el nombre de telefonía celular [Noll,
1999]. Usualmente, se agrupan 7 celdas que forman una clase o cluster y esta configuración se
repite a lo largo de toda el área de cobertura.
Tal como se observa en la figura A.1, las celdas se representan como hexágonos; la forma real
de las mismas varía dependiendo del terreno y la propagación de radio. Las celdas que dan servicio
a una zona con muchos usuarios generalmente utilizan (alocan) más canales. Estos canales,
entonces, son reusados en clusters adyacentes. Si se congestiona la red, las celdas pueden dividirse
aún más en celdas más pequeñas utilizando transmisores con menos poder. Por lo tanto, el sistema
puede crecer gradualmente para dar servicio a más usuarios a medida que la demanda aumenta,
agregando sitios de celdas adicionales con antenas y equipamiento de red.
Una característica clave del servicio de telefonía celular es la movilidad del usuario. Esta
movilidad claramente se extiende a través de diferentes celdas, y por lo tanto, existe la necesidad de
“seguir” al usuario y cambiar los canales de radio para las diferentes celdas. El seguimiento del
usuario, así como los cambios en los canales utilizados se denomina hand-off, y es una
característica fundamental del servicio. Para realizarlo se utiliza una técnica que envía la
información necesaria a cada una de las celdas involucradas llamada in-band signalling. Otra
característica esencial es la utilización de un canal compartido que se utiliza para transmitir la
cantidad de usuarios que están siendo llamadas en dicha celda; esta se denomina paginación
(paging).
En resumen, las características básicas de un servicio de telefonía celular son las siguientes
[Noll, 1999]:
La telefonía celular utiliza transmisiones de radio de alta frecuencia, que son particularmente
susceptibles a reflexiones que llevan a múltiples rutas desde la antena transmisora a la receptora;
algunas de estas señales arriban fuera de fase con respecto a la otra y se cancelan si corresponde.
Estas cancelaciones causan un rápido debilitamiento de la señal recibida mientras se avanza en el
camino; se utiliza procesamiento de señales para disminuir los efectos de este decaimiento de señal
“llenando” las porciones de la original.
Los efectos del rápido decaimiento de la señal también se puede reducir enviando la misma en
un número determinado de canales de frecuencia. De esta manera, si algún canal está decayendo,
seguramente será menos probable que ocurra lo mismo en los otros. Esta técnica es utilizada en la
implementación GSM. En las últimas implementaciones digitales se utilizan filtros para evitar este
problema.
Todos los sistemas de telefonía celular se basan en las características descriptas en las
secciones previas. Las diferencias en las implementaciones se centran en la manera en que los
usuarios comparten los canales de radio, como se codifica la señal (la voz), que banda de frecuencia
se utilizan, y como se modula la señal para transmitirse.
AMPS fue la primer solución en ser implementada y se basaba en la tecnología de los años
’80; se transmitía directamente la señal analógica en una banda base. Las nuevas implementaciones
digitales codifican la señal digitalmente; la codificación digital de la señal hace que sea necesario
tener un ancho de banda superior para que la misma se pueda enviar; es por eso que también se
utilizan técnicas de compresión.
Las bandas de frecuencias utilizadas para telefonía celular se centraban inicialmente en los
900 Mhz. Los nuevos sistemas operan a 1.900 Mhz. Las bandas se dividen en varios canales con
diferentes anchos, dependiendo de la implementación; la modulación de la señal se realiza a través
de una variedad de métodos. Debido a que todos los sistemas usan una cantidad separada de canales
de radio, los mismos se basan en una forma de acceso múltiple dividiendo las frecuencias o FDMA
(Frequency division multiple access).
En los viejos sistemas AMPS, una única señal de voz ocupaba en canal completo de radio.
Los nuevos sistemas intentan incrementar su capacidad total compartiendo un canal entre varias
señales de voz. Esto se logra a través del múltiple acceso dividiendo el tiempo o TDMA (Time
division multiple access) o dividiendo las señales a través de códigos – CDMA (Code division
multiple access), o también utilizando una combinación de ambas [Falconer, 1995].
El término multiplexado se refiere a combinar juntas varias señales separadas para compartir
un canal de comunicación. Existen varias formas de realizarlo; en FDMA, se le asigna a cada señal
correspondiente a una llamada telefónica su exclusiva banda de frecuencias durante el tiempo que
dure la conversación; en TDMA, la misma banda de frecuencias es compartida por todas las celdas,
con información propia de cada llamada enviada periódicamente; se aplica en un número separado
de bandas, en efecto, una combinación de FDMA y TDMA.
En la figura A.2 podemos observar las diferentes formar utilizar o acceder al canal de
comunicación. Los gráficos muestran el ancho de banda de frecuencias utilizado en función del
tiempo en cada una de las técnicas utilizadas; cada señal (llamada en curso) está numerada.
Las emisiones de radio emitidas utilizando una sectorización son más angostas, y por lo tanto
mucho más concentradas y menos susceptibles a la reflexión en múltiples caminos. La antena y
otros equipamientos situados en cada sitio de celdas constituyen una estación base; la manera en
que las señales son codificadas, combinadas y transmitidas determina la diferencia entre varias
implementaciones del servicio de telefonía celular.
En esta sección se presentan los elementos que componen una red de telefonía celular; la
explicación se dará mostrando en pasos como se procesa una llamada de una manera simplificada,
pero que servirá para entender globalmente la cuestión y algunos términos utilizados [Farley, 2001]:
Teléfono celular
BS AC
El HLR y el VLR trabajan juntos y permiten tanto la operación local como las llamadas
hechas por teléfonos extranjeros que se encuentran visitando la red local (Roamers); generalmente
ambos se encuentran en el mismo lugar físico. El HLR y el VLR son grandes bases de datos
mantenidas en servidores, generalmente UNIX; varios MSC’s pueden utilizar un único HLR. El
HLR almacena información sobre los usuarios locales; es la base de datos principal. La información
que incluye contiene el IMEI (International Mobile Equipment Identity) que identifica
unívocamente cada aparato, el número de teléfono, los servicios que tiene y el IMSI; también
incluye información sobre el último lugar donde se registró dicho móvil o teléfono (celda). El VLR
contiene información sobre los Roamers; se asegura que el usuario visitante es válido, trayendo la
información necesaria desde su HLR de origen para luego permitir el establecimiento de la llamada.
Temporalmente almacena el último lugar donde se registró el móvil e información sobre los
servicios que posee; esto permite que usuarios de otras redes puedan hacer uso de su teléfono en
otros países u otras redes. El AC (Authentification Center) es una base de datos segura que maneja
la autentificación y claves encriptadas; la autentificación verifica a cada usuario con una rutina de
validación compleja. El teléfono celular realiza un cálculo contra las claves y envía el resultado al
switch; solamente si el número recibido es el esperado, la llamada se establece. Entonces, almacena
toda la información necesaria para autentificar una llamada y luego encriptar la voz y los mensajes
de señalización. El EIR (Equipment Identity Register) es otra base de datos con la lista de equipos
robados, equipos que realizaron fraude y otros tantos a los cuales se les debe negar el servicio en el
caso que quieran establecer una llamada. Para finalizar, el OMC (Operation Maintenance Center) es
un centro de control; monitorea cada aspecto del sistema y trabaja las 24 hs.
Para finalizar con esta breve explicación sobre las redes de telefonía celular, se presenta una
tabla con las diferentes implementaciones existentes a modo informativo [Farley, 2001].
IMPLEMENTACIÓN DESCRIPCIÓN
AMPS Advanced Mobile Phone System. Desarrollada por Bell Labs en los años
‘70 y usada por primera vez comercialmente en los ‘80 en Estados
Unidos. Opera en la banda de 800 y 1.900 Mhz y es la implementación
analógica que más se ha desarrollado.
C-450 Instalada en Sudáfrica en los años ’80, Parecida a la implementación C-
Netz.
C-Netz Tecnología de loas años ’70 encontrada principalmente en Alemania y
Austria. Opera en la banda de 450 Mhz.
Comvik Lanzada en Suecia en 1981 y discontinuada en 1996.
N-AMPS Narrow-band Advanced Mobile Phone System. Desarrollada por
Motorola como una tecnología intermedia entre analógica y digital. Tiene
3 veces más capacidad que AMPS y opera en el rango de 800 Mhz. No se
utiliza más.
NMT450 Nordic Mobile Telephones/450, Desarrollada especialmente por Ericcson
y Nokia para servir los difíciles terrenos de los países nórdicos. Es la
primer red de telefonía celular multinacional. Opera a 450 Mhz
NMT900 Nordic Mobile Telephones/900, Corresponde a la actualización a 900
Mhz de la implementación 450 que permite mayor capacidad.
NMT-F Versión francesa de NMT900,
NTT Nippon Telegraph and Telephone. Es el viejo estándar japonés. Una
versión de mayor capacidad se denomina HICAP.
RC2000 Radiocom 2000, Sistema francés lanzado en 1985.
TACS Total Access Communications System. Desarrollado por Motorola. Es
similar a AMPS. Se usó por primera vez en el Reino Unido en 1985,
aunque en Japón se llamó JTAC. Opera en el rango de los 900 Mhz.
IMPLEMENTACIÓN DESCRIPCIÓN
CDMA Code Division Multiple Access. IS-95. Desarrollada por Qualcomm. Se
caracteriza por una alta capacidad y radio pequeño de celdas. Usa las
mismas bandas de frecuencia que AMPS y es compatible con la operación
de AMPS. Las redes CDMA están hoy en día operativas y existen
implementaciones de las mismas en Argentina.
IMPLEMENTACIÓN DESCRIPCIÓN
CDPD Cellular Digital Packet Data. Trabaja sobre las redes existentes para
proveer mayores velocidades de transferencia; utilizada en grandes
ciudades de Estados Unidos.
D-AMPS (IS-54, ahora Digital AMPS. Diseñada para utilizar los canales existentes más
convertida en IS-136) eficientemente. Utiliza TDMA en lugar de FDMA incrementando la
cantidad de usuarios de 1 a 3 por canal. Soporta la operación de AMPS y
opera en las bandas de 800 y 1900 Mhz
DECT Digital European Cordless Telephony. Desarrollada en el Instituto
Europeo de Estándares de Telecomunicaciones (ETSI)
E-Netz Nombre alemán para las redes GSM 1800
GSM Global System for Mobile Communications. Es el primer estándar digital
europeo. Desarrollado para establecer compatibilidad a lo largo de toda
Europa. Su éxito se ha extendido al resto del mundo y hoy existen más de
80 redes GSM operando. Opera en las bandas de 900 y 1800 Mhz en
varias partes de Europa e Inglaterra. Trabaja a 1900 Mhz en algunas
partes de Estados Unidos. Basado en TDMA.
PCS Personal Communications Service. La banda de frecuencias de PCS en
Estados Unidos es de los 1850 a 1990 Mhz. Los teléfonos GSM que solo
trabajan en la banda de 900 Mhz no pueden utilizarse en redes PCS. Estas
redes operan en la Argentina.
IS-54 Tecnología basada en TDMA usada por los sistemas D-AMPS a 800 Mhz.
IS-95 Tecnología basada en CDMA usada a 800 Mhz.
IS-136 Tecnología basada en TDMA ofrecida tanto a 800 como a 1800 Mhz.
JS-008 Tecnología basada en CDMA usada a 1900 Mhz.
Iden Provee conexión directa punto a punto entre móviles (radio digital) así
como telefonía celular basada en tecnología TDMA en un mismo
teléfono. Estandar desarrollado por Motorola. Utilizado en Argentina.
PDC Personal Digital Cellular es un estándar japonés basado en TDMA que
opera en las bandas de 800 y 1500 Mhz.
TDMA Time Division Multiple Access. El primer estándar digital desarrollado en
los Estados Unidos. Fue utilizado por primera vez en 1992. El primer
sistema TDMA que se utilizó comercialmente fue el IS-54 que luego
derivó en el IS-136.
TETRA Trans European Trunked Radio Systems, designado para soportar tanto
datos como voz. Muy nuevo. Mayormente utilizado en camiones. Permite
roaming. No se ha implementado completamente todavía.
UMTS Universal Mobile Telephone Standard. La próxima generación de
telefonía celular global que será implementada a partir del año 2004
APENDICE B
B Tablas de resultados experimentales
En este apéndice se detallan los resultados obtenidos en las experiencias realizadas que se
describieron en el capítulo 5.
Cada vez que se inicializa un CUP y UPH con el procesamiento de la primer llamada, se
asume que la probabilidad de cada patrón (tanto local, DNN y DDI) es la misma. No se computa la
distancia Hellinger hasta no haber procesado 100 llamadas, valor decidido como mínimo para tener
un CUP y UPH que refleje mínimamente el comportamiento del usuario.
Se utilizaron 144 patrones para clasificar llamadas locales (Red Neuronal Local), 64 para
clasificar llamadas DDN (Red Neuronal DDN) y 36 para llamadas DDI (Red Neuronal DDI). Por lo
tanto el CUP y el UPH se componen de 244 patrones totales.
- 1.000,000 de llamadas locales para que la red clasifique a las mismas en 144 patrones.
- 20,000 llamadas DDN para que la red clasifique a las mismas en 64 patrones.
- 8.000 llamadas DDI para que la red clasifique a las mismas en 36 patrones.
- Tipo de llamada: Define a que red neuronal pertenecen (LOC: llamadas locales; NAT:
llamadas DDN; INT: llamadas DDI)
- Hora de la llamada: Franja horaria en la que se realizó la llamada (Separado en 24
intervalos. Ejemplo: si la llamada fue a las 23:15, entonces es una llamada en la franja
23, si fue a las 8:32, entonces es una llamada en la franja 8)
- Duración de la llamada: Redondeada a minutos completos (Llamadas de duración
mayor a 30 minutos se redondearon a 30 minutos).
B.1.2 Patrones definidos por cada una de las redes neuronales luego del
entrenamiento
Los datos presentados en las tablas referentes a los usuarios (IMSIs) fueron modificados para
preservar la confidencialidad de la información. El resto de los valores corresponden a información
real.
B.2.1 Experiencia 1
Cantidad de alarmas, filtrando las que se producen por seguir arriba del umbral Hellinger = 33
B.2.2 Experiencia 2
APENDICE C
C Metodología aplicada para la construcción del software
En la sección C.3 se presenta el diseño de la solución detallando cada uno de los programas
que se realizaron, tomando como base lo expuesto en la sección de análisis y adjuntando la
estructura de cada uno de los archivos de entrada y salida que se utilizan y generan en cada uno de
estos programas; la sección C.4 contiene todo el código fuente de cada uno de los programas
diseñados.
Finalmente en la sección C.6 se detallan algunas tareas de mantenimiento y se hace una breve
reseña sobre la gestión de configuración del software.
C.1 Requerimientos
Como objetivo principal del trabajo se ha determinado que el sistema debe poder detectar y
describir con certeza cambios en el comportamiento de consumo de un usuario y reportarlos como
tales. Esta información es de vital importancia para determinar, junto con otros datos
complementarios, si un usuario ha cometido fraude. La utilización de un diseño basado en
107 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
estructuras de la inteligencia artificial hace que el mismo pueda ser muy versátil a la hora de
incorporar nueva información.
Para procesar toda la información proveniente de los switches, será necesario contar con un
proceso previo de mediación que simplifique las estructuras generadas por los mismos (CDR’s) en
formatos acordes con la información necesaria, conteniendo simplemente los datos que serán
utilizados tales como el IMSI, la fecha de la llamada, la duración y el tipo de llamada, que puede ser
local (LOC), DDN (NAT) o DDI (INT).
Otro requerimiento importante se enfoca en la performance que debe tener dicho sistema; este
es un proceso que analizará cantidades muy grandes de información (todas las llamadas que son
cursadas a través de la red de la compañía de telefonía celular) y debe hacerlo en tiempos acordes
con las necesidades de detectar actividades fraudulentas lo antes posible. De nada sirve poseer
información sobre un usuario que está cometiendo fraude varios días después de haberlo cometido.
La información sobre cada usuario debe ser fácil de acceder y debe contener la cantidad de
llamadas que se han procesado así como también la descripción de su comportamiento, tanto
reciente como histórico.
C.2 Análisis
A continuación se presenta el diagrama con las clases [Booch, Jacobson & Rumbaugh, 2000]
fundamentales del proyecto. Se observa una relación en la que la clase cNeurona solamente existe
cuando existe la clase cRedNeuronal ya que la primera es parte de la segunda. La clase cUsuario se
relaciona con la clase cRedNeuronal a través de servicios que incorporan las llamadas a los perfiles
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 108
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
de usuario. El servicio principal que hace uso de las redes corresponde al IncorporarLlamada, que
construye la distribución de frecuencia de la llamada y adapta el perfil CUP.
cNeurona
-prototipo : LLAMADA
cRedNeuronal
-mapa : *cNeurona[][]
-RedFilas : int
-RedColumnas : int
-BMUFila : int
-BMUColumna : int
-BMUDistancia : double
+cRedNeuronal(in fila : int, in columna : int)
+cRedNeuronal(in patrones : *char)
+~cRedNeuronal()
+Inicializar() : void
+MostrarPatrones() : void
+GrabarPatrones(in nom_salida : *char, in nom_patrones : *char) : void
+Entrenar(in archivo : *char) : void
+ObtenerPatron(in registro : REG_LLAMADA) : int
+CantPatrones() : int
+ProbabilidadLlamada(in Vector : *VECPERFIL, in registro : REG_LLAMADA) : void
+GenerarUMatrix(in archivo : *char) : void
cUsuario
-Patrones : int
-PatronesLOC : int
-PatronesNAT : int
-PatronesINT : int
-IMSI : char[16]
-UltLlamada : char[15]
-cantLlamadas : int
-CUP : VECTOR_PERFIL
-UPH : VECTOR_PERFIL
+cUsuario(in IMSI : *char, in cantPatronesLOC : int, in CantPatronesNAT : int, in CantPatronesINT : int)
+IncorporarLlamada(in cantPatronesLOC : int, in cantPatronesNAT : int, in cantPatronesINT : int, in registro : *char, in RED : *cRedNeuronal)
+ActualizarUPH() : void
+GrabarUsuario() : void
+DistanciaHellinger() : double
+getCantLlamadas() : long
+getUltLlamada() : *char
A continuación se presentan los casos de uso [Booch, Jacobson & Rumbaugh, 2000] más
relevantes obtenidos durante el análisis del software a construir. Los mismos corresponden al
entrenamiento de cada una de las redes que se utilizan (LOC, NAT e INT) y la construcción,
mantenimiento de perfiles y posterior detección de fraude.
109 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
En este caso de uso el actor que inicia el proceso corresponde al archivo con las llamadas de
entrenamiento, luego se instancia cada una de las redes, comenzando el entrenamiento, para
finalmente grabar los patrones obtenidos.
«extends»
Inst. cRedNeuronal
Inst. cNeurona
LOC
Abrir archivo
«uses»
Inicializar Red
Inicializar
LOC
«uses»
Entrenar Red
Entrenar
LOC
«uses»
Grabar Patrones
GrabarPatrones
LOC
Este caso de uso trabaja con las mismas funciones que el anterior, con la única diferencia que
se alimenta de otro archivo de llamadas e instancia a otra red neuronal, en este caso la red neuronal
NAT. En resumen, se trata de otra instancia del mismo objeto.
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 110
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
«extends»
Inst. cRedNeuronal
Inst. cNeurona
NAT
Abrir archivo
«uses»
Inicializar Red
Inicializar
NAT
«uses»
Entrenar Red
Entrenar
NAT
«uses»
Grabar Patrones
GrabarPatrones
NAT
De manera análoga a los dos anteriores, en este caso de uso se instancia la red neuronal INT.
«extends»
Inst. cRedNeuronal
Inst. cNeurona
INT
Abrir archivo
«uses»
Inicializar Red
Inicializar
INT
«uses»
Entrenar Red
Entrenar
INT
«uses»
Grabar Patrones
GrabarPatrones
INT
111 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
En este caso de uso podemos definir al actor como el archivo de llamadas que hace que el
proceso de construcción, mantenimiento de perfiles y cambios de comportamiento comience a
funcionar. Primero se instancian las 3 redes neuronales que se utilizarán para clasificar y codificar
las llamadas, que a su vez hacen que se instancien las neuronas de cada una de las redes. Luego
comienza el proceso de tomar las llamadas, instanciar el usuario, actualizar el perfil histórico UPH,
procesar la llamada incorporándola al perfil del usuario CUP, comparar los perfiles, emitir la alarma
si corresponde, para luego almacenar los datos actualizados del usuario.
«extends»
Inst. cRedNeuronal
Inst. cNeurona
LOC, NAT e INT
Archivo llamadas
Abrir archivo
«uses»
Inst. cUsuario ActualizarUPH
«uses»
IncorporarLlamada
Procesar
«uses»
Analizar Usuario DistanciaHellinger
Emitir Alarma
Archivo Alarmas
«uses»
Alm. Usuario GrabarUsuario
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 112
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Procesando Llamada
Distancia
[SI]
Generando Alarma Hellinger arriba
[SI]
umbral
[NO] [NO]
Almacenando Usuario
Fin de Archivo
Del estado inicial, se pasa al estado esperando archivo, de allí si existe la posibilidad de
finalizar el proceso o seguir en el mismo si aparece un archivo para ser procesado. Cuando se
comienza a procesar el archivo, el sistema se encontrará procesando cada llamada, y si la distancia
Hellinger queda arriba del umbral, entonces se pasa al estado “Generando Alarma”, de lo contrario
se pasa directamente al estado “Almacenando Usuario”. Finalmente, si hay más llamadas en el
archivo para procesar se vuelve al estado “Procesando Llamada”, o si se han procesado todas las
llamadas el sistema vuelve al estado “Esperando Archivo”.
113 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
C.3 Diseño
C.3.1.1 Entrenar.cpp
Este programa tiene como entrada el archivo de llamadas que se utilizan para entrenar las
redes neuronales LOC, NAT e INT y como salida cada uno de los 3 archivos con los pesos de cada
una de las neuronas luego que las redes han aprendido de estas llamadas. Adicionalmente se
generan otros 3 archivos con los pesos de las redes neuronales, pero en un formato para poder ser
fácilmente exportado a cualquier aplicación de planilla de cálculo (ejemplo: Excel) y ser utilizado
para graficar los patrones generados.
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 114
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
C.3.1.2 DetectarFraude.cpp
Este programa tiene como entrada los archivos con los pesos de las neuronas de cada una de
las redes neuronales, así como los archivos con las llamadas de cada uno de los usuarios que se van
generando. Este módulo es el responsable de construir los perfiles, compararlos, y almacenarlos en
archivos planos (uno por usuario), así como la emisión de las alarmas que se almacenan en otro
archivo plano diferente.
C.3.1.3 GenerarUMatrix.cpp
Este programa recibe como entrada los archivos con los pesos de las neuronas de cada una de
las redes neuronales y devuelve como salida 3 archivos, indicando para cada neurona de cada una
de las redes, la distancia euclídea a cada una de sus vecinas directas. Estos datos sirven luego para
poder graficar las U-Matrix de cada una de las redes con otro programa que describiremos en la
sección C.1.3.
Este es un pequeño y simple programa realizado en Visual Basic que recibe como entrada uno
de los archivos generados por el programa GenerarUMatrix y dibuja en una ventana la U-Matrix
115 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
correspondiente para poder visualizarla y tener más información de la forma en que la red clasificó
los datos.
En esta sección se detalla la estructura (diseño de registro) de todos los archivos planos que se
utilizan en todos los programas que se han descripto.
DATO TAMAÑO
IMSI 15 caracteres
FECHA 8 caracteres
HORA 6 caracteres
DURACION 5 caracteres
TIPO (LOC-NAT-INT) 3 caracteres
Estos archivos son salida del programa Entrenar.cpp y entrada en los programas
DetectarFraude.cpp y GenerarUMatrix.cpp. No tiene un diseño de registro fijo ya que los primeros
dos registros contienen la cantidad de filas y columnas de la matriz que representa a la red neuronal.
Cada una de las siguientes líneas tiene el valor normalizado a 1 de la hora y duración del patrón
generado. A continuación se detalla un fragmento ejemplo de este archivo con los pesos de las
neuronas de la red INT:
6 /*Cant. Filas */
6 /*Cant. Columnas */
0,640112 /* Valor normalizado de la hora del patrón de la neurona 0,0 */
0,164216 /* Valor normalizado de la duración del patrón de la neurona 0,0 */
0,884634 /* Valor normalizado de la hora del patrón de la neurona 0,1 */
0,063903 /* Valor normalizado de la duración del patrón de la neurona 0,1 */
.....
.....
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 116
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Adicionalmente se generan archivos para poder ser exportados a Excel con los valores de los
patrones generados, mostrando en cada fila los pares de valores para cada neurona. A continuación
se presenta un ejemplo del mismo:
Este archivo es salida del proceso DetectarFraude.cpp. El mismo tiene una estructura similar
al de los pesos de las neuronas. Cada registro tiene un significado diferente. En el primer registro se
almacena el IMSI, en el segundo la cantidad total de patrones que lo representan, en el tercero,
cuarto y quinto, la cantidad de patrones LOC, NAT e INT respectivamente, en el sexto la fecha de
la última llamada procesada para ese usuario, en el séptimo la cantidad de llamadas procesadas para
dicho usuario y a partir de allí los valores de frecuencia de cada uno de los patrones. Se presenta a
modo de ejemplo el fragmento de uno de ellos:
733120000163312
244
144
64
36
20030420205802
941
0,00800
0,00364
0,00433
0,00591
0,00835
.....
.....
.....
117 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Este archivo es salida del proceso DetectarFraude.cpp y contiene el detalle de las llamadas
que provocó la emisión de una alarma. A continuación se define el diseño de registro:
DATO TAMAÑO
VALOR HELLINGER 6 caracteres
SEPARADOR ‘, ‘ 2 caracteres
IMSI 15 caracteres
FECHA 8 caracteres
HORA 6 caracteres
DURACION 5 caracteres
TIPO (LOC-NAT-INT) 3 caracteres
SEPARADOR ‘, ‘ 2 caracteres
NRO. LLAMADA Variable
Este archivo contiene en cada línea, la distancia que existe de una neurona a una neurona
vecina. El mismo es salida del proceso GenerarUMatrix.cpp y entrada para el programa Visual
Basic que permite ver en pantalla la U-Matrix correspondiente.
DATO TAMAÑO
FILA NEURONA Variable
SEPARADOR ‘,‘ 1 caracter
COL. NEURONA Variable
SEPARADOR ‘,‘ 1 caracter
FILA NEURONA VEC. Variable
SEPARADOR ‘,‘ 1 caracter
COL. NEURONA VEC. Variable
SEPARADOR ‘,‘ 1 caracter
DIST. EUCLIDEA 4 caracteres
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 118
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
C.4 Codificación
A continuación se detalla el código fuente de los programas más importantes que se han
diseñado y presentado en la sección C.3.
C.4.1 Entrenar.cpp
#include <stdio.h>
#include <string.h>
#include "red.h"
#include "usuario.h"
RED_LOC.Inicializar();
RED_LOC.Entrenar(argv[1]);
RED_LOC.GrabarPatrones("salida_loc.txt","patrones_loc.txt");
RED_NAT.Inicializar();
RED_NAT.Entrenar(argv[2]);
RED_NAT.GrabarPatrones("salida_nat.txt","patrones_nat.txt");
RED_INT.Inicializar();
RED_INT.Entrenar(argv[3]);
RED_INT.GrabarPatrones("salida_int.txt","patrones_int.txt");
return 0;
}
119 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
C.4.2 DetectarFraude.cpp
#include <stdio.h>
#include <string.h>
#include "red.h"
#include "usuario.h"
int cantreg;
REG_LLAMADA registro;
cUsuario *USUARIO;
char tipoLlamada[4];
char IMSI[16];
char fechaLlamada[9];
double distHellinger;
cRedNeuronal RED_LOC("patrones_loc.txt");
cRedNeuronal RED_NAT("patrones_nat.txt");
cRedNeuronal RED_INT("patrones_int.txt");
FILE *archivo;
FILE *alarma;
archivo = fopen(argv[1],"rt");
alarma = fopen("alarmas.txt","wt");
cantreg = fread(registro,sizeof(REG_LLAMADA),1,archivo);
registro[37]= '\0';
while (cantreg == 1)
{
strncpy(IMSI,®istro[0],15);
IMSI[15]='\0';
USUARIO = new cUsuario(IMSI,12*12,8*8,6*6);
strncpy(tipoLlamada,®istro[34],3);
tipoLlamada[3]='\0';
strncpy(fechaLlamada,®istro[15],8);
fechaLlamada[8]='\0';
if (strncmp(USUARIO->getUltLlamada(), fechaLlamada,8) != 0)
USUARIO->ActualizarUPH();
if (strcmp(tipoLlamada,"LOC") == 0)
USUARIO-
>IncorporarLlamada(RED_LOC.CantPatrones(),RED_NAT.CantPatrones(),RED_INT.CantPatrones(),registro,&RED_
LOC);
if (strcmp(tipoLlamada,"NAT") == 0)
USUARIO-
>IncorporarLlamada(RED_LOC.CantPatrones(),RED_NAT.CantPatrones(),RED_INT.CantPatrones(),registro,&RED_
NAT);
if (strcmp(tipoLlamada,"INT") == 0)
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 120
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
USUARIO-
>IncorporarLlamada(RED_LOC.CantPatrones(),RED_NAT.CantPatrones(),RED_INT.CantPatrones(),registro,&RED_
INT);
distHellinger=USUARIO->DistanciaHellinger();
return 0;
}
121 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
C.4.3 GenerarUMatrix.cpp
#include <stdio.h>
#include <string.h>
#include "red.h"
#include "usuario.h"
cRedNeuronal RED_LOC(argv[1]);
cRedNeuronal RED_NAT(argv[2],);
cRedNeuronal RED_INT(argv[3],);
RED_LOC.GenerarUMatrix(argv[4],);
RED_NAT.GenerarUMatrix(argv[5],);
RED_INT.GenerarUMatrix(argv[6],);
return 0;
}
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 122
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
C.4.4 llamada.h
#define DIMENSION_LLAMADA 2
#define SEGUNDOS_X_DIA 86400
#define MAX_MINUTOS 30
typedef double LLAMADA[DIMENSION_LLAMADA];
typedef char REG_ENTRENAMIENTO[23];
typedef char REG_LLAMADA[38];
double DistanciaEuclidea(LLAMADA *VectorLlamada, LLAMADA *VectorNeurona);
void CodificarLlamada(char *registro, LLAMADA *VectorLlamada);
C.4.5 red.h
#include "llamada.h"
#define MAPA_FILAS 50
#define MAPA_COLUMNAS 50
#define DISTANCIA_VECINO 10
#define ALFA .6
#define LONG_VEC_USU (MAPA_FILAS * MAPA_COLUMNAS * 3)
typedef double VECPERFIL[MAPA_FILAS * MAPA_COLUMNAS];
#define _RED_ 0
class cNeurona
{
public:
LLAMADA prototipo;
};
class cRedNeuronal
{
private:
cNeurona *mapa [MAPA_FILAS][MAPA_COLUMNAS];
int RedFilas, RedColumnas;
int BMUFila, BMUColumna;
double BMUDistancia;
public:
cRedNeuronal(int fila,int columna);
cRedNeuronal(char *patrones);
~cRedNeuronal();
void Inicializar();
void MostrarPatrones();
void GrabarPatrones(char *nom_salida, char *nom_patrones);
void Entrenar(char *archivo);
int ObtenerPatron(REG_LLAMADA registro);
int CantPatrones();
void ProbabilidadLlamada(VECPERFIL *Vector, REG_LLAMADA registro);
void GenerarUMatrix(char *archivo);
};
123 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
C.4.6 usuario.h
#include <math.h>
#ifndef _RED_
#include "red.h"
#endif
#define MIN_LLAMADAS_DETECCION 100
#define ALFA_CUP_INT .9
#define ALFA_CUP_NAT .9
#define ALFA_CUP_LOC .8
#define BETA_UPH .6
#define UMBRAL_HELLINGER .75
typedef double VECTOR_PERFIL[LONG_VEC_USU];
class cUsuario
{
private:
int Patrones;
int PatronesLOC;
int PatronesNAT;
int PatronesINT;
char IMSI[16];
char UltLlamada[15];
long cantLlamadas;
VECTOR_PERFIL CUP;
VECTOR_PERFIL UPH;
public:
cUsuario(char *pIMSI, int cantPatronesLOC, int cantPatronesNAT, int cantPatronesINT);
void IncorporarLlamada(int cantPatronesLOC, int cantPatronesNAT, int cantPatronesINT, char *registro,
cRedNeuronal *RED);
void ActualizarUPH();
void GrabarUsuario();
void GrabarUsuario2();
double DistanciaHellinger();
long getCantLlamadas();
char *getUltLlamada();
};
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 124
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
C.4.7 llamada.cpp
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include "llamada.h"
distancia=0;
for (dimensionllamada=0;dimensionllamada<DIMENSION_LLAMADA;dimensionllamada++)
{
distancia=distancia + pow((*VectorLlamada)[dimensionllamada]-
(*VectorNeurona)[dimensionllamada],2);
}
return sqrt(distancia);
}
char hora[3];
char minutos[3];
char segundos[3];
char duracion[6];
long minutosl;
(*VectorLlamada)[1] = (double)minutosl/MAX_MINUTOS;
if ((*VectorLlamada)[1] > 1)
(*VectorLlamada)[1] = 1;
};
125 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
C.4.8 red.cpp
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <math.h>
#include <string.h>
#include "red.h"
RedFilas=filas;
RedColumnas=columnas;
srand( (unsigned)time( NULL ) );
for(filasred=0;filasred<filas;filasred++)
for(columnasred=0;columnasred<columnas;columnasred++)
mapa[filasred][columnasred] =new cNeurona;
};
cRedNeuronal::cRedNeuronal(char *patrones)
{
int filasred, columnasred;
int lbytes;
char linea[4];
char lineapatron[9];
FILE *arch_patrones;
arch_patrones=fopen(patrones,"rt");
lbytes = fread(linea,4,1,arch_patrones);
linea[3]='\0';
RedFilas = atoi(linea);
lbytes = fread(linea,4,1,arch_patrones);
linea[3]='\0';
RedColumnas = atoi(linea);
for(filasred=0;filasred<RedFilas;filasred++)
for(columnasred=0;columnasred<RedColumnas;columnasred++)
{
mapa[filasred][columnasred] =new cNeurona;
lbytes = fread(lineapatron,9,1,arch_patrones);
lineapatron[8]='\0';
mapa[filasred][columnasred]->prototipo[0] = atof(lineapatron);
lbytes = fread(lineapatron,9,1,arch_patrones);
lineapatron[8]='\0';
mapa[filasred][columnasred]->prototipo[1] = atof(lineapatron);
}
fclose(arch_patrones);
};
cRedNeuronal::~cRedNeuronal()
{
int filasred, columnasred;
for(filasred=0;filasred<RedFilas;filasred++)
for(columnasred=0;columnasred<RedColumnas;columnasred++)
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 126
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
delete mapa[filasred][columnasred];
};
void cRedNeuronal::Inicializar()
{
int filasred, columnasred, dimensionllamada;
void cRedNeuronal::MostrarPatrones()
{
int filasred, columnasred/*dimensionllamada*/;
salida = fopen(nom_salida,"wt");
arch_patrones = fopen(nom_patrones,"wt");
fprintf(arch_patrones,"%3d\n%3d\n",RedFilas,RedColumnas);
for (filasred=0;filasred < RedFilas;filasred++)
{
for (columnasred=0;columnasred < RedColumnas;columnasred++)
{
fprintf(salida, "%3.3f,%3.3f ", mapa[filasred][columnasred]-
>prototipo[0]*86400/3600,mapa[filasred][columnasred]->prototipo[1]*MAX_MINUTOS);
fprintf(arch_patrones, "%3.6f\n%3.6f\n", mapa[filasred][columnasred]-
>prototipo[0],mapa[filasred][columnasred]->prototipo[1]);
}
fprintf(salida,"\n");
}
fclose(salida);
fclose(arch_patrones);
127 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
};
FILE *archivo;
archivo = fopen(nomarch,"rt");
fseek(archivo,0,SEEK_END);
totreg=ftell(archivo)/24;
fseek(archivo,0,SEEK_SET);
cantreg = fread(registro,sizeof(REG_ENTRENAMIENTO),1,archivo);
registro[22]= '\0';
t=0;t1=0;
while (cantreg == 1)
{
vecino = DISTANCIA_VECINO - (t+1)/1000;
if (vecino < 0) vecino = 0;
CodificarLlamada(®istro[0],&X);
for (filasred=0;filasred<RedFilas;filasred++)
for (columnasred=0;columnasred<RedColumnas;columnasred++)
{
distancia = DistanciaEuclidea(&X,&mapa[filasred][columnasred]->prototipo);
if (distancia < BMUDistancia)
{
BMUDistancia=distancia;
BMUFila=filasred;
BMUColumna=columnasred;
}
}
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 128
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
129 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
cantreg = fread(registro,sizeof(REG_ENTRENAMIENTO),1,archivo);
registro[22]= '\0';
t=t+1;t1=t1+1;
}
printf("REGISTROS: %d\n",t);
fclose(archivo);
};
CodificarLlamada(®istro[15],&X);
for (filasred=0;filasred<RedFilas;filasred++)
for (columnasred=0;columnasred<RedColumnas;columnasred++)
{
distancia = DistanciaEuclidea(&X,&mapa[filasred][columnasred]->prototipo);
if (distancia < BMUDistancia)
{
BMUDistancia=distancia;
BMUFila=filasred;
BMUColumna=columnasred;
}
}
int cRedNeuronal::CantPatrones()
{
return RedFilas*RedColumnas;
};
CodificarLlamada(®istro[15],&X);
// Calculo divisor
divisor=0;
for (filasred=0;filasred<RedFilas;filasred++)
for (columnasred=0;columnasred<RedColumnas;columnasred++)
divisor = divisor + exp(-DistanciaEuclidea(&X,&mapa[filasred][columnasred]->prototipo));
for (filasred=0;filasred<RedFilas;filasred++)
for (columnasred=0;columnasred<RedColumnas;columnasred++)
(*Vector)[filasred * RedColumnas + columnasred] = exp(-
DistanciaEuclidea(&X,&mapa[filasred][columnasred]->prototipo)) / divisor;
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 130
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
FILE *salida;
salida = fopen(nomarch,"wt");
for (filasred=0;filasred<RedFilas;filasred++)
for (columnasred=0;columnasred<RedColumnas;columnasred++)
{
if (filasred - 1 >= 0)
for(columnavecino=columnasred-1;columnavecino
<=columnasred+1;columnavecino++)
if (columnavecino >= 0 && columnavecino < RedColumnas)
fprintf(salida, "%d,%d,%d,%d,%3.2f\n", filasred, columnasred,
filasred -1, columnavecino, DistanciaEuclidea(&mapa[filasred - 1][columnavecino]-
>prototipo,&mapa[filasred][columnasred]->prototipo));
//mapa[filasred - 1][columnavecino]-
>prototipo[dimensionllamada] =
// mapa[filasred - 1][columnavecino]-
>prototipo[dimensionllamada] +
// ALFA*(1-
t/totreg)*(X[dimensionllamada]-mapa[filasred - 1][columnavecino]-
>prototipo[dimensionllamada])*((DISTANCIA_VECINO - 1)/DISTANCIA_VECINO); // Actualizar patron; [filasred -
1][columnavecino]
if (columnasred - 1 >= 0)
for(filavecino=filasred;filavecino <= filasred+1;filavecino++)
if (filavecino >= 0 && filavecino < RedFilas)
fprintf(salida, "%d,%d,%d,%d,%3.2f\n", filasred, columnasred,
filavecino, columnasred - 1, DistanciaEuclidea(&mapa[filavecino][columnasred - 1]-
>prototipo,&mapa[filasred][columnasred]->prototipo));
//mapa[filavecino][columnasred - 1]-
>prototipo[dimensionllamada] =
// mapa[filavecino][columnasred - 1]-
>prototipo[dimensionllamada] +
// ALFA*(1-
t/totreg)*(X[dimensionllamada]-mapa[filavecino][columnasred - 1]-
131 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
};
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 132
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
C.4.9 usuario.cpp
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "usuario.h"
#include "llamada.h"
strcpy(archIMSI,pIMSI);
strcat(archIMSI,".txt");
if((arch_usu = fopen(archIMSI, "rt" )) == NULL )
{
Patrones=cantPatronesLOC + cantPatronesNAT + cantPatronesINT;
PatronesLOC = cantPatronesLOC;
PatronesNAT = cantPatronesNAT;
PatronesINT = cantPatronesINT;
for (pos=0;pos<Patrones;pos++)
{
CUP[pos]=(double)1/Patrones;//0;
UPH[pos]=(double)1/Patrones;//0;
}
strcpy(UltLlamada,"00000000000000");
strcpy(IMSI,pIMSI);
cantLlamadas=0;
}
else
{
fgets(linea, 20, arch_usu);
linea[15]='\0';
strcpy(IMSI,linea);
fgets(linea, 20, arch_usu);
linea[4]='\0';
Patrones = atoi(linea);
fgets(linea, 20, arch_usu);
linea[4]='\0';
PatronesLOC = atoi(linea);
fgets(linea, 20, arch_usu);
linea[4]='\0';
PatronesNAT = atoi(linea);
fgets(linea, 20, arch_usu);
linea[4]='\0';
PatronesINT = atoi(linea);
fgets(linea, 20, arch_usu);
linea[14]='\0';
strcpy(UltLlamada,linea);
fgets(linea, 20, arch_usu);
linea[10]='\0';
cantLlamadas = atol(linea);
133 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
for(pos=0;pos<Patrones;pos++)
{
fgets(linea, 20, arch_usu);
linea[7]='\0';
CUP[pos] = atof(linea);
}
for(pos=0;pos<Patrones;pos++)
{
fgets(linea, 20, arch_usu);
linea[7]='\0';
UPH[pos] = atof(linea);
}
fclose(arch_usu);
}
};
nroPatron=RED->ObtenerPatron(registro);
strncpy(fechahora,®istro[15],14);
fechahora[14]='\0';
strncpy(tipoLlamada,®istro[34],3);
tipoLlamada[3]='\0';
cantLlamadas=cantLlamadas+1;
if (strcmp(tipoLlamada,"LOC") == 0)
{
atenuacion=ALFA_CUP_LOC;
patronReal = nroPatron;
for (i=0;i < cantPatronesNAT;i++)
vectorNAT[i]=0;
for (i=0;i < cantPatronesINT;i++)
vectorINT[i]=0;
}
if (strcmp(tipoLlamada,"NAT") == 0)
{
atenuacion=ALFA_CUP_NAT;
patronReal = nroPatron + cantPatronesLOC;
for (i=0;i < cantPatronesLOC;i++)
vectorLOC[i]=0;
for (i=0;i < cantPatronesINT;i++)
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 134
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
vectorINT[i]=0;
}
if (strcmp(tipoLlamada,"INT") == 0)
{
atenuacion=ALFA_CUP_INT;
patronReal = nroPatron + cantPatronesLOC + cantPatronesNAT;
for (i=0;i < cantPatronesNAT;i++)
vectorNAT[i]=0;
for (i=0;i < cantPatronesLOC;i++)
vectorLOC[i]=0;
}
if (strcmp(tipoLlamada,"NAT") == 0)
RED->ProbabilidadLlamada(&vectorNAT, registro);
if (strcmp(tipoLlamada,"INT") == 0)
RED->ProbabilidadLlamada(&vectorINT, registro);
if (strcmp(UltLlamada,fechahora) < 0 )
strcpy(UltLlamada,fechahora);
};
void cUsuario::ActualizarUPH()
{
int i;
void cUsuario::GrabarUsuario()
{
int i;
char archIMSI[20];
FILE *salida;
strcpy(archIMSI,IMSI);
strcat(archIMSI,".txt");
salida = fopen(archIMSI,"w+t");
135 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
void cUsuario::GrabarUsuario2()
{
int i;
char archIMSI[30];
char llamada[10];
FILE *salida;
strcpy(archIMSI,IMSI);
sprintf(llamada,"_%ld",cantLlamadas);
strcat(archIMSI,llamada);
strcat(archIMSI,".txt");
salida = fopen(archIMSI,"w+t");
double cUsuario::DistanciaHellinger()
{
int i;
double acum;
return acum;
};
long cUsuario::getCantLlamadas()
{
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 136
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
return cantLlamadas;
};
char *cUsuario::getUltLlamada()
{
return UltLlamada;
};
137 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
C.4.10 mediacion.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "lucent.h"
/*************************************************/
#define VERSION "V:1.1 (Stats por Call_Type)"
#define VERSION "V:1.2 (Con campos msrn, cpc, y numeros normalizados)"
#define VERSION "V:1.2.1 (Msg not supported arreglado)"
#define VERSION "V:1.2.2 (Buffers agrandados)"
#define VERSION "V:1.2.3 (Buffers agrandados - corregido bug buffer)"
/*************************************************/
void printtruncfield( char * buf, int len)
{
int i;
char* aux,a;
while( len && buf[len-1]=='F') len--;
if(len!=0)
{
a=buf[len];buf[len]=0;
aux=buf;
while(aux[0]=='F') aux++;
fprintf(outfile,"%s",aux);
buf[len]=a;
}
}
/*************************************************/
void printlast8( char * buf, int len)
{
int i;
char* aux,a;
while( len && buf[len-1]=='F') len--;
if(len!=0)
{
a=buf[len];buf[len]=0;
aux=buf+len-8;
while(aux < buf) aux++;
fprintf(outfile,"%s",aux);
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 138
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
buf[len]=a;
}
}
/*************************************************/
void printfield( char * buf)
{
int i;
char* aux;
for(i=0;i<1024 && buf[i]!='C';i++);
buf[i]=0;
aux=buf;
while(aux[0]=='F') aux++;
fprintf(outfile,"%s",aux);
buf[i]='C';
}
/*************************************************/
int get_structure_code( char * buf)
{
return
HIGHNIBBLE(buf[1])*10+
LOWNIBBLE (buf[1]);
}
/*************************************************/
int convert( char * buf, char * bufascii, int size)
{
int i;
for(i=0;i<size;i++)
{
bufascii[i*2 ]=HEX2ASCII(HIGHNIBBLE(buf[i]));
bufascii[i*2+1]=HEX2ASCII( LOWNIBBLE(buf[i]));
}
bufascii[i*2]=0; /* para imprimir */
return i;
}
/*************************************************/
int conv_time_secs( struct CALL_DURATION * buf)
{
return
((buf->hour [0]-'0')*10+(buf->hour [1]-'0'))*3600 +
((buf->minutes[0]-'0')*10+(buf->minutes[1]-'0'))*60 +
((buf->seconds[0]-'0')*10+(buf->seconds[1]-'0'));
}
/*************************************************/
void proc_call_type20(char * bufascii,char* tape)
{
int k;
struct WIRELESS_BASIC_CALL_RECORD_FORMAT * rec;
rec=(struct WIRELESS_BASIC_CALL_RECORD_FORMAT *)bufascii;
printtruncfield((char*)&rec->a_party_imsi,15);
printtruncfield((char*)&rec->answer_date,8);
printtruncfield((char*)&rec->answer_time,6);
printnum(conv_time_secs( &rec->call_duration));
printtruncfield((char*)&rec->calling_party_category,3);
PRINTENTER;
/* k=((char*)&rec->call_type)[1]; */
k=LOWNIBBLE(((char*)&rec->call_type)[1]);
if(k>100) k=100;
counter[k]++;
}
139 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
/*************************************************/
void proc_record(char * buf, int len, char* tape,char print)
{
int structure_code, aux;
char bufascii[MAXBUFSIZE];
structure_code=get_structure_code(buf);
/* printf("+%d: Len:%d\n",structure_code,len); */
switch(structure_code)
{
case 20: convert(buf,bufascii,sizeof(struct WIRELESS_BASIC_CALL_RECORD_FORMAT));
proc_call_type20(bufascii,tape);
/*if(print==1) printf("#%d(%3d)%s\n",structure_code,len,bufascii);*/
bufascii[2*len]=0;
break;
default: convert(buf,bufascii,len);
fprintf(errfile,"Not supported:%d-%s\n",structure_code,bufascii);
break;
}
if(structure_code==2 || structure_code==3) PRINTENTER;
}
/*************************************************/
int openfiles(char* name)
{
char aux[100];
sprintf(aux,"%s%s",name,".dat");
if ((outfile = fopen(aux, "wt")) == NULL){
fprintf(stderr,"El Archivo %s de salida, no se pudo abrir\n",aux);
return (12);
}
sprintf(aux,"%s%s",name,".err");
if ((errfile = fopen(aux, "wt")) == NULL){
fprintf(stderr,"El Archivo %s de salida, no se pudo abrir\n",aux);
return (12);
}
sprintf(aux,"%s%s",name,".stat");
if ((statfile = fopen(aux, "wt")) == NULL){
fprintf(stderr,"El Archivo %s de salida, no se pudo abrir\n",aux);
return (12);
}
return 0;
}
/*************************************************/
int main(int param_num, char **param)
{
char tape2[20];
long cantreg = 0;
int prevchar,recsize,inchar;
long bytestot=0,records=0,byteshdr=0,bytesproc=0;
FILE * infile;
int i,j,k;
char buf[MAXBUFSIZE];
char tape[20];
switch (param_num)
{
case 2:
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 140
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
strncpy(tape,(param[1])+2,6); tape[6]=0;
strncpy(tape2,(param[1])+2,6); tape2[6]=0;
for(k=0;k<=100;counter[k++]=0);
fseek(infile ,0,SEEK_SET);
prevchar=0;
inchar=0;
while( !feof(infile) && inchar!=0xaa) /* skip hasta el 0xaa */
{
prevchar=inchar;
inchar=fgetc(infile);
byteshdr++;
}
recsize=MIN(prevchar,MAXBUFSIZE-2);
while( !feof(infile))
{
i=0;
while( !feof(infile) && ( i<recsize || inchar!=0xaa))
{
if (i<MAXBUFSIZE-1000) buf[i++]=inchar;
if (i<recsize) bytesproc++;
prevchar=inchar;
inchar = fgetc(infile);
bytestot++;
}
buf[i]=0; /* para poder imprimir como txt */
for(j=i+1;j<200;j++) buf[j]=0xaa; /* relleno atras de lo leido */
records++;
recsize=MIN(prevchar,MAXBUFSIZE-2);
proc_record(buf, i, tape, 0);
}
fprintf(stdout,"Records:%ld bytes tot:%ld bytes hdr:%ld bytes proc:%ld\n",
records,bytestot+byteshdr,byteshdr,bytesproc);
for(k=0;k<=100;k++)
141 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
if(counter[k]>0) fprintf(statfile,"%s;%2d;%5d\n",tape,k,counter[k]);
return 0;
}
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 142
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
C.4.11 lucent.h
#ifndef LUCENT_H
#define LUCENT_H
/********************************/
/*C01*/struct RECORD_DESCRIPTOR_WORK{
char value[2];
};
/*C02*/struct HEXADECIMAL_IDENTIFIER{
char value[2];
};
/*C03*/struct RECORD_TYPE{
char value[2];
};
/*C04*/struct SEQUENCE_NUMBER{
char value[5];
};
/*C05*/struct CALL_TYPE{
char value[2];
};
/*C06*/struct OUTPUT_REASON{
char value[1];
};
/*C07*/struct A_PARTY_IMSI{
char value[15];
};
/*C08*/struct A_PARTY_IMEI{
char tac[6],fac[2],snr[6],spare[1];
};
/*C09*/struct A_PARTY_NUMBER{
char value[18];
};
/*C10*/struct B_PARTY_IMSI{
char value[15];
};
/*C11*/struct B_PARTY_IMEI{
char tac[6],fac[2],snr[6],spare[1];
};
/*C12*/struct B_PARTY_NUMBER{
char value[18];
};
/*C13*/struct ANSWER_DATE{
char year[2],month[2],day[2];
};
/*C14*/struct ANSWER_TIME{
char hour[2],minutes[2],seconds[2];
};
/*C15*/struct CALL_DURATION{
char hour[2],minutes[2],seconds[2];
};
/*C16*/struct A_PARTY_LACK{
char value[5];
};
/*C17*/struct A_PARTY_FIRST_RADIO_CELL_ID{
char value[5];
};
143 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
/*C18*/struct BEARER_SERVICE{
char value[2];
};
/*C19*/struct CALL_FAILURE_INDICATOR{
char value[2];
};
/*C20*/struct CALL_FORWARDING_INDICATOR{
char value[1];
};
/*C21*/struct CALL_WAITING_INDICATOR{
char value[1];
};
/*C22*/struct A_B_PARTY_CALL_HOLD_INDICATOR{
char value[1];
};
/*C23*/struct A_B_PARTY_MULTIPARTY_INDICATOR{
char value[1];
};
/*C24*/struct CLIP_CLIR{
char value[1];
};
/*C25*/struct SPECIAL_INDICATORS{
char value[1];
};
/*C26*/struct ROAMER_INDICATOR{
char value[1];
};
/*C27*/struct MSRN{
char value[18];
};
/*C28*/struct COLP_COLR_INDICATOR{
char value[1];
};
/*C29*/struct INCOMING_TRUNK_GROUP_NUMBER{
char value[4];
};
/*C30*/struct OUTGOING_TRUNK_GROUP_NUMBER{
char value[4];
};
/*C31*/struct CUG_OA_INDICATOR{
char value[1];
};
/*C32*/struct CUG_INDEX{
char value[4];
};
/*C33*/struct CUG_INTERLOCK_CODE_NETWORK_ID{
char value[4];
};
/*C34*/struct CUG_BINARY_INTERLOCK_CODE{
char value[4];
};
/*C35*/struct ECT_INDICATOR{
char value[1];
};
/*C36*/struct IMSI{
char value[15];
};
/*C37*/struct IMEI{
char value[15];
};
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 144
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
/*C38*/struct SUBSCRIBER_NUMBER{
char value[18];
};
/*C39*/struct DATE_OF_ACTION{
char year[2],month[2],day[2];
};
/*C40*/struct TIME_OF_ACTION{
char hour[2],minutes[2],seconds[2];
};
/*C41*/struct SERVICE_ACTION_CODE{
char value[2];
};
/*C42*/struct ACTION_TYPE{
char value[1];
};
/*C43*/struct ODB_INDICATOR{
char value[2];
};
/*C44*/struct MS_ISDN_NUMBER{
char value[18];
};
/*C45*/struct FAILURE_INDICATOR{
char value[2];
};
/*C46*/struct TARIFF_CLASS{
char value[3];
};
/*C47*/struct CALLING_PARTY_CATEGORY{
char value[4];
};
/********************************/
/*B01*/ struct WIRELESS_BASIC_CALL_RECORD_FORMAT{
/*C01 struct RECORD_DESCRIPTOR_WORK record_descriptor_word; */
/*C02*/struct HEXADECIMAL_IDENTIFIER hexadecimal_identifier;
/*C03*/struct RECORD_TYPE record_type;
/*C04*/struct SEQUENCE_NUMBER sequence_number;
/*C05*/struct CALL_TYPE call_type;
/*C06*/struct OUTPUT_REASON output_reason;
/*C07*/struct A_PARTY_IMSI a_party_imsi;
/*C08*/struct A_PARTY_IMEI a_party_imei;
/*C09*/struct A_PARTY_NUMBER a_party_number;
/*C10*/struct B_PARTY_IMSI b_party_imsi;
/*C11*/struct B_PARTY_IMEI b_party_imei;
/*C12*/struct B_PARTY_NUMBER b_party_number;
/*C13*/struct ANSWER_DATE answer_date;
/*C14*/struct ANSWER_TIME answer_time;
/*C15*/struct CALL_DURATION call_duration;
/*C16*/struct A_PARTY_LACK a_party_lack;
/*C17*/struct A_PARTY_FIRST_RADIO_CELL_ID a_party_first_radio_cell_id;
/*C18*/struct BEARER_SERVICE bearer_service;
/*C19*/struct CALL_FAILURE_INDICATOR cell_failure_indicator;
/*C20*/struct CALL_FORWARDING_INDICATOR call_forwarding_indicator;
/*C21*/struct CALL_WAITING_INDICATOR call_waiting_indicator;
/*C22*/struct A_B_PARTY_CALL_HOLD_INDICATOR call_hold_indicator;
/*C23*/struct A_B_PARTY_MULTIPARTY_INDICATOR a_b_party_multiparty_indicator;
/*C24*/struct CLIP_CLIR clip_clir;
/*C25*/struct SPECIAL_INDICATORS special_indicators;
/*C26*/struct ROAMER_INDICATOR roamer_indicator;
/*C27*/struct MSRN msrn;
/*C28*/struct COLP_COLR_INDICATOR cplp_colr_indicator;
145 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 146
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
archivo = PATH
offset = 20
tamanopixel = 20
DrawWidth = tamanopixel
iReadFile = FreeFile
Open archivo For Input As #iReadFile
End Sub
147 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
C.5 Implementación
El software que se diseñó e implementó está compuesto en su mayoría por procesos batch; los
mismos son:
- Mediación
- Entrenamiento de las redes neuronales
- Detección de fraude, construcción y mantenimiento de perfiles
- GenerarUMatrix
El único proceso que tiene pantallas asociadas es VisualizarUMatrix que fue desarrollado en
Visual Basic. A continuación se detalla la forma en que se llama a cada uno de los procesos batch y
se presentan las pantallas del módulo VisualizarUMatrix.
C.5.1.1 Entrenar
- patrones_loc.txt
- patrones_nat.txt
- patrones_int.txt
3 archivos con los pesos de las redes neuronales, pero en un formato para
poder ser fácilmente exportado a cualquier aplicación de planilla de cálculo
(ejemplo: Excel) y ser utilizado para graficar los patrones generados:
- salida_loc.txt
- salida_nat.txt
- salida_int.txt
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 148
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
C.5.1.2 DetectarFraude
- alarmas.txt
- [IMSI].txt
C.5.1.3 GenerarUMatrix
C.5.1.4 Mediación
149 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
C.5.1.5 VisualizarUMatrix
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 150
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
C.5.2 Pruebas
151 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Criterios para la aprobación Los criterios para la aprobación de las pruebas se realizarán de
de las pruebas acuerdo a la siguiente tabla:
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 152
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
153 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Las pruebas fueron satisfactorias luego de efecturar 10 corridas en los 5 casos estudiados,
detectando cambios pronunciados de comportamiento en los casos 4 y 5 en los cuales los usuarios
analizados realizar una gran cantidad de llamadas seguidas no acordes con su consumo normal (en
el caso 4, llamadas NAT y en el caso 5 llamadas INT). En los casos 1, 2 y 3 no se detectaron
cambios de comportamiento al tratarse de usuarios con consumo normal y acorde a su
comportamiento histórico. Por lo tanto, se concluye que el resultado de las pruebas es excelente,
basado en los criterios definidos en la sección C.5.2.2.
Se dan por cumplimentadas las pruebas y se anexa el detalle de las 5 pruebas realizadas en la
sección C.5.2.7.
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 154
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Los datos presentados en las tablas referentes a los usuarios (IMSIs) fueron modificados
para preservar la confidencialidad de la información. El resto de los valores corresponden a
información real.
C.5.2.7.1 Caso 1 - Analizar un usuario sin cambios de comportamiento con llamadas LOC solamente
155 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 156
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
157 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 158
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
159 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 160
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
161 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 162
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
163 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 164
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
165 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
C.5.2.7.2 Caso 2 - Analizar un usuario sin cambios de comportamiento con llamadas LOC y NAT
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 166
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
167 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 168
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
169 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 170
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
171 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 172
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
173 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 174
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
175 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 176
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
177 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 178
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
179 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 180
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
181 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 182
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
183 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
C.5.2.7.3 Caso 3 - Analizar un usuario sin cambios de comportamiento con llamadas LOC, NAT e INT
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 184
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
185 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 186
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
187 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 188
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
189 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 190
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
191 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 192
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
193 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 194
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
195 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 196
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
197 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 198
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
199 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 200
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
201 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 202
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
203 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
C.5.2.7.4 Caso 4 - Analizar un usuario que cambia su comportamiento debido que comienza a realizar
muchas llamadas NAT
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 204
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
205 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 206
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
207 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 208
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
209 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 210
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
211 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 212
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
213 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 214
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
215 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 216
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
217 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 218
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
219 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 220
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
221 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 222
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
223 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 224
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
225 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 226
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
227 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 228
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
229 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 230
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
231 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 232
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
233 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 234
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
C.5.2.7.5 Caso 5 - Analizar un usuario que cambia su comportamiento debido que comienza a realizar
muchas llamadas INT
235 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 236
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
237 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 238
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
239 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 240
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
241 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 242
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
243 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 244
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
245 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 246
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
247 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 248
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
C.6 Mantenimiento
- Identificación de la configuración.
- Control de la configuración.
- Generación de informes de estado.
- Fases del Ciclo de vida: Se enumeran las fases para este proyecto y se determinan los
productos que se espera obtener al final de cada una de ellas:
1. Requerimientos
249 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
2. Análisis
3. Diseño
4. Codificación
5. Implementación
6. Mantenimiento
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 250
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
- Líneas Bases establecidas: Para el desarrollo del presente trabajo se ha acotado las líneas
base como los elementos de configuración definidos. En este caso el criterio es, que dado
que es una sola persona, el tesista, quien realiza la documentación del proyecto y la
programación se ha definido una sola línea base para todo el proceso de Desarrollo,
Programación e Implementación cuyas fases y elementos de configuración se detallaron
en la sección anterior.
251 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Solución propuesta:
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 252
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Plan de pruebas:
253 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
Comentarios:
dd/mm/aaaa
dd/mm/aaaa
dd/mm/aaaa
dd/mm/aaaa
Hernán Grosser APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE 254
DETECCIÓN DE FRAUDE EN TELEFONÍA CELULAR USANDO REDES NEURONALES
dd/mm/aaaa
dd/mm/aaaa
dd/mm/aaaa
dd/mm/aaaa
255 APENDICE C – METOD. APLICADA PARA LA CONSTRUCCIÓN DEL SOFTWARE Hernán Grosser