Comenzando a elegir un color para pintar la pared de la habitación, me encontré con algo interesante. Todo el proceso desde el principio comenzó a parecerse al trabajo en algún proyecto analítico de IT-ML-Blah-blah-blah-analytic.
También hay un cliente que realmente no entiende lo que quiere exactamente, pero quiere que todo sea bueno y le gustó. Todavía hay algunas partes interesadas por parte del cliente que no pueden ponerse de acuerdo sobre lo que es "bueno". Hay algunas reformulaciones del problema que, bajo una gran pregunta, son relevantes para este "bien", pero al menos de alguna manera resueltas. Hay una selección de métodos de solución e intentos de implementarlos. Hay una iteración, que implícita pero monótonamente conduce a algún tipo de solución que se adapte a todos. Y hay algunas conclusiones extrañas que difícilmente podrían extraerse en un proyecto "real", porque debido al nerviosismo general y la participación en el proceso de dinero, el foco de atención rara vez se detiene en estos lugares del proceso.
En general, si observa la elección del color en la habitación, como un proceso analítico, puede resultar interesante.
Declaración del problema.
Hay cosas más desagradables y molestas que la elección de varias personas del color para pintar la pared de la habitación, pero son pocas. Muy a menudo están asociados con algún tipo de enfermedad o lesión.
La visión metódica de las flores evoca un mar de asociaciones con hospitales, supermercados, agencias gubernamentales, cocinas soviéticas en apartamentos comunales y baños públicos. Y si no te causa, entonces el interlocutor tenía exactamente ese color en la pared del pasillo de la escuela, donde el interlocutor pasó los peores años de su vida. La irritación tiende a aumentar y la decisión de no tomarse.
Así surge la Tarea. Los criterios de calidad para resolver este problema son los siguientes:
KPI: El grado de satisfacción de todos los interesados en el color de las paredes de la habitación. Un KPI positivo es directamente inalcanzable antes de pintar como tal (pero no tengo ganas de volver a pintar 10 veces), así que tengo que usar algo más.
KPI realista: el grado de satisfacción de todas las partes interesadas en la
elección del color para pintar la pared (debe notarse de inmediato que una elección satisfactoria de colores no garantiza la satisfacción de este color en la pared, pero no hay muchas opciones. Deben tomarse decisiones en condiciones en las que aún se desconoce el resultado de las decisiones)
Datos de entrada:
- Habitacion
- Paleta RGB
- Personas interesadas que eligen un color para la habitación.
Bueno, aquí comienza el proceso, familiar para cualquier persona que implemente proyectos corporativos.
¡Pero no lo estoy haciendo con el dedo, ya que ahora se me ocurrirá algo matemático inteligente!
Mire los colores y vea claramente cómo se verá en la pared, básicamente solo pueden las personas con una educación artística. Pero ellos no son nosotros. Necesitamos descubrir cómo correlacionar los colores con las paredes, para que la decisión se tome más rápido y de alguna manera más justificada. Y paint.net es nuestra salvación. Puede tomar una foto panorámica de la habitación, borrar las paredes de la foto y luego pintar sobre ellas con algo. ¿Tal vez esto ayudará a tomar una decisión que se adapte a todos? En nuestro caso, todo comenzó con esto:

Aquí es una habitación con paredes mal desgastadas. Ahora puedes pintar las paredes en cualquier cosa y ver si nos gusta o no. Por ejemplo, haz algo como esto:

