算術演算の適用

列の値に算術演算を適用します

Category: 統計関数

注意

適用対象: Machine Learning Studio (クラシック)

このコンテンツは、Studio (クラシック) のみに関連しています。 Azure Machine Learning デザイナーに同様のドラッグアンドドロップモジュールが追加されました。 この記事では、2つのバージョンの比較について詳しく説明します。

モジュールの概要

この記事では、Azure Machine Learning Studio (クラシック) の [ 算術演算の適用 ] モジュールを使用して、入力データセットの数値列に適用される計算を作成する方法について説明します。

サポートされる算術演算としては、乗算や除算などの一般的な数学関数、三角関数、さまざまな丸め関数、およびガンマ関数や誤差関数など、データ サイエンスで使用される特殊な関数があります。

操作を定義して実験を実行すると、値がデータセットに追加されます。 モジュールの構成方法に応じて、次の操作を実行できます。

  • 結果をデータセットに追加する。 これは、演算の結果を確認しているときに特に便利です。
  • 列値を、計算された新しい値に置き換える。
  • 結果の新しい列を生成します。元のデータは表示されません。

ヒント

このモジュールは、一度に1つの算術演算を実行します。 複雑な算術演算の場合は、代わりに次のモジュールを使用することをお勧めします。

次のカテゴリから必要な操作を探してください。

  • Basic

    基本 カテゴリの関数は、単一の値または値の列を操作するために使用できます。 たとえば、列内のすべての数値の絶対値を取得したり、列内の各値の平方根を計算したりすることができます。

  • 比較

    比較 カテゴリの関数は、すべて比較に使用されます。2 つの列内の値の一対比較を行ったり、列内の各値を指定された定数と比較したりすることができます。 たとえば、列を比較して、2 つのデータセットで値が同じかどうかを判断することができます。 または、最大許容値などの定数を使用して、数値列の外れ値を検出することもできます。

  • 操作

    このカテゴリには、加算、減算、乗算、除算という基本的な数学関数が含まれています。 列または定数のいずれかを操作できます。 たとえば、列 A の値を列 B の値に加算できます。または、以前に計算した平均値などの定数を列 A の各値から減算することもできます。

  • 丸め

    このカテゴリには、さまざまなレベルの精度に対する丸め、切り上げ、床、切り捨てなどの操作を実行するためのさまざまな関数が含まれています。 精度は、10 進数と整数の両方に対して指定できます。

  • 特殊な数学関数

    特殊 カテゴリには、楕円積分やガウスの誤差関数など、特にデータ サイエンスで使用される数学関数が含まれます。

  • 三角関数

    このカテゴリには、すべての標準の三角関数関数が含まれます。 たとえば、ラジアンを角度に変換したり、ラジアンまたは角度で正接などの関数を計算したりすることができます。 これらの関数は単項です。つまり、1 つの列の値を入力として受け取り、三角関数を適用し、結果として列の値を返します。 したがって、入力列が適切な型であり、指定された演算にとって正しい種類の値が含まれていることを確認する必要があります。

使用例

算術演算の適用 を使用する方法の例については、 Azure AI Galleryの次のサンプル実験を参照してください。

  • 色の量子化: ある列の値のセットが別の列の値から減算され、結果が2乗されます。

  • 顧客関係の予測: 0 と欠損値を区別するために、定数1が列のすべての値に追加されます。

  • フライト遅延予測: 丸め処理や除算などのさまざまな操作を示します。

  • ダイレクトマーケティング: 比較演算を使用して、確率スコアが必要な値を満たしているかどうかを判断します。

算術演算の適用を使用する方法

Apply Math Operation モジュールには、数値のみを含む列が少なくとも 1 つ含まれたデータセットが必要です。 数値は、不連続または連続のいずれも可能ですが、文字列ではなく数値データ型である必要があります。

複数の数値列に同じ演算を適用できますが、すべての列が同じデータセットに含まれている必要があります。

