BigQueryで相関関係を調べる方法
ビッグデータの解析において、特徴量同士の相関関係を理解することは非常に重要です。特に機械学習モデルを構築する際には、相関関係を把握することで、モデルの性能を向上させたり、不要な特徴量を削減したりすることができます。今回は、BigQueryを使って相関関係を調べる方法を紹介します。
Pearsonの相関係数とは
相関関係を調べる方法として一般的なのは、Pearsonの相関係数です。これは、2つの変数間の線形関係の強さを測る指標で、-1から1の範囲をとります。1に近いほど強い正の相関関係、-1に近いほど強い負の相関関係、0に近いほど相関がないことを意味します。
BigQueryで相関関係を計算する
BigQueryには、Pearsonの相関係数を計算するための CORR
関数が用意されています。これを使えば、簡単に2つのカラム間の相関関係を計算することができます。
以下は、BigQueryで2つのカラムの相関関係を調べるSQLクエリの例です。
SELECT
CORR(column1, column2) AS correlation_coefficient
FROM
your_dataset.your_table;
このSQLクエリは、your_dataset.your_table
テーブルの column1
と column2
との間の相関係数を計算します。
複数の特徴量間の相関行列を計算する
複数の特徴量間の相関行列を計算する場合、各特徴量ペアに対して相関係数を計算する必要があります。以下は、複数の特徴量の組み合わせに対して相関係数を計算する例です。
WITH correlation_matrix AS (
SELECT
'column1' AS variable1,
'column2' AS variable2,
CORR(column1, column2) AS correlation_coefficient
FROM
your_dataset.your_table
UNION ALL
SELECT
'column1' AS variable1,
'column3' AS variable2,
CORR(column1, column3) AS correlation_coefficient
FROM
your_dataset.your_table
UNION ALL
SELECT
'column2' AS variable1,
'column3' AS variable2,
CORR(column2, column3) AS correlation_coefficient
FROM
your_dataset.your_table
)
SELECT
variable1,
variable2,
correlation_coefficient
FROM
correlation_matrix;
このクエリでは、3つのカラム column1
、column2
、column3
のペアごとに相関係数を計算し、結果を correlation_matrix
として取得します。各ペアについて、個別に CORR
関数を使って相関係数を計算し、結果を結合しています。
スクリプト化による自動化
多くの特徴量間の相関を調べる場合、手作業でSQLを書くのは現実的ではありません。BigQueryではスクリプトを使ってループ処理を行うことが可能で、これを利用して自動化することができます。
以下は、スクリプトを使って複数の特徴量間の相関係数を自動で計算する方法の例です。
DECLARE columns ARRAY<STRING>;
SET columns = ['column1', 'column2', 'column3', 'column4']; -- 使用する全てのカラムをここにリスト
DECLARE i INT64;
DECLARE j INT64;
SET i = 1;
CREATE TEMP TABLE correlation_matrix (variable1 STRING, variable2 STRING, correlation_coefficient FLOAT64);
WHILE i < ARRAY_LENGTH(columns) DO
SET j = i + 1;
WHILE j <= ARRAY_LENGTH(columns) DO
EXECUTE IMMEDIATE format("""
INSERT INTO correlation_matrix
SELECT
'%s' AS variable1,
'%s' AS variable2,
CORR(%s, %s) AS correlation_coefficient
FROM
your_dataset.your_table;
""", columns[ORDINAL(i)], columns[ORDINAL(j)], columns[ORDINAL(i)], columns[ORDINAL(j)]);
SET j = j + 1;
END WHILE;
SET i = i + 1;
END WHILE;
SELECT * FROM correlation_matrix;
このスクリプトは、指定したカラムリスト内の全てのペアについて相関係数を計算し、結果を correlation_matrix
テーブルに挿入します。最終的に correlation_matrix
テーブルの内容を出力します。
まとめ
BigQueryを使えば、簡単に相関関係を調べることができます。特に、特徴量同士の相関を把握することで、機械学習モデルの性能向上や特徴量選択に役立てることができます。今回紹介した方法を使って、ぜひ自分のデータに適用してみてください。