Y es algo maravilloso.
Pero no!
El mundo de los ponis rosados con los ojos arrancados no se trata de nosotros. La discusión de las partes interesadas sobre la elección del color cuando se superpone en la foto también se detiene rápidamente. Un par de horas de alboroto con pintura y sin consenso. Sin embargo!
Tenemos alguna herramienta. Se puede usar. Si no tenemos éxito, ¿tal vez hay personas que pueden hacer esto por nosotros?
Solución experta
Los expertos llamaron a todos los suscriptores interesados de VK. La apuesta fue que el año 2018 está en el patio, pero aún tenemos un país de consejos. Que todos comiencen a aconsejar a todos.
Para la obra maestra de fotografía mencionada anteriormente, se realizó un "sitio", que contenía una foto de la habitación y un selector de color que permitía cambiar el color de las paredes. Se publicó un enlace al sitio en VK con una solicitud para ayudar con la elección del color.
Los expertos expresaron una serie de opiniones, compartieron sus opciones. Por desgracia, esto no condujo a un consenso, sino que provocó una serie de cambios en las prioridades estéticas entre las partes interesadas. Y estos sesgos condujeron aún más a un consenso.
Camino al aprendizaje automático
Los expertos tuvieron dos problemas.
- La opinión del experto no siempre coincidía con la opinión de la persona interesada,
- Había pocos expertos y no se pudieron reunir todas sus opiniones para tomar una decisión promedio.
Juntos, ambos problemas no proporcionaron una solución.
- Si hubiera muchos expertos, podrían aplastar la cantidad con respecto a alguna opción,
- Si hubiera pocos, pero todos tuvieran la misma opinión que las partes interesadas, uno simplemente podría estar de acuerdo con los expertos.
Pero la formulación misma del problema de la opinión de expertos dio la clave para la próxima iteración.
Necesitas tener MUCHAS calificaciones. Si hay muchos y todos los votos son para algo específico, es más fácil soportarlo. ¿Pero cómo hacerlo?
Por ejemplo, para hacer una pequeña aplicación de escritorio que aplicaría opciones gamma aleatorias a la imagen, y las personas interesadas calificarían estas opciones de 0 a 10. Por lo tanto, se recopilaron más de 300 clasificaciones de color diferentes en el formato:
Principalmente colores clasificados en 0, por supuesto.
Ahora tenemos una muestra con estimaciones, aunque no es muy conveniente para el análisis. Puede reformular que V es de 0 a 10, esto no es realmente una puntuación de color, sino la cantidad de personas que votaron por esta opción. Y convertir un vector de 4 dimensiones
en v tridimensional
. Los ceros desaparecen naturalmente. Y cada vector es ahora una voz igual para el tono correspondiente. Es conveniente agregar pequeñas compensaciones aleatorias a los valores RGB para que no obtenga exactamente los mismos tonos.
En esta formulación, se obtiene una formulación típica del problema de encontrar la densidad máxima de una distribución multidimensional. Es decir Estamos buscando un área en la que la gente "vote" con más frecuencia.
Si queremos fortalecer la influencia de las calificaciones altas, podemos tomar V² al convertir 4-d a 3-d. Luego, un puntaje de 2 convierte 4 votos, y un puntaje de 4 en 16 votos. Por lo tanto, podemos reducir la influencia de los colores por los que votamos, pero no directamente.
ML
Las dos cosas simples que vienen a la mente son que probablemente puede aproximar la distribución resultante con una distribución normal multidimensional o una función cuadrática en 3-d (algo tan abovedado con un máximo pronunciado). No es que todo lo que allí realmente se describía bellamente con funciones tan simples, pero en este caso definitivamente era posible hacer la vista gorda.
Para
aproximar la normalidad multidimensional , solo es necesario estimar de acuerdo con los datos la
matriz de covarianza y la
expectativa de todas
las distribuciones marginales . Después de eso, puede calcular analíticamente el máximo, pero es mucho más fácil (para el cerebro) simplemente pasar por todas las combinaciones de colores posibles con un paso, sustituyendo los parámetros de distribución y los valores de color en la fórmula de distribución. Luego toma el punto máximo.
La aproximación por normal multidimensional y la búsqueda de su máximo dieron un buen color azul-violeta del grado deseado de turbidez:

Acercar es aún más fácil.
Para hacer esto, en el matlab se estableció una función del formulario para todas las variaciones posibles
:
Para todos los datos posibles, los coeficientes cambiaron
y el
método de simulación de recocido minimizó el error cuadrático de la densidad de puntos cercanos:
Después de establecer los coeficientes polinómicos, el máximo se calculó calculando la derivada de la función
usando la caja de herramientas simbólica y más allá de las raíces de la derivada. Había varias raíces, pero una era adecuada para las restricciones en los valores de color.
La aproximación por una función cuadrática y la búsqueda de su extremo dieron una versión similar con una distribución normal. Un poco más azul y menos rojo:

Pero a veces no puede pensar en aproximaciones y simplemente escribir una red neuronal, que alimenta todos los datos. No tiene sentido hablar sobre los parámetros de la red neuronal, pero había muchas opciones, muchas arquitecturas y varias perversiones diferentes sobre las variables. Como resultado, resultó sacar una opinión bastante estable sobre el mejor color. Evaluaciones previas de la "bondad" de los colores hicieron que la red funcionara en casi todo, excepto en el verde. Ella generosamente agregó verde.

Por cierto, si reformulamos las densidades como clases, por ejemplo, buscando algunos valores mayores que 5, y usamos el Clasificador de aumento de gradiente para encontrar las áreas del espacio donde las estimaciones positivas son más densas, obtenemos aproximadamente lo mismo.
Y aquí nuevamente se manifestó un problema, que a menudo se manifiesta en proyectos reales al presentar los llamados "resultados provisionales". Suena así:
Esto, por supuesto, es todo muy bueno: redes neuronales, distribuciones, pero por alguna razón no quiero esto ... Me gustaría que fuera bueno.¡El momento aquí es muy interesante porque lo que se considera hermoso en una fotografía no es necesariamente lo que quieres tener en tu pared si lo evalúas más cuidadosamente nuevamente!
Entonces, en proyectos reales, algunos indicadores, cuya dependencia previamente parecía objetiva y constructiva, de repente de alguna manera se deprimen al obtener un resultado en ellos (incluso si, en general, funciona bien en términos de números). Y queda una cosa. Encuentre todo lo bueno que hemos tenido éxito y presente algunas bellas imágenes para que todos estén felices.
Visualización
Dibujemos bellamente de alguna manera, ¿cómo votamos por los colores? Por ejemplo, haremos un diagrama de dispersión tridimensional en el matlab para HSV (255,255,255), donde los lugares por los que votaron estarán representados por bolas del color deseado. Cuanto más grande es el balón, más votaron. En nuestro caso, se veía así:
Lamento no haber traído HSV a 360/100/100, fue pereza y todo de 0 a 1 en matlab.
Cuanto más grande sea la pelota, más color te gustará.A partir de las proyecciones de este gráfico, incluido, resulta obvio por qué diferentes métodos dieron los resultados que dieron. Por ejemplo:
Color de proyección / tinteDe la proyección Color / Hue, se puede ver que si construyes un Gauss o lo aproximas mediante una función cuadrática, el máximo estará en algún lugar entre azul y violeta. En este caso, el color máximo será de alrededor de 100 y no se seleccionarán colores muy brillantes. Una red neuronal en la que el espacio será bastante complejo con una gran cantidad de extremos locales tiene la capacidad de tener en cuenta la parte verde. Aparentemente había en algún lugar un pico rosado, pero un poco más bajo, así que no llegué al resultado final. Etc.
Al observar la visualización se revelaron 3 pseudo-grupos notables.

Las habilidades de promedio de todos los métodos crudos fusionaron alegremente el azul claro y el azul oscuro en un resultado azul medio. Al mismo tiempo, la lógica sugiere que no vale la pena pintar la habitación en colores oscuros (incluso si no se ven nada en la foto), por lo que este grupo debe descartarse. Y a nadie realmente le gustaba el verde, porque causó todo tipo de asociaciones hospitalarias comunales durante largas miradas.
¿Por qué hay algún tipo de matemática aquí, eh?En el grupo restante, solo tenía que tomar el promedio condicional y terminarlo de alguna manera con las manos.

Sobre esto, todas las partes interesadas acordaron que, en general, se trata de un compromiso, que vale la pena visitar.
Después de un par de semanas, la realidad no distorsionó demasiado las expectativas (aunque era un poco más rosado de lo que se supone que son las realidades) ...

Tal color rosado en sí mismo, por supuesto, es algo dudoso, pero nosotros mismos lo queríamos. Ahora solo queda comprar muebles del color apropiado. Hm. Pero no piense en la disposición automática óptima de los muebles en la habitación? Este es un problema típico de optimización convexa ...
Conclusiones
Al estar al mismo tiempo por parte del cliente y el contratista, me sorprendió ver cómo yo mismo no puedo encontrar una comprensión sobre un asunto en el que estaba un poco interesado en resolver ambas partes. Además, me sorprendió ver cómo esas cosas que pensaba que eran objetivas e inferidas directamente de los datos que me satisfacen como artista no pueden satisfacerme como cliente.
La locura aquí agrega que yo mismo compilé los datos, indicando directamente en ellos qué exactamente podría satisfacerme. Y aparentemente, no pude compilarlos de manera adecuada, por alguna razón que yo mismo no tenía muy claro. Por ejemplo, le di altas calificaciones a los colores oscuros, aunque obviamente no tenían la capacidad de ser seleccionados al final. Por qué Porque la foto era linda. La tarea real era completamente diferente, pero elegir un color de consideraciones más complejas en la máquina no era realista.
Finalmente, en los datos que generé, la solución estaba oculta. Pero cómo fue inmediatamente tomar una decisión, sin estos extraños bailes con una pandereta, que corrigió mi propia idea de lo que necesitaba (o ciertamente no necesitaba), no estaba muy claro. Miré la visualización con bolas y antes de comenzar a buscar el máximo usando diferentes métodos. Pero vi los "grupos" en él solo después.