IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アルテリックス インコーポレイテッドの特許一覧

特表2024-502027統合されたフューチャーエンジニアリング
<>
  • 特表-統合されたフューチャーエンジニアリング 図1
  • 特表-統合されたフューチャーエンジニアリング 図2
  • 特表-統合されたフューチャーエンジニアリング 図3
  • 特表-統合されたフューチャーエンジニアリング 図4
  • 特表-統合されたフューチャーエンジニアリング 図5
  • 特表-統合されたフューチャーエンジニアリング 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-01-17
(54)【発明の名称】統合されたフューチャーエンジニアリング
(51)【国際特許分類】
   G06Q 10/063 20230101AFI20240110BHJP
【FI】
G06Q10/063
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023539955
(86)(22)【出願日】2021-12-16
(85)【翻訳文提出日】2023-08-29
(86)【国際出願番号】 US2021063895
(87)【国際公開番号】W WO2022146713
(87)【国際公開日】2022-07-07
(31)【優先権主張番号】17/137,720
(32)【優先日】2020-12-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】519405569
【氏名又は名称】アルテリックス インコーポレイテッド
(74)【代理人】
【識別番号】110001243
【氏名又は名称】弁理士法人谷・阿部特許事務所
(72)【発明者】
【氏名】シドニー メアリー ファーミン
(72)【発明者】
【氏名】ジェームズ マックス カンター
(72)【発明者】
【氏名】カリヤン クマル ヴェラマチャネニー
【テーマコード(参考)】
5L049
【Fターム(参考)】
5L049AA06
(57)【要約】
フィーチャーエンジニアリングアプリケーションは、新しいデータに基づいて予測を行うためのモデルを訓練するために、異なるデータソースから複数のデータセットを受信し、データセットに基づいてプリミティブを生成し、プリミティブはデータセットの変数に適用されてフィーチャーを合成することになる。さらに、フィーチャーエンジニアリングアプリケーションは、時間ベースのフィーチャーを生成するための時間値を指定する時間パラメータも受信し、プリミティブが生成され時間パラメータが受信された後、複数のデータエンティティの一次変数に基づいて複数のデータエンティティをアグリゲーションし、アグリゲーションに基づいてエンティティセットを生成し、次に、エンティティセット、プリミティブの少なくともいくつか、および時間パラメータに基づいて、時間ベースのフィーチャーを含むフィーチャーを合成する。
【特許請求の範囲】
【請求項1】
コンピュータに実装される方法であって、
異なるデータソースから複数のデータエンティティを受信することであって、前記複数のデータエンティティは、新しいデータに基づいて予測を行うためのモデルを訓練するために用いられることになる、ことと、
前記複数のデータエンティティに基づいてプリミティブを生成することであって、前記プリミティブの各々は、フィーチャーを合成するために前記複数のデータエンティティにおける変数に適用されるように構成される、ことと、
ユーザーに関連付けられたクライアントデバイスから時間値を受信することであって、前記時間値は、前記複数のデータエンティティから1つまたは複数の時間ベースのフィーチャーを合成するために用いられる、ことと、
前記プリミティブが生成され、前記時間値が受信された後、前記複数のデータエンティティをアグリゲーションすることによってエンティティセットを生成することと、
前記エンティティセットに前記プリミティブおよび前記時間値を適用することによって、複数のフィーチャーを合成することであって、前記複数のフィーチャーは、1つまたは複数の時間ベースのフィーチャーを含む、ことと、
前記複数のフィーチャーに基づいて前記モデルを訓練することと
を備えることを特徴とする方法。
【請求項2】
前記複数のデータエンティティをアグリゲーションすることによって前記エンティティセットを生成することは、
前記複数のデータエンティティからデータエンティティのサブセットを識別することであって、各サブセットは、共通の変数を共有する2つ以上のデータエンティティを含む、ことと、
各サブセットにおける前記データエンティティをアグリゲーションすることによって、中間データエンティティを生成することと、
前記中間データエンティティをアグリゲーションすることによって前記エンティティセットを生成することと
を含むことを特徴とする請求項1に記載の方法。
【請求項3】
各サブセットにおける前記データエンティティをアグリゲーションすることによって、前記中間データエンティティを生成することは、
前記サブセットにおける各データエンティティに対して一次変数を決定することと、
前記サブセットにおける前記データエンティティの前記一次変数に基づいて、前記サブセットにおけるデータエンティティを親エンティティとして、および前記親における1つまたは複数の他のデータエンティティの各々を子エンティティとして識別することと
を含むことを特徴とする請求項2に記載の方法。
【請求項4】
前記複数のデータエンティティからデータエンティティの前記サブセットを識別することであって、各サブセットは、共通の変数を共有する2つ以上のエンティティを含む、ことは、
前記複数のデータエンティティのうちの与えられたデータエンティティから、前記与えられたデータエンティティにおける変数に基づいて、2つの新しいデータエンティティを生成することであって、前記2つの新しいデータエンティティの各々は、前記与えられたデータエンティティにおける前記変数のサブセットを含む、ことと、
前記2つの新しいデータエンティティと、前記与えられたデータエンティティを除く前記複数のデータエンティティとから、データエンティティの前記サブセットを識別することと
を含むことを特徴とする請求項2に記載の方法。
【請求項5】
前記複数のエンティティのうちの前記与えられたエンティティから、前記与えられたエンティティにおける変数に基づいて、前記2つの新しいエンティティを生成することは、
前記与えられたエンティティにおける前記変数から、第1の一次変数と第2の一次変数とを識別することと、
第1のグループの変数と第2のグループの変数とへ、前記与えられたエンティティにおける前記変数を分類することであって、前記第1のグループの変数は、前記第1の一次変数と、前記第1の一次変数と関係する前記与えられたエンティティにおける1つまたは複数の他の変数とを含み、前記第2のグループの変数は、前記第2の一次変数と、前記第2の一次変数と関係する前記与えられたエンティティにおける1つまたは複数の他の変数とを含む、ことと、
前記第1のグループの変数と、前記第1のグループにおける前記変数の値とにより前記2つの新しいエンティティのうちの1つを生成することと、
前記第2のグループの変数と、前記第1のグループにおける前記変数の値とにより前記2つの新しいエンティティのうちの他の1つを生成することと
を含むことを特徴とする請求項4に記載の方法。
【請求項6】
前記エンティティセットに前記プリミティブおよび時間値を適用することによって前記複数のフィーチャーを合成することであって、前記複数のフィーチャーは、前記1つまたは複数の時間ベースのフィーチャーを含む、ことは、
前記時間値に基づいて1つまたは複数のカットオフ時間を決定することと、
前記1つまたは複数のカットオフ時間に基づいて前記エンティティセットからデータを抽出することと、
前記抽出されたデータから前記1つまたは複数の時間ベースのフィーチャーを生成することと
を含むことを特徴とする請求項1に記載の方法。
【請求項7】
前記エンティティセットに前記プリミティブおよび時間値を適用することによって前記複数のフィーチャーを合成することであって、前記複数のフィーチャーは、前記1つまたは複数の時間ベースのフィーチャーを含む、ことは、
前記エンティティセットに前記プリミティブを適用してフィーチャーのプールを生成することと、
前記複数のフィーチャーを取得するフィーチャーの前記プールからいくつかのフィーチャーを取り除くためにフィーチャーの前記プールを反復して評価することであって、各イテレーションは、
前記評価されたフィーチャーに前記エンティティセットの異なる部分を適用することによって、前記複数のフィーチャーの少なくともいくつかのフィーチャーの有用性を評価すること、および
前記評価されたフィーチャーの前記有用性に基づいて、前記評価されたフィーチャーのうちのいくつかを取り除いて、前記複数のフィーチャーを生成すること
を含む、ことと
を含むことを特徴とする請求項1に記載の方法。
【請求項8】
コンピュータプログラム命令を実行するコンピュータプロセッサと、
異なるデータソースから複数のデータエンティティを受信することであって、前記複数のデータエンティティは、新しいデータに基づいて予測を行うためのモデルを訓練するために用いられることになる、ことと、
前記複数のデータエンティティに基づいてプリミティブを生成することであって、前記プリミティブの各々は、フィーチャーを合成するために前記複数のデータエンティティにおける変数に適用されるように構成される、ことと、
ユーザーに関連付けられたクライアントデバイスから時間値を受信することであって、前記時間値は、前記複数のデータエンティティから1つまたは複数の時間ベースのフィーチャーを合成するために用いられる、ことと、
前記プリミティブが生成され、前記時間値が受信された後、前記複数のデータエンティティをアグリゲーションすることによってエンティティセットを生成することと、
前記エンティティセットに前記プリミティブおよび前記時間値を適用することによって、複数のフィーチャーを合成することであって、前記複数のフィーチャーは、前記1つまたは複数の時間ベースのフィーチャーを含む、ことと、
前記複数のフィーチャーに基づいて前記モデルを訓練することと
を含む動作を行う前記コンピュータプロセッサによって実行可能なコンピュータプログラム命令を格納する非一時的なコンピュータ読取り可能メモリーと
を備えたことを特徴とするシステム。
【請求項9】
前記複数のデータエンティティをアグリゲーションすることによって前記エンティティセットを生成することは、
前記複数のデータエンティティからデータエンティティのサブセットを識別することであって、各サブセットは、共通の変数を共有する2つ以上のデータエンティティを含む、ことと、
各サブセットにおける前記データエンティティをアグリゲーションすることによって、中間データエンティティを生成することと、
前記中間データエンティティをアグリゲーションすることによって前記エンティティセットを生成することと
を含むことを特徴とする請求項8に記載のシステム。
【請求項10】
各サブセットにおける前記データエンティティをアグリゲーションすることによって、前記中間データエンティティを生成することは、
前記サブセットにおける各データエンティティに対して一次変数を決定することと、
前記サブセットにおける前記データエンティティの前記一次変数に基づいて、前記サブセットにおけるデータエンティティを親エンティティとして、および前記親における1つまたは複数の他のデータエンティティの各々を子エンティティとして識別することと
を含むことを特徴とする請求項9に記載のシステム。
【請求項11】
前記複数のデータエンティティからデータエンティティの前記サブセットを識別することであって、各サブセットは、共通の変数を共有する2つ以上のエンティティを含む、ことは、
前記複数のデータエンティティのうちの与えられたデータエンティティから、前記与えられたデータエンティティにおける変数に基づいて、2つの新しいデータエンティティを生成することであって、前記2つの新しいデータエンティティの各々は、前記与えられたデータエンティティにおける前記変数のサブセットを含む、ことと、
前記2つの新しいデータエンティティと、前記与えられたデータエンティティを除く前記複数のデータエンティティとから、データエンティティの前記サブセットを識別することと
を含むことを特徴とする請求項9に記載のシステム。
【請求項12】
前記複数のエンティティのうちの前記与えられたエンティティから、前記与えられたエンティティにおける変数に基づいて、前記2つの新しいエンティティを生成することは、
前記与えられたエンティティにおける前記変数から、第1の一次変数と第2の一次変数とを識別することと、
第1のグループの変数と第2のグループの変数とへ、前記与えられたエンティティにおける前記変数を分類することであって、前記第1のグループの変数は、前記第1の一次変数と、前記第1の一次変数と関係する前記与えられたエンティティにおける1つまたは複数の他の変数とを含み、前記第2のグループの変数は、前記第2の一次変数と、前記第2の一次変数と関係する前記与えられたエンティティにおける1つまたは複数の他の変数とを含む、ことと、
前記第1のグループの変数と、前記第1のグループにおける前記変数の値とにより前記2つの新しいエンティティのうちの1つを生成することと、
前記第2のグループの変数と、前記第1のグループにおける前記変数の値とにより前記2つの新しいエンティティのうちの他の1つを生成することと
を含むことを特徴とする請求項11に記載のシステム。
【請求項13】
前記エンティティセットに前記プリミティブおよび時間値を適用することによって前記複数のフィーチャーを合成することであって、前記複数のフィーチャーは、前記1つまたは複数の時間ベースのフィーチャーを含む、ことは、
前記時間値に基づいて1つまたは複数のカットオフ時間を決定することと、
前記1つまたは複数のカットオフ時間に基づいて前記エンティティセットからデータを抽出することと、
前記抽出されたデータから前記1つまたは複数の時間ベースのフィーチャーを生成することと
を含むことを特徴とする請求項8に記載のシステム。
【請求項14】
前記エンティティセットに前記プリミティブおよび時間値を適用することによって前記複数のフィーチャーを合成することであって、前記複数のフィーチャーは、前記1つまたは複数の時間ベースのフィーチャーを含む、ことは、
前記エンティティセットに前記プリミティブを適用してフィーチャーのプールを生成することと、
前記複数のフィーチャーを取得するフィーチャーの前記プールからいくつかのフィーチャーを取り除くためにフィーチャーの前記プールを反復して評価することであって、各イテレーションは、
前記評価されたフィーチャーに前記エンティティセットの異なる部分を適用することによって、前記複数のフィーチャーの少なくともいくつかのフィーチャーの有用性を評価すること、および
前記評価されたフィーチャーの前記有用性に基づいて、前記評価されたフィーチャーのうちのいくつかを取り除いて、前記複数のフィーチャーを生成すること
を含む、ことと
を含むことを特徴とする請求項8に記載のシステム。
【請求項15】
データ分析システムにおいてデータブロックを処理するために実行可能なコンピュータプログラム命令を格納する非一時的なコンピュータ読取り可能メモリーであって、前記命令は、
異なるデータソースから複数のデータエンティティを受信することであって、前記複数のデータエンティティは、新しいデータに基づいて予測を行うためのモデルを訓練するために用いられることになる、ことと、
前記複数のデータエンティティに基づいてプリミティブを生成することであって、前記プリミティブの各々は、フィーチャーを合成するために前記複数のデータエンティティにおける変数に適用されるように構成される、ことと、
ユーザーに関連付けられたクライアントデバイスから時間値を受信することであって、前記時間値は、前記複数のデータエンティティから1つまたは複数の時間ベースのフィーチャーを合成するために用いられる、ことと、
前記プリミティブが生成され、前記時間値が受信された後、前記複数のデータエンティティをアグリゲーションすることによってエンティティセットを生成することと、
前記エンティティセットに前記プリミティブおよび前記時間値を適用することによって、複数のフィーチャーを合成することであって、前記複数のフィーチャーは、前記1つまたは複数の時間ベースのフィーチャーを含む、ことと、
前記複数のフィーチャーに基づいて前記モデルを訓練することと
を含む動作を行うように実行可能であることを特徴とする非一時的なコンピュータ読取り可能メモリー。
【請求項16】
前記複数のデータエンティティをアグリゲーションすることによって前記エンティティセットを生成することは、
前記複数のデータエンティティからデータエンティティのサブセットを識別することであって、各サブセットは、共通の変数を共有する2つ以上のデータエンティティを含む、ことと、
各サブセットにおける前記データエンティティをアグリゲーションすることによって、中間データエンティティを生成することと、
前記中間データエンティティをアグリゲーションすることによって前記エンティティセットを生成することと
を含むことを特徴とする請求項15に記載の非一時的なコンピュータ読取り可能メモリー。
【請求項17】
各サブセットにおける前記データエンティティをアグリゲーションすることによって、前記中間データエンティティを生成することは、
前記サブセットにおける各データエンティティに対して一次変数を決定することと、
前記サブセットにおける前記データエンティティの前記一次変数に基づいて、前記サブセットにおけるデータエンティティを親エンティティとして、および前記親における1つまたは複数の他のデータエンティティの各々を子エンティティとして識別することと
を含むことを特徴とする請求項16に記載の非一時的なコンピュータ読取り可能メモリー。
【請求項18】
前記複数のデータエンティティからデータエンティティの前記サブセットを識別することであって、各サブセットは、共通の変数を共有する2つ以上のエンティティを含む、ことは、
前記複数のデータエンティティのうちの与えられたデータエンティティから、前記与えられたデータエンティティにおける変数に基づいて、2つの新しいデータエンティティを生成することであって、前記2つの新しいデータエンティティの各々は、前記与えられたデータエンティティにおける前記変数のサブセットを含む、ことと、
前記2つの新しいデータエンティティと、前記与えられたデータエンティティを除く前記複数のデータエンティティとから、データエンティティの前記サブセットを識別することと
を含むことを特徴とする請求項16に記載の非一時的なコンピュータ読取り可能メモリー。
【請求項19】
前記エンティティセットに前記プリミティブおよび時間値を適用することによって前記複数のフィーチャーを合成することであって、前記複数のフィーチャーは、前記1つまたは複数の時間ベースのフィーチャーを含む、ことは、
前記時間値に基づいて1つまたは複数のカットオフ時間を決定することと、
前記1つまたは複数のカットオフ時間に基づいて前記エンティティセットからデータを抽出することと、
前記抽出されたデータから前記1つまたは複数の時間ベースのフィーチャーを生成することと
を含むことを特徴とする請求項15に記載の非一時的なコンピュータ読取り可能メモリー。
【請求項20】
前記エンティティセットに前記プリミティブおよび時間値を適用することによって前記複数のフィーチャーを合成することであって、前記複数のフィーチャーは、前記1つまたは複数の時間ベースのフィーチャーを含む、ことは、
前記エンティティセットに前記プリミティブを適用してフィーチャーのプールを生成することと、
前記複数のフィーチャーを取得するフィーチャーの前記プールからいくつかのフィーチャーを取り除くためにフィーチャーの前記プールを反復して評価することであって、各イテレーションは、
前記評価されたフィーチャーに前記エンティティセットの異なる部分を適用することによって、前記複数のフィーチャーの少なくともいくつかのフィーチャーの有用性を評価すること、および
前記評価されたフィーチャーの前記有用性に基づいて、前記評価されたフィーチャーのうちのいくつかを取り除いて、前記複数のフィーチャーを生成すること
を含む、ことと
を含むことを特徴とする請求項15に記載の非一時的なコンピュータ読取り可能メモリー。
【発明の詳細な説明】
【技術分野】
【0001】
説明される態様は、一般に、データストリームを処理することに関し、特に、ストリームのデータに対して機械学習を行うために、自動化されているフィーチャーエンジニアリング(Feature Engineering)がエンティティセットの作成と統合される統合されたフィーチャーエンジニアリングに関する。
【背景技術】
【0002】
フィーチャーエンジニアリング(Feature Engineering)は、会社および他の企業により、典型として分析された複雑なデータにおいて予測可能なフィーチャーを識別することおよび抽出することに関する処理である。フィーチャーは、機械学習モデルによる予測の正確度にとって重要である。それゆえ、フィーチャーエンジニアリングは、データ分析プロジェクトが成功するかどうかの決定要因であることがよくある。フィーチャーエンジニアリングは、たいていの場合、時間のかかる処理であり、典型として、優れた予測の正確度を達成するのにかなりのデータ量が必要である。多くの場合、フィーチャーを作成するのに用いられるデータは、異なったソースからであり、フィーチャーエンジニアリングの前にデータの組み合わが必要である。しかしながら、データを組み合わせるためのツールとフィーチャーを作成するためのツールとの間のデータ移動に、アーキテクチャ上の課題があり、フィーチャーを作成する処理に、より一層、時間がかかることを引き起こす。さらに加えて、アーキテクチャ上の課題は、データ分析エンジニアがフィーチャーの作成プロセスとインタラクションするのを、より困難にさせる。ゆえに、現在のフィーチャーエンジニアリングツールは、企業のデータ処理のニーズに効率的に貢献できない。
【発明の概要】
【0003】
上述のおよび他の問題は、方法、コンピュータ実装システム、およびコンピュータ読取り可能なメモリーによって取り組まれる。本方法の態様は、異なったデータソースから複数のデータエンティティを受信することを含む。複数のデータエンティティは、新しいデータに基づいて予測を行うモデルを訓練するために用いられる。本方法はさらに、複数のデータエンティティに基づいてプリミティブを生成することを含む。プリミティブの各々は、フィーチャーを合成するために複数のデータエンティティの変数に適用されるように構成される。本方法はさらに、ユーザーに関連付けられたクライアントデバイスから時間パラメータを受信することを含む。時間パラメータは時間値を指定し、複数のデータエンティティからフィーチャーを合成するのに用いられることになる。本方法はさらに、プリミティブが生成され、時間パラメータが受信された後、複数のデータエンティティをアグリゲーションすることによってエンティティセットを生成することを含む。本方法はさらに、エンティティセット、プリミティブ、および時間パラメータに基づいて複数のフィーチャーを合成することを含む。さらに、本方法は、複数のフィーチャーに基づいてモデルを訓練することも含む。
【0004】
コンピュータ実装システムの態様は、コンピュータプログラム命令を実行するためのコンピュータプロセッサを含む。さらに、本システムは、動作を行うコンピュータプロセッサによって実行可能なコンピュータプログラム命令を格納する非一時的なコンピュータ読取り可能メモリーも含む。動作は、異なったデータソースから複数のデータエンティティを受信することを含む。複数のデータエンティティは、新しいデータに基づいて予測を行うモデルを訓練するために用いられる。動作はさらに、複数のデータエンティティに基づいてプリミティブを生成することを含む。プリミティブの各々は、フィーチャーを合成するために複数のデータエンティティの変数に適用されるように構成される。動作はさらに、ユーザーに関連付けられたクライアントデバイスから時間パラメータを受信することを含む。時間パラメータは時間値を指定し、複数のデータエンティティからフィーチャーを合成するのに用いられることになる。動作はさらに、プリミティブが生成され、時間パラメータが受信された後、複数のデータエンティティをアグリゲーションすることによってエンティティセットを生成することを含む。動作はさらに、エンティティセット、プリミティブ、および時間パラメータに基づいて複数のフィーチャーを合成することを含む。さらに、動作は、複数のフィーチャーに基づいてモデルを訓練することも含む。
【0005】
非一時的なコンピュータ読取り可能メモリーの態様は、実行可能なコンピュータプログラム命令を格納する。命令は、動作を行うことを実行できる。動作は、異なったデータソースから複数のデータエンティティを受信することを含む。複数のデータエンティティは、新しいデータに基づいて予測を行うモデルを訓練するために用いられる。動作はさらに、複数のデータエンティティに基づいてプリミティブを生成することを含む。プリミティブの各々は、フィーチャーを合成するために複数のデータエンティティの変数に適用されるように構成される。動作はさらに、ユーザーに関連付けられたクライアントデバイスから時間パラメータを受信することを含む。時間パラメータは時間値を指定し、複数のデータエンティティからフィーチャーを合成するのに用いられることになる。動作はさらに、プリミティブが生成され、時間パラメータが受信された後、複数のデータエンティティをアグリゲーションすることによってエンティティセットを生成することを含む。動作はさらに、エンティティセット、プリミティブ、および時間パラメータに基づいて複数のフィーチャーを合成することを含む。さらに、動作は、複数のフィーチャーに基づいてモデルを訓練することも含む。
【0006】
図面は、説明の目的のみのために種々の態様を描く。当業者であれば、後に続く議論から、本明細書に例示された構造および方法の代替の態様が、本明細書において説明される態様の原理から逸脱することなく、利用されることがあることをただちに認めるだろう。種々の図面において、同一の符号および名称は同一の要素を示す。
【図面の簡単な説明】
【0007】
図1】一態様に係る機械学習サーバーを含む機械学習環境を例示するブロック図である。
図2】一態様に係るフィーチャーエンジニアリングアプリケーションを例示するブロック図である。
図3】一態様に係るプリミティブおよび時間パラメータに対するユーザー入力を可能にするユーザーインターフェースを示す図である。
図4】一態様に係るエンティティセット作成に対するユーザーインターフェースを示す図である。
図5】一態様に係る異なったデータソースから受信したデータエンティティを用いることによってフィーチャーを合成する方法を例示するフローチャートである。
図6】態様に係る図1の機械学習サーバーとしての使用のための典型的なコンピュータシステムの機能上の図を例示するハイレベルなブロック図である。
【発明を実施するための形態】
【0008】
図1は一態様に係る機械学習サーバー110を含む機械学習環境100を例示するブロック図である。環境100はさらに、ネットワーク130を介して機械学習サーバー110に接続された複数のデータソース120を含む。図示された環境100は、複数のデータソース120に結合された1つの機械学習サーバー110のみを含むが、態様は、複数の機械学習サーバーと単一のデータソースとを有することが可能である。
【0009】
データソース120は、データ分析システム110に電子データを提供する。データソース120は、たとえばハードディスクドライブ(HDD)またはソリッドステートドライブ(SSD)などのストレージデバイス、複数のストレージデバイスを管理しアクセスを提供するコンピュータ、ストレージエリアネットワーク(SAN)、データベース、またはクラウドストレージシステムであり得る。さらに、データソース120は、別のソースからデータを検索することが可能であるコンピュータシステムであり得る。異なったデータソースは、異なったユーザー、異なった組織、または同じ組織内の異なった部門に関連付けられることがある。データソース120は、機械学習サーバー110から遠隔にあり、ネットワーク130を介してデータを提供することがある。加えて、いくつかまたはすべてのデータソース120は、データ分析システムに直に結合され、ネットワーク130を介してデータを通すことなくデータを提供することがある。
【0010】
データソース120によって提供されるデータは、データレコード(例えば、行)に体系づけられる編成されることがある。各データレコードは1つまたは複数の値を含む。例えば、データソース120によって提供されるデータレコードは、一連のカンマ区切り(comma-separated value)を含むことがある。データは、データ分析システム110を使用する企業に関連する情報を記述する。例えば、データソース120からのデータは、ウェブサイトおよび/またはアプリケーションにおいてアクセス可能なコンテンツとのコンピュータベースのインタラクション(例えば、クリックトラッキングデータ(click tracking data))を記述することが可能である。企業は、たとえばコンピュータ技術および製造業など、種々の業界のうちの1つまたは複数のである。
【0011】
機械学習サーバー110は、機械学習モデルを構築し、データに基づいて予測を行うために使用されることが可能である機械学習モデルを提供するために利用されるコンピュータベースのシステムである。例示的な予測は、アプリケーション監視、ネットワークトラフィックデータフロー監視、ユーザーアクション予測などを含む。データは、ネットワーク130を介して複数のデータソース120から収集される、集められる、または別のやり方によりアクセスされる。機械学習サーバー110は、多種多様なデータソース120からのデータに対して、アクセスする、準備する、混合する、および分析するときに採用されるスケーラブルなソフトウェアツールおよびハードウェアリソースを実装することが可能である。機械学習サーバー110は、本明細書において説明されるフィーチャーエンジニアリングおよびモデリング技法を含む機械学習機能を実装するために使用されるコンピューティングデバイスであることが可能である。
【0012】
機械学習サーバー110は、図1において、フィーチャーエンジニアリングアプリケーション150および訓練アプリケーション160として例示される、1つまたは複数のソフトウェアアプリケーションをサポートするように構成されることが可能である。フィーチャーエンジニアリングアプリケーション150は、自動化されているフィーチャーエンジニアリングが、エンティティセットの作成と統合される統合されたフィーチャーエンジニアリングを行う。統合されたフィーチャーエンジニアリングプロセスは、個々のデータエンティティからフィーチャーエンジニアリングアルゴリズムおよびパラメータを生成することにより開始し、次に、個々のデータエンティティを組み合わせることによりエンティティセットを作成することに進み、さらにエンティティセットのデータから予測変数、すなわちフィーチャーを抽出することに進む。各フィーチャーは、対応する機械学習モデルが行うのに用いるだろう予測(ターゲット予測と呼ばれる)に潜在的に関連する変数である。
【0013】
フィーチャーエンジニアリングアプリケーション150は、個々のデータエンティティに基づいてプリミティブを生成する。一態様では、フィーチャーエンジニアリングアプリケーション150は、個々のデータエンティティに基づいて、プリミティブのプールからプリミティブを選択する。プリミティブのプールは、フィーチャーエンジニアリングアプリケーション150によって維持される。プリミティブは、データセットの生データに適用されることが可能である個々の計算を定義して、関連する値を有する1つまたは複数の新しいフィーチャーを作成する。選択されるプリミティブは、入力および出力のデータ型を制約するように、異なった種類のデータにわたって適用されスタックされて、新しい算出を作成することが可能である。フィーチャーエンジニアリングアプリケーション150は、ユーザー(たとえばデータ分析エンジニアなど)に、時間ベースのフィーチャーを作成するためにフィーチャーエンジニアリングアプリケーション150によって後に用いられることが可能である時間値を提供することを可能にする。時間ベースのフィーチャーは、特定の時間または時間期間に関連付けられたデータから抽出されたフィーチャーである。時間ベースのフィーチャーは、たとえば特定の時間または時間期間に対する予測など、時間ベースの予測を行うためにモデルを訓練するのに用いられることがある。
【0014】
フィーチャーエンジニアリングアプリケーション150は、プリミティブを生成し、ユーザーから時間パラメータを受信した後、個々のデータエンティティを組み合わせ、エンティティセットを生成する。いくつかの態様では、フィーチャーエンジニアリングアプリケーション150は、個々のデータエンティティにおける変数に基づいてエンティティセットを生成する。例えば、フィーチャーエンジニアリングアプリケーション150は、共通の変数を有する2つの個々のデータエンティティを識別し、それらの間の親子関係を決定し、親子関係に基づいて中間データエンティティを生成する。フィーチャーエンジニアリングアプリケーション150は、中間データエンティティを組み合わせてエンティティセットを生成する。
【0015】
エンティティセットが生成された後、フィーチャーエンジニアリングアプリケーション150は、エンティティセットのデータにプリミティブおよび時間パラメータを適用することによってフィーチャーを合成する。次に、各イテレーションにてデータの異なる部分をフィーチャーに適用する反復処理を通じて、それぞれのフィーチャーの重要度(importance)を決定するためにフィーチャーを評価する。フィーチャーエンジニアリングアプリケーション150は、各イテレーションにてフィーチャーのうちのいくつかを取り除いて、取り除かれたフィーチャーよりも予測により有用であるフィーチャーのサブセットを取得する。サブセットの各フィーチャーに対して、フィーチャーエンジニアリングアプリケーション150は、例えばランダムフォレストを用いて、重要度係数を決定する。重要度係数は、フィーチャーがターゲット予測に対してどれぐらい重要であるか/どれぐらい関連するかを示す。サブセットのフィーチャーおよびそれらの重要度係数は、機械学習モデルをビルドする訓練アプリケーション160に送られることが可能である。
【0016】
従来のフィーチャーエンジニアリングツールと比較して、フィーチャーエンジニアリングアプリケーション150のアーキテクチャは、より効率的なデータ処理を容易にし、フィーチャーエンジニアリングプロセスに入力を提供することが可能であるユーザーに、より複雑でない体験を提供する。フィーチャーエンジニアリングアプリケーション150は、統合された処理の開始時に、自動化されているフィーチャーエンジニアリングとエンティティセットの作成との両方に対して、データ入力(データソース120かユーザーかのいずれかから)を可能にするやり方にて、自動化されているフィーチャーエンジニアリングとエンティティセットの作成とを統合し、処理の最中にデータを要求することを防ぐ。このように、フィーチャーエンジニアリングアプリケーション150は、動作の最中に他のエンティティからの応答を待つ必要がないので、効率的に動作することが可能である。さらに、統合されたフィーチャーエンジニアリングプロセスの開始時のすべてのユーザー入力(プリミティブを編集すること、および時間パラメータを提供することを含む)が、ユーザーに、より良い体験も提供する。ユーザーは、残りの処理を監視する必要がない。それゆえ、従来のフィーチャーエンジニアリングツールにより直面した課題を克服する。
【0017】
フィーチャーエンジニアリングアプリケーション150の別の利点は、プリミティブの使用が、フィーチャーエンジニアリングプロセスを、フィーチャーが生データから抽出される従来のフィーチャーエンジニアリングプロセスよりも効率的にすることである。さらに、フィーチャーエンジニアリングアプリケーション150は、プリミティブから生成されたフィーチャー(複数可)の評価および重要度係数に基づいてプリミティブを評価することが可能である。プリミティブの評価を記述するメタデータを生成し、異なるデータまたは異なる予測問題に対してプリミティブを選択するかどうかを決定するためにメタデータを使用することが可能である。従来のフィーチャーエンジニアリングプロセスは、より速く、より良いフィーチャーをエンジニアリングする指導もソリューションも提供せずに、膨大な数(たとえば数百万など)のフィーチャーを生成することができた。フィーチャーエンジニアリングアプリケーション150のさらに別の利点は、フィーチャーを評価するのに大量のデータを必要としないことである。それどころか、各イテレーションにてデータの異なる部分を用いる、フィーチャーを評価する反復手法を適用する。
【0018】
訓練アプリケーション160は、フィーチャーエンジニアリングアプリケーション150から受信されるフィーチャーとフィーチャーの重要度係数とにより機械学習モデルを訓練する。異なった機械学習技法、たとえば、線形サポートベクトルマシン(線形SVM)、他のアルゴリズムのブースティング(例えばAdaBoost)、ニューラルネットワーク、ロジスティック回帰、単純ベイズ、メモリーベースラーニング、ランダムフォレスト、バギングツリー(bagged tree)、決定木、ブースティングツリー(boosted tree)、またはブースティングスタンプ(boosted stump)などは、異なった態様において用いられることがある。生成される機械学習モデルは、新しいデータセット(例えば、同じまたは異なるデータソース120からのデータセット)から抽出されたフィーチャーに適用されると、ターゲット予測を行う。
【0019】
いくつかの態様では、訓練アプリケーション160は、訓練されたモデルを新しいデータセットに展開する前に、予測を検証する。例えば、訓練アプリケーション160は、モデルの正確度を定量化するために、訓練されたモデルを検証データセットに適用する。正確度測定に適用される共通のメトリックは、Precision=TP/(TP+FP)およびRecall=TP/(TP+FN)を含み、ただし、精度は、モデルが予測した総数(TP+FPまたは偽陽性)のうち、モデルが正しく予測した結果(TPまたは真陽性)の数であり、再現率は、実際に発生した総数(TP+FNまたは偽陰性)のうち、モデルが正しく予測した結果(TP)の数である。Fスコア(F-score=2*PR/(P+R))は、精度および再現率を単一の測度に統一する。一態様では、訓練アプリケーション160は、たとえば、機械学習モデルが十分に正確であることを示す正確度測定のインディケーション、または行われた訓練ラウンドの回数など、停止条件の発生まで、機械学習モデルを反復的に再訓練する。
【0020】
ネットワーク130は、機械学習サーバー110とデータソース120との間の通信経路を表す。一態様では、ネットワーク130は、インターネットであり、標準的な通信技術および/またはプロトコルを使用する。ゆえに、ネットワーク130は、たとえば、イーサネット、802.11、WiMAX(worldwide interoperability for microwave access)、3G、LTE(Long Term Evolution)、デジタル加入者線(DSL)、非同期転送モード(ATM)、インフィニバンド(InfiniBand)、PCIエクスプレスアドバンストスイッチングなどの技術を使用するリンクを含むことが可能である。同様に、ネットワーク130において使用されるネットワーキングプロトコルは、マルチプロトコルラベルスイッチング(MPLS)、TCP/IP(transmission control protocol/Internet protocol)、UDP(User Datagram Protocol)、HTTP(hypertext transport protocol)、SMTP(simple mail transfer protocol)、ファイル転送プロトコル(FTP)などを含むことが可能である。
【0021】
ネットワーク130を介して交換されるデータは、HTML(hypertext markup language)、XML(extensible markup language)などを含む技術および/またはフォーマットを用いて、表されることが可能である。加えて、リンクのすべてまたは一部は、たとえば、SSL(secure sockets layer)、TLS(transport layer security)、仮想プライベートネットワーク(VPN)、IPsec(Internet Protocol security)などの従来の暗号化技術を用いて暗号化されることが可能である。別の態様では、エンティティは、上に説明されたものの代わりにまたは加えて、カスタムおよび/または専用のデータ通信技術を使用することが可能である。
【0022】
図2は、一態様に係るフィーチャーエンジニアリングアプリケーション200を例示するブロック図である。フィーチャーエンジニアリングアプリケーション200は、異なるデータソースから複数のデータエンティティを受信し、データエンティティからフィーチャーを合成する。フィーチャーエンジニアリングアプリケーション200は、図1のフィーチャーエンジニアリングアプリケーション150の態様である。フィーチャーエンジニアリングアプリケーション200は、プリミティブ生成モジュール210、時間パラメータモジュール220、エンティティフィーチャーモジュール230、フィーチャー合成モジュール240、およびデータベース250を含む。当業者であれば、他の態様が、本明細書にて説明したものとは異なるおよび/または他の構成要素を有することが可能であることを、および、機能性が、異なるやり方にて構成要素間に分配されることが可能であることを認めるだろう。
【0023】
プリミティブ生成モジュール210は、受信したデータエンティティに基づいてプリミティブのリストを生成し、ユーザーに、リストを編集することを可能にする。いくつかの態様では、プリミティブ生成モジュール210は、データエンティティに基づいて、フィーチャーエンジニアリングアプリケーション200によって維持されるプリミティブのプールからプリミティブを選択することによって、プリミティブのリストを生成する。いくつかの態様では、プリミティブ生成モジュール210は、プリミティブのリストを生成する前に、データエンティティ間の1つまたは複数の関係を示す情報を取得する。プリミティブ生成モジュール210は、データエンティティに、データエンティティ間の関係を示す情報の同様に、基づいて、プリミティブのプールからリストのプリミティブを選択する。情報は、データエンティティ間の1つまたは複数の親子関係を示すことがある。プリミティブ生成モジュール210は、ユーザーから情報を受信することによって、または、例えば、エンティティフィーチャーモジュール230に関連して以下に説明される方法を使用してなど、1つまたは複数の親子関係を決定することによって、情報を取得することがある。
【0024】
プリミティブのプールは、たとえば数百または数千のプリミティブなど、多数のプリミティブを含む。各プリミティブは、データに適用されると、データに対して計算を行い、関連する値を有するフィーチャーを生成するアルゴリズムを含む。プリミティブは、1つまたは複数の属性に関連付けられる。プリミティブの属性は、プリミティブの記述(例えば、データに適用されるとプリミティブによって行われる計算を指定する自然言語記述)、入力タイプ(すなわち、入力データのタイプ)、リターンタイプ(すなわち、出力データのタイプ)、以前のフィーチャーエンジニアリングプロセスにおいてプリミティブがどの程度有用であったかを示すプリミティブのメタデータ、または他の属性であるであり得る。
【0025】
いくつかの態様では、プリミティブのプールは複数の異なるタイプのプリミティブを含む。プリミティブの1つのタイプは、アグリゲーションプリミティブである。アグリゲーションプリミティブは、データセットに適用されると、データセットの関連データを識別し、関連データに対して決定を行い、決定を要約するおよび/またはアグリゲーションする値を作成する。例えば、アグリゲーションプリミティブ「count」は、データセットの関連する行の値を識別し、値の各々が非NULL値であるかどうかを決定し、データセットの行における非NULL値の数をリターンする(出力する)。プリミティブの別のタイプは、変換プリミティブである。変換プリミティブは、データセットに適用されると、データセットの1つまたは複数の既存の変数から新しい変数を作成する。例えば、変換プリミティブ「weekend」は、データセットのタイムスタンプを評価し、タイムスタンプにより示される日にちが週末にあるかどうかを示すバイナリ値(例えば、真または偽)を返す。別の例示的な変換プリミティブは、タイムスタンプを評価し、指定された日付までの日数(例えば、特定の休日までの日数)を示すカウントを返す。
【0026】
いくつかの態様では、プリミティブ生成モジュール210は、スキムビューアプローチ(skim view approach)、サマリービューアプローチ、または両方のアプローチを使用して、受信したデータエンティティに基づいてプリミティブを選択する。スキムビューアプローチでは、プリミティブ生成モジュール210は、各データエンティティの1つまたは複数のセマンティック表現(semantic representation)を識別する。データエンティティのセマンティック表現は、データエンティティの特性を記述し、データエンティティのデータに対して計算を行うことなく取得されることがある。データセットのセマンティック表現の例は、データエンティティの1つまたは複数の特定の変数(例えば、列の名前)の存在、列の数、行の数、データエンティティの入力タイプ、データエンティティの他の属性、およびそれらの組み合わせを含む。スキムビューアプローチを使用してプリミティブを選択するために、プリミティブ生成モジュール210は、データエンティティの識別されたセマンティック表現が、プールのプリミティブの属性と一致するかどうかを決定する。一致があるならば、プリミティブ生成モジュール210はプリミティブを選択する。
【0027】
スキムビューアプローチは、ルールに基づく分析である。データエンティティの識別されたセマンティック表現がプリミティブの属性と一致するかどうかの決定は、フィーチャーエンジニアリングアプリケーション200によって維持される規則に基づく。ルールは、例えば、データエンティティのセマンティック表現におけるキーワードとプリミティブの属性のキーワードとの一致に基づいて、データエンティティのどのセマンティック表現がプリミティブのどの属性と一致するかを指定する。一例として、データエンティティのセマンティック表現が列名「生年月日」であり、プリミティブ生成モジュール210は、データセットのセマンティック表現と一致する、入力タイプが「生年月日」であるプリミティブを選択する。別の例では、データセットのセマンティック表現が列名「タイムスタンプ」であり、プリミティブ生成モジュール210は、プリミティブが、タイムスタンプを示すデータによる使用に適切であることを示す属性を有するプリミティブを選択する。
【0028】
サマリービューアプローチでは、プリミティブ生成モジュール210は、データエンティティから代表ベクトルを生成する。代表ベクトルは、たとえば、データエンティティのテーブル数、テーブルごとの列数、各列の平均数、および各行の平均数を示すデータなど、データエンティティを記述するデータをエンコードする。ゆえに、代表ベクトルは、データセットのフィンガープリントとしての役割を果たす。フィンガープリントは、データセットのコンパクトな表現であり、たとえば、ハッシュ関数、ラビンのフィンガープリントアルゴリズム、または他のタイプのフィンガープリント関数など、1つまたは複数のフィンガープリント関数をデータセットに適用することにより生成されることがある。
【0029】
プリミティブ生成モジュール210は、代表ベクトルに基づいてデータエンティティに対するプリミティブを選択する。例えば、プリミティブ生成モジュール210は、データエンティティの代表ベクトルを機械学習モデルに入力する。機械学習モデルは、データセットのプリミティブを出力する。機械学習モデルは、例えばプリミティブ選択モジュール210によって、代表ベクトルに基づいてデータセットのプリミティブを選択するように訓練される。複数の訓練データエンティティの複数の代表ベクトルと、複数の訓練データエンティティの各々に対するプリミティブのセットとを含む訓練データに基づいて、訓練されることがある。複数の訓練データエンティティの各々に対するプリミティブのセットは、対応する訓練データセットに基づいて予測を行うために有用であると決定されたフィーチャーを生成するために使用された。いくつかの態様では、機械学習モデルは、連続して訓練される。例えば、プリミティブ生成モジュール210は、データエンティティの代表ベクトルと、選択されたプリミティブの少なくともいくつかと、に基づいて機械学習モデルをさらに訓練することが可能である。
【0030】
いくつかの態様では、プリミティブ生成モジュール210は、ユーザー(例えば、データ分析エンジニア)からの入力にも基づいてプリミティブを生成する。プリミティブ生成モジュール210は、データエンティティに基づいてプリミティブのプールから選択されるプリミティブのリストを、ユーザーインターフェースに表示するためにユーザーに提供する。ユーザーインターフェースは、ユーザーに、たとえばプリミティブのリストに他のプリミティブを加える、新しいプリミティブを作成する、プリミティブを取り除く、他のタイプのアクションを行う、または組み合わせなど、プリミティブを編集することを可能にする。プリミティブ生成モジュール210は、ユーザーによる編集に基づいてプリミティブのリストを更新する。したがって、プリミティブ生成モジュール210によって生成されるプリミティブは、ユーザーの入力を組み入れる。ユーザー情報についての詳細は、図4に関連して以下に説明される。
【0031】
時間パラメータモジュール220は、1つまたは複数の時間値に基づいて1つまたは複数のカットオフ時間を決定する。カットオフ時間は、予測を行う時間である。カットオフ時間前のタイムスタンプに関連付けられたデータは、ラベルに対するフィーチャーを抽出するのに用いられることが可能である。しかしながら、カットオフ時間の後のタイムスタンプに関連付けられたデータは、ラベルに対するフィーチャーを抽出するのに使用されるべきではない。カットオフ時間は、プリミティブ生成モジュール210によって生成されたプリミティブのサブセットに固有であり得る、または生成されたすべてのプリミティブに対してグローバルであり得る。いくつかの態様では、時間パラメータモジュール220は、ユーザーからの時間値を受信する。時間値は、タイムスタンプまたは時間期間であり得る。時間パラメータモジュール220は、ユーザーに、異なるプリミティブに対して異なる時間値を提供することを、または複数のプリミティブに対して同じ時間値を提供することを可能にする。
【0032】
いくつかの態様では、プリミティブ生成モジュール210および時間パラメータモジュール220は、別々にまたは一緒に、ユーザーに、プリミティブを編集すること、および時間値を入力することを可能にするグラフィカルユーザーインターフェース(GUI)を提供する。GUIの例は、ユーザーに、プリミティブ生成モジュール210によって生成されたプリミティブをビューする、サーチする、編集することを、およびプリミティブの時間パラメータの1つまたは複数の値を提供することを可能にするツールを提供する。
いくつかの態様では、GUIは、ユーザーに、フィーチャーを合成するために使用するデータエンティティの数を選択することを可能にする。GUIは、フィーチャーエンジニアリングアプリケーション200によって受信されたデータエンティティのすべてまたは一部をフィーチャー合成に使用するかどうかを制御するオプションをユーザーに提供する。GUIについての詳細は、図3に関連して説明される。
【0033】
エンティティフィーチャーモジュール230は、フィーチャーエンジニアリングアプリケーション200から受信したデータエンティティ、プリミティブ生成モジュール210から生成されたプリミティブ、および時間パラメータモジュール220によって決定されたカットオフ時間に基づいてフィーチャーを合成する。プリミティブが生成され、時間パラメータが受信された後、エンティティフィーチャーモジュール230は、フィーチャーエンジニアリングアプリケーション200によって受信されたデータエンティティからエンティティセットを作成する。いくつかの態様では、エンティティフィーチャーモジュール230は、データエンティティの変数を決定し、共通の変数を共有する2つ以上のデータエンティティをサブセットとして識別する。エンティティフィーチャーモジュール230は、フィーチャーエンジニアリングアプリケーション200から受信したデータエンティティから複数のデータエンティティのサブセットを識別することがある。
【0034】
各サブセットに対して、エンティティフィーチャーモジュール230は、サブセットの親子関係を決定する。サブセットのデータエンティティを親エンティティとして、サブセットの1つまたは複数の他のデータエンティティの各々を子エンティティとして識別する。いくつかの態様では、エンティティフィーチャーモジュール230は、データエンティティの一次変数(primary variable)に基づいて親子関係を決定する。データエンティティの一次変数は、エンティティ(例えば、ユーザー、アクションなど)を一意的に識別する値を有する変数である。一次変数の例は、ユーザーのアイデンティティ情報、アクションのアイデンティティ情報、オブジェクトのアイデンティティ情報、またはそれらの組み合わせに関連付けられた変数である。エンティティフィーチャーモジュール230は、各データエンティティにおいて一次変数を識別し、例えばルールベースの分析を行うことによって、一次変数の間の階層を決定する。エンティティフィーチャーモジュール230は、どの変数が他の変数よりも階層が高いかを指定するルールを維持する。例えば、ルールは、「ユーザーID」変数が階層において「ユーザーアクションID」変数よりも高い位置を有することを指定する。
【0035】
いくつかの態様では、エンティティフィーチャーモジュール230は、ユーザー入力に基づいてデータエンティティの一次変数を決定する。例えば、エンティティフィーチャーモジュール230は、データエンティティの変数を検出し、検出された変数をユーザーに表示するために提供し、どの変数が一次変数であるかをユーザーが識別する機会を提供する。別の例として、エンティティ機能モジュール230は、一次変数を決定し、ユーザーが決定を確認するまたは不承認する機会を提供する。エンティティフィーチャーモジュール230は、親子関係に基づいてサブセットのデータエンティティを組み合わせ、中間データエンティティを生成する。エンティティフィーチャーモジュール230は、ユーザー入力を容易にするGUIをサポートすることがある。GUIの例は、図5に関連して以下に説明される。いくつかの態様では、エンティティフィーチャーモジュール230は、ユーザー入力なしにデータエンティティの一次変数を決定する。例えば、エンティティフィーチャーモジュール230は、データエンティティの変数を、同様のデータ型に関する別のデータエンティティの変数と比較する。データ型の例は、数値データ型、カテゴリーデータ型、時系列データ型、テキストデータ型などを含む。エンティティフィーチャーモジュール230は、データエンティティの各変数のマッチングスコアを決定し、マッチングスコアは、変数が他のデータエンティティの変数とマッチングする確率を示す。エンティティフィーチャーモジュール230は、最も高いマッチングスコアを有するデータエンティティの変数を、データエンティティの一次変数として選択する。さらに、エンティティフィーチャーモジュール230は、中間データエンティティを組み合わせ、フィーチャーエンジニアリングアプリケーション200によって受信されたすべてのデータエンティティを組み入れるエンティティセットを生成する。
【0036】
いくつかの態様では、エンティティフィーチャーモジュール230は、例えば、データエンティティにおいて複数の一次変数があるかどうかを決定することによって、データエンティティを正規化するかどうかを決定する。一態様では、エンティティフィーチャーモジュール230は、データエンティティにおいて異なる変数の重複の値があるかどうかを決定する。例えば、ロケーション変数の「Colorado」値が、リージョン変数の「Mountain」値に常に対応するならば、「Colorado」値および「Mountain」値は重複した値である。データエンティティを正規化するという決定に応じて、エンティティフィーチャーモジュール230は、データエンティティを2つの新しいデータエンティティに割ることによって、データエンティティを正規化する。2つの新しいデータエンティティの各々は、データエンティティの変数のサブセットを含む。今述べた処理は正規化と呼ばれる。正規化プロセスのいくつかの態様では、エンティティフィーチャーモジュール230は、与えられたエンティティの変数から第1の一次変数と第2の一次変数とを識別する。データエンティティの一次変数の例は、たとえば、ユーザーのアイデンティティ情報、アクションのアイデンティティ情報、オブジェクトのアイデンティティ情報、またはそれらの組み合わせを含む。エンティティフィーチャーモジュール230は、与えられたエンティティの変数を、第1の変数グループと第2の変数グループとに分類する。第1の変数グループは、第1の一次変数と、第1の一次変数に関係する与えられたエンティティの1つまたは複数の他の変数とを含む。第2の変数グループは、第2の一次変数と、第2の一次変数に関係する与えられたエンティティの1つまたは複数の他の変数とを含む。エンティティフィーチャーモジュール230は、2つの新しいエンティティのうちの1つを、第1のグループの変数と、第1のグループの変数の値により生成し、2つの新しいエンティティのうちの他方を、第2のグループの変数と、第1のグループの変数の値とにより生成する。次に、エンティティフィーチャーモジュール230は、2つの新しいデータエンティティと、正規化データエンティティを除く受信データエンティティとから、データエンティティのサブセットを識別する。
【0037】
エンティティフィーチャーモジュール230は、エンティティセットにプリミティブおよびカットオフ時間を適用して、フィーチャーのグループと、グループの各フィーチャーに対する重要度係数を合成する。エンティティフィーチャーモジュール230は、カットオフ時間に基づいてエンティティセットからデータを抽出し、抽出されたデータにプリミティブを適用して複数のフィーチャーを合成する。いくつかの態様では、エンティティフィーチャーモジュール230は、選択されたプリミティブの各々を、抽出されたデータの少なくとも一部に適用して、1つまたは複数のフィーチャーを合成する。例えば、エンティティフィーチャーモジュール230は、エンティティセットの「timestamp」という名前の列に「weekend」プリミティブを適用し、日付が週末にあるかどうかを示すフィーチャーを合成する。エンティティフィーチャーモジュール230は、エンティティセットに対して、たとえば数百または数百万のフィーチャーなど、多数のフィーチャーを合成することが可能である。
【0038】
エンティティフィーチャーモジュール230は、フィーチャーを評価し、評価に基づいてフィーチャーの一部を取り除いて、フィーチャーグループを取得する。いくつかの態様では、エンティティフィーチャーモジュール230は、反復処理を通じてフィーチャーを評価する。イテレーションの各ラウンドにおいて、エンティティフィーチャーモジュール230は、以前のイテレーションによって取り除かれなかったフィーチャー(「残りのフィーチャー」とも呼ばれる)を、抽出されたデータの異なる部分に適用し、フィーチャーの各々の有用性スコアを決定する。エンティティフィーチャーモジュール230は、残りのフィーチャーから有用性スコアが最も低いいくつかのフィーチャーを取り除く。
【0039】
いくつかの態様では、エンティティフィーチャーモジュール230は、ランダムフォレストを使用してフィーチャーの有用性スコアを決定する。フィーチャーの有用性スコアは、フィーチャーがエンティティセットに基づいて行われる予測にどれぐらい有用であるかを示す。いくつかの態様では、エンティティフィーチャーモジュール230は、フィーチャーの有用性を評価するために、エンティティセットの異なる部分をフィーチャーに繰り返し適用する。例えば、第1のイテレーションでは、エンティティフィーチャーモジュール230は、エンティティセットの所定の割合(たとえば25%など)をフィーチャーに適用して、第1のランダムフォレストを構築する。第1のランダムフォレストは、いくつかの決定木を含む。各決定木は複数のノードを含む。どのノードもフィーチャーに対応し、フィーチャーの値に基づいてノードを通じてツリーをどのように通過させるかを記述する条件を含む(例えば、日にちが週末にあるならば1つのブランチを取り、そうでなければ別のブランチを取る)。各ノードのフィーチャーは、情報利得(information gain)またはジニ不純物削減(Gini impurity reduction)に基づいて決定される。情報利得またはジニ不純物の削減を最大化するフィーチャーが分割フィーチャーとして選択される。評価モジュール320は、決定木にわたるフィーチャーによる情報利得かジニ不純物の削減かのいずれかに基づいて、フィーチャーの個々の有用性スコアを決定する。フィーチャーの個々の有用性スコアは、1つの決定木に固有である。ランダムフォレストの決定木の各々についてフィーチャーの個々の有用性スコアを決定した後、評価モジュール320は、フィーチャーの個々の有用性スコアを組み合わせることにより、フィーチャーの第1の有用性スコアを決定する。ある例では、フィーチャーの第1の有用性スコアは、フィーチャーの個々の有用性スコアの平均である。エンティティフィーチャーモジュール230は、第1の有用性スコアが最も低いフィーチャーの20%を削除し、80%のフィーチャーが残るようにする。これらのフィーチャーは、第1の残りのフィーチャーと呼ばれる。
【0040】
2回目のイテレーションでは、エンティティフィーチャーモジュール230は、第1の残りフィーチャーをエンティティセットの異なる部分に適用する。エンティティセットの異なる部分は、第1のイテレーションで使用されたエンティティセットの部分とは異なるエンティティセットの25%であることが可能である、または第1のイテレーションで使用されたエンティティセットの部分を含むエンティティセットの50%であることが可能である。評価モジュール320は、エンティティセットの異なる部分を使用して第2のランダムフォレストを構築し、第2のランダムフォレストを使用して残りのフィーチャーの各々について第2の有用性スコアを決定する。エンティティフィーチャーモジュール230は、第1の残りのフィーチャーの20%および第1の残りのフィーチャーの残り(すなわち、第1の残りのフィーチャーの80%が第2の残りのフィーチャーを形成する)を取り除く。
【0041】
同様に、次の各イテレーションにおいて、エンティティフィーチャーモジュール230は、前のラウンドからの残りのフィーチャーをエンティティセットの異なる部分に適用し、前のラウンドからの残りのフィーチャーの有用性スコアを決定し、残りのフィーチャーの一部を削除して、より少ないフィーチャーグループを取得する。エンティティフィーチャーモジュール230は、条件が満たされたと決定するまで反復処理を続けることが可能である。条件は、しきい値を下回る数のフィーチャーが残ること、残っているフィーチャーの最も低い有用性スコアがしきい値より上である9こと、全エンティティセットがフィーチャーに適用されていること、しきい値の数のラウンドがイテレーションにて完了していること、他の条件、またはそれらの組み合わせであることが可能である。最後のラウンドの残りのフィーチャー、すなわち、エンティティフィーチャーモジュール230によって取り除かれなかったフィーチャーは、機械学習モデルを訓練するために選択される。
【0042】
イテレーションが終了し、フィーチャーグループが取得された後、エンティティフィーチャーモジュール230は、グループの各フィーチャーの重要度係数を決定する。フィーチャーの重要度係数は、フィーチャーがターゲット変数を予測することに対して、どれぐらい重要であるかを示す。いくつかの態様では、エンティティフィーチャーモジュール230は、ランダムフォレスト、例えば、エンティティセットの少なくとも一部に基づいて構築された1つを使用して重要度係数を決定する。いくつかの態様では、エンティティフィーチャーモジュール230は、選択されたフィーチャーとエンティティセットとに基づいてランダムフォレストを構築する。エンティティフィーチャーモジュール230は、ランダムフォレストの各決定木に基づいて、選択されたフィーチャーの個々のランキングスコアを決定し、個々のランキングスコアの平均を選択されたフィーチャーのランキングスコアとして取得する。エンティティフィーチャーモジュール230は、そのランキングスコアに基づいて、選択されたフィーチャーの重要度係数を決定する。例えば、エンティティフィーチャーモジュール230は、ランキングスコアに基づいて選択されたフィーチャーをランク付けし、最も高くランク付けされた選択されたフィーチャーの重要度スコアが1であると決定する。次に、エンティティフィーチャーモジュール230は、残りの選択されたフィーチャーの各々のランキングスコアの、最も高くランク付けされた選択されたフィーチャーのランキングスコアに対する比率を、対応する選択されたフィーチャーの重要度係数として決定する。
【0043】
いくつかの態様では、エンティティフィーチャーモジュール230は、フィーチャーとエンティティセットの異なる部分とを機械学習モデルに入力することによって、フィーチャーの重要度スコアを調整する。機械学習モデルは、フィーチャーの第2の重要度スコアを出力する。エンティティフィーチャーモジュール230は、重要度係数を第2の重要度スコアと比較して、重要度係数を調整するかどうかを決定する。例えば、エンティティフィーチャーモジュール230は、重要度係数を、重要度係数と第2の重要度係数との平均に変えることが可能である。
【0044】
図3は、一態様に係るプリミティブおよび時間パラメータに対するユーザー入力を可能にするユーザーインターフェース300を示す図である。ユーザーインターフェース300は、フィーチャーエンジニアリングアプリケーション200のプリミティブ生成モジュール210および時間パラメータモジュール220によって提供される。ユーザーインターフェース300は、ユーザーに、フィーチャーを合成するために使用されるだろうプリミティブに対して、ビューしインタラクションすることを可能にする。さらに、ユーザーに、時間パラメータの値を入力することも可能にする。ユーザーインターフェース300は、サーチバー310、表示部320、訓練データ部330、および時間パラメータ部340を含む。ユーザーインターフェース300の他の態様は、より多い、より少ない、または異なる構成要素を有する。
【0045】
サーチバー310は、ユーザーに、検索語をタイプ入力して、ビューしたい、あるいは他のやり方によりインタラクションしたいプリミティブを見つけることを可能にする。表示部320はプリミティブのリストを提示する。プリミティブ生成モジュール210によって選択されたすべてのプリミティブ、またはユーザーによって入力された検索語に一致するプリミティブを提示する。いくつかの態様では、プリミティブは、例えば、予測に対するプリミティブの重要度、ユーザーの検索語に対するプリミティブの関連性、または他の要因に基づいて、順番にリストされる。リストの各プリミティブについて、表示部は、プリミティブの名前、カテゴリー(アグリゲーションまたは変換)、および記述を提示する。プリミティブの名前、カテゴリー、および記述は、プリミティブの機能およびアルゴリズムを説明し、ユーザーがプリミティブを理解するのに役立つ。リストの各プリミティブは、ユーザーがクリックしてプリミティブを選択することがあるチェックボックスと関連付けられる。図3は示されていないが、ユーザーインターフェース300は、ユーザーに、選択されているプリミティブを取り除く、新しいプリミティブを加える、プリミティブの順序を変える、またはプリミティブとの他のタイプのインタラクションを可能にする。訓練データ部330は、フィーチャーの作成に使用されることになるデータエンティティの最大数を選択できる。今述べたことは、フィーチャーを作成するために使用されることになる訓練データの量を制御する機会をユーザーに提供する。ユーザーインターフェースでは、フィーチャーを生成する処理時間とフィーチャーの品質とのトレードオフを指定することを可能にする。
【0046】
時間パラメータ部340は、ユーザーが時間値を入力するためのオプション、たとえば、時間を指定すること、時間ウィンドウを定義すること、または両方を提供する。さらに、時間パラメータ部340は、時間値を共通時間として使用するか、ケース固有の時間として使用するかをユーザーが選択するためのオプションも提供する。共通時間は、フィーチャーを作成するために使用されるすべてのプリミティブに適用され、対して、ケース固有の時間は、プリミティブのサブセットに適用される。
【0047】
図4は、一態様に係るエンティティセット作成に対するユーザーインターフェース400を示す図である。ユーザーインターフェースは、フィーチャーエンジニアリングアプリケーション200のエンティティフィーチャーモジュール230によって提供される。ユーザーインターフェース400は、フィーチャーエンジニアリングアプリケーション200により受信されたデータエンティティ410、420、430をユーザーに表示する。さらに、たとえば、各データエンティティに対して、データエンティティ名、列数、およびプライマリーキーなど、データエンティティの情報も表示する。データエンティティ名は、ユーザーがデータエンティティを識別するのに役立つ。データエンティティの列は変数に対応するので、列の数はデータエンティティの変数の数に対応し、主列は一次変数に対応する。ユーザーインターフェース400は、さらに、2つのデータエンティティ410と420との間の親子関係、および2つのデータエンティティによって共有される共通の列を表示する。データエンティティ410は、親データエンティティとして示され、データエンティティ420は、子データエンティティとして示される。ユーザーインターフェース400は、ユーザーに、列を変えることを可能にするように、ユーザーインターフェース400に表示される各主要列および共通列にドロップダウンアイコン440(個々にドロップダウンアイコン440と呼ぶ)を提供する。例えば、ドロップダウンアイコンの選択を受信したことに応答して、ユーザーインターフェース400は、候補列のリストをユーザーに提供し、ユーザーに、異なる列を選択することを可能にする。いくつかの態様では、エンティティフィーチャーモジュール230は、データエンティティの列を検出し、検出された列から候補列を選択する。さらに、ユーザーインターフェース400は、ユーザーが新しい関係を追加することも可能にする。ユーザーインターフェース400は、3つのデータエンティティと1つの親子関係とを示すが、より多くのデータエンティティと、より多くの親子関係とを含むことがある。ある態様では、データエンティティは、ある親では親であるが、異なるサブセットでは子である。
【0048】
図5は、一態様に係る異なったデータソースから受信したデータエンティティを用いることによってフィーチャーを合成する方法500を例示するフローチャートである。いくつかの態様では、本方法は機械学習サーバー110によって行われるが、他の態様では、本方法における動作の一部または全部が他のエンティティによって行われることがある。いくつかの態様では、フローチャートにおける動作は、異なる順にて行われ、異なったおよび/または追加のステップを含む。
【0049】
機械学習サーバー110は、異なるデータソースから複数のデータエンティティを受信する510。異なったデータソースは、異なったユーザー、異なった組織、または同じ組織内の異なった部門に関連付けられることがある。複数のデータエンティティは、新しいデータに基づいて予測を行うモデルを訓練するために用いられる。データエンティティは、1つまたは複数の変数を含むデータのセットである。例示的な予測は、アプリケーション監視、ネットワークトラフィックデータフロー監視、ユーザーアクション予測などを含む。
【0050】
機械学習サーバー110は、複数のデータエンティティに基づいてプリミティブを生成する520。プリミティブの各々は、フィーチャーを合成するために複数のデータセットの変数に適用されるように構成される。いくつかの態様では、機械学習サーバー110は、複数のデータエンティティに基づいて、プリミティブのプールからプリミティブを選択する。機械学習サーバー110は、選択されたプリミティブをユーザーへの表示に提供し、ユーザーに、たとえば、プリミティブについて追加すること、削除すること、順序を変えることなど、選択されたプリミティブを編集することを可能にすることがある。機械学習サーバー110は、選択およびユーザー編集に基づいてプリミティブを生成する。
【0051】
機械学習サーバー110は、ユーザーに関連付けられたクライアントデバイスから時間値を受信する530。時間値は、複数のデータエンティティから1つまたは複数の時間ベースのフィーチャーを合成するために使用される。いくつかの態様では、機械学習サーバー110は、時間値に基づいて1つまたは複数のカットオフ時間を決定し、1つまたは複数のカットオフ時間に基づいてエンティティセットからデータを抽出する。抽出されるデータは、機械学習サーバー100によって、抽出されたデータから1つまたは複数の時間ベースのフィーチャーを合成するために使用されるだろう。
【0052】
プリミティブが生成され、時間値が受信された後、機械学習サーバー110は、複数のデータエンティティをアグリゲーションすることによってエンティティセットを生成する540。機械学習サーバー110は、複数のデータセットからデータエンティティのサブセットを識別する。各サブセットは、共通の変数を共有する2つ以上のデータエンティティを含む。次に、機械学習サーバー110は、各サブセットのデータエンティティをアグリゲーションすることによって中間データエンティティを生成する。いくつかの態様では、機械学習サーバー110は、サブセットの各データエンティティの一次変数を決定し、サブセットのデータエンティティの一次変数に基づいて、サブセットのデータエンティティを親エンティティとして識別し、親に含まれる1つまたは複数の他のデータエンティティの各々を子エンティティとして識別する。機械学習サーバー110は、親子関係に基づいてサブセットのデータエンティティをアグリゲーションする。機械学習サーバー110は、中間データエンティティをアグリゲーションすることによってエンティティセットを生成する。
【0053】
いくつかの態様では、機械学習サーバー110は、複数のデータエンティティのうちの所定のデータエンティティから、所定のデータエンティティの変数に基づいて、2つの新しいデータエンティティを生成する。2つの新しいデータエンティティの各々は、与えられたデータエンティティの変数のサブセットを含む。例えば、機械学習サーバー110は、与えられたエンティティの変数から第1の一次変数および第2の一次変数を識別する。次に、与えられたエンティティの変数を、第1の変数グループと第2の変数グループとに分類する。第1の変数グループは、第1の一次変数と、第1の一次変数に関係する与えられたエンティティの1つまたは複数の他の変数とを含む。第2の変数グループは、第2の一次変数と、第2のtの一次変数に関係する与えられたエンティティの1つまたは複数の他の変数とを含む。機械学習サーバー110は、2つの新しいエンティティのうちの1つを、第1のグループの変数と、第1のグループの変数の値により生成し、2つの新しいエンティティのうちの他方を、第2のグループの変数と、第1のグループの変数の値とにより生成する。機械学習サーバー110は、2つの新たなデータエンティティと、与えるデータエンティティを除く複数のデータエンティティとから、データエンティティのサブセットを識別する。
【0054】
機械学習サーバー110は、プリミティブおよび時間値をエンティティセットに適用することによって、複数のフィーチャーを合成する550。いくつかの態様では、機械学習サーバー110は、プリミティブをエンティティセットに適用して、フィーチャーのプールを生成する。次に、機械学習サーバー110は、フィーチャーのプールからいくつかのフィーチャーを削除するために、フィーチャーのプールを反復して評価し、複数のフィーチャーを取得する。各イテレーションにて、機械学習サーバー110は、評価されたフィーチャーにエンティティセットの異なる部分を適用することにより、複数のフィーチャーの少なくともいくつかのフィーチャーの有用性を評価し、評価されたフィーチャーの有用性に基づいて、評価されたフィーチャーのいくつかを取り除いて複数のフィーチャーを生成する。
【0055】
複数のフィーチャーは、1つまたは複数の時間ベースのフィーチャーを含む。いくつかの態様では、機械学習サーバー110は、時間値に基づいて1つまたは複数のカットオフ時間を決定する。次に、機械学習サーバー110は、1つまたは複数のカットオフ時間に基づいてエンティティセットからデータを抽出し、抽出されたデータから1つまたは複数の時間ベースのフィーチャーを生成する。
【0056】
機械学習サーバー110は、複数のフィーチャーに基づいてモデルを訓練する550。機械学習サーバー110は、異なる態様において、異なる機械学習技法を使用することを含む。例示的な機械学習技法は、たとえば、線形サポートベクトルマシン(線形SVM)、他のアルゴリズムのブースティング(例えばAdaBoost)、ニューラルネットワーク、ロジスティック回帰、単純ベイズ、メモリーベースラーニング、ランダムフォレスト、バギングツリー、決定木、ブースティングツリー、ブースティングスタンプなどを含む。次に、訓練されたモデルは、新しいデータセットの観点から予測を行うために使用される。
【0057】
図6は、態様に係る図1の機械学習サーバー110としての使用のための典型的なコンピュータシステム600の機能上の図を例示するハイレベルなブロック図である。
【0058】
例示されているコンピュータシステムは、チップセット604に結合された少なくとも1つのプロセッサ602を含む。プロセッサ602は、同一のダイスにおいて複数のプロセッサコアを含むことが可能である。チップセット604は、メモリコントローラハブ620および入出力(I/O)コントローラハブ622を含む。メモリー606およびグラフィックスアダプタ612がメモリコントローラハブ620に結合され、ディスプレイ618がグラフィックスアダプタ612に結合される。ストレージデバイス608、キーボード610、ポインティングデバイス614、およびネットワークアダプタ616は、I/Oコントローラハブ622に結合されることがある。他のいくつかの態様では、コンピュータシステム600は、追加の、より少ない、または異なる構成要素を有することができ、構成要素は異なって結合されることがある。例えば、コンピュータシステム600の態様は、ディスプレイおよび/またはキーボードがないことがある。加えて、コンピュータシステム600は、いくつかの態様では、ラックマウントされたブレードサーバとして、またはクラウドサーバインスタンスとしてインスタンス化されることがある。
【0059】
メモリー606は、プロセッサ602により使用される命令およびデータを保持する。いくつかの態様では、メモリー606はランダムアクセスメモリである。ストレージデバイス608は、非一時的なコンピュータ読取り可能記録媒体である。記憶装置608は、HDD、SSD、または他のタイプの非一時的なコンピュータ読取り可能記録媒体であることが可能である。機械学習サーバー110によって処理され分析されたデータは、メモリー606および/またはストレージデバイス608に格納されることが可能である。
【0060】
ポインティングデバイス614は、マウス、トラックボール、または他のタイプのポインティングデバイスであることがあり、コンピュータシステム600にデータを入力するキーボード610と組み合わせて使用される。グラフィックスアダプタ612は、ディスプレイ618に画像および他の情報を表示する。いくつかの態様では、ディスプレイ618は、ユーザー入力および選択を受信するためのタッチスクリーン性能を含む。ネットワークアダプタ616は、コンピュータシステム600をネットワーク160に接続する。
【0061】
コンピュータシステム600は、本明細書において説明される機能性を提供するためのコンピュータモジュールを実行するように適合される。本明細書に用いられるような用語「モジュール」は、特定の機能性を提供するためのコンピュータプログラム命令および他のロジックを指す。モジュールは、ハードウェア、ファームウェア、および/またはソフトウェアに実装されることが可能である。モジュールは、1つまたは複数の処理を含むことが可能である、および/または処理の一部のみによって提供されることが可能である。モジュールは、典型として、ストレージデバイス608に格納され、メモリー606にロードされ、プロセッサ602によって実行される。
【0062】
構成要素の特定の命名、用語の大文字表記、属性、データ構造、または他のプログラミングもしくは構造的な様相は、必須でも重要でもなく、説明した態様を実装するメカニズムは、異なる名前、フォーマット、またはプロトコルを有することが可能である。さらに、システムは、説明されているように、ハードウェアおよびソフトウェアの組み合わせを介して実装される、または完全にハードウェア要素にて実装されることがある。さらに、本明細書において説明される種々のシステム構成要素の間の特定の機能分担は、単なる例示であり、必須ではなく、単一のシステム構成要素によって行われる機能が、代わりに複数の構成要素によって行われることがあり、複数の構成要素によって行われる機能が、代わりに単一の構成要素によって行われることがある。
【0063】
上の説明のいくつかの部分は、情報の動作のアルゴリズムおよび記号表現に関して特徴を提示する。今述べたアルゴリズムの説明および表現は、他の当業者に研究内容を最も効果的に伝達するデータ処理技術の当業者によって用いられる。今述べた動作は、機能的にまたは論理的に説明される一方、コンピュータプログラムによって実装されることが理解される。その上さらに、動作の今述べた配置をモジュールと呼ぶことは、または、機能名によって、一般性を損うことなく、ときどき便利であることが示されている。
【0064】
上記の議論から明らかなように特に別段の記載がない限り、本明細書全体を通じて、「処理すること」または「計算すること」または「算出すること」または「決定すること」または「表示すること」などの用語を用いた議論は、コンピュータシステムのメモリーまたはレジスタまたは他のそのような情報記憶、伝送または表示デバイス内の物理的(電子的)量として表されるデータを操作および変換する、コンピュータシステムまたは同様の電子計算デバイスの作用およびプロセスを指すことが理解される。
【0065】
本明細書に説明される一定の態様は、アルゴリズムのかたちにて記述される処理のステップおよび命令を含む。態様の処理ステップおよび命令は、ソフトウェア、ファームウェアまたはハードウェアで具現化され、ソフトウェアにて具現化されるとリアルタイムネットワークオペレーティングシステムによって使用される異なるプラットフォーム上に常駐し、そこから操作されるようにダウンロードされ得ることに留意すべきである。
最後に、原則として、明細書に用いられた言葉は、読みやすさと教育の目的とのために選択され、本発明の主題の境界を明示する、または境界を定めるために選択されていないことがある。従って、本態様の開示は、例証となることが意図され、限定することを意図しない。
図1
図2
図3
図4
図5
図6
【国際調査報告】