このモジュールの各インスタンスが実行できる演算は、一度に 1 種類のみです。 複雑な算術演算を実行するには、Apply Math Operation モジュールの複数のインスタンスを連結する必要がある場合があります。

  1. 実験に 算術演算の適用 モジュールを追加します。 このモジュールは、[ 統計関数 ] カテゴリで見つけることができます。

  2. 少なくとも 1 つの数値列を含むデータセットを接続します。

  3. [Category](カテゴリ) をクリックして、実行する算術演算の 種類 を選択します。

    たとえば、列に対して基本的な算術演算を実行するには、[ 操作] を選択します。 対数または天井を取得するには、[ 基本] を選択します。 値の列を比較するには、 比較 を使用します。

    ヒント

    その他のオプションは、選択した数値演算の種類によって変わります。 また、カテゴリを変更すると、他のすべてのオプションがリセットされます。 そのため、最初に [ カテゴリ から] を選択してください。

  4. そのカテゴリの一覧から特定の演算を選択します。

  5. 計算の実行に使用するソース列を 1 つ以上選択します。

    • 選択する列は、すべて数値データ型である必要があります。
    • データの範囲は、選択された算術演算に有効である必要があります。 そうでない場合、エラーまたは NaN (非数) の結果が発生する可能性があります。 たとえば、Ln(-1.0) は無効な演算のため、値 NaN の結果になります。
  6. 各種類の演算で必要な追加のパラメーターを設定します。

  7. [Output mode](出力モード) オプションを使用して、算術演算を生成する方法を指定します。

    • Append: 入力として使用されるすべての列が出力データセットに含まれ、さらに、算術演算の結果を含む追加列が 1 つ追加されます。
    • Inplace。 入力として使用される列の値が、新しい計算値に置き換えられます。
    • ResultOnly。 算術演算の結果を含む単一の列が返されます。
  8. 実験を実行するか、[ 算術演算の適用 ] モジュールだけを右クリックして、[ 選択した ものを実行] を選択します。

結果

Append または ResultOnly のオプションを使用して結果を生成する場合、返されるデータセットの列見出しには、演算と、使用された列が示されます。 たとえば、Equals 演算子を使用して 2 つの列を比較した場合、結果は次のようになります。

  • Equals(Col2_Col1)。Col1 に対して Col2 をテストしたことを示しています。
  • Equals(Col2_$10)。列 2 と定数 10 を比較したことを示しています。

インプレース オプションを使用しても、ソースデータは削除または変更されません。元のデータセットの列は、Studio (クラシック) でも使用できます。 元のデータを表示するには、Add Columns (列の追加) モジュールを接続し、それを Apply Math Operation の出力に結合します。

基本的な算術演算

基本 カテゴリの関数は、通常、列から 1 つの値を受け取り、定義済みの演算を実行して、1 つの値を返します。 一部の関数では、2番目の引数として定数を指定できます。

Azure Machine Learning では、基本 カテゴリの次の関数がサポートされます。

Abs

選択した列の絶対値を返します。

Atan2

4 象限逆正接を返します。

ポイント座標を含む列を選択します。 X 座標に対応する 2 番目の引数については、定数を指定することもできます。

Matlab の ATAN2 関数に対応します。

Conj

選択された列の値の共役を返します。

CubeRoot

選択された列の値の立方根を計算します。

DoubleFactorial**

選択された列の値の二重階乗を計算します。 二重階乗は、通常の階乗関数の拡張であり、x!! で表されます。

Eps

現在の値と次に高い倍精度数の差のサイズを返します。 Matlab の EPS 関数に対応します。

Exp

選択された列の値にべき乗された e を返します。 これは、Excel の EXP 関数と同じです。

Exp2

y = x * 2t の値を求め、2 を底とする引数の指数を返します。ここで、t は指数を含む値の列です。

Exp2 の場合、2番目の引数 x を指定できます。これは定数または値の別の列のいずれかになります。

2 番目の引数の型 で、乗数を定数として指定するか、列に値を指定するかを指定します。

指数部の値を含む列を1つ選択するか、[ 2 番目の引数が定数 ] ボックスに指数の値を入力します。 次に、[ 列セット] で指数値を含む列を選択します。

たとえば、乗数と指数の両方に対して値 {0,1,2,3,4,5} を持つ列を選択した場合、関数は {0, 2, 8, 24, 64 160) を返します。

ExpMinus1

選択された列の値の負の指数を返します。

階乗

選択された列の値の階乗を返します。

Hypotenuse

1 つの辺の長さが値の列として指定され、第 2 の辺の長さが定数または 2 つの列として指定された三角形の斜辺を計算します。

ImaginaryPart

選択した列の値の虚数部を返します。

Ln

選択された列内の値の自然対数を返します。

LnPlus1

選択された列内の値の自然対数 + 1 を返します。

ログ

指定された底を使用して、選択された列の値の対数を返します。

底 (2 番目の引数) を定数として、または別の値の列を選択して指定することができます。

Log10

選択された列の値を底10の対数で返します。

Log2

選択された列の値の底2の対数を返します。

NthRoot

指定した n を使用して、値の n 乗根を返します。

