特徴ハッシュ モジュール リファレンスFeature Hashing module reference

この記事では Azure Machine Learning デザイナー (プレビュー) に含まれるモジュールについて説明します。This article describes a module included in Azure Machine Learning designer (preview).

特徴ハッシュ モジュールを使用して、英語テキストのストリームを整数の特徴セットに変換します。Use the Feature Hashing module to transform a stream of English text into a set of integer features. その後、このハッシュされた特徴セットを機械学習アルゴリズムに渡して、テキスト分析モデルをトレーニングすることができます。You can then pass this hashed feature set to a machine learning algorithm to train a text analytics model.

このモジュールで提供される特徴ハッシュ機能は、NimbusML フレームワークに基づいています。The feature hashing functionality provided in this module is based on the nimbusml framework. 詳細については、「NgramHash クラス」を参照してください。For more information, see NgramHash class.

特徴ハッシュとはWhat is feature hashing?

特徴ハッシュは、一意のトークンを整数に変換することによって機能します。Feature hashing works by converting unique tokens into integers. これは、入力として提供された正確な文字列に対して作用し、言語分析や前処理は行いません。It operates on the exact strings that you provide as input and does not perform any linguistic analysis or preprocessing.

たとえば、後にセンチメント スコアが付いた、次のような一連の単純な文を取り上げます。For example, take a set of simple sentences like these, followed by a sentiment score. このテキストを使用してモデルを作成するとします。Assume that you want to use this text to build a model.

ユーザー テキストUser text センチメントSentiment
I loved this bookI loved this book 33
I hated this bookI hated this book 11
This book was greatThis book was great 33
I love booksI love books 22

内部で、特徴ハッシュ モジュールによって N-grams の辞書が作成されます。Internally, the Feature Hashing module creates a dictionary of n-grams. たとえば、このデータセットの bigram の一覧表は次のようになります。For example, the list of bigrams for this dataset would be something like this:

用語 (bigram)Term (bigrams) 頻度Frequency
This bookThis book 33
I lovedI loved 11
I hatedI hated 11
I lovedI love 11

N-gram のサイズは、N-gram プロパティを使用して制御できます。You can control the size of the n-grams by using the N-grams property. bigram を選択した場合、unigram も計算されます。If you choose bigrams, unigrams are also computed. 辞書には、次のような単一の用語も含まれます。The dictionary would also include single terms like these:

用語 (unigram)Term (unigrams) 頻度Frequency
bookbook 33
II 33
booksbooks 11
waswas 11

辞書が構築されると、特徴ハッシュ モジュールによって辞書の用語がハッシュ値に変換されます。After the dictionary is built, the Feature Hashing module converts the dictionary terms into hash values. 次に、各ケースで特徴が使用されたかどうかが計算されます。It then computes whether a feature was used in each case. テキスト データの各行に対して、モジュールは、ハッシュした特徴ごとに 1 列ずつ、一連の列を出力します。For each row of text data, the module outputs a set of columns, one column for each hashed feature.

たとえば、ハッシュ後、特徴列は次のようになります。For example, after hashing, the feature columns might look something like this:

RatingRating ハッシュする特徴 1Hashing feature 1 ハッシュする特徴 2Hashing feature 2 ハッシュする特徴 3Hashing feature 3
44 11 11 00
55 00 00 00
  • 列の値が 0 の場合、行にはハッシュされた特徴は含まれていませんでした。If the value in the column is 0, the row didn't contain the hashed feature.
  • 値が 1 の場合、行にはその特徴が含まれていました。If the value is 1, the row did contain the feature.

特徴ハッシュを使用すると、可変長のテキスト ドキュメントを等長の数値特徴ベクトルとして表して、次元削減を実現できます。Feature hashing lets you represent text documents of variable length as numeric feature vectors of equal length to reduce dimensionality. テキスト列をそのままトレーニングに使用しようとした場合は、さまざまな異なる値を持つカテゴリ特徴列として扱われます。If you tried to use the text column for training as is, it would be treated as a categorical feature column with many distinct values.

数値の出力により、分類、クラスタリング、情報取得などの一般的な機械学習の手段を使用することも可能になります。Numeric outputs also make it possible to use common machine learning methods, including classification, clustering, and information retrieval. 参照操作では、文字列の比較ではなく整数のハッシュを使用できるため、特徴の重みの取得もはるかに高速になります。Because lookup operations can use integer hashes rather than string comparisons, getting the feature weights is also much faster.

