# 套用結構化架構：客戶流失範例

此範例將逐步解說定義機器學習問題步驟的流程。您將會學習如何將商務知識以及事件觸發、目標、預測點和特徵的架構合併，以建構定義良好的問題。

起點是商務案例「客戶是否會流失」？使用結構化架構後，我們會將此濃縮為更具體，可由機器學習演算法來預測的內容。

## 事件觸發

事件觸發是觸發建立新預測的動作或事件。我們將事件觸發確認為「客戶已註冊訂閱」。這在資料中代表建立新的客戶。我們想要在客戶層級預測他們是否會流失，因此每列需要代表單一客戶。

運用我們的商務知識並透過檢查資料加以確認後，我們知道新客戶的流失率最高。因此我們決定特別聚焦於新客戶。事件觸發是新客戶註冊，我們可以想成每個客戶的個人時間軸在訂閱當日開始。

事件觸發是新客戶訂閱時。水平線代表訂閱以來的天數。

事件觸發是新客戶訂閱時。水平線代表訂閱以來的天數。

事件觸發是新客戶訂閱時。水平線代表訂閱以來的天數。 ![新客戶的時間軸。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-1.png)

## 目標

目標是我們嘗試預測的結果。我們想要預測流失率，因此我們知道一般目標是「客戶是否會流失」？但我們需要更加具體，才能建立有品質的機器學習模型。一開始，我們決定「流失」表示客戶要求我們取消其訂閱。

目標結果是客戶要求取消訂閱的時機。

目標結果是客戶要求取消訂閱的時機。

目標結果是客戶要求取消訂閱的時機。 ![客戶時間軸與目標。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-2.png)

接下來，我們決定要求取消的時間範圍 (水平線)。查看多個已取消的客戶時，我們看見時間軸並不一致。有些客戶在 45 天後取消，其他人則遲至 110 天後才取消。

訂閱後到客戶要求取消訂閱的天數。每條線代表不同的客戶。

訂閱後到客戶要求取消訂閱的天數。每條線代表不同的客戶。

訂閱後到客戶要求取消訂閱的天數。每條線代表不同的客戶。 ![時間軸顯示客戶在經過幾天之後會取消。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-3.png)

我們有 90 天免費試用方案，並且知道很多客戶在試用後流失。根據此商務脈絡，我們的初始想法是使用 90 天的水平線。藉由預測誰預期會取消，我們計畫事先聯繫這些客戶並提供優惠方案 (例如折扣或其他訂閱功能)，以鼓勵他們留下來。

直方圖顯示客戶在註冊後多少天取消，這確認了我們的商務直覺。在圖中，我們可以看見過去三年流失的所有客戶的資料。

訂閱後幾天要求取消的分佈情況。大部分的取消發生在客戶訂閱後約 90 天。

訂閱後幾天要求取消的分佈情況。大部分的取消發生在客戶訂閱後約 90 天。

訂閱後幾天要求取消的分佈情況。大部分的取消發生在客戶訂閱後約 90 天。 ![直方圖顯示客戶取消之前的天數。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-4.png)

選擇 90 天的水平線似乎是個好的開始。不過，當我們在直方圖上繪製該條水平線時，意識到有許多客戶在 90 天試用期之後幾天持續流失。原因可能是他們在幾天後發現信用卡被收費或收到付款方法遭拒的通知，然後來電取消訂閱。

訂閱後 90 天的水平線

訂閱後 90 天的水平線

訂閱後 90 天的水平線 ![標記 90 天水平線的直方圖。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-5.png)

因為我們希望在模型中納入這些客戶作為「已流失」，所以決定使用 110 天作為目標水平線會是更好的方法。使用 110 天可讓我們擷取流失可能與免費試用方案相關的大部分客戶。

訂閱後 110 天的水平線

訂閱後 110 天的水平線

訂閱後 110 天的水平線 ![標記 110 天水平線的直方圖。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-6.png)

現在我們已定義目標，因此可以決定資料儲存位置以及需要如何清理，以建置資料集中的目標欄。在此範例中，我們進行下列事項：

1. 從 Salesforce 提取客戶狀態。

2. 擷取狀態、客戶建立日期和客戶取消日期：

   ![具有樣本資料的表格。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-table-2.png)

3. 清理擷取的資料並轉換為目標欄：

   ![具有樣本資料的表格。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-table-3.png)

我們現在已定義事件觸發 (有位新客戶註冊) 和目標 (該客戶在註冊後 110 天內要求取消訂閱)。這以圖中的時間軸來說明。

事件觸發是新客戶註冊時 (1)，目標結果是客戶要求取消的時機 (2)，而目標水平線是訂閱後 110 天 (3)。

