熱潮背後的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:最具價值的商業工具,為你的運營業務出謀劃策

運營:李佳惠


分享到:


相關文章: