はじめに

IMPUTE関数を利用するとデータの欠損値を平均値/最頻値で補完することができます。
例えば、機械学習のためのデータを準備する際に欠損値がある行を削除するのではなく、IMPUTE関数を利用して補完することで、より多くのデータを学習データとして利用できます。

IMPUTE

コマンド構文

列名内容
output‑view 欠損値補完後の結果を格納するビュー
input‑relation欠損値補完対象のテーブル、ビュー
input‑columns 欠損値補完対象の列。複数列指定する場合は「,」カンマで区切ります。
methodmean:平均値を補完します。このパラメータは数値データに対してのみ利用できます。
mode:最頻値を補完します。このデータはカテゴリカルデータ(文字データ)に対してのみ利用できます。
exclude_columns (オプション) input‑columns*で(全列)と指定した場合に、対象列から除外する列
partition_columns (オプション) パーティションを定義する場合のパーティション列。複数列指定する場合は「,」カンマで区切ります。

利用例

例として車のデータであるmtcarsテーブルの欠損値を補完します。

1) mtcarsテーブルには30件のデータが格納されています。データを確認すると15、30行目のwt(重量)列に欠損があることが確認できます。
※クリックで画像拡大


2) 欠損値に対して、IMPUTE関数を使用してwt列の平均値で補完します。

3) 作成されたimpute_mtcarsビューを確認すると、欠損値が補完されていることが確認できます。
※クリックで画像拡大


4)上記手順では全行の平均値を一律補完していますが、PARTITION_COLUMNSオプションを利用すると、よりきめ細やかな補完ができます。そこで、本例ではPARTITION_COLUMNSオプションを利用してwt_class列単位の平均値を補完するimpute_mtcars2ビューを作成します。

5) 15行目はwt_class=heavyの値の平均値、30行目はwt_class=middleの値の平均値でそれぞれ補完されました。
※クリックで画像拡大

参考情報

Sampling Data
https://my.vertica.com/docs/9.1.x/HTML/index.htm#Authoring/SQLReferenceManual/Functions/MachineLearning/IMPUTE.htm

検証バージョンについて

この記事の内容はVertica 9.1で確認しています。