# 例 - Qlik Predict 分析コネクタを使用した What-if 分析

この例では、異なる変数が調整されたときに予測値がどのように変化するかをシミュレートするために、What-if 分析を設定します。この例では、Qlik Predict でバイナリ分類モデルをトレーニングおよび展開し、Qlik Predict 分析コネクタを使用して予測を作成します。

What-if 分析アプリケーション

What-if 分析アプリケーション

What-if 分析アプリケーション ![What-if 分析結果](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/what-if-analysis.png)

## 開始前の準備

### サンプル資料のダウンロード

サンプル リソースを以下からダウンロードしてください。

[WhatIfAnalysisExample.zip](https://help.qlik.com/ja-JP/cloud-services/tutorials/WhatIfAnalysisExample.zip)

資料には次のものが含まれています。

* トレーニング データセット - data-turnover-employees.xlsx。このデータセットは、この例のトレーニングと予測の両方で使用されます。

* アプリケーション - What-If Analysis.qvf。モデルを最初にトレーニングして展開しないと、アプリケーションを予測の生成には使用できません。

### 前提条件

開始する前に、次を確認してください。

* Qlik Cloud サブスクリプションでリアルタイム予測が実行できること。 以下を参照するか、テナント サービス アカウントの所有者に連絡してください。

  * [Qlik の価格](https://www.qlik.com/us/pricing)

  * [Qlik Cloud® サブスクリプション](https://www.qlik.com/us/legal/product-terms)

* テナント管理者が機械学習エンドポイントを有効にしていること。

  [Qlik Cloud で ML エンドポイントを有効化する](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/ac-qlik-automl-connector-overview.htm#EnableMLEndpoints)

* テナント管理者によって、次の必要な権限が割り当てられていること。

  * [データ接続] 権限が [許可] に設定されていること。

    [ユーザーにデータ接続を操作する権限を割り当てる](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Admin/mc-administer-data-connections.htm#Permissions)

  * 実験を操作するための権限。

    [ML 実験へのユーザー アクセス](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/who-can-work-with-automl.htm#AccessExperiment)

  * 展開および Qlik Predict 分析コネクタの操作に関する権限。

    [ML 展開と予測へのユーザー アクセス](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/who-can-work-with-automl.htm#AccessDeployment)

## パート 1: データセットのアップロード

次の手順を実行します。

1. 分析 アクティビティ センターの [作成] ページに移動し、 [データセット] を選択します。

2. [データ ファイルをアップロード] をクリックします。

3. data-turnover-employees.xlsx データファイルを [ファイルを追加] ダイアログにドラッグ アンド ドロップします。

4. ファイルの保存先スペースを選択します。個人スペースまたは共有スペースを選択できます。このチュートリアルのすべてのアセットで同じスペースを使用してください。

5. [アップロード] をクリックします。

## パート 2: 実験のトレーニング

バイナリ分類モデルをトレーニングするための実験を作成、構成、実行します。既定では、利用可能なすべての特徴量が含まれます。

次の手順を実行します。

1. 分析 アクティビティ センターの [作成] ページに移動し、 [ML 実験] を選択します。

2. 実験の名前を入力します。例: Employee turnover analysis。

3. 実験のスペースを選択します ([パート 1: データセットのアップロード](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm#Upload) で使用したのと同じスペースを使用してください)。

4. [作成] をクリックします。

5. トレーニング データセット ファイル data-turnover-employees.xlsx を選択します。

6. left 列をターゲットとして選択します。これは、従業員が会社を退職したかどうかを示す列です。

7. [実験を実行] をクリックします。

## パート3: もっともパフォーマンスが高いモデルの展開とアクティブ化

### 展開

実験のトレーニングが完了すると、 [モデル] タブが表示されます。もっともパフォーマンスが高いモデルを ML 展開として展開します。

次の手順を実行します。

1. the トロフィー icon アイコンが表示されているモデルの横にある the 3 つのドットのメニュー icon をクリックします。

2. [the 展開 icon ] をクリックします。

3. モデルを [新しい展開] に展開するオプションを選択します。

4. 展開の名前を入力します。例: Employee Turnover Predictions。

5. 必要に応じて、スペース、説明、タグを調整します。

6. [リアルタイム API アクセスを有効化] をオンにします。Qlik Predict 分析コネクタを使用して予測を実行するために必要です。

7. [作成] をクリックします。

### アクティブ化

新しく作成した展開を開きます。

ML 展開インターフェイスの上部には、モデル承認者が予測を実行するために既定のモデルをアクティブ化する必要があることを示すバナーが表示されます。

次の手順を実行します。

1. ML 展開の上部にあるバナーで、 [モデルをアクティブ化] をクリックします。

2. 表示されるダイアログで、 [モデルをアクティブ化] をクリックして確認します。

## パート4: Qlik Predict分析コネクタへの接続の作成

次に、Qlik Predict 分析コネクタへの接続を作成します。これにより、分析アプリケーション内で予測をリアルタイムで生成できます。

次の手順を実行します。

1. 分析 アクティビティ センターの [作成] ページに移動し、 [データ接続] を選択します。

2. [スペース] で、[パート 1: データセットのアップロード](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm#Upload) で使用したものと同じスペースを選択します。

3. Qlik Predict コネクタを選択します。

4. [パート3: もっともパフォーマンスが高いモデルの展開とアクティブ化](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm#Deploy) で作成した [ML 展開] を選択します。

5. [名前] に「MLModel」と入力します。

6. [作成] をクリックします。

## パート5: 分析アプリケーションのアップロード

[サンプル資料のダウンロード](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm#Download) でダウンロードした分析アプリケーションをアップロードします。

次の手順を実行します。

1. 分析 アクティビティ センターの [作成] ページに移動します。

2. [データとアップロード] で、 [アップロード] を選択します。

3. ダイアログに What-If Analysis.qvf アプリケーションをドロップします。

4. [スペース] で、[パート 1: データセットのアップロード](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm#Upload) および [パート4: Qlik Predict分析コネクタへの接続の作成](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm#Connection) で使用したものと同じスペースを選択します。

5. [アップロード] をクリックします。

アプリケーションをアップロードした後、それを開き、次に What-If Analysis シートを開きます。

情報メモアプリケーションは事前設定されているため、シートや式を追加する必要はありません。各ステップの詳細は、[アプリケーションについて](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm#Understanding) で説明されています。

## 結果の確認

アプリケーションで What-If Analysis シートが開かれた状態になりました。

次の手順を実行します。

1. employee\_number 項目で特定の従業員を 1 名選択します。Risk of Turnover KPI に値が表示されます。

2. KPI の下にあるスライダーを調整します。スライダーを調整するたびにシミュレーションが実行され、従業員の離職リスクが予測されます。

特定の従業員を選択し、変数を調整した状態での What-If 分析。

特定の従業員を選択し、変数を調整した状態での What-If 分析。

特定の従業員を選択し、変数を調整した状態での What-If 分析。 ![What-if 分析結果](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/what-if-analysis.png)

## アプリケーションについて

### ロードされたデータ

[パート 2: 実験のトレーニング](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm#Train) で使用されるトレーニング データセットは、アプリケーション データとして使用されます。実際のシナリオでは、必ずしもこの通りになるとは限りません。

### シート変数

以下の変数が作成されており、それぞれ既定の定義は空白となっています。変数値は分析中にその場で更新されるため、定義は空白のままになっています。

What-if 分析用の変数

| 変数名 | 対応するモデル特徴量 | 変数の既定の定義 |
| --- | --- | --- |
| vSatisfactionLevel | satisfaction\_level | - |
| vTimeSpent | time\_spend\_company | - |
| vNumberOfProjects | number\_project | - |
| vAvgMonthlyHoursWorked | average\_monthly\_hours | - |

### KPI と数式

KPI がシートに追加されました。次のチャートの数式が使用されます。

```
endpoints.ScriptEvalStr('{"RequestType":"endpoint", "endpoint":{"connectionname":":MLModel","column":"left_yes"}}',
	vSatisfactionLevel as satisfaction_level,
	vTimeSpent as time_spend_company,
	last_evaluation,
	vNumberOfProjects as number_project,
	vAvgMonthlyHoursWorked as average_monthly_hours)
```

この計算は、選択された従業員の離職リスクを表します。

以下のセクションでは、この数式がサーバーサイド拡張構文を使用して Machine Learning API を呼び出し、リアルタイム予測を行う方法について説明します。

#### 数式の詳細

この数式は、サーバーサイド拡張 (SSE) 構文を使用して、リアルタイムで予測を生成します。

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm)

#### endpoints.ScriptEvalStr

endpoints.ScriptEvalStr プレフィックスは、サーバーサイド拡張 (SSE) が使用されていることを示します。特に、ScriptEvalStr 関数が使用されています。この関数を使用すると、型を明示的に宣言することなく、接続名、ターゲット、特徴量を指定できます。つまり、この関数を使用すると、API が特徴量の型を自動的に推論します。

[サーバーサイド拡張構文](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/sse-syntax.htm)

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm)

#### ('{"RequestType":"endpoint",

このセグメントは、リクエストが特定のエンドポイントにアクセスすることを指定することで、サーバーサイド拡張をさらに呼び出します。

[サーバーサイド拡張構文](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/sse-syntax.htm)

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm)

#### 接続名の指定

セグメント "endpoint":{"connectionname":":MLModel" は、使用する接続の名前を示します。これは、[パート4: Qlik Predict分析コネクタへの接続の作成](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm#Connection) で指定した接続名と一致している必要があります。接続には、使用する接続がアプリケーションと同じスペースにあることを示す : プレフィックスも含まれています。

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm)

#### ターゲットの指定と確率の要求

column":"left\_yes" セグメントは、left 列をターゲットとして使用することを示します。\_yes サフィックスは、結果が yes となる確率を探していることを示します。言い換えると、ここでは特定の予測値を求めているのではなく、正の値が予測される確率を求めていることになります。

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm)

#### 特徴量と変数の指定

ターゲット列を指定した後、モデルで使用する特徴量を指定する必要があります。モデルの特徴量は、ML 展開 ([パート3: もっともパフォーマンスが高いモデルの展開とアクティブ化](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/AutoML/example-what-if-analysis.htm#Deploy) で作成) を開き、次に [展開の概要] を開くことで取得できます。これにより、モデル スキーマ (特徴量とその特徴量タイプのリスト) が開きます。

[モデル スキーマ] を表示する、ML 展開における [展開の概要]

[モデル スキーマ] を表示する、ML 展開における [展開の概要]

[モデル スキーマモデル スキーマ] を表示する、ML 展開における [展開の概要展開の概要] ![ML 展開における \[展開の概要\] の \[モデル スキーマ\]](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Resources/Images/what-if-analysis-model-schema.png)

ここから、特徴量のリストをカンマ区切りのリストとして構築できます。「as」キーワードを使用する変数置換は、アプリケーション データ自体ではなく、変数の現在の値が特徴量データとして使用されることを示します。これらの変数置換により、この例で示されている対話型の「what-if」シミュレーションが可能になります。

```
vSatisfactionLevel as satisfaction_level,
vTimeSpent as time_spend_company,
last_evaluation,
vNumberOfProjects as number_project,
vAvgMonthlyHoursWorked as average_monthly_hours)
```

情報メモ数式内の特徴量リストには、モデル スキーマ内のすべての特徴量を含める必要があります。含まれない場合、予測は失敗します。また、式に含まれている特徴量の中にモデル スキーマに存在しないものがある場合も、同様に予測は失敗します。上記の式で使用されているものと同一の特徴量セットを持たないモデルをトレーニングした場合は、必要に応じて特徴量を追加または削除するように式を編集する必要があります。

### 変数入力オブジェクト

シートには、各変数に対応する 4 つの変数入力コントロールが追加されています。次の構成が行われています。

* 使用する変数の選択。

* 入力タイプとして [スライダー] が選択。

* 元のデータに基づいて、合理的に発生し得る値に応じた各変数の最小および最大範囲の構成。

変数入力オブジェクトの詳細については、「[変数入力コントロールの作成](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Visualizations/DashboardBundle/creating-variable-input.htm)」を参照してください。

### フィルター パネル

対象とする従業員を簡単に選択できるよう、フィルター パネルが追加されています。

### 元のデータを含むテーブル

What-if 分析によって値が変更される前の元のデータを簡単に確認できるよう、シートの下部にはストレートテーブルも追加されています。

## 詳細を見る

* [サーバーサイド拡張構文](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/sse-syntax.htm)
* [ビジュアライゼーション数式での Qlik Predict 接続の使用](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/ac-qlik-automl-connector-use.htm)