事件觸發是新客戶註冊時 (1)，目標結果是客戶要求取消的時機 (2)，而目標水平線是訂閱後 110 天 (3)。

事件觸發是新客戶註冊時 (1)，目標結果是客戶要求取消的時機 (2)，而目標水平線是訂閱後 110 天 (3)。 ![時間軸顯示事件觸發、目標和目標水平線。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-7.png)

## 預測點

預測點是停止收集特徵資料並預測每列目標的指定時間。預測點可以落在事件觸發 (訂閱註冊日) 和目標水平線 (註冊後第 110 天) 之間的任何地方。若要選取開始點，我們可以思考想要採取的動作。

在我們的範例中，或許客戶支援團隊要求在預測客戶會流失後，給他們 30 天的時間聯繫客戶以提供續留優惠。這表示，我們最晚會想要預測目標水平線之前的 30 天，亦即第 80 天。

預測點 (2) 設定為第 80 天，介於事件觸發 (1) 和目標水平線 (3) 之間。

預測點 (2) 設定為第 80 天，介於事件觸發 (1) 和目標水平線 (3) 之間。

預測點 (2) 設定為第 80 天，介於事件觸發 (1) 和目標水平線 (3) 之間。 ![時間軸顯示預測點。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-8.png)

選擇第 80 天作為預測點會讓我們收集新客戶加入起 80 天的資料。這段介於事件觸發和預測點之間的時間範圍稱為資料累積時機。在資料累積時機期間收集的資料用來產生特徵。

資料累積時機是介於事件觸發和預測點之間的時間。

資料累積時機是介於事件觸發和預測點之間的時間。

資料累積時機是介於事件觸發和預測點之間的時間。 ![時間軸顯示介於事件觸發和預測點之間的資料累積時機。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-9.png)

使用第 80 天作為預測點會留下 30 天的動作時機，亦即介於預測點和目標水平線之間的時間。此為客戶支援團隊要求用來聯繫客戶的 30 天時機。

動作時機是介於預測點和目標水平線之間的時間。

動作時機是介於預測點和目標水平線之間的時間。

動作時機是介於預測點和目標水平線之間的時間。 ![時間軸顯示介於預測點和水平線之間的資料累積時機。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-10.png)

除了思考對預測採取動作所需的最低動作時機，我們也需要查看流失前天數的直方圖。套用第 80 天的預測點後，我們會取得下列事項：

取消要求分佈以及資料累積時機和動作時機。

取消要求分佈以及資料累積時機和動作時機。

取消要求分佈以及資料累積時機和動作時機。 ![標記預測點和水平線的直方圖。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-11.png)

查看此直方圖，我們會發現使用第 80 天作為預測點無法最大化商業價值。雖然 80 天的資料價值有助於提高模型準確度，但對於可操作性的成本很高：

* 首先，許多客戶已在第 80 天前流失，也就是他們已經在資料累積時機期間流失，亦即在我們可以進行任何預測之前流失。這也代表我們不想要在訓練資料集中納入這些內容，因為我們會在進行預測之前知道結果。

* 第二，許多客戶在大約第 80 到 90 天流失，因此客戶成功團隊不會有完整的 30 天可聯繫到這些客戶。

在預測點之前取消訂閱的客戶不會納入訓練資料中。

在預測點之前取消訂閱的客戶不會納入訓練資料中。

在預測點之前取消訂閱的客戶不會納入訓練資料中。 ![直方圖顯示在預測點之前流失的客戶比例。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-12.png)

將預測點移動到第 60 天，會在準確度和可操作性之間取得更好的平衡。我們仍然有 60 天可收集資料，以用於模型中的特徵，但也能及早預測，讓客戶成功團隊有 30 天的時間聯繫預測會流失的大部分客戶。縮短資料累積時機後，我們可以預期模型準確度會小幅降低，但預測的可操作性會更高。

將預測點移動至第 60 天會縮短資料累積時機，但讓我們有更長的動作時機。這在訓練資料中排除的客戶較少。

將預測點移動至第 60 天會縮短資料累積時機，但讓我們有更長的動作時機。這在訓練資料中排除的客戶較少。

將預測點移動至第 60 天會縮短資料累積時機，但讓我們有更長的動作時機。這在訓練資料中排除的客戶較少。 ![直方圖的預測點提前並有較長的動作時機。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-13.png)

## 特徵

定義了事件觸發、目標和預測點之後，我們就準備好將最後一部分新增至資料集：特徵。特徵是已知屬性或觀察內容，用於訓練資料集中的每列資料，而機器學習演算法由此學習一般模式。然後演算法會在套用資料集中有新的資料列時使用特徵進行預測。

