マシンラーニング関数(teradataml)

[Teradata® Package for Python Function Reference](https://docs.teradata.com/r/Teradata-Package-for-Python-Function-Reference/April-2022) [リリース番号：17.10　リリース日付：2022/4時点]の翻訳です。

> Python用ライブラリ(teradataml) シリーズのコンテンツです。

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

# マシンラーニング関数<br>(SQL MapReduce フレームワーク)
マシンラーニング関数は、SQL MapReduceフレームワーク上で動作する機械学習を実行するための機能です。
データ準備、探索、特徴エンジニアリング、モデルトレーニング、モデルの評価とスコアリングと、機械学習における各プロセスで必要となる機能について、予め関数を実行することで、簡単に大量データに対する分析をすることができます。
あらかじめ用意された関数は以下のようなものがあります。

<img width="600" alt="SQL MapReduceフレームワーク.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740723/baab9dd3-508c-aebf-47c0-48c18cac0fe3.png">

#### 主なユースケース
- データプロファイリング
- データ品質分析
- 故障予測
- 顧客リテンション・モデリング
- 製品のクロスセル アップセル
- 顧客ライフタイムバリュー
- マーケティング貢献分析
- プロモーション予測
- 顧客セグメンテーション

### マシンラーニング関数の一覧
<img width="900" alt="インデータベース分析.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2740723/37e2374f-72fd-b546-8ae5-a1b40c5e4871.png">

:::note information
各関数の使い方に関しては、段階的にリンクを追加していきますので、各リンク先のページの利用方法を参照してご利用下さい。
:::

### データクリーニング(Data Cleaning)
##### 異常値の対応(Handling Outliers)
| 関数名 | 説明 |Ver|
|:-|:-|:-:|
|無意味な列の調査<br>(TD_GetFutileColums)|すべての値が同一、もしくはすべてがユニークな値のカラムの調査、もしくは行数に対して、値のパターン数が指定した割合より低いカラムの調査|17.20|
|四分位計算による外れ値の確認<br>(TD_OutlierFilterFit)|指定した入力テーブル列の第１四分位と第３四分位、行数、および中央値を計算して、外れ値の発見に使用します。|17.10|
|外れ値フィルター変換<br>(TD_OutlierFilterTransform)|入力テーブルから異常値を除外します。|17.10|

##### 欠損値の対応(Handling Missing Values)
| 関数名 | 説明 |Ver|
|:-|:-|:-:|
|NULL値の除去<br>(TD_GetRowsWithoutMissingValues)|指定した入力テーブル列に非NULL値を持つ行を表示します。|17.10|
|欠損値の補完項目の出力<br>(TD_SimpleImputeFit)|欠損値を置き換える値のテーブルを出力します。|17.10|
|欠損値の補完<br>(TD_SimpleImputeTransform)|入力テーブルの欠落値を指定した値で置き換えます。|17.10|

##### データの変換(Parsing Data)
| 関数名 | 説明 |Ver|
|:-|:-|:-:|
|データ型変換<br>(TD_ConvertTo)|指定した入力テーブルの列を指定したデータ型に変換します。|17.20|
|パック<br>(Pack)|複数列のデータを1つのデータ列にパックして圧縮します。|16.20|
|アンパック<br>(Unpack)|1つのパック済み列から複数の列にデータをアンパックして展開します。|16.20|
|文字列類似性比較<br>(StringSimilarity)|指定した比較メソッドを使用して、2つの文字列間の類似性を計算します。|16.20|

### データ探索(Data Exploration Functions)
##### 記述統計　(Descriptive Statistics)
| 関数名 | 説明 |Ver|
|:-|:-|:-:|
|移動平均<br>(MovingAverage)|指定された移動平均タイプを使用して、系列の平均値を計算します。|16.20|
|カテゴリカル・サマリ<br>(TD_CategoricalSummary)|指定した各入力テーブル列の固有値とその数を表示します。|17.10|
|カラム・サマリ<br>(TD_ColumnSummary)|指定した各入力テーブル列のカラム名やNULLの数などのサマリーを表示します。|17.10|
|欠損値の行数調査<br>(TD_GetRowsWithMissingValues)|指定した入力テーブル列にNULL値を持つ行を表示します。|17.10|
|度数分布<br>(TD_Histogram)|データセットの度数分布を計算します。|17.10|
|正規確率プロット<br>(TD_QQNorm)|指定した入力テーブル列の値が正規分布をとっているかどうかを確認します。|17.10|
|記述統計<br>(TD_UnivariateStatistics)|指定した各数値入力テーブル列の記述統計を表示します。|17.10|
|最大値の行表示<br>(TD_WhichMax)|指定した入力テーブル列に最大値を持つすべての行を表示します。|17.10|
|最大値の行表示<br>(TD_WhichMin)|指定した入力テーブル列に最小値を持つすべての行を表示します。|17.10|

#### 仮説検定(Hypothesis Testing Functions) 
| 関数名 | 説明 |Ver|
|:-|:-|:-:|
|分散分析<br>(TD_ANOVA)|分散分析 (ANOVA) 検定を実行して、平均間の差を分析します。|17.20|
|カイ二乗検定<br>(TD_ChiSq)|独立性を検定するピアソンのカイ二乗検定を実行します。|17.10|
|F検定<br>(TD_FTest)|F検定を実行します。この検定統計量には、帰無仮説の下でのF分布があります。|17.10|
|Z検定<br>(TD_ZTest)|Z検定を実行します。帰無仮説におけるこの検定統計量の分布は、正規分布で近似できます。|17.10|

### 特徴抽出(Feature Engineering)
#### 特徴抽出 変換機能(Feature Engineering Transform Functions)
| 関数名 | 説明 |Ver|
|:-|:-|:-:|
|カラムの不選択<br>(Antiselect)|AntiSelectはすべての列を返します(指定された列は除く)。|16.20|
|カラム変換<br>(TD_ColumnTransforer)|スケール変換や階級コードへの変換などを一度に行います。|17.20|
|階級コード変換(Fit)<br>(TD_BinCodeFit)|数値データを複数の階級コード化するために、TD_BinCodeTransform に入力する情報のテーブルを出力します。|17.10|
|階級コード変換(Transform)<br>(TD_BinCodeTransform)|TD_BinCodeFitからのデータから階級コードを作成します。|17.10|
|数値変換(fit)<br>(TD_FunctionFit)|指定した数値変換を指定した入力列に適用できるかどうかを決定します。|17.10|
|数値変換(Transform)<br>(TD_FunctionTransform)|FunctionFit出力への入力列に数値変換を適用します。|17.10|
|非線形結合(fit)<br>(TD_NonLinearCombineFit)|既存の特徴量の指定された式で計算して新たな特徴量を作成する。|17.20|
|非線形結合(Transform)<br>TD_NonLinearCombineTransform|既存の特徴量の指定された式で計算して新たな特徴量を作成する。|17.20|
|ダミー変数化（One-Hot表現）<br>(TD_OneHotEncodingFit)|属性とカテゴリ値のテーブルをTD_OneHotEncodingTransform関数に出力します。|17.10|
|ダミー変数化（One-Hot表現）<br>(TD_OneHotEncodingTransform)|TD_OneHotEncodingFit関数からの出力を使用して、指定した属性とカテゴリ値をワンホット数値ベクトルとしてエンコードします。|17.10|
|順序エンコーディング(fit)<br>(TD_OrdingEncodingFit)|属性とカテゴリ値のテーブルをTD_OneHotEncodingTransform関数に出力します。|17.20|
|順序エンコーディング(fit)<br>(TD_OrdingEncodingTransform)|TD_OneHotEncodingFit関数からの出力を使用して、指定した属性とカテゴリ値をワンホット数値ベクトルとしてエンコードします。|17.20|
|特徴量行列の生成(fit)<br>(TD_PolynomialFeaturesFit)|指定したすべての値を表形式で引数に格納します。|17.10|
|特徴量行列の生成(Transform)<br>(TD_PolynomialFeaturesTransform)|TD_PolynomialFeaturesFit関数の出力から引数の値を抽出して、特徴量のすべての多項式の組み合わせからなる特徴量行列を生成します。|17.10|
|ランダム投影の最小コンポーネント数<br>(TD_RandomProjectionMinComponents)|指定したイプシロン(歪み)パラメータ値に対して、指定したデータセットにRandomProjectionを適用するために必要なコンポーネントの最小数を計算します。|17.20|
|ランダム投影(fit)<br>(TD_RandomProjectionFit)|指定した引数に基づいてランダム射影行列を返します。|17.20|
|ランダム投影(Tranform)<br>(TD_RandomProjectionTrasnform)|TD_RandomProjectionFit関数の出力を使用して、高次元の入力データを低次元の空間に変換します。|17.20|
|行の正規化(fit)<br>(TD_RowNormalizeFit)|パラメータのテーブルと指定した入力列をTD_RowNormalizeTransformに出力して、そこで入力列を行ごとに正規化します。|17.10|
|行の正規化(Transform)<br>(TD_RowNormalizeTransform)|TD_RowNormalizeFit関数の出力を使用して、入力列を行ごとに正規化します。|17.10|
|スケーリング(Fit)<br>(TD_ScaleFit)|TD_ScaleFit & Transform - さまざまなオプションを使用して、入力データの列を拡大縮小する。 列の属性を平行移動(シフト)、伸縮(スケール)、またはその両方を行うのに使えます。|17.10|
|スケーリング(Transform)<br>(TD_ScaleTransform)|TD_ScaleFitからの統計情報を使用して入力データセットをスケーリング/標準化するために使用されます。|17.10|

#### 特徴抽出 ユーティリティ関数(Feature Engineering Utility Functions)
| 関数名 | 説明 |Ver|
|:-|:-|:-:|
|行識別子の追加　<br>(TD_FillRowID)|一意の行識別子からなる列を入力テーブルに追加します。|17.20|
|数値演算子の適用<br>TD_NumApply|指定した数値演算子を指定した入力テーブル列に適用します。|17.20|
|小数点の丸め<br>(TD_RoundColumns)|指定した各入力テーブル列の値を指定した小数点以下桁数に四捨五入します。|17.20|
|文字列演算子の適用<br>(TD_StrApply)|指定した文字列演算子を指定した入力テーブル列に適用します。|17.20|

### 機械学習(Model Training & Scoring)
##### 機械学習トレーニング機能(Model Training Functions)
| 関数名 | 説明 |Ver|
|:-|:-|:-:|
|ランダムフォレスト<br>(TD_DecisionForest)|分類および回帰予測モデリングの問題に使用されるアンサンブル アルゴリズムです。 これは、決定木のブートストラップ集約 (バギング) の拡張です。 通常、デシジョン ツリーの構築には、データ内の各入力フィーチャの値を評価して分割ポイントを選択することが含まれます。|17.20|
|クラスタリング<br>(TD_KMeans)|観測値のセットを k 個のクラスターにグループ化します。各観測値は、最も近い平均 (クラスターの中心またはクラスターの重心) を持つクラスターに属します。 このアルゴリズムは、目的関数、つまりクラスターの中心からのすべてのデータ ポイントの合計ユークリッド距離を次のように最小化します。|17.20|
|一般化線形回帰<br>(TD_GLM)|データ セットに対して回帰分析と分類分析を実行する一般化線形モデル (GLM) であり、応答は指数型分布に従い、損失関数は二乗誤差と、損失関数はロジスティックの場合をサポートします。|17.20|
|ベクトル距離<br>(TD_VectorDistance)|ターゲット ベクトルのテーブルと参照ベクトルのテーブルを受け取り、ターゲットと参照のペア間の距離を含むテーブルを返します。|17.20|

##### 機械学習スコアリング機能(Model Scoring Functions)
| 関数名 | 説明 |Ver|
|:-|:-|:-:|
|ランダムフォレスト<br>(DecisionForestPredict)|TD_DecisionForestの入力データを分析し、予測を行うことができます。|16.20|
|クラスタリング<br>(TD_KMeansPredict)|TD_KMeans関数の出力を用いて、入力データをクラスタリングします。|17.20|
|テラデータ線形回帰<br>(TD_GLMPredict)|TD_GLM関数のモデルを使用して、回帰と分類を予測します。関数で機能を使用する前に、TD_ScaleFit および TD_ScaleTransform 関数を使用して入力機能を標準化する必要があります。|17.20|

##### 機械学習 評価機能(Model Evaluation Functions)
| 関数名 | 説明 |Ver|
|:-|:-|:-:|
|クラスタリングの評価<br>(TD_Silhoete)|シルエット値は、他のクラスター (分離) と比較して、そのクラスターに対するオブジェクトの類似性 (結合) を評価します。|17.20|
|分類の評価<br>(TD_ClassificationEvaluator)|混合行列および各メトリックにより分類の精度を評価します。|17.20|
|回帰の評価<br>(TDRegression_Evaluator)|メトリックを計算して複数のモデルを評価および比較し、予測が期待値にどれだけ近いかを要約します。|17.20|
|ROCによる分類の評価<br>（TD_ROC)|2値分類モデルの予測-実測の情報を元に、ROC曲線に関する真陽性(TPR)・偽陽性(FPR)・AUC(Area Under the Curve)を計算する。|17.20|