ColumnSet オプションを使用して、累乗根を計算する列を選択します。

[Second argument type](2 番目の引数の型) で、累乗根を含む別の列を選択するか、累乗根として使用する定数を指定します。

2 番目の引数が列の場合は、列内の各値が、対応する行の n の値として使用されます。 2番目の引数が定数の場合は、[ 2 番目の引数が定数 ] ボックスに n の値を入力します。

Pow

選択された列内の各値について、X の Y 乗を計算します。

最初に、 ColumnSet オプションを使用して、ベース を含む列を選択します。これは float である必要があります。

[Second argument type](2 番目の引数の型) で、指数を含む列を選択するか、指数として使用する定数を指定します。

2 番目の引数が列の場合は、列内の各値が、対応する行の指数として使用されます。 2 番目の引数が定数の場合は、[2 番目の引数が定数] ボックスに指数の値を入力します。

RealPart

選択されている列の値の実際の部分を返します。

Sqrt

選択された列の値の平方根を返します。

SqrtPi

選択された列の各値について、値を pi で乗算し、結果の平方根を返します。

Square

選択された列の値を 2 乗します。

比較操作

2つの値のセットを相互にテストする必要がある場合は常に、Azure Machine Learning Studio (クラシック) の比較関数を使用します。 たとえば、実験では、次のような比較操作が必要になる場合があります。

  • 確率スコア モデルの列をしきい値と比較して評価する。
  • 2つの結果セットが同一であるかどうかを判断し、それぞれの行が異なる場合は、後続の処理やフィルター処理に使用できる FALSE フラグを追加します。

EqualTo

値が同じ場合に True を返します。

GreaterThan

[Column set](列セット) の値が、指定された定数より大きい場合、または比較列の対応する値より大きい場合に True を返します。

GreaterThanOrEqualTo

[Column set](列セット) の値が、指定された定数以上の場合、または比較列の対応する値以上の場合に True を返します。

LessThan

[Column set](列セット) の値が、指定された定数より小さい場合、または比較列の対応する値より小さい場合に True を返します。

LessThanOrEqualTo

[Column set](列セット) の値が、指定された定数以下の場合、または比較列の対応する値以下の場合に True を返します。

NotEqualTo

[列セット] の値が定数または比較列と等しくない場合は True を返し、等しい場合は False を返します。

PairMax

大きい値 ([列設定] の値か、定数または比較列の値) を返します。

PairMin

[Column set](列セット) 内の値と、定数または比較列の値のうち、小さい方の値を返します。

算術演算

基本的な算術演算 (加算と減算、除算、乗算) が含まれています。 ほとんどの演算はバイナリで、2 つの数値が必要であるため、最初に演算を選択してから、1 番目と2 番目の引数で使用する列または数値を選択します。

除算と減算に使用する列の選択順序は、直感に反しているように思えるかもしれませんが、結果をわかりやすくするために、列見出しには、演算名と、列が使用された順序が示されます。

操作 Num1 Num2 結果列 結果の値
加算 1 5 Add(Num2_Num1) 4
乗算 1 5 Multiple(Num2_Num1) 5
減算 1 5 Subtract(Num2_Num1) 4
減算 0 1 Subtract(Num2_Num1) 0
事業部 1 5 Divide(Num2_Num1) 5
事業部 0 1 Divide(Num2_Num1) Infinity

追加

列セット を使用してソース列を指定し、その値に 定数操作引数 で指定した数値を追加します。

2つの列の値を追加するには、[ 列セット] を使用して1つまたは複数の列を選択し、[ 操作引数] を使用して2番目の列を選択します。

除算

[演算の引数] に定義されている定数または列の値で [列セット] の値を除算します。 言い換えると、最初に除数を選択し、次に被除数を選択します。 出力値は商です。

乗算

指定された定数または列の値で [列セット] の値を乗算します。

減算

[操作引数] ドロップダウンリストを使用して、減算する数値 (減数) を指定します。 定数、または値の列のいずれかを選択できます。 次に、2番目の [列セット] オプションを使用して、別の列を選択して、操作する値の列 (被減数) を指定します。

値の列の各値から定数を減算することはできますが、逆の演算はできません。 これを行うには、代わりに加算を使用します。

丸め処理

