Aplicar métodos avanzados de análisis de datos en el sector público.

La aplicación de métodos avanzados de análisis de datos en el sector público permite abordar problemas que van más allá del análisis descriptivo tradicional. Entre sus usos más relevantes se encuentra la detección de potenciales casos de fraude, irregularidades o comportamientos atípicos, que pueden requerir auditorías o investigaciones más profundas.

En este contexto, uno de los algoritmos más utilizados para la detección de anomalías es Isolation Forest.

Isolation Forest es un algoritmo de unsupervised anomaly detection, cuyo principio fundamental es que las observaciones anómalas suelen ser más fáciles de aislar que aquellas que representan patrones normales del sistema. A diferencia de otros enfoques, no modela explícitamente el comportamiento normal, sino que se centra en identificar observaciones que presentan características significativamente distintas al resto.


Fundamentos del algoritmo Isolation Forest

1. Construcción del bosque

El algoritmo construye un conjunto de árboles binarios denominados Isolation Trees (iTrees). Cada árbol se genera a partir de una muestra aleatoria del conjunto de datos y se construye mediante particiones recursivas.

A diferencia de los árboles de decisión clásicos, los splits se realizan seleccionando de forma aleatoria:

  • una característica (variable), y
  • un valor dentro del rango observado de dicha característica.

Este componente estocástico es clave, ya que evita sesgos hacia estructuras específicas de los datos y permite aislar puntos de forma eficiente sin necesidad de criterios de optimización como la ganancia de información.


2. Proceso de aislamiento de las observaciones

La hipótesis central del algoritmo es que las observaciones anómalas, al encontrarse en regiones de baja densidad del espacio de características o presentar valores extremos, requieren menos particiones para quedar aisladas en un árbol.

Por el contrario, las observaciones normales suelen estar rodeadas de puntos similares y, por lo tanto, necesitan un mayor número de divisiones para ser aisladas completamente.

En términos computacionales, esto se traduce en que las anomalías presentan menores profundidades promedio en los árboles del bosque.


3. Cálculo del puntaje de anomalía

Una vez construido el bosque, se calcula para cada observación un puntaje de anomalía basado en la longitud promedio del camino (average path length) necesario para aislarla en todos los árboles.

Formalmente:

  • Observaciones con caminos cortos (pocas particiones) reciben puntajes más altos.
  • Observaciones con caminos largos se consideran normales.

Este puntaje es continuo y permite ordenar las observaciones según su grado relativo de anomalía, sin necesidad de definir reglas rígidas o modelos probabilísticos explícitos.


Ventajas del enfoque Isolation Forest

Entre las principales ventajas del algoritmo se encuentran:

  1. Alta eficiencia computacional y escalabilidad, lo que lo hace adecuado para grandes volúmenes de datos.
  2. Independencia de supuestos distributivos, a diferencia de métodos estadísticos clásicos.
  3. Buen desempeño en espacios de alta dimensionalidad.
  4. Interpretabilidad relativa, basada en profundidad de árboles y aislamiento de observaciones.
  5. Robustez frente a datos ruidosos.
  6. Selección automática de umbrales, evitando la calibración manual de criterios de anomalía.

Estas características lo hacen especialmente atractivo para contextos institucionales donde los datos suelen ser heterogéneos y complejos.

Crear una imagen personalizada con Nginx y PHP

La imagen oficial de NGINX no incluye PHP por defecto, ya que se centra únicamente en el servidor web NGINX. Si deseas ejecutar PHP en el mismo contenedor que NGINX, necesitarás configurar un entorno adecuado para ello.Puedes crear una imagen personalizada basada en NGINX que incluya PHP. Para ello, crearás un archivo Dockerfile que combine NGINX y PHP-FPM (que es el manejador de PHP recomendado para NGINX). Aquí te dejo un ejemplo de un Dockerfile que agrega PHP a la imagen de NGINX:

# Usa la imagen oficial de NGINX como base
FROM nginx:latest

# Instala PHP y PHP-FPM
RUN apt-get update && \
    apt-get install -y php-fpm php-mysql

# Copia un archivo de configuración personalizado para NGINX
COPY default.conf /etc/nginx/conf.d/

# Exponer el puerto 80
EXPOSE 80

# Inicia PHP-FPM y NGINX cuando se inicie el contenedor
CMD service php7.4-fpm start && nginx -g 'daemon off;'

FROM nginx: Usamos la imagen base de NGINX.

apt-get install -y php-fpm php-mysql: Instalamos PHP-FPM y extensiones de PHP necesarias como php-mysql para poder conectar a bases de datos MySQL, entre otros.

COPY default.conf: Esto asume que tienes un archivo de configuración para NGINX que define cómo manejar las solicitudes PHP (lo veremos más adelante).

CMD: Se usa para iniciar tanto PHP-FPM como NGINX al mismo tiempo. php-fpm procesa las solicitudes PHP, y NGINX sirve las páginas.

Ejemplo de de archivo default.conf

server {
    listen 80;
    server_name localhost;

    root /usr/share/nginx/html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }
}

Crear claves ssh para usar con github.

Configuracion GitHub

1 – Crear cuenta

2 – Configurar claves ssh
— crear claves ssh
ssh-keygen -t rsa -b 4096 -C ""

3- En setting – ssh keys agregar la clave. recuperada desde id_rsa.pub

--ver clave publica
    cat ~/.ssh/id_rsa.pub

4- Crear un repositorio en github.

Docker starter read

docker run -d -p 80:80 docker/getting-started

  • -d – run the container in detached mode (in the background)
  • -p 80:80 – map port 80 of the host to port 80 in the container
  • docker/getting-started – the image to use

Trabajando con un Dockerfile

docker build -t getting-started .

  • -t Final image
  • . dockerfile en el directorio

You can stop and remove a container in a single command by adding the «force» flag to the docker rm command. For example: docker rm -f <the-container-id>