コンテンツにスキップ

指数・対数変換

数値に指数または対数を掛けます。偏りの大きいデータをならす、対数にした値を元に戻す、といった使い方をします。

データに合わせて変換の強さを決めたいならBox-Cox変換・逆変換を使ってください。

入出力

ポート内容
入力データデータ
出力データデータ

Spark エンジンでも動きます。

行の数は変わりません。 対象列 1 つにつき 1 列増えます。

設定項目

処理対象列を選択
変換する列。数値の列だけ選べます。複数選べます。
処理対象列を結果から除外する
on にすると、変換前の列を消します。既定は off です。
変換手法を選択必須
指数変換(既定)か対数変換。

どちらを使うか

手法計算効果使いどころ
対数変換ネイピア数を底とする自然対数大きい値を縮める売上や人口のように裾の長い分布をならす
指数変換ネイピア数のべき乗小さい値を広げる対数にした値を元に戻す

2 つは互いの逆の計算です。 対数変換を掛けた列に指数変換を掛けると元の値に戻ります。常用対数(底 10)は選べません。

増える列の名前

元の列は書き換わりません。 新しい列がいちばん右に増えます。

手法できる列
指数変換指数_<元の列名>
対数変換対数_<元の列名>

Spark エンジンでは無限大が残りません。 対数のマイナスの無限大も、指数であふれた無限大も、空欄に置き換えて出ます。

エラーと対処

処理対象列に数値以外がある

数値に見えても文字列型になっている列を選んだときに出ます。

処理対象列に数値型以外のデータが含まれてます。型変換をするか、数値型以外の列を除去してください。

直し方 — 列の型変更で数値にするか、その列を外します。

処理対象列を選んでいない

処理対象列を選択を空のまま実行したときに出ます。

対象の列が選択されていません。

直し方 — 処理対象列を選択で列を選んでください。

選んだ列が入力データにない

前のノードで列名を変えたり列を削ったりして、選んである列がなくなったときに出ます。

対象の列が存在しません。

直し方 — 列を選び直してください。

よく使う例

1. 偏った分布をならす

売上が一部の大口に引っ張られていて、平均が実感と合わないとき。

入力

顧客売上
C-11000000
C-22000
C-31000

設定

設定項目値
処理対象列を選択売上
変換手法を選択対数変換

出力 — 対数_売上 が増えます。値はおよそ 13.8 / 7.6 / 6.9 になり、桁の差が縮まります。

2. 対数で予測した値を金額に戻す

対数変換した列でモデルを作ったので、結果を元の単位に戻したいとき。

入力(予測結果)

顧客予測値
C-17.6
C-26.9

設定

設定項目値
処理対象列を選択予測値
変換手法を選択指数変換

出力 — 指数_予測値 が増え、およそ 2000 / 1000 になります。

3. 変換前と変換後を並べて確かめる

対数を取ったときに空欄や無限大が出ていないかを見たいとき。

入力

商品在庫
A12
B0

設定

設定項目値
処理対象列を選択在庫
変換手法を選択対数変換
処理対象列を結果から除外するoff(既定)

出力 — 在庫 の右に 対数_在庫 が並びます。B の行はマイナスの無限大(Spark エンジンでは空欄)になっているので、ここで気づけます。

4. 複数の列をまとめて変換する

説明変数が何本もあり、まとめて分布を整えたいとき。

入力

売上客数単価
10000008001250
20004500

設定

設定項目値
処理対象列を選択売上、客数、単価
変換手法を選択対数変換
処理対象列を結果から除外するon

出力 — 対数_売上 対数_客数 対数_単価 の 3 列になり、元の 3 列は消えます。

関連