IIR フィルター
重要
Machine Learning Studio (クラシック) のサポートは、2024 年 8 月 31 日に終了します。 その日までに、Azure Machine Learning に切り替えすることをお勧めします。
2021 年 12 月 1 日以降、新しい Machine Learning Studio (クラシック) リソースは作成できません。 2024 年 8 月 31 日まで、既存の Machine Learning Studio (クラシック) リソースを引き続き使用できます。
- ML Studio (クラシック) から Azure Machine Learning への機械学習プロジェクトの移動に関する情報を参照してください。
- Azure Machine Learning についての詳細を参照してください。
ML Studio (クラシック) のドキュメントは廃止予定であり、今後更新されない可能性があります。
信号処理用の無限インパルス応答フィルターを作成します
カテゴリ: データ変換/フィルター
注意
適用対象: Machine Learning Studio (クラシック) のみ
類似のドラッグ アンド ドロップ モジュールは Azure Machine Learning デザイナーで使用できます。
モジュールの概要
この記事では、Machine Learning Studio (クラシック) の IIR フィルター モジュールを使用して、無限インパルス応答 (IIR) フィルターを作成する方法について説明します。
フィルターはデジタル信号処理の重要なツールであり、画像や音声認識の結果を向上させるために使用されます。 一般に、フィルタは入力信号を受け取り、フィルタ特性に基づいて出力信号を作成する伝達関数です。 デジタル信号処理におけるフィルタのユーザに関する一般的な情報については、 フィルタを参照してください。
IIR フィルターは、特定の種類のフィルターです。IIRフィルタの一般的な用途は、着実に増加または減少する傾向に対するランダムノイズを含む循環データを簡素化することです。 このモジュールで作成する IIR フィルターは、渡される信号を変更する定数 (または係数) のセットを定義します。 名前にある無限とは、出力と系列値の間で交わされるフィードバックのことを指しています。
ニーズを満たすフィルターを定義したら、データセットとフィルターを [フィルターの適用] モジュールに接続することで、データに フィルターを適用 できます。
ヒント
フィルタは、入力信号を受け取り、フィルタ特性に基づいて出力信号を作成する伝達関数です。 デジタル信号処理におけるフィルタのユーザに関する一般的な情報については、 フィルタを参照してください。
ニーズを満たすフィルターを定義したら、データセットとフィルターを [フィルターの適用] モジュールに接続することで、データに フィルターを適用 できます。
ヒント
データセットからデータをフィルター処理するか、欠損値を削除する必要がありますか? 代わりに、次のモジュールを使用します。
- 欠損データのクリーンアップ: このモジュールを使用して、欠損値を削除するか、欠損値をプレースホルダーに置き換えます。
- パーティションとサンプル: このモジュールを使用して、日付の範囲、特定の値、正規表現などの条件でデータセットを分割またはフィルター処理します。
- クリップ値: このモジュールを使用して範囲を設定し、その範囲内の値のみを保持します。
IIR フィルターを構成する方法
実験に IIR フィルター モジュールを追加します。 このモジュールは、[ データ変換] の [ フィルター ] カテゴリにあります。
Order には、フィルターの応答に影響を与えるために使用されるアクティブな要素の数を定義する整数値を入力します。 フィルターの 順序 は、フィルター ウィンドウの長さを表します。
IIR フィルターの場合、最小順序は 4 です。
[フィルターの種類] で、フィルター係数の計算に使用するアルゴリズムを選択します。 フィルタの種類は、周波数応答と周波数抑制を制御する数学的伝達関数を指定します。 Machine Learningでは、デジタル信号処理でよく使用される次の種類のフィルターがサポートされています。
バターワース:バターワースフィルタは、パスバンドとストップバンドの応答(信号の変化)を制約するため、 最大フラットマグニチュードフィルタ とも呼ばれます。
Chebyshevタイプ1:Chebyshevフィルタは、フィルタの範囲にわたって理想化されたフィルタ特性と実際のフィルタ特性との間の誤差を最小限に抑えることを目的としています。 タイプ1のチェビシェフフィルタは、パスバンドにさらにリップルを残します。
チェビシェフタイプ2:タイプ2のチェビシェフフィルタはタイプ1のチェビシェフフィルタと同じ一般的な特性を持っていますが、ストップバンドにはより多くのリップルが残ります。
[フィルターの種類] で、フィルターが入力信号の値にどのように影響するかを定義するオプションを選択します。 フィルターでカットオフ ポイントの上または下の値を除外するように指定することも、フィルターが指定した周波数範囲内の値を拒否またはパススルーするように指定することもできます。
LowPass:(カットオフ値の下の)低周波数値が他の値を通過および減衰できるようにします。
HighPass:(カットオフ値を超える)高周波値が他の値を通過および減衰できるようにします。
バンドパス:低カットオフ値と高カットオフ値で指定された範囲内の信号が他の値を通過および減衰できるようにします。
BandStop: 低カットオフ値と高カットオフ値で指定された範囲外の信号が、範囲内の値を通過および減衰できるようにします。
正規化された頻度を表す 0 ~ 1 の値として、高いカットオフ値または低カットオフ値、またはその両方を指定します。 [High cutoff]\(高カットオフ\) には、上部の周波数境界を表す値を入力します。 [低カットオフ] には、低周波数境界を表す値を入力します。
[Ripple] には、フィルターを定義するときに許容するリップルの量を指定します。 リップルは、定期的に発生する小さなバリエーションを指します。 通常、リップルは不要な効果と見なされますが、フィルターの長さなど、他のフィルター パラメーターを調整することでリップルを補正できます。 すべてのフィルターがリップルを生成するわけではありません。
[ フィルターの適用 ] モジュールを実験に追加し、設計したフィルターと、変更する値が含まれているデータセットを接続します。
列セレクターを使用して、フィルターを適用するデータセットの列を指定します。 既定では、[ フィルターの適用] モジュールでは、選択したすべての数値列にフィルターが使用されます。
実験を実行して変換を適用します。
注意
IIR フィルター モジュールには、インジケーター列を作成するオプションはありません。 列の値は常に所定の位置に変換されます。
例
機械学習でフィルターを使用する方法の例については、 Azure AI ギャラリーで次の実験を参照してください。
- フィルター: この実験では、エンジニアリングされた波形データセットを使用して、すべてのフィルターの種類を示します。
テクニカル ノート
このセクションには、実装の詳細、ヒント、よく寄せられる質問への回答が含まれています。
実装の詳細
IIR フィルターは、フィード フォワードおよびフィード バック係数を返しますが、これは伝達関数によって表されます。 次に表現の例を示します。
この場合、
N
: フィルター順序bi
: フィードフォワードフィルター係数ai
: 後方フィルター係数をフィードします。x[n]
: 入力信号y[n]
: 出力信号
モジュールのパラメーター
名前 | Range | Type | Default | 説明 |
---|---|---|---|---|
順番 | [4;13] | Integer | 5 | フィルターの順序を指定します |
フィルターの種類 | Any | IIRFilterKind | 作成する IIR フィルターの種類を選択します | |
フィルターの種類 | Any | FilterType | フィルター バンドの種類を選択します | |
低カットオフ | [double.Epsilon;.9999999] | Float | 0.3 | 低カットオフ値を設定します |
高カットオフ | [double.Epsilon;.9999999] | Float | 0.7 | 高カットオフ値を設定します |
リプル | >=0.0 | Float | 0.5 | フィルターのリプルの量を指定します |
出力
名前 | Type | 説明 |
---|---|---|
Assert | IFilter インターフェイス | フィルターの実装 |
例外
例外 | 説明 |
---|---|
NotInRangeValue | パラメーターが範囲内にない場合、例外が発生します。 |
Studio (クラシック) モジュールに固有のエラーの一覧については、「Machine Learningエラー コード」を参照してください。
API 例外の一覧については、「REST API エラー コードMachine Learning」を参照してください。