El inspector Miguel Camacho, licenciado en Matemáticas y Estadística, leía en 2012 en una comisaría del centro de Granada las declaraciones de robos con violencia en la calle. Era su primer destino como policía después de la academia. Algunas denuncias le parecían falsas, sobre todo las vinculadas a teléfonos móviles caros. "Pero yo entonces era muy ingenuo", dice. Camacho no concebía que alguien acudiera a la policía a denunciar algo que no había ocurrido para cobrar, por ejemplo, un seguro.
|
etiquetas: policía , denuncias falsas , estafa , engaño
Obviamente la primera es iPhone.
Si la repites 3 veces eres culpable.
Creo que es lo mismo.
Me ha parecido interesante. El caso es que estamos hablando de un texto, en el cual no se plasma el estado de la víctima ni cualquier otro dato. ¿Tal vez es algo irrelevante?
Ya se como me tengo que inventar mi proxima denuncia falsa para que sea mas creible.
Sorprendete de que no la incluyan como asignatura de esas que querian imponer con la coletilla (de genero)....es material de primera para algunas futuras denunciantes.
Por otro lado, dice que un policía experto detecta un 75%, el programa un 91%. Es un avance, pero todo y así, el margen de un 9% de error es muy alto para que los policías (o los seguros) se amparen en el uso de este programa para descartar automáticamente denuncias. Espero que no sea así.
El artículo es el mismo y está referenciado, yo prefiero leerlo en el foro.
El problema es un clasificador binario de libro, como los que deciden si un mensaje es spam o no. Para hacer clasificadores en lenguaje natural hay muchas aproximaciones, una de ellas es que la IA se lee montones de textos (corpus) para calcular vectores que representan a las palabras, de esa manera puedes hacer operaciones con las palabras como Rey - hombre + mujer = reina. Pero esto no me aportaría mucho para clasificar así que mi aproximación serían los siguientes pasos:
- Tokenizar: dada un texto saber partirlo en frases y cada frase en palabras. No es tan trivial como parece porque en muchos idiomas hay contracciones y similares y tokenizar significa romperlas en palabras, por ejemplo "don't" debe tokenizarse a ["do", "not"]
- Eliminación de palabras que no aportan significado (stopwords). El problema de tener muchas palabras es que la eficiencia y el tiempo de entreno crecen mucho con la cantidad de palabraa diferentes.
- Cálculo de la raíz o lema de cada palabra. Se puede elegir la primera (stemming) y nos devolverá la raíz, por ejemplo de "viajando" nos dará "viaj", o la segunda (lemmatizing) para obtener el lema, "viajando" nos debería dar "viaje". Los stemmers son más sencillos, y puedes encontrar Porter stemmers para los lenguajes más comunes.
- El siguiente paso es tener denuncias, muchas, y clasificadas a si eran falsas o no. Para cada una haremos los pasos anteriores obteniendo un vectoe de palabras, y obtendremos una lista completa de todas las raíces diferentes usadas entre todos los textos y la cantidad de veces que aparecen en global y por texto.
- Parte de los documentos (un 70% por poner un ejemplo de cifra) se usará para entrenar y el otro 30% para comprobar el entrenamiento. Esto se hace pars comprobar no solamente que nuestra IA aprende sino para evitar algo llamado "overfitting" y que consiste en que la IA no generalice el patrón sino que se ajusta exactamente a los datos de entrenamiento, no funcionando correctamente fuera de esos datos.
- Y aquí ya es escoger algoritmo. Al ser solamente dos clases (es falsa o no) hay muchísimas opciones, Naive Bayes, logistic regression, CNN, RNN, two-class boosted decission tree,... Pero el texto nos da una pista de que no es solamente por palabras sueltas sino que identifica combinaciones de palabras así que apostaría por LSTM RNN. Una vez entrenado obtienes un modelo, que no es más que un montón de numeritos, y obtenerlos es lo que lleva tiempo (entrenar) y GPU.
- Ya tienes tu entreno, te llega una frase, haces los pasos de tokenizar, quitar stopwords y stemming, calculas un vector de features, lo pasas por tu modelo y te devuelve un valor y la probabilidad de qie sea ese valor.
- Queda evaluarlo. Lo binario es bonito, así que puedes evaluar verdaderos positivos, falsos positivos, verdaderos negativos, falsos negativos y calcular medidas de lo bien que funciona. La gente se suele fijar en el accuracy, lo bien que acierta los positivos, pero eso da el problema de idenficar una denuncia como falsa y que sea verdadera, y para medir eso está el recall. Teniendo en cuenta accuracy y recall se calcula una tercera llamada f1-score que suele ser la que se usa para decir si tu modelo es bueno o no. También se usa bastante el AUC (Area under the curve), que básicamente es un número de 0 a 1 dónde 0.5 es lo que te daría el azar.
Datos, please.
- algoritmos de búsqueda de estados con heurístico (minimax, poda alfa-beta, A*,...). Se usan p.e. en el ajedrez. A un estado fijo (una foto del problema) asigna un valor mediante una función (heurístico), y se busca el estado que tiene mayor o menor valor de todos los posibles.
- redes neuronales. Es un instrumento matemático donde hay un grafo con pesos (valores) en los nodos (las neuronas). Nuevos valores de entrada se corresponden con una nueva salida, y eso altera los pesos de los nodos. Entrenas a la IA. Ahí entra el machine learning. Al final la red neuronal tiene una configuración determinada por su entrenamiento, pero que ningún humano sabe interpretar específicamente.
- algoritmos basados en pesos y reglas. Se define un objetivo, se parte de un estado inicial, y se van aplicando un conjunto de reglas que se van aproximando a la solución, hasta dar con ella. Lo usan los sistemas expertos. Por ejemplo, das los datos de un pájaro que has visto (color, tamaño, entorno,...) y el sistema es capaz de decirte qué especie es. Para cada dato que aportas, premia unas especies y penaliza otras, hasta dejarte una como más probable.
De ello se infiere que cuando se vota negativo un envío por el solo hecho de ser aede se esta haciendo un uso fraudulento del voto negativo, ya que el envío no sera copia, irrelevante o spam.