顧客離れの予測 AWS SageMaker GUI版(2/2)

顧客離れの予測 AWS SageMaker CLI版(1/2)
https://qiita.com/kimuni-i/items/57a79ef7091702ac15c5
を補完する形で、GUI版を作成しました。

__今回は、SageMaker Data Wranglerを使えば、難しい前処理を初心者でも理解しながら進める事が出来る事をご紹介致します。__

機械学習で必要な前処理とは？
--

:::note info
__前処理の一般的な手順__

__データの理解__ データの内容、データ形式、データの統計量などを理解する
__データクレンジング__ データに含まれるノイズや不正確なデータを修正・削除する
__データの標準化__ 異なるスケールのデータを同じスケールに変換する
__エンコーディング__ カテゴリカルデータを数値に変換する
__次元削減__ データの次元数を減らす
:::

__1. データクレンジング__
--
データクレンジングは、データに含まれるノイズや不正確なデータを修正・削除する処理です。

__欠損値の処理__ 欠損値を補完したり、欠損値を含むデータを削除する
__外れ値の処理__ 外れ値を修正したり、外れ値を含むデータを削除する
__ノイズの除去__ データに含まれるノイズを除去する
__データ形式の統一__ データ形式を統一する

__2. データの標準化__
--
データの標準化は、異なるスケールのデータを同じスケールに変換する処理です。

__最小最大値スケーリング__ データの最小値と最大値を用いて、データを0から1の範囲に変換する
__標準化__ データの平均値と標準偏差を用いて、データを平均値0、標準偏差1に変換する

__3. エンコーディング__
--
エンコーディングは、カテゴリカルデータを数値に変換する処理です。

__ラベルエンコーディング__ 各カテゴリにユニークな整数値を割り当てる
__ワンホットエンコーディング__ 各カテゴリを0と1のベクトルに変換する

__4. 次元削減__
--
次元削減は、データの次元数を減らす処理です。

__主成分分析 (PCA)__ データの主成分を抽出し、データの次元数を減らす
__線形判別分析 (LDA)__ クラス間の識別能力を高めるように、データの次元数を減らす

これらの前処理を行うことで、機械学習モデルの精度を向上させることができます。

:::note info
__前処理の重要性__

前処理は、機械学習モデルの精度を向上させるために非常に重要なステップです。データにノイズや不正確なデータが含まれている場合、機械学習モデルは誤った学習をしてしまう可能性があります。

前処理を行うことで、データの品質を向上させ、機械学習モデルが正確な学習を行うことができるようにすることができます。

前処理は、機械学習モデルの精度を向上させるために非常に重要なステップです。データの種類や機械学習モデルによって、必要な前処理は異なりますが、一般的にはデータクレンジング、データの標準化、エンコーディング、次元削減などの処理を行います。
:::

前処理を効率的に行うために、AWSマネージドツールを使用することができます。

SageMaker Data Wranglerを使うと、GUIで前処理を行う事が出来ます
--

:::note info
__大まかな手順__

1.データセットchurn.csvをダウンロードします。
2.データセットを S3 にロードします。
3.Data Wrangler を起動します。
4.データセットを Amazon S3 から Data Wrangler フローにインポートします。
5.レポートを作成し、必要な特徴エンジニアリングに関する結論を導き出します。
6.Data Wrangler で必要なデータ変換を実行します。
7.データ品質および分析レポートと変換されたデータセットをダウンロードします。
8.モデルのトレーニングのためにデータを Studio Lab プロジェクトにアップロードします。
:::

Data Wranglerを起動します
![Wranglerを起動.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/f90e902f-52a1-cbcf-f9f7-895ab922f1ea.png)

前処理を行いたいデータを用意します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/4e37d488-de16-f525-6e83-4a83f477863c.png)

S3からデータを読み込みます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/d5eafbbe-d990-3f6c-cb5a-cb7a49493c36.png)

データの読み込み
![データの読み込み.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/5894dbf2-29ba-9d64-bf0e-0b7151c25b1d.png)

インポート後
![import後.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/e79a60a4-178e-0486-4e3a-0c973ec89233.png)