Studio (クラシック) では、さまざまな丸め処理がサポートされています。 多くの演算では、丸めを行うときに使用する精度を指定する必要があります。 定数として指定される静的な精度を指定することも、値の列から取得した動的な精度の値を適用することもできます。

  • 定数を使用する場合は、[Precision Type](精度の型)[Constant](定数) に設定し、[Constant Precision](定数の精度) テキスト ボックスに整数で桁数を入力します。 整数以外の値を入力してもモジュールはエラーを生成しませんが、予期しない結果になる可能性があります。

  • データセットの行ごとに異なる精度値を使用するには、[Precision Type](精度の型)[ColumnSet] に設定してから、適切な精度値を含む列を選択します。

Ceiling

[列セット] の最高値を返します。

CeilingPower2

[列セット] の最高値の 2 乗を返します。

指定された有効桁数に対して、[列セット] の最低値を返します。

Mod

指定された有効桁数に対して、[列セット] の値の端数部分を返します。

指定された有効桁数に対して、[列セット] の値の端数部分を返します。

剰余

[列セット] の値の剰余を返します。

RoundDigits

指定した桁数で四捨五入して丸められた [列セット] の値を返します。

RoundDown

指定した桁数で切り捨てられた [列セット] の値を返します。

RoundUp

指定した桁数で切り上げられた [列セット] の値を返します。

ToEven

最も近い偶数の整数に丸められた [列セット] の値を返します。

ToOdd

最も近い奇数の整数に丸められた [列セット] の値を返します。

Truncate

指定された有効桁数を超えるすべての桁を削除して、[列セット] の値を切り捨てます。

特別な数学関数

このカテゴリには、データ サイエンスでよく使用される特殊な数学関数が含まれます。 特に明記されていない限り、関数は単項で、選択された 1 つ以上の列の各値に対して指定された計算を返します。

Beta

オイラーのベータ関数の値を返します。

EllipticIntegralE

不完全な楕円整数の値を返します。

EllipticIntegralK

完全な楕円整数 (K) の値を返します。

Erf

誤差関数の値を返します。

誤差関数 (ガウスの誤差関数とも呼ばれる) は、拡散を示すために確率で使用されるシグモイド形状の特殊関数です。

Erfc

補完的な誤差関数の値を返します。

Erfc は 1 - erf(x) と定義されます。

ErfScaled

スケーリングされた誤差関数の値を返します。

誤差関数のスケーリングされたバージョンは、算術アンダーフローを回避するために使用できます。

ErfInverse

逆 erf 関数の値を返します。

ExponentialIntegralEin

指数積分 Ei の値を返します。

Gamma

ガンマ関数の値を返します。

GammaLn

ガンマ関数の自然対数を返します。

GammaRegularizedP

正規化不完全ガンマ関数の値を返します。

この関数は、定数または値の列として指定できる第 2 の引数を取ります。

GammaRegularizedPInverse

正規化逆不完全ガンマ関数の値を返します。

この関数は、定数または値の列として指定できる第 2 の引数を取ります。

GammaRegularizedQ

正規化不完全ガンマ関数の値を返します。

この関数は、定数または値の列として指定できる第 2 の引数を取ります。

GammaRegularizedQInverse

一般化された正規化逆不完全ガンマ関数の値を返します。

この関数は、定数または値の列として指定できる第 2 の引数を取ります。

PolyGamma

ポリガンマ関数の値を返します。

この関数は、定数または値の列として指定できる第 2 の引数を取ります。

三角関数

このカテゴリには、重要な三角関数と逆三角関数の大部分が含まれます。 すべての三角関数は単項であり、追加の引数は必要ありません。

Acos

列値の逆余弦を計算します。

AcosDegree

列値の逆余弦を計算します (角度単位)。

Acosh

列値の双曲線逆余弦を計算します。

Acot

列の値の逆余接を計算します。

AcotDegrees

列値の逆余接を計算します (角度単位)。

Acoth

列値の双曲線逆余接を計算します。

Acsc

列の値の逆余割を計算します。

AcscDegrees

列値の逆余割を計算します (角度単位)。

Asec

列値の逆正割を計算します。

AsecDegrees

列値の逆正割を計算します (角度単位)。

Asech

列値の双曲線逆正割を計算します。

Asin

列値の逆正弦を計算します。

AsinDegrees

列値の逆正弦を計算します (角度単位)。

Asinh

列値の双曲線逆正弦を計算します。

Atan

列値の逆正接を計算します。

AtanDegrees

列値の逆正接を計算します (角度単位)。

Atanh

列値の双曲線逆正接を計算します。

Cis

定義 ci θ = cos θ + isin θを使用して、正弦および余弦から作成された複雑な値の関数を返します。

Cos

列値の余弦を計算します。

CosDegrees

列値の余弦を計算します (角度単位)。