### テキスト分析(Text Analytic Functions)
| 関数名 | 説明 |Ver|
|:-|:-|:-:|
|テキスト分類(ナイーブベイズ分類器)<br>(TD_NaiveBayesTextClassifierTrainer)|トークンとカテゴリのペアの条件付き確率、事前確率、およびすべてのカテゴリの欠落トークン確率を計算します。トレーナー関数は確率値を使用してモデルをトレーニングし、予測関数はその値を使用してドキュメントをカテゴリに分類します。|17.20|
|テキスト分類(ナイーブベイズ分類器)<br>(NaiveBayesTextClassifierPredict)|TD_NaiveBayesTextClassifierTrainer関数で出力されたモデルを使用して、入力データを分析し予測を行ないます。|17.20|
|Nマルチグラム<br>(NGramSplitter)|入力ストリームをトークン化(分割)し、指定された区切り記号と句読点のパラメータに基づいて、Nマルチグラム(N-gram)を出力します。センチメント分析、トピック識別、文書の分類に便利です。|16.20|
|センチメント分析<br>(TD_SentimentExtractor)|ディクショナリ モデルを使用して、各入力ドキュメントまたは文のセンチメント(ポジティブ、ネガティブ、またはニュートラル)を抽出します。|17.20|
|テキスト構文解析<br>(TD_TextParser)|トークン化、句読点の削除、小文字への変換、ストップワードの削除、単語行の作成、ステミング(単語の原型化）などを行います。|17.20|

### パス&パターン分析(Path and Pattern Analysis Functions)
| 関数名 | 説明 |Ver|
|:-|:-|:-:|
|アトリビューション分析<br>(Attribution)|目的とする事象に至るまでの各行動の貢献度についてを計算します。Webページの分析でよく使用されます。|16.20|
|セッショナイズ<br>(Sessionize)|クリックストリーム内の各クリックを固有セッション識別子にマップします。|16.20|
|パス分析<br>(nPath)|1つ以上の入力から一連の行に対して通常のパターン マッチングを実行します。|16.20|

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

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