0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

BigQueryで相関関係を調べる方法

Posted at

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 テーブルの column1column2 との間の相関係数を計算します。

複数の特徴量間の相関行列を計算する

複数の特徴量間の相関行列を計算する場合、各特徴量ペアに対して相関係数を計算する必要があります。以下は、複数の特徴量の組み合わせに対して相関係数を計算する例です。

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つのカラム column1column2column3 のペアごとに相関係数を計算し、結果を 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を使えば、簡単に相関関係を調べることができます。特に、特徴量同士の相関を把握することで、機械学習モデルの性能向上や特徴量選択に役立てることができます。今回紹介した方法を使って、ぜひ自分のデータに適用してみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?