![import後2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/5ae2847d-8109-f9b3-6116-4000b5672b73.png)


Get Data inshitsで、確認します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/da1d76b5-cece-a5f8-519d-c3d59ed41da0.png)

インサイトの作成
![インサイトの作成.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/ffc494b2-ac92-ace8-3011-80288b156cad.png)

レポート作成
![レポート作成.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/a0ab10bf-b981-945b-f877-926df633d28a.png)

作成されたレポート
--
このレポートを使用すると、データをクリーンアップして処理するために何をする必要があるかを理解できます。欠損値の数や外れ値の数などの情報を確認出来ます。ターゲットの漏洩や不均衡などの問題を確認する事が出来ます。

:::note info
__このレポートから、次のことがわかります__
・重複する行は見つかりませんでした。
・このState列は非常に均等に分布しているように見えるため、州の人口に関してデータのバランスが取れています。
・Phone 列には、実際には使用できないほど多くの一意の値が表示されます。一意の値が多すぎると、この列は役に立たなくなります。変換では Phone 列を削除できます。
・レポートの機能相関セクションに基づくと、MinsとChargeは高度に相関しています。そのうちの 1 つを削除できます。

:::

![data-wrangler-insights-report.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/0c56b858-ef87-e526-9f67-c38541027249.png)

レポート結果をもとに、GUIで前処理を行うことができます
--

Add transformでデータ加工を選択します
![スクリーンショット 2024-03-07 195808.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/2fcfd28e-3099-66fa-1afc-ec9fc579e62b.png)

MANAGE COLUMNSで列の削除　Drop columnを行います
![スクリーンショット 2024-03-07 195959.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/c42ed481-d3e0-f2e4-d1ba-329fb4f87e24.png)

![スクリーンショット 2024-03-07 200045.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/c17e029c-7905-2af0-ba1c-675969d917f2.png)

分析を継続し、他に削除する列があれば、MANAGE COLUMNSで列の削除　Drop columnを行います
![スクリーンショット 2024-03-07 200326.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/42116213-1d4c-9aee-a308-ff3d01be11e5.png)

カテゴリ列をエンコードするため、ENCODE CATEGORICALで、One-hot encode
![スクリーンショット 2024-03-07 200601.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/d09f2f64-f320-8e7c-69af-934adeddcba7.png)

MANAGE COLUMNSで列の削除　Drop columnを行います
![スクリーンショット 2024-03-07 200715.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/6c77e4b6-d97f-a650-0783-4002b63c8a11.png)

MANAGE COLUMNSで移動したい列として、最初の列を選択し、Move columnを行います
![スクリーンショット 2024-03-07 200837.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/d4e32952-d90a-1815-4a83-925cf5850583.png)

MANAGE COLUMNSで変形したい型として、Rename columnを選択し、変更したい列を選び列名の変更を行います
![スクリーンショット 2024-03-07 200938.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/399aaf3a-5fd0-d79a-8c98-3aeecda8ebf7.png)

PARSE COLUMN AS TYPEで、Float型からLong型に変更します
![スクリーンショット 2024-03-07 201242.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/7e9f2413-23b0-1479-d462-2b6479cb5f30.png)

S3を指定します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/1b3a8e6d-f43e-eab2-9554-fcef5a1b346b.png)

一通り作成が終わるとこのようになります
![スクリーンショット 2024-03-07 202156.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/75b242a8-56f8-f92a-5902-45fadd30e596.png)

ジョブを実行します
![スクリーンショット 2024-03-07 202220.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/e72c17a6-1715-7f8f-9e0d-9703a93b4075.png)

![スクリーンショット 2024-03-07 202239.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/6e5cf615-71a4-da29-8931-9919b395b6f1.png)

![スクリーンショット 2024-03-07 202548.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/89a562db-2cae-2138-4f61-a190366a794a.png)

ジョブが成功した事を確認します
![スクリーンショット 2024-03-07 202606.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2920213/85b3e9c1-23e1-8515-673a-930b268a3156.png)

最後に、変換されたデータセットをダウンロードし、モデルのトレーニングのためにデータを Studio Lab プロジェクトにアップロードします。