La compresión de datos es una aplicación muy general y práctica del aprendizaje automático. La idea es considerar el archivo de entrada como una secuencia de símbolos (bits, bytes o palabras) y asignar códigos más cortos a los símbolos más probables. Específicamente, dado un símbolo con probabilidad p, desea codificarlo utilizando bits de registro (1 / p). Puede hacer esto casi exactamente (incluso permitiendo longitudes fraccionarias) utilizando codificación aritmética. Luego, para descodificar, se realiza la misma secuencia de predicciones (a partir de los datos descodificados previamente) y se usa el decodificador aritmético para convertir los códigos de nuevo en símbolos.
La parte interesante (difícil) del problema es el modelado o la predicción, el paso de asignar una probabilidad p a cada resultado posible para el siguiente símbolo. Aquí es donde aplicas tus algoritmos de aprendizaje automático. Cuanto mejor sea tu algoritmo, mejor será la compresión. Incluso puedes competir por los premios, por ejemplo, el Desafío de Compresión / SHA-1 de Calgary o el Premio Hutter de 50’000 € por Comprimir el Conocimiento Humano. Que te diviertas.
Si este problema le interesa y desea obtener más información sobre la compresión de datos, puedo recomendar mi libro en línea, Explicación de la compresión de datos.