Vantage アナリティクス・ライブラリ

[Teradata Vantage - Vantage Analytics Library](https://docs.teradata.com/r/Vantage-Analytics-Library-User-Guide/January-2022) [2022/7/29時点]の翻訳です。

> Vantageアナリティクスライブラリ シリーズのコンテンツです。

<iframe width="560" height="315" src="https://www.youtube.com/embed/r12df89B3nc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

# Vantageアナリティクス・ライブラリ
データ変換、記述統計、仮説検定、クラスタリング、回帰、予測アルゴリズムなど、高度な関数の豊富なライブラリをJAVA外部プロシージャとして実装したもので、R、Python、SQLから使用することができます。
#### 主な特徴
- すべての Vantage リリース (Vantage 1.x 以上) の Vantage Advanced SQL Engine で動作します。
- Vantage のすべての導入オプション（オンプレミスおよびクラウド）に導入可能です。
- 外部ストアドプロシージャとして実装されており、追加のインフラがなく動作します。
- Vantageの並列処理エンジンで動作するため、大量データに対して高速に処理を行うことができます。
- Vantage用のpython/R用ライブラリを使用することで、SQLだけでなく、pythonやRからも利用できます。

#### 機能概要
![Vantage Analytics Library機能概要.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740723/431c1d8f-2164-2df9-e651-ff0c9bca0fe7.png)

## ライブラリ一覧
Vantageアナリティクス・ライブラリで利用可能なライブラリとしては、以下のものがあります。
![Vantage Analytics Library概要.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740723/96f7aac3-024f-44a0-c143-8159aed010ac.png)

## インストール方法
Vantage アナリティクス・ライブラリのインストール手順は「[Vantageアナリティクス・ライブラリのインストール](https://qiita.com/ykswi/items/12d0da2ac69b4b161881#vantage%E3%82%A2%E3%83%8A%E3%83%AA%E3%83%86%E3%82%A3%E3%82%AF%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)」の記事を参照下さい。

## 実行方法
### SQLからの実行する場合の例
```val.sql
    call VAL.td_analyze('Kmeans’, /* 分析手法　*/
                    'database=[$database];　/※データベース名 */
                     tablename=telco_customers; /*入力テーブル名*/
                     columns=age, /*入力項目名*/
                             support_calls,
                             voicemail_calls;
                     kvalue=3;  /※ハイパーパラメータの指定*/
                     iterations=10; 
                     threshold=0.1;
                     operatordatabase=VAL;’); 
```

### Pythonから実行する場合の例
```val.py
from teradataml import valib  /* Vantage用 Pythonライブラリのインポート*/
from teradataml import configure
configure.val_install_location = "VAL"

df = DataFrame("telco_customers") /* データフレーム(テーブル)名*/

KMeansModel = valib.KMeans(data=df,
                           columns=["age",  /* データフレーム(テーブル)名*/
                                    "support_calls",
                                    "voicemail_calls"],
                            centers=3,
                            max_iter=10,　　/※ハイパーパラメータの指定*/
                            threshold=0.1))
```

[Teradata ダウンロード サイト](https://downloads.teradata.com/)からteradataml(VantageのPython用パッケージ)とtdplyr(VantageのPython用パッケージ)はダウンロードして、利用することができます。

<!---
## Vantageアナリティクス・ライブラリのセットアップ方法
-->

## 各ライブラリの使い方
:::note information
各関数の使い方に関しては、段階的にリンクを追加していきますので、リンクの利用方法を参照してご利用下さい。
:::
### データ変換
##### 変数作成・変換
| 関数名 | 説明 |
|:-|:-|
|[階級コード変換<br>(Bin Code)](https://qiita.com/tmsky/items/92b104859dd5436629a2)|ビンコード変換を使用して、連続した数値列をカテゴリ列に置き換えることができます。ビンコード変換は、順序値（つまり、データ列のように順序が意味を持つ数値のカテゴリ値）を生成します。|
|[派生コード変換<br>(Deriv)](https://qiita.com/tmsky/items/8950586c85d3751451a3)|導出変換を使用して、列に基づく数式の結果を表に入力します。たとえば、入力テーブルの列のすべての値が非負であることがわかっている場合、導出を使って列の各値に 1 を加え、結果の値の自然対数をとり、最終結果を出力テーブルの列に入力することができます。|
|[デザイン・コード変換<br>(Design Code)](https://qiita.com/tmsky/items/97dfdd2cfe43620c4fbf)|デザイン コード変換を使用して、カテゴリ データ要素を 1 つまたは複数の数値データ要素として表現し、カテゴリ データ値ごとにバイナリ数値フィールドを作成します。|
|[ヌル変換<br>(Null Replacement)](https://qiita.com/tmsky/items/a453b3f29165e90f166b)|NULL変換を使用して、指定した列のNULL値をリテラル値、列の平均値、中央値、最頻値、または別のテーブルから結合した帰属値で置き換えることができます。列の値が偶数である場合、2 つの中間値の平均を取るか取らないかの中央値を要求することができます。|
|[再コード変換<br>(Recode)](https://qiita.com/tmsky/items/9c553a04105fa2f8d76e)|再コード化変換を使用して、列の値を新しいコード体系で再表現したり、データ品質の問題を修正し、特定の値に分析を集中させることができます。個々の値、NULL 値、または残りの値を、新しい値、NULL 値、または同じ値にマップすることができます。|
|[リスケール変換<br>(Rescale)](https://qiita.com/tmsky/items/b423f20e049867f0a6eb)|リスケール変換を使用すると、データの最大値と最小値に基づく線形リスケーリング関数を使用して、連続した数値列のデータの上限と下限を制限することができます。リスケーリングは、ある範囲内のデータを必要とする、あるいはよりよく機能するアルゴリズムで有用です。|
|[保持変換<br>(Retain)](https://qiita.com/tmsky/items/872b61c3964b47d1ea23)|保持変換を使用して、1 つ以上の入力テーブルの列を出力テーブルにコピーし、オプションで出力テーブルの列に新しい名前と型を付けます。Retain 変換は、どのようなデータ型の列にも適用することができます。|
|[シグモイド変換<br>(Sigmoid)](https://qiita.com/tmsky/items/9323e8524b93069faa6c)|シグモイド変換は、シグモイド（S字）関数（ロジット、修正ロジット、ハイパーボリックタンジェント）を使用して連続数値データを再スケールするためにシグモイド変換は、数値の列のみに適用できます（日付の列は含まれません）。|
|[Z値変換<br>(Z-Score)](https://qiita.com/tmsky/items/0b9dc80ccf082bb43d13)|Z値変換を使用して、数値列を列値の平均値と標準偏差に基づくZ値に再スケールします。各列の値は、この式を使用して、列の平均値からの標準偏差の数に変換されます。|

##### テーブル操作
| 関数名 | 説明 |
|:-|:-|
|結合<br>(Join)|異なるカラム、共通のデータサンプルを有するテーブルを、単一テーブルに結合|
|併合<br>(Merge)|共通のカラム構成、異なるデータサンプルのテーブルを、単一テーブルに併合|
|非正規化<br>（Denorm)|表を非正規化します。ピボットと呼ばれることもあります。|
|サンプリング<br>(Sample)|テーブルから、件数、もしくは割合を指定してサンプル抽出|

##### 行列作成
| 関数名 | 説明 |
|:-|:-|
|相関行列<br>(COR)|この関数は、X列とY列のペアごとの組み合わせについて相関を計算します。|
|共分散行列<br>(COV)|この関数は、X列とY列のペアごとの組み合わせについて共分散を計算します（nは計算における行の総数）。|
|平方和積和行列<br>(SSCP)|この関数は、X列とY列のペアごとの二乗和と逆積を次の式で計算する。|
|補正平方和積和行列<br>(CSSCP)|この関数は、X列とY列のペア毎の補正された二乗和と外積を計算します（nは計算の総行数）。|
|拡張平方和積和行列<br>(ESSCP)|この関数は、X列とY列のペアごとの平方和と外積を計算します。計算式は補正平方和と外積と同じですが、定数1の列が追加されています。|

### 記述統計
| 関数名 | 説明 |
|:-|:-|
|[値分析<br>(Values)](https://qiita.com/tmsky/items/23303cf81d67b194533d)|データの性質や全体的な品質を判断します。たとえば、データがカテゴリか連続した数値か、ヌル値がいくつ含まれるか、値が0がいくつ含まれるかなどです。|
|[統計分析<br>(Statistics)](https://qiita.com/tmsky/items/4b89662c022ed32c0c87)|数値データの特徴を把握し、その品質を評価し、突出した値やその他の異常の発見に役立ちます。例えば、最大、最小、中間値、標準偏差などを把握することができます。|
|[頻度分析<br>(Frequency)](https://qiita.com/tmsky/items/b4853578223adf44dfa6)|頻度分析は、各値の個別または組み合わせの発生回数をカウントします。|
|[データ探索分析<br>(Data Explorer)](https://qiita.com/tmsky/items/6912fbbded085c1c07cc)|複数変数に対して、統計分析、値分析、頻度分析、ヒストグラム分析を一括で実行|
|[ヒストグラム分析<br>(Histogram)](https://qiita.com/tmsky/items/e465a89b5cf72f017b6b)|ヒストグラム解析は、1つまたは複数の列の連続した数値の分布を示すヒストグラムグラフを作成するためのデータを提供します。|
|[オーバーラップ分析<br>(column overlap)](https://qiita.com/tmsky/items/35976e5b80c6f2a0b01f)|重複分析では、2つのテーブルのキーフィールドが重複しているものを数えます。どのキーフィールドが重複したデータを保持しているかを知ることで、複数のテーブルの情報を結合して分析用データセットを作成すること可能になります。|
|[テキスト<br>フィールド分析<br>(Text Field Analysis)](https://qiita.com/tmsky/items/61e3d6455441a436ab88)|テキストフィールド解析は、文字データを調べ、そのデータが数値型、日付、時刻、タイムスタンプ、または文字データとしてデータベースに格納できるかどうかを判断します。|
|[アダプティブ<br>ヒストグラム分析<br>(Adaptive Histogram)](https://qiita.com/tmsky/items/4c0bdd6e40b6f9f3d294)|アダプティブヒストグラム分析（アダプティブビニングとも呼ばれる）は、分布をさらに細分化することで、ヒストグラム分析を補完するものです。アダプティブヒストグラム分析では、値をスパイクとして扱う頻度のパーセンテージと、ビンがオーバーポピュレーションとなるパーセンテージを決定します。|

### 仮説検定
##### パラメトリック検定(Parametric Tests)
| 関数名 | 説明 |
|:-|:-|
|t検定|対応のあるt検定。2つの標本の値の間には、1対1の対応がなければならない。 この検定は、対応する（対になった）値の間の平均差が、正規分布に従うことを仮定する。 この検定は、平均の差がゼロから有意に異なるかどうかを決定する。|
|F検定(一元配置)|F検定（ANOVAとも呼ばれる）は、処理平均または交互作用の間に有意な差があるかどうかを決定するために使用します。|
|F検定(N元配置)|データセット全体に対してこのF検定を行います。|

##### 二項検定(Binomial Tests)
| 関数名 | 説明 |
|:-|:-|
|二項検定(Z検定)<br>(Binomial Z-Test)|検定では、GBV集合ごとに帰無仮説を棄却するかどうか（p=p*, p<p*, または p>p*）を決定するために、指定した確率閾値と比較する p 値を出力します。|
|二項検定(符号検定)<br>(Binomial Sign Test)|符号検定では、ある列が正であるかどうかを検定する。|

##### 分割表の検定(Tests Based on Contingency Tables)
| 関数名 | 説明 |
|:-|:-|
|カイ二乗検定<br>(Chi Square Test)|カイ2乗検定は、RxC分割表のデータから観察される確率が同じであるかどうかを決定します。帰無仮説は、確率が同じであるとするものである。検定は、帰無仮説を棄却するかどうかを決定するために、指定された閾値と比較するp値を出力します。|
|メディアン検定<br>(Median Test)|中央値検定は、固定マージン合計によるカイ2乗検定である。これは、いくつかの標本が、同じ中央値を持つ集団から得られたかどうかを検定します。帰無仮説は、すべての標本が同じ中央値を持つというものである。|

##### コルモゴロフ–スミルノフ検定
| 関数名 | 説明 |
|:-|:-|
|コルモゴロフ–スミルノフ検定<br>(Kolmogorov/Smirnoff Test )|コルモゴロフ–スミルノフ検定は、データセットが正規分布に一致するかどうかを決定すします。|
|リリーフィース検定<br>(Lilliefors Test)|リリーフィース検定はデータセットが特定の分布に一致するかどうかを決定する。この検定は，データをZ値に変換することでコルモゴロフ–スミルノフ検定を修正したものです。|
|シャピロウィルク検定<br>(Shapiro-Wilk Test)|シャピロウィルク検定は仮説の正規分布の平均または分散の事前指定を必要とせずに正規分布からの逸脱を検出します。これは正規性の最適なオムニバス検定の1つとみなされ，通常コルモゴロフ–スミルノフ検定よりも強力である．|
|ダゴスティーノ・パーソン検定<br>(D’Agostino and Pearson Test)|ダゴスティーノ・パーソン検定は，仮説の正規分布の平均または分散の事前指定を必要とせずに正規分布からの逸脱を検出します。これは，正規性のオムニバス検定であり通常コルモゴロフ–スミルノフ検定よりも強力である。|
|スミルノフ検定<br>(Smirnov Test)|スミルノフ検定（2標本コルモゴロフ–スミルノフ検定とも呼ばれる）は、2つのデータセットが有意に異なる分布を持っているかどうかをチェックするものである。|

##### 順位検定
| 関数名 | 説明 |
|:-|:-|
|マン・ホイットニー<br>/クラスカル・ウォリス検定<br>(Mann-Whitney/Kruskal-Wallis Test)|独立変数が2つ以上の値を持たない場合はマン・ホイットニー検定を実行する。独立変数が2つ以上の値を持つ場合、この関数はすべての変数でクラスカル・ウォリス検定を実行します。クラスカル・ウォリス検定は Mann-Whitney の一般化なので、クラスカル・ウォリス検定の結果は、2つだけの値を持つものも含めてすべての変数に対して有効です。マン・ホイットニー検定とクラスカル・ウォリス検定の唯一の違いは、独立変数の扱い方である。|
|ウィルコクソンの符号順位検定<br>(Wilcoxon Signed Ranks Test)|ウィルコクソンの符号順位検定は、相関のある標本に対するT-検定に代わるもので、T-検定のこれらの要件を満たさないデータに対して適切なものである。測定の尺度が等尺度の特性を持つ（たとえば、測定が評価尺度である場合）。対の値間の差は、ソース母集団から無作為に選択される。ソース母集団が正規分布である。|
|フリードマン検定<br>(Friedman Test with Kendall's Coefficient <br>of Concordance and Spearman's Rho)|フリードマン検定は、複数の独立標本についての符号検定を拡張したものである。これは2元配置の分散分析に似ていますが、オブザベーションの順位のみに依存するので、順位での2元配置ANOVAのようなものです。フリードマン検定は6つ以上の処理に最適である．3つまたはより少ない処理では、それは十分に強力ではありません。|

### アドバンスド・アナリティクス
| 関数名 | 説明 |
|:-|:-|
|アソシエーション<br>分析<br>(Association Analysis)|アソシエーション分析は、グループ内で一緒に発生するアイテムの頻度や、アイテムが他の特定のアイテムを含むグループ内で発生する確率など、グループのアイテム間の関係を表します。例えばマーケットバスケット分析のように同時に購入した商品の発生確率などを分析します。|
|シーケンス分析<br>(Sequence Analysis)|シーケンス分析とは、アソシエーションルールの項目が時間的な順序を持つようなアソシエーション分析の一形態である。sequencecolumn を指定すると、アソシエーション関数はシーケンス解析を行う。この関数は、先行詞の項目が後続詞の項目より前に発生したと仮定する。|
|線形回帰<br>(Linear Regression)|線形回帰は、統計解析の中で最も古く、最も基本的なタイプの一つである。線形回帰モデルは、一般化線形モデルの一種です（ロジスティック回帰、対数線形モデル、多項応答モデルも同様です）。これは、観測された変数のセット間の関係を示しています。|
|ロジスティック回帰<br>(Logistic Regression)|ロジスティック回帰は，2つだけの可能な結果を持つ従属変数のための線形回帰よりも優れている。たとえば顧客はプロモーションに応じて製品を購入したか?可能な値は0と1としてコード化される．従属変数の期待値は，それが1である確率である．|
|因子分析/主成分分析<br>(Factor Analysis)|線形回帰やクラスター分析などの分析に使用する相関性のある数値変数を多数含むデータセットについて、データの隠れた構造や意味を発見することによって、顧客の行動を根本的に理解することもできます。因子分析は、多数の相関する数値変数を因子と呼ばれるより少ない数の変数に減らすために使用されます。隠された構造および意味を理解する目的が達成されれば新しい変数、か要因は概念上意味を持つべきである。意味のある因子は、ビジネスのダイナミクスに洞察を与えるだけでなく、これらの因子を使用して構築されたすべてのモデルをより説明可能にするのに役立ち、これは有用な分析モデルの要件です。|
|クラスター分析<br>(K-Means)|K-Meansクラスタリングは、データの各行をクラスタセントロイドに割り当てます。このアルゴリズムでは、各データポイントは1つのクラスタにのみ属すると仮定し、その決定は困難な割り当てと見なされます。アルゴリズムは、与えられたデータ点から各クラスタセントロイドまでの距離を計算した後、データ点に最も近い中心を持つクラスタにデータ点を割り当てる。次の繰り返しにおいて、アルゴリズムは、その割り当てられたクラスタの平均と分散を再定義するためにポイント値を使用します。|
|決定木<br>(Decision Tree)|決定木は典型的な分類モデルである。分類モデル（または分類器）は、カテゴリ変数の値を予測する。回帰木と呼ばれる決定木のバリエーションは、分類モデルの代わりに回帰モデルである。|

## おわりに
:::note warn
警告
この本書は[Teradata Vantageドキュメンテーション](https://docs.teradata.com/)よりトピックに必要な情報を抜粋したものです。掲載内容の正確性・完全性・信頼性・最新性を保証するものではございません。正確な内容については、原本をご参照下さい。
また、修正が必要な箇所や、ご要望についてはコメントをよろしくお願いします。
:::

#### Teradata Vantageへのお問合せ
[Teradata Vantage へのお問合せ](https://www.teradata.jp/About-Us/Contact)