--- tags: スキル定義委員会, データ加工, グルーピング, データ理解, ユークリッド距離, マンハッタン距離, L1距離, コサイン類似度, チェビシェフ距離, マハラノビス距離 --- # スキル定義委員会-085 ## DE-85 データ加工 - マッピング処理 ⭐️ 🔥必須🔥 #### Q.数十万レコードのデータに対して、規定されたリストと照合して変換する、都道府県名からジオコードに変換するなど、ある値を規定の別の値で表現できる ```python= import pandas as pd # Create a sample dataframe df = pd.DataFrame({ 'col1': [1, 2, 3, 4], 'col2': ['A', 'B', 'C', 'D'] }) # Define the conversion list conversion_list = { 'A': 'Apple', 'B': 'Banana', 'C': 'Carrot', 'D': 'Date' } # Convert the values in the 'col2' column using the conversion list df['col2'] = df['col2'].map(conversion_list) # Check the converted values print(df) ``` ------------------------------------------------------------------------ ## DS-85 グルーピング - グルーピング ⭐️ ### Q.階層クラスター分析において、デンドログラムの見方を理解し、適切に解釈できる ![](https://i.imgur.com/FXt2PPk.gif) (https://www.ss.nanzan-u.ac.jp/dep/cluster.html) * **Leaves** デンドログラムの一番下の要素で、サイズ1の個々のオブジェクトまたはクラスター * **Branches** 葉をつなぐことで、オブジェクト間の関係を表す。 枝の高さは、オブジェクトまたはクラスタ間の距離や類似性を表す。 * **Merges** 2つの枝が集まって新しい枝になる点で、新しいクラスタができることを表す * **Cut-off line** デンドログラムを異なるクラスタに分離する水平線 切断線の高さは、クラスタの数とクラスタリングの粒度を決定する 個々のオブジェクトから始めて、枝分かれや合流をたどりながら、すべてのオブジェクトが1つのクラスターにまとめられた頂上に到達します。デンドログラムを調べることで、どのオブジェクトがより密接に関連し、どのオブジェクトが明確なクラスターを形成しているかがわかります。これは、データの構造をよりよく理解し、オブジェクトをどのようにグループ化するかについて、情報に基づいた意思決定を行うのに役立ちます。 各クラスター間の距離には、 1. **ユークリッド距離** $\sqrt{(x_1-y_2)^{2} + ... + (x_n-y_n)^{2} }$ ```python= import numpy as np vec_a = np.array([10, 20, 30]) vec_b = np.array([30, 40, 50]) np.linalg.norm(vec_a - vec_b) ``` 1. **マンハッタン距離(L1距離)** $D(x, y) = \sum_{i=0}^k|x_i - y_i|$ ```python= a = np.array([1, 1]) b = np.array([2, 2]) np.linalg.norm(a - b, ord=1) ``` 1. **コサイン類似度** $$ \begin{align} cos(x, y) &= \frac{x \cdot y}{|x||y|} = \frac{x}{|x|} \cdot \frac{y}{|y|} \\ &= \frac{\sum_{i=1}^{|V|}x_iy_i}{\sqrt{\sum_{i=1}^{|V|}x_i^2} \cdot \sqrt{\sum_{i=1}^{|V|}y_i^2}} \end{align} $$ $x, y$が正規化されていれば、 $cos(x, y)=x \cdot y = \sum_{i=1}^{|V|}x_iy_i$ ```python= def cos_sim(v1, v2): return np.dot(v1, v2) / (np.linalg.norm(v1) * np.linalg.norm(v2)) X = np.array([0.789, 0.515, 0.335,0]) Y = np.array([0.832, 0.555,0,0]) cos_sim(X, Y) ``` - [コサイン類似度について](https://www.cse.kyoto-su.ac.jp/~g0846020/keywords/cosinSimilarity.html) 1. **マハラノビス距離** $D(x, \mu) = \sqrt{(x-\mu)^T\sum^{-1}(x-\mu)}$ - $\sum^{-1}:共分散行列$ - $x: データ$ - $\mu: xの平均$ ```python= mu_mat = np.mean(data, axis=0) # data - mean data_m_mat = data - mu_mat # covariance matrix cov_mat = np.cov(data.T) cov_i_mat = np.linalg.pinv(cov_mat) ``` - [【異常検知】マハラノビス距離を嚙み砕いて理解する (2)](https://qiita.com/kotai2003/items/c66cfcc5266edec9a063) 1. **チェビシェフ距離** $D(x, y) = max_i(|x_i - y_i|)$ ```python= from scipy.spatial.distance import chebyshev a = np.array([1,1,1]) b = np.array([1,2,4]) chebyshev(a, b) mahala_result = [] for i in range(len(data_m_mat)): mahala_result.append(distance.mahalanobis(data[i],mu_mat, cov_i_mat )) print(data[i]) ``` 1. **ミンコフスキー距離** $D(x, y) = (\sum_{i=0}^{k}|x_i-y_i|^p)^{\frac{1}{p}}$ ```python= from scipy.spatial.distance import minkowski a = np.array([1,1,1]) b = np.array([1,2,4]) minkowski(a, b, 1) # ≒マンハッタン距離 minkowski(a, b, 2) # ≒ ユークリッド距離 ``` pが小さい値だと差が小さい成分も考慮することができ、pが大きくなるにつれ小さい成分が無視されていきます。 枝の高さは、マージされた2つのクラスタ間の類似度を表す。高さが大きい場合は、クラスタが非類似で離れている。高さが小さい場合は、クラスタが類似しており、近くにあることを意味する。 - [【python】ユークリッド距離, マンハッタン距離, チェビシェフ距離, ミンコフスキー距離](https://kagglenote.com/misc/various-distance/) ------------------------------------------------------------------------ ## BZ-85 データ理解 - 意味合いの抽出、洞察 ⭐️⭐️ #### Q.分析結果を元に、意味合いの明確化に向けた分析の深掘り、分析対象データの見直しについて方向性を設計できる 1. **Define the objective** レビューの目標と答えたい質問を明確に定義する 1. **Identify data sources** レビューに使用するデータソースを決定し、それらが完全で、正確で、目的に関連するものであることを確認する 1. **Choose methodology** 質的分析または量的分析など、レビューに適した方法を選択し、データの収集と分析の方法を決定する 1. **Plan data organization** データを分析し解釈する方法を含む、データをレビューするための体系的かつ組織的なアプローチを開発する。 1. **Visualize data** レビューの結果を提示し、伝えるために、グラフやチャートなど、データの可視化技術の使用を検討する。 1. **Collaborate with experts** レビューが包括的で、関連するすべての観点を考慮したものとなるよう、関連分野の専門家との協働を検討する。 1. **Ensure ethics** レビューが倫理的な方法で実施され、データのプライバシーと機密性が保護されていることを確認する。 1. **Report results** レビュー結果をどのように報告するか、報告書の形式や読者層などを計画する 1. **Implement review** 計画に従ってレビューを実施し、データを収集・分析し、結果を報告する 1. **Refine and update review** レビューの目的を達成するために、レビュープロセスが適切かつ効果的であり続けるように、必要に応じて定期的にレビューと更新を行う ------------------------------------------------------------------------ # Quote - [スキル定義委員会 from データサイエンティスト協会](https://twitter.com/jdss_skill) <style> .att0 {color: #eb4034;} .att1 {color: #3465eb;} </style>