Cosh

列値の双曲線余弦を計算します。

Cot

列値の双曲線余接を計算します。

CotDegrees

列値の双曲線余接を計算します (角度単位)。

Coth

列値の双曲線余接を計算します。

Csc

列値の余割を計算します。

CscDegrees

列値の余割を計算します (角度単位)。

Csch

列値の双曲線余割を計算します。

DegreesToRadians

度をラジアンに変換します。

Sec

列値の正割を計算します。

aSecDegrees

列値の正割を計算します (角度単位)。

aSech

列値の双曲線正割を計算します。

署名

列値の正弦を返します。

Sin

列値の正弦を計算します。

Sinc

列値の正弦余弦の値を計算します。

SinDegrees

列値の正弦を計算します (角度単位)。

Sinh

列値の双曲線正弦を計算します。

Tan

列値の正接を計算します。

TanDegrees

引数の正接を計算します (角度単位)。

Tanh

列値の双曲線正接を計算します。

テクニカル ノート

このセクションには、実装の詳細、ヒント、よく寄せられる質問への回答が含まれています。

複数の列に対する操作

2 番目の演算子として複数の列を選択する場合は注意してください。 すべての列に定数を加算するなど、演算が単純な場合、結果は理解しやすくなります。

データセットに複数の列があり、データセットをそれ自体に加算すると仮定します。 結果では、次のように各列がそれ自体に加算されます。

Num1 Num2 Num3 Add(Num1_Num1) Add(Num2_Num2) Add(Num3_Num3)
1 5 2 2 10 4
2 3 -1 4 6 -2
0 1 -1 0 2 -2

もっと複雑な計算を実行する必要がある場合は、Apply Math Operation の複数のインスタンスを連結することができます。 たとえば、算術演算の適用 の 1 つのインスタンスを使用して 2 つの列を追加し、算術演算の適用 の別のインスタンスを使用して合計を定数で除算し、平均値を取得することができます。

または、次のいずれかのモジュールを使用して、SQL、R、または Python スクリプトを使用して、すべての計算を一度に実行します。

単項関数と二項関数

単項演算 では、他の列や定数を参照せずに、列の値に基づいて計算を作成します。

たとえば、列の値を特定の程度の有効桁数で切り捨てることや、値の切り上げや切り下げ、または最高値や最低値の特定が可能です。

単項演算の例は Abs(X) です。ここで X は入力として指定される列です。

二項演算 では、2つの値のセットを指定します。 最初の引数は常に列または列のセットである必要がありますが、2番目の引数には定数または別の列として指定する数値を指定できます。

2 つの列を使用する二項演算の例は Subtract(X,Y) です。ここで X は選択した最初の列、Y は 2 番目の列です。

列と定数を組み合わせた二項演算の使用例には、Subtract(X,mean) があります。定数として列の平均値を入力すると、列 X の各値からその値が減算されます。

カテゴリ列の数値の処理

数値として表示されるカテゴリ値のサポートは、関数と、関数が取る引数の数によって異なります。

  • 操作にカテゴリ列として指定された数値が含まれている場合は、単項演算をカテゴリデータ値に適用できます。

  • 単項演算がカテゴリ列に適用されている場合は、入力列のカテゴリデータ値を、出力列の関連付けられたカテゴリデータ値と等しい値に変換できます。 この場合、値がマージされるため、出力のカテゴリデータ値の数は常に入力の値の数よりも小さくなります。

  • バイナリ演算がカテゴリ列およびその他の列に適用される場合、想定される動作は次のようになります。

    • その他の列が高密度の場合、出力列はカテゴリになります。

      入力に存在するカテゴリ データ値は失われます。

      出力列には出力列のデータに存在する値のみが含まれます。

    • その他の列がスパースである場合、出力列はスパースです。

    • 二項演算の引数が両方ともスパース列の場合、結果の列には、両方の入力列でバックグラウンドのゼロが含まれていたすべての位置に、バックグラウンドのゼロが含まれます。

スパース列の処理

単項演算では、バックグラウンドのゼロに対応するスパース列のすべての要素が未処理のままになります。

二項演算では、1つの引数がスパース列で、もう一方の引数が高密度列である場合、結果の列はスパース列からの入力からすべてのバックグラウンドゼロが反映されたスパースになります。

想定される入力

名前 Type 説明
データセット データ テーブル 入力データセット

出力

名前 Type 説明
結果のデータセット データ テーブル 結果のデータセット

関連項目

統計関数
モジュールの一覧 (アルファベット順)