热潮背后的ML:最具价值的商业工具,为你的运营业务出谋划策

点击上方关注,All in AI中国

机器如何学会做出预测?

机器学习背后的热潮源于它能够在运营业务时做出的预测能力。本文试图直观地解释机器是如何学会计算概率。

热潮背后的ML:最具价值的商业工具,为你的运营业务出谋划策

假设你经营一家泡茶店,并希望创建一个机器学习模型来预测客户是否会喜欢泡茶中的椰肉。

第一步:你要记下某一天内订购椰肉的所有顾客,以及他们是否喜欢它。

你可以制作一个如下图所示的图表,其中0代表客户不喜欢椰肉,1代表他们真的喜欢它。

热潮背后的ML:最具价值的商业工具,为你的运营业务出谋划策

让我们从基本情况开始了解,毕竟你对客户一无所知。根据上图来得出未来的客户是否会喜欢椰肉的可能性,根据目前为止的数据,最佳的可能是4/10。

第二步:现在让我们看看我们如何在机器学习世界中解决这个问题。在这里,我们试图通过机器学习模型预测人们对椰子的喜爱程度。我们将模型预测与客户实际喜爱程度之间的误差测量为:(actual_preference - prediction_preference)²。

首先让我们看一下预测中的错误示例,如果模型预测值为0.7:

热潮背后的ML:最具价值的商业工具,为你的运营业务出谋划策

当实际偏好为1(类似)时,误差变为(1-x)²,即(1- 0.7)×(1- 0.7)= 0.09。类似地,当实际偏好为0时,误差变为x²,其评估为0.7 x 0.7 = 0.49。

一般来说,总误差可写为:num_likes *(1 - x)²+ num_dislikes *x²。在我们的例子中,num_likes,即喜欢椰肉的顾客数量是4,而num_dislikes(不喜欢)为6。x的值应该为多少才能使总误差最小化?下图显示了沿x轴扫描不同预测值时喜欢、不喜欢及其总和的误差:

热潮背后的ML:最具价值的商业工具,为你的运营业务出谋划策

将预测中的误差表示为(actual_preference -predicted_preference)²的美妙之处在于,你获得的这个碗状的误差图,可称之为平滑凸函数,它具有非常明确的最小值。请注意,总误差最小为0.4或4/10,这是我们之前计算过的客户喜欢椰肉的概率。这是巧合吗?不!通过一些微积分,你可以得出函数num_likes *(1 - x)²+ num_dislikes *x²在x = num_likes /(num_likes + num_dislikes)时被最小化,这正是客户喜欢椰肉的概率。

这形成了内在的核心:预测喜欢和不喜欢的总误差被最小化的点也恰好是预测与喜欢的概率相匹配的点。

第三步:假设除了记录客户是喜欢还是不喜欢椰肉外,还要记录其他属性。就像他们需要根据实际来订购各种大小尺寸的饮料一样。现在你的数据可能如下所示:

热潮背后的ML:最具价值的商业工具,为你的运营业务出谋划策

为了改善你的预测,你可以将你的客户分为两组——订购小饮料(A,D,E和G)的客户以及订购大饮料(B,C,F,H,I,J)的客户。现在,你可以根据饮料的大小进行两种不同的预测,而不是进行单一预测。对于小饮料饮用者,他们喜欢椰肉的概率可以调整为2/4 = 0.5,对于大饮料饮用者则可以调整为2/6 = 0.33。

通过一些微积分计算,即使你的每个客户拥有多个属性,甚至某些属性是连续的值时,也可以将预测的误差最小化。

当这个基本机制在数百万客户身上重复出现,并且你输入了数百个客户属性时,预测就会变得更加智能。

但实际上,在实践中你很少会得到最小化(predict_preference - actual_preference)²。因为通过取平方,如果predict_preference远离actual_preference,则误差会相当地大。在这种情况下,总误差会受到数据中异常值的影响,这些极少数不稳定的客户违背了通常的模式。由于少数不稳定的客户数据,你对常规客户的预测质量可能会受到影响。

第四步:为了避免你的"古怪"客户陷入困境,你需要更多的思考。输入逻辑损失,你可以使用log(1 + e ^ x)代替将误差预测(1-x)²。对于预测不喜欢的误差,使用log(1 + e ^ -x)而不是x²。将它应用于我们的第一个例子中,我们将使用逻辑损失函数的总误差与简单的差异平方进行比较。

热潮背后的ML:最具价值的商业工具,为你的运营业务出谋划策

请注意,你要考虑使用沿x轴曲线时紫色曲线的误差。相比之下,使用绿色显示的逻辑损失计算的误差仍然保持碗状,但其曲率要小得多。因此,即使预测偏离0或1,误差也不会飙升。

但这里有一个小问题,如果你仔细观察,绿色曲线的最低点不再是0.4!这是因为表示为逻辑损失的误差在表示喜欢的概率照片没有被最小化。这是一个经常被问到的问题——如何最大限度地减少逻辑损失得出计算概率?严格来说,那是因为你不会通过最小化逻辑损失来计算概率。

当x = log(num_likes / num_dislikes)时,由逻辑损失给出的总误差num_likes * log(1 + e ^ -x)+ num_dislikes * log(1 + e ^ x)被最小化。这可以重新排列,以便当x = log(喜欢的概率/(喜欢的概率))时误差可以最小化。

为了提取隐藏在"混乱"中的喜欢的概率,你需要做的就是在两边都应用sigmoid函数。sigmoid函数是log的倒数(y /(1-y)),因此喜欢的概率等于sigmoid(x),其中x是使逻辑损失函数测量的预测误差最小化的值。

完成了!这是使机器如何最终解决多样化问题的核心,从决定肿瘤是否会癌变,到用户是否喜欢一个帖子。任何时候,只要你能到外面的世界,收集一些"是与否"的例子,你就可以回到你的办公桌,尝试建立一个模型来预测它。

热潮背后的ML:最具价值的商业工具,为你的运营业务出谋划策

运营:李佳惠


分享到:


相關文章: