データ変換リファレンス - Amazon Machine Learning

データ変換リファレンス

nグラム変換

nグラム変換は、テキスト変数を入力として受け取り、(ユーザが設定可能な) n ワードのウィンドウをスライドさせることに対応する文字列を生成し、プロセス内の出力を生成します。たとえば、「この本を本当に楽しんで読みました」という文字列を考えてみましょう。

ウィンドウサイズ = 1 で nグラム変換を指定すると、その文字列内の個々の単語がすべて得られます。

{"I", "really", "enjoyed", "reading", "this", "book"}

ウィンドウサイズ = 2 でnグラム変換を指定すると、すべての 2 語の組み合わせと 1 語の組み合わせが得られます。

{"I really", "really enjoyed", "enjoyed reading", "reading this", "this book", "I", "really", "enjoyed", "reading", "this", "book"}

ウィンドウサイズ = 3 で nグラム変換を指定すると、このリストに 3 語の組み合わせが追加され、次の結果が得られます。

{"I really enjoyed", "really enjoyed reading", "enjoyed reading this", "reading this book", "I really", "really enjoyed", "enjoyed reading", "reading this", "this book", "I", "really", "enjoyed", "reading", "this", "book"}

n-grams は、2〜10 語の範囲のサイズでリクエストできます。サイズ 1 の n-grams は、データスキーマでタイプがテキストとしてマークされているすべての入力に対して暗黙的に生成されるため、入力する必要はありません。最後に、n-grams は空白文字の入力データを分割することによって生成されることに注意してください。これは、たとえば、句読点文字が単語トークンの一部とみなされることを意味します。文字列「red, green, blue」をウィンドウ 2 で n-grams を生成すると、{"red,", "green,", "blue,", "red, green", "green, blue"} となります。これを希望しない場合は、句読記号を削除するために、句読点除去プロセッサ (この資料で後述) を使用して句読記号を削除することができます。

変数 var1 のウィンドウサイズ 3 の n-grams を計算するには。

"ngram(var1, 3)"

直角のスパースなバイグラム (OSB) 変換

OSB 変換はテキスト文字列解析を支援することを目的としており、バイグラム変換 (ウィンドウサイズ 2 の nグラム) に代わるものです。OSB は、テキスト上で n サイズのウィンドウをずらし、ウィンドウの最初の単語を含む、各単語ペアを出力することにより生成されます。

各 OSB を構築するために、その構成要素の単語は「_」(アンダースコア) 文字で結合され、スキップされたすべてのトークンは OSB にアンダースコアを追加することによって示されます。したがって、OSB は、ウィンドウ内に見られるトークンだけでなく、同じウィンドウ内でスキップされたトークンの数もエンコードします。

例として、文字列「quick brown fox dog」、OSB サイズ 4 を考えます。文字列の最後から 6 つの 4 単語のウィンドウと最後の 2 つの短いウィンドウと、同様にそれぞれから生成された OSB が次の例に示されています。

ウィンドウ {OSB 生成}

"The quick brown fox", {The_quick, The__brown, The___fox} "quick brown fox jumps", {quick_brown, quick__fox, quick___jumps} "brown fox jumps over", {brown_fox, brown__jumps, brown___over} "fox jumps over the", {fox_jumps, fox__over, fox___the} "jumps over the lazy", {jumps_over, jumps__the, jumps___lazy} "over the lazy dog", {over_the, over__lazy, over___dog} "the lazy dog", {the_lazy, the__dog} "lazy dog", {lazy_dog}

直交スパースバイグラムは、nグラムの代替品で状況によっては快適に動作する可能性があります。データに大きなテキストフィールド (10 単語以上) がある場合は、どちらがよく動作するか実験してみてください。何が大きなテキストフィールドとなるかは、状況によって異なる可能性があることに注意してください。ただし、大きなテキストフィールドの場合、経験的には OSB が、特別な省略記号 (下線) により、一意にテキストを表すことが示されています。

入力テキスト変数の OSB 変換では、ウィンドウサイズを 2〜10 にリクエストできます。

変数 var1 のウィンドウサイズ 5 の OSB を計算するには。

「osb(var1, 5)」

小文字変換

小文字変換プロセッサは、テキスト入力を小文字に変換します。たとえば、入力が「The Quick Brown Fox Jumps Over the Lazy Dog」の場合、プロセッサは「the quick brown fox jumps over the lazy dog」を出力します。

変数 var1 に小文字変換を適用するには。

「lowercase(var1)」

句読点除去変換

Amazon ML は、空白のデータスキーマのテキストとしてマークされた入力を暗黙的に分割します。文字列の句読点は、隣接する単語トークンで終わるか、それを囲む空白に応じて別のトークンとして完全に終わります。これが望ましくない場合、句読点除去変換を使用して、生成された機能から句読記号を除去することができます。「Welcome to AML - please fasten your seat-belts!」という文字列を指定すると、次のトークンセットが暗黙的に生成されます。

{"Welcome", "to", "Amazon", "ML", "-", "please", "fasten", "your", "seat-belts!"}

句読点除去プロセッサをこの文字列に適用すると、次のようになります。

{"Welcome", "to", "Amazon", "ML", "please", "fasten", "your", "seat-belts"}

プレフィックスとサフィックスの句読記号だけが削除されることに注意してください。トークンの途中に現れる句読点、たとえば「seat-belts」のハイフンは削除されません。

変数 var1 に句読点除去を適用するには。

「no_punct(var1)」

四分位ビニング変換

四分位ビニングプロセッサは、数値変数と bin 番号と呼ばれるパラメータの 2 つの入力を受け取り、カテゴリ変数を出力します。目的は、観測値をグループ化して変数の分布における非直線性を発見することです。

多くの場合、数値変数とターゲットの関係は線形ではありません (数値変数の値は単調に増減しません)。そのような場合、数値機能のさまざまな範囲を表すカテゴリ機能に数値機能を格納すると便利です。各カテゴリ機能値 (bin) は、ターゲットとのそれ自身の線形関係を持つものとしてモデル化することができます。たとえば、継続的な数値機能 account_age が書籍を購入する可能性と直線的に相関していないことがわかったとします。ターゲットとの関係をより正確に把握できるようなカテゴリ機能に分類することができます。

四分位ビニングプロセッサを使用して、Amazon ML に、age 変数のすべての入力値の分布に基づいて等しいサイズの n ビンを確立し、各ビンを含むテキストトークンで置き換えるよう指示できます。数値変数の最適なビン数は、変数の特性とターゲットとの関係に依存します。これは、実験を通じて最もよく決定されます。Amazon ML では、推奨レシピのデータ統計に基づいて数値機能の最適なビン数を示唆しています。

任意の数値入力変数に対して 5 から 1000 個の分位ビンを計算して要求することができます。

次の例は、数値変数 var1 の代わりに 50 ビンを計算して使用する方法を示しています。

「quantile_bin(var1, 50)」

正規化変換

正規化変換は、平均値がゼロで分散が 1 になるように数値変数を正規化します。数値変数の正規化は、数値的変数間の距離の差が非常に大きい場合に学習プロセスを助けることができます。なぜなら、その特徴がターゲットに対して有益であるかどうかにかかわらず、最大の変数が ML モデルを支配するからです。

この変換を数値変数 var1 に適用するには、これをレシピに追加します。

normalize(var1)

この変換は、ユーザー定義の数値変数グループまたはすべての数値変数 (ALL_NUMERIC) の事前定義グループを入力として受け取ることもできます。

normalize(ALL_NUMERIC)

注意

正規化プロセッサを数値変数に使用することは必須ではありません

デカルト積変換

デカルト変換は、2 つ以上のテキストまたはカテゴリ入力変数の順列を生成します。この変換は、変数間の相互作用が疑われる場合に使用されます。たとえば、チュートリアル :Amazon ML を使用してマーケティングオファーへの応答を予測するのに使用される銀行マーケティングデータセットを考えてみましょう。このデータセットを使用して、経済的および人口統計的情報に基づいて、人が銀行のプロモーションに積極的に反応するかどうかを予測します。当社では、個人の仕事の種類が重要であると考えるかもしれません (特定の分野で雇用されて利用可能なお金を手に入れること)、最高水準の教育の獲得も重要です。当社はまた、これらの 2 つの変数の相互作用に強いシグナルがあるという、より深い直感を持っているかもしれません - たとえば、昇進は大学の学位を取得した起業家である顧客に特に適しています。

デカルト積変換は、カテゴリ変数またはテキストを入力として受け取り、これらの入力変数間の相互作用を取得する新しい機能を生成します。具体的には、トレーニング例ごとに機能の組み合わせを作成し、スタンドアロン機能として追加します。たとえば、簡略化した入力行が次のようになっているとします。

ターゲット、教育、仕事

0、university.degree、技術者

0、high.school、サービス

1、university.degree、管理者

デカルト変換をカテゴリ変数の教育分野と職種分野に適用するように指定すると、結果の機能 education_job_interaction は次のようになります。

ターゲット、education_job_interaction

0、university.degree_technician

0、high.school_services

1、university.degree_admin

デカルト変換は、引数の 1 つが暗黙的である場合、または明示的にトークンに分割されるテキスト変数である場合、一連のトークンを処理するときにさらに強力になります。たとえば、書籍が教科書かどうかを分類するタスクについて検討します。直感的には、教科書であることを示す書籍のタイトル (教科書のタイトルでは特定の単語が頻繁に出現する可能性がある) があると思われるかもしれません。また、本の装丁で予測できると考えるかもしれませんが (教科書はハードカバーになる可能性が高いため)、実際にはタイトルと装丁についてのいくつかの単語の組み合わせで予測できます。実際の例で、次の表は、入力変数 binding および title にデカルトプロセッサを適用した結果を示しています。

教科書 役職 装丁 no_punct (タイトル) と装丁のデカルト積
1 経済学: 原則、問題、ポリシー ハードカバー {"Economics_Hardcover", "Principles_Hardcover", "Problems_Hardcover", "Policies_Hardcover"}
0 The Invisible Heart: An Economics Romance ソフトカバー {"The_Softcover", "Invisible_Softcover", "Heart_Softcover", "An_Softcover", "Economics_Softcover", "Romance_Softcover"}
0 Fun With Problems ソフトカバー {"Fun_Softcover", "With_Softcover", "Problems_Softcover"}

次の例は、デカルト変換を var1 と var2 に適用する方法を示しています。

cartesian(var1, var2)