特徴ハッシュ モジュールを構成するConfigure the Feature Hashing module

  1. 特徴ハッシュ モジュールをデザイナーのパイプラインに追加します。Add the Feature Hashing module to your pipeline in the designer.

  2. 分析するテキストが含まれているデータセットを接続します。Connect the dataset that contains the text you want to analyze.

    ヒント

    特徴ハッシュではステミングや切り捨てなどの字句操作は行われないため、特徴ハッシュを適用する前にテキストの前処理を実行すると、より良い結果が得られる場合があります。Because feature hashing does not perform lexical operations such as stemming or truncation, you can sometimes get better results by preprocessing text before you apply feature hashing.

  3. [Target columns](ターゲット列) を、ハッシュした特徴に変換するテキスト列に設定します。Set Target columns to the text columns that you want to convert to hashed features. 次の点に留意します。Keep in mind that:

    • 列は文字列データ型である必要があります。The columns must be the string data type.

    • 複数のテキスト列を選択すると、特徴の次元に大きな影響を与える可能性があります。Choosing multiple text columns can have a significant impact on feature dimensionality. たとえば、10 ビット ハッシュの列数は、1 列の 1,024 個から、2 列の 2,048 個になります。For example, the number of columns for a 10-bit hash goes from 1,024 for a single column to 2,048 for two columns.

  4. [Hashing bitsize](ハッシュのビットサイズ) を使用して、ハッシュ テーブルを作成するときに使用するビット数を指定します。Use Hashing bitsize to specify the number of bits to use when you're creating the hash table.

    既定のビット サイズは 10 です。The default bit size is 10. 多くの問題に対して、この値が適切です。For many problems, this value is adequate. トレーニング テキストの N-gram ボキャブラリのサイズによっては、衝突を避けるためにより多くの領域が必要になる場合があります。You might need more space to avoid collisions, depending on the size of the n-grams vocabulary in the training text.

  5. [N-grams](N-gram) には、トレーニング辞書に追加する N-gram の最大長を定義する数値を入力します。For N-grams, enter a number that defines the maximum length of the n-grams to add to the training dictionary. N-gram は、一意の単位として扱われる、n 個の単語のシーケンスです。An n-gram is a sequence of n words, treated as a unique unit.

    たとえば、3 を入力すると、unigram、bigram、trigram が作成されます。For example, if you enter 3, unigrams, bigrams, and trigrams will be created.

  6. パイプラインを送信します。Submit the pipeline.

結果Results

処理が完了すると、モジュールによって変換後のデータセットが出力されます。元のテキスト列が複数の列に変換されます。After processing is complete, the module outputs a transformed dataset in which the original text column has been converted to multiple columns. 各列はテキスト内の特徴を表します。Each column represents a feature in the text. 辞書の有意性によっては、結果として得られるデータセットが大きくなる可能性があります。Depending on how significant the dictionary is, the resulting dataset can be large:

列名 1Column name 1 列の種類 2Column type 2
ユーザー テキストUSERTEXT 元のデータ列Original data column
センチメントSENTIMENT 元のデータ列Original data column
ユーザー テキスト - ハッシュする特徴 1USERTEXT - Hashing feature 1 ハッシュされた特徴列Hashed feature column
ユーザー テキスト - ハッシュする特徴 2USERTEXT - Hashing feature 2 ハッシュされた特徴列Hashed feature column
ユーザー テキスト - ハッシュする特徴 nUSERTEXT - Hashing feature n ハッシュされた特徴列Hashed feature column
ユーザー テキスト - ハッシュする特徴 1024USERTEXT - Hashing feature 1024 ハッシュされた特徴列Hashed feature column

変換されたデータセットを作成したら、モデルのトレーニング モジュールへの入力として使用できます。After you create the transformed dataset, you can use it as the input to the Train Model module.

ベスト プラクティスBest practices

以下のベスト プラクティスは、特徴ハッシュ モジュールを最大限に活用するのに役立ちます。The following best practices can help you get the most out of the Feature Hashing module:

  • 特徴ハッシュを使用する前にテキスト前処理モジュールを追加して、入力テキストを事前処理します。Add a Preprocess Text module before using Feature Hashing to preprocess the input text.

  • 特徴ハッシュ モジュールの後に列の選択モジュールを追加して、出力データ セットからテキスト列を削除します。Add a Select Columns module after the Feature Hashing module to remove the text columns from the output dataset. ハッシュする特徴が生成された後は、テキスト列は必要ありません。You don't need the text columns after the hashing features have been generated.

  • 結果を単純化して精度を向上させるために、次のテキスト前処理オプションを使用することを検討してください。Consider using these text preprocessing options, to simplify results and improve accuracy:

    • 単語区切りWord breaking
    • ストップ ワードの削除Stopping word removal
    • 大文字と小文字の正規化Case normalization
    • 句読点と特殊文字の削除Removal of punctuation and special characters
    • 語幹検索Stemming

ソリューションに適用される最適な前処理方法のセットは、ドメイン、ボキャブラリ、およびビジネス ニーズによって異なります。The optimal set of preprocessing methods to apply in any solution depends on domain, vocabulary, and business need. お使いのデータを使用してパイプラインを作成し、どのテキスト処理方法が最も効果的かを確認します。pipeline with your data to see which text processing methods are most effective.

次のステップNext steps

Azure Machine Learning で使用できる一連のモジュールを参照してくださいSee the set of modules available to Azure Machine Learning