由数据驱动的决定,例如为油漆墙选择颜色

开始选择一种颜色来粉刷房间的墙壁时,我遇到了一件有趣的事情。 从一开始的整个过程就类似于某些IT-ML-Blah-blah-blah分析项目上的工作。

还有一个客户并没有真正理解他到底想要什么,而是想要一切都好并且喜欢。 客户中仍然有一些有关方面不能同意什么是“好”。 有一些问题的重新表述,在一个大问题下,与这种“好”有关,但至少可以通过某种方式解决。 有多种解决方案方法可供选择,并尝试实现它们。 存在迭代,该迭代隐式但单调地导致了某种适合所有人的解决方案。 而且,在“真正的”项目中很难得出一些奇怪的结论,因为由于普遍的紧张感和对金钱过程的参与,注意力的焦点很少停留在过程中的这些地方。



通常,如果您在房间中选择颜色,作为一种分析过程,可能会很有趣。

问题陈述


比起几个人对房间墙壁粉刷颜色的选择来说,还有很多令人作呕和烦人的事情,但是这些东西很少。 大多数情况下,它们与某种疾病或伤害有关。

有条不紊地观察鲜花让人联想到医院,超市,政府机构,公共公寓和公共厕所中的苏联厨房。 而且,如果不是由您引起的,则对话者正是在学校走廊的墙壁上给墙壁涂了颜色,对话者在那里度过了他一生中最糟糕的岁月。 刺激会增加,因此不做决定。

因此,任务出现了。 解决此问题的质量标准如下:

KPI:所有涉众对房间墙壁颜色的满意度。 在进行这样的绘画之前,正的KPI是直接无法获得的(但是我不希望重复绘画10次),因此我必须使用其他方法。

现实的KPI:所有感兴趣的各方对选择用于绘画墙壁颜色的满意程度(应立即注意,令人满意的颜色选择不能保证对墙壁上这种颜色的满意,但是选择不多。必须在决策结果仍然未知的条件下做出决策)

输入数据:

  • 房间
  • RGB调色板
  • 有兴趣的人选择房间的颜色

好了,过程开始了,任何实施公司项目的人都熟悉。

但是我没有用手指做,因为现在我想出了一些聪明的数学方法!


看一下颜色,看清楚它在墙上的外观,基本上只有受过美术教育的人才能做到。 但是他们不是我们。 我们需要弄清楚如何将颜色与墙壁相关联,以便更快,更合理地做出决定。 paint.net是我们的救恩。 您可以拍摄房间的全景照片,清除照片中的墙壁,然后在墙壁上涂一些东西。 也许这将有助于做出适合所有人的决定? 在我们的案例中,一切都始于此:



这是一间墙壁破旧不堪的房间。 现在,您可以将墙壁粉刷成任何东西,看看我们是否喜欢它。 例如,执行以下操作:



这真是太好了。

但是不!

睁开双眼的粉红色小马的世界与我们无关。 利益相关者在将颜色叠加在照片上时关于颜色选择的讨论也很快陷入停顿。 几个小时的油漆大惊小怪,没有达成共识。 但是! 我们有一些工具。 可以使用。 如果我们不成功,也许有人可以为我们做到这一点?

专家解决方案


专家呼吁VK的所有感兴趣的订户。 可以肯定的是,2018年已经到了,但我们仍然有一个建议国。 让每个人都开始建议大家。

对于上述摄影杰作,制作了一个“场地”,其中包含房间的照片和可以改变墙壁颜色的拾色器。 该网站的链接已发布在VK中,并要求您提供帮助以选择颜色。

专家们表达了一些意见,分享了他们的选择。 las,这并没有达成共识,但是引起了有关方面审美优先级的许多转变。 这些偏见进一步导致达成共识。

机器学习之路


专家们有两个问题。

  • 专家的意见并不总是与有关人员的意见一致,
  • 专家寥寥无几,他们的所有观点都无法汇集在一起​​,无法做出一个平均的决定。

总之,这两个问题都没有提供解决方案。

  • 如果有很多专家,他们可能会在某种选择上减少数量,
  • 如果他们很少,但每个人都与有关方面有相同的意见,则可以简单地同意专家的意见。

但是,专家意见问题的表述为下一次迭代提供了关键。

您需要有很多等级。 如果有很多票,而所有票都是针对特定的票,则对此比较容易接受。 但是怎么做呢?

例如,要制作一个小型桌面应用程序,该应用程序将随机的伽玛选项应用于图片,感兴趣的人会将这些选项的评分从0到10。因此,以这种格式收集了300多种不同的颜色等级:

\开pmatrixr\在[0,255]g\在[0,255]b\在[0,255]V\在[0,10]\结pmatrix

当然,大多数颜色是0。

现在,我们有了一个带有估算值的样本,尽管分析起来不太方便。 您可以将V重新指定为0到10,这实际上不是颜色分数,而是投票支持此选项的人数。 并转成4维向量 rgbVT在v 3维 rgbT。 零自然消失。 现在,每个矢量对于相应的阴影来说都是相等的声音。 将随机的小偏移量添加到RGB值很方便,这样就不会得到一堆完全相同的阴影。

在该公式中,获得了寻找多维分布的最大密度的问题的典型公式。 即 我们正在寻找人们经常投票的领域。

如果要加强高额定值的影响,则可以在将4-d转换为3-d时采用V²。 然后,得分2变成4票,得分4变成16票。 因此,我们可以减少我们投票赞成的那些颜色的影响,但不能直接降低。

ML


我想到的两个简单的事情是,您可能可以使用多维正态分布或3-d的二次函数来近似结果分布(某种程度上带有明显的最大值)。 并不是说所有这些简单的功能实际上都对它进行了精美的描述,但是在这种情况下,绝对有可能对此视而不见。