將特徵視為根據商務知識針對影響結果的內容所做的假設。在我們的範例中，某些特徵可以是客戶位置、潛在客戶來源、註冊月份、登入次數或作用中使用者人數。

有兩種特徵類別：

* 固定特徵最簡單，因為這不會隨著時間變更。在我們的範例中，客戶位置 (註冊時)、潛在客戶來源和註冊月份都被視為固定特徵。這在客戶註冊時 (事件觸發當下) 就會知道，無論預測點置於何處，都是已知且恆常的內容。

* 取決於時機的特徵稍微複雜一些。這些特徵的收集是根據在事件觸發和預測點之間收集的資訊。重要的是，應確認您僅使用時段內已知的資料，否則模型可能會發生資料滲漏。(如需詳細資訊，請參閱 [資料滲漏](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/data-leakage.htm)。)

簡單模型可能僅使用第 0 天的已知資訊，亦即僅使用固定特徵。這會讓預測點落在第 0 天，如圖所示。

使用第 0 天作為預測點時，我們可收集 0 天資料，並且只能使用第 0 天已知的固定特徵。動作時機是完整的 110 天。

使用第 0 天作為預測點時，我們可收集 0 天資料，並且只能使用第 0 天已知的固定特徵。動作時機是完整的 110 天。

使用第 0 天作為預測點時，我們可收集 0 天資料，並且只能使用第 0 天已知的固定特徵。動作時機是完整的 110 天。 ![預測點是第 0 天的直方圖。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-14.png)

產生的資料集如下：

只有固定特徵的訓練資料

只有固定特徵的訓練資料

只有固定特徵的訓練資料 ![具有樣本資料的表格。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-table-4.png)

不過，我們可能也想要使用在客戶訂閱後收集的資料，如同預測點為第 60 天的範例。

預測點落在第 60 天可讓我們收集 60 天資料，並有 50 天可採取動作。

預測點落在第 60 天可讓我們收集 60 天資料，並有 50 天可採取動作。

預測點落在第 60 天可讓我們收集 60 天資料，並有 50 天可採取動作。 ![預測點是第 60 天的直方圖。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-figure-13.png)

現在我們可以使用在客戶註冊後 60 天內收集的資訊，以將取決於時機的特徵新增至模型。此模型的資料集可能如下表所示：現在包括取決於時機的特徵，亦即前 60 天登入次數和 60 天的作用中使用者。

樣本資料與取決於時機的特徵

樣本資料與取決於時機的特徵

樣本資料與取決於時機的特徵 ![具有樣本資料的表格。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-table-5.png)

請注意，在此範例中，特徵反映整個資料累積時機。特徵的規模也可能比較小。例如，我們可衡量前 10 天的登入次數或第 30-60 天的登入次數，只要特徵不包括任何超過預測點的資訊即可。

取決於時機的特徵在收集上會更複雜，因為這需要日期，並需要更加費心，以確保這些特徵落在資料累積時機內，避免資料滲漏。但這也可能是最強大的特徵，因為可以反映更靠近預測時間所收集的資訊。

## 產生的機器學習問題

我們從簡單的使用案例「客戶是否會流失？」開始。然後我們將事件觸發定義為「新客戶註冊」，因為我們希望在個別客戶層級進行預測。

我們已透過特定結果「客戶已要求取消訂閱 (是或否)」定義目標，並將水平線設定為 110 天，因為這是大部分試用客戶取消的時間。

查看直方圖，瞭解過去三年客戶在註冊後多少天要求取消，然後我們決定將預測點設為註冊後 60 天。這讓我們在進行預測之前，有 60 天可收集資訊 (資料累積時機)，但仍可讓客戶支援團隊有時間對預測採取動作，以降低流失率。

最後，我們對在第 60 天之前可用來產生特徵的客戶蒐集了資料。

我們產生的機器學習問題是：「在活動的前 60 天之後，客戶是否會在 110 天內要求取消？」

而準備好用於自動化機器學習的資料集如下表所示。位置、潛在客戶來源、月份、加入者和訂閱量是固定特徵，前 60 天登入次數和 60 天的作用中使用者是取決於時機的特徵，而 110 天內流失者是目標欄。

具有固定特徵 (1)、取決於時機的特徵 (2) 和目標 (3) 的樣本資料

具有固定特徵 (1)、取決於時機的特徵 (2) 和目標 (3) 的樣本資料

具有固定特徵 (1)、取決於時機的特徵 (2) 和目標 (3) 的樣本資料 ![具有樣本資料的表格。](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Resources/Images/AutomatedMachineLearning/customer-churn-table-6.png)