Es un campo dedicado a la optimización de funciones submodulares.
Puede estar pensando que no tiene que ser un genio para hacer esa inferencia, así que me expandiré un poco.
Piense en las funciones aplicadas a un conjunto de conjuntos de elementos, desea encontrar el conjunto de conjuntos que maximiza o minimiza algunos cálculos.
- ¿Cuáles son los documentos que debería leer sobre los sistemas de recomendación basados en el aprendizaje profundo?
- ¿Somos mejores que las máquinas que creamos?
- ¿De dónde obtienen los sistemas de conducción autónomos sus datos de entrenamiento?
- Minería de datos: utilizando el análisis de la cesta de la compra para el pronóstico de ventas, ¿cuál es el mejor algoritmo?
- ¿Tiene sentido el uso de bosques aleatorios en los datos financieros si se supone que los rendimientos dependen en serie (es decir, que los rendimientos actuales dependen de los rendimientos pasados)?
Una función es submodular si cumple con la siguiente propiedad: cuando agrega un conjunto a una solución “A”, la mejora es peor que agregar el mismo conjunto a un subconjunto de “A”.
La submodularidad es una versión discreta de la concavidad. Piénsalo 😉
Un ejemplo es el problema de la cubierta del conjunto. Tiene un conjunto de conjuntos y debe encontrar la combinación mínima de esos conjuntos para cubrir algún universo de elementos.
Por ejemplo, que el universo sea: U = {1,2,3,4,5,6,7,8}
y nuestros conjuntos:
S1 = {1,2,3}
S2 = {1,4,5,6}
S3 = {4,5,7}
S4 = {2,4,6,8}
S5 = {6,8}
S6 = {1,3,5,7}
La solución es, por supuesto, S4 y S6.
La función aquí es la cantidad de elementos en el universo cubiertos por nuestros conjuntos y es submodular porque si agregamos un nuevo conjunto a nuestra solución, la mejora tiene que ser peor que agregar el mismo conjunto a un subconjunto de la solución, esto es fácil entender porque un subconjunto de la solución solo puede cubrir los mismos o menos elementos, por lo que cuando agregamos nuevos elementos siempre podemos mejorar más que si agregamos esos mismos elementos a un superconjunto de la solución.
Los algoritmos basados en heurísticas codiciosas generalmente funcionan muy bien para optimizar las funciones submodulares.
Esto tiene varias aplicaciones, por ejemplo en sistemas de recomendación para proporcionar recomendaciones que son “amplias” en una variedad de temas, en otras palabras, desea recomendar elementos que cubran la mayoría de las categorías, no solo elementos de una categoría.
Luis