近似多维正态 ,仅需根据数据估计协方差矩阵和所有边际分布期望值 。 之后,您可以分析得出最大值,但是(对于大脑而言)只需一步就简单地遍历所有可能的颜色组合,然后将分布参数和颜色值替换为分布公式,则容易得多。 然后取最大点。

maxN\( boldsymbol mu boldsymbol Sigma boldsymbolColor

 boldsymbol mu\空 boldsymbol Sigma\协 boldsymbolColor=permrgbTperm\可\空\空\空
多维法线的近似值及其最大值的搜索给出了所需雾度的良好蓝紫色:



放大甚至更容易。

为此,在matlab中为所有可能的变化设置了表格功能 ijk

Crgb boldsymbolc= sumijkcijkrigjbkijk inNi+j+k le2

对于所有可能的数据,系数已更改 cijk并且模拟退火方法将附近点的密度的二次误差最小化:

min sumDCrgb boldsymbolcprgb2

\空prgb\空\空\空\点\空rgb
设置多项式系数后,通过计算函数的导数来计算最大值 C使用符号工具箱,进一步扩展导数的根。 有很多根,但其中一个适合于颜色值的限制。

通过二次函数进行逼近并搜索其极值,得到具有正态分布的相似形式。 变蓝,变红:



但是有时您可能无法考虑近似值,而只是编写一个神经网络来提供所有数据。 谈论神经网络的参数是没有意义的,但是有很多选择,许多架构以及对变量的几种不同的变态。 结果,结果是得出了关于最佳颜色的相当稳定的观点。 以前对颜色“优”的评估使网络几乎可以在除绿色以外的所有环境中工作。 她慷慨地添加了绿色。



顺便说一句,例如,如果我们将密度重新定义为类,例如,寻找一些大于5的值,并使用梯度提升分类器找到正估计值最密集的空间区域,则结果大致相同。

这里又出现了一个问题,当提出所谓的“中期结果”时,通常会在实际项目中表现出来。 听起来像这样:

当然,这非常好:神经网络,分布,但是出于某些原因,我不希望这样做……我希望它是好的。

在这一刻非常有趣的是,如果您再次仔细地评估照片,那么在照片中被认为是美丽的东西并不一定就是您想要的东西!

因此,在实际项目中,某些指标(以前似乎是客观且具有建设性的依赖)在获得结果时会突然变得沮丧(即使总的来说,在数字方面效果很好)。 还有一件事仍然存在。 找到我们成功的所有优点,并提供一些精美的图片,以便每个人都很高兴。

可视化


让我们以某种方式精美地绘画,我们如何为颜色投票? 例如,我们将在Matlab中为HSV(255,255,255)绘制3-d散点图,在该散点图中,他们投票的位置将由所需颜色的球表示。 球越大,他们的投票越多。 在我们的例子中,它看起来像这样:

抱歉,我没有将HSV带到360/100/100,这是懒惰,在matlab中从0到1的所有内容。

球越大,您喜欢的颜色就越多。

从该图的预测中可以清楚地看出,为什么不同的方法会给出他们给出的结果。 例如:


投影颜色/色调

从“颜色/色相”投影可以看出,如果您构建高斯或通过二次函数对其进行近似,则最大值将介于蓝色和紫色之间。 在这种情况下,最大颜色将约为100,并且不会选择非常明亮的颜色。 具有大量局部极值的空间将非常复杂的神经网络具有考虑绿色部分的能力。 显然那里有一个粉红色的峰,但略低一些,所以我没有进入最终结果。 等等

查看可视化结果,发现3个明显的伪集群。



所有粗略方法的平均能力都将浅蓝色和深蓝色快乐地合并为一个中间蓝色结果。 同时,逻辑建议不值得用深色来粉刷整个房间(即使它们在照片中看起来什么也不是),因此应丢弃此群集。 没有人真正喜欢绿色,因为绿色在长期凝视期间引起了各种各样的医院与社区的联系。 为什么这里有任何数学运算?

在剩下的群集中,您只需要取条件平均值并以某种方式完成该平均值即可。



对此,所有有关方面都同意,总的来说,这是一个折衷办法,值得一试。

几周后,现实并没有太大地扭曲期望(尽管它比现实所期望的要粉红一些)...



这种粉红色的颜色本身当然是一件值得怀疑的事情,但是我们自己想要它。 现在只剩下购买合适颜色的家具了。 嗯 但是,不考虑房间内家具的自动最佳布置吗? 这是一个典型的凸优化问题...

结论


客户和承包商同时工作,令我感到惊讶的是,我本人无法对我想解决双方的问题达成谅解。 另外,我很惊讶地看到我认为客观的,直接从满足我作为艺术家的数据的推断中得出的那些事情不能满足作为客户的我的想法。

这里的疯狂之处在于,我本人是自己编辑数据的,直接在其中指出了什么可能完全满足我的需求。 显然,由于某种原因,我本人不太清楚,所以我无法充分地编译它们。 例如,我给深色标注了高分,尽管它们显然最终没有能力被选中。 怎么了 因为图片很可爱。 真正的任务是完全不同的,但是从机器上更复杂的考虑中选择颜色是不现实的。

最终,在我生成的数据中,解决方案被隐藏了。 但是,如何立即做出决定,而没有这些带有手鼓的奇怪舞蹈,却纠正了我对我所需要(或肯定不需要)的想法,这还不是很清楚。 我用球观察了可视化,然后开始使用其他方法搜索最大值。 但是我只是在那之后才看到“集群”。

Source: https://habr.com/ru/post/zh-CN421795/


All Articles