3.8 ケース表の準備
機械学習のデータの準備における最初のステップは、ケース表の作成です。
- 列のデータ型の変換
OMLでは、文字列の列は質的として、数値列は量的として、BOOLEAN
列は量的として扱われます。質的として扱う数値列がある場合は、文字列に変換する必要があります。たとえば、週の日数などです。 - 日時列値の抽出
EXTRACT
関数を使用して、日時または期間の値から値を抽出できます。 - テキスト変換
Oracle Machine Learning for SQLを使用したテキスト処理について説明します。 - ビジネスおよび分野に依存した変換について
ビジネス上の問題に従ってデータを変換する必要がある理由を理解しましょう。 - ネストした列の作成
トランザクショナル・データでは、各ケースの情報が複数の行に含まれています。データソースにトランザクショナル・データが含まれる場合(複数レコード・ケース)、ネストした列でトランザクションをケース・レベルに集計する必要があります。
親トピック: データの準備
3.8.1 列のデータ型の変換
OMLでは、文字列の列は質的として、数値列は量的として、BOOLEAN
列は量的として処理されます。質的として扱う数値列がある場合は、文字列に変換する必要があります。たとえば、週の日数などです。
たとえば、郵便番号は様々な郵便区を識別しますが、順番は示しません。郵便番号を数値列に格納すると、量的属性として解釈されます。この場合、列データがモデルによって質的属性として使用されるように、データ型を変換する必要があります。これには、TO_CHAR
関数を使用して1から9の数字を変換し、LPAD
関数を使用して先頭の0 (ある場合)を保持します。
LPAD(TO_CHAR(ZIPCODE),5,'0')
データ型がBOOLEAN
の属性は、次の値を持つ数値として処理されます。TRUE
は1
、FALSE
は0
を意味し、NULL
は不明な値として解釈されます。CASE_ID_COLUMN_NAME
属性では、BOOLEAN
データ型はサポートされていません。
親トピック: ケース表の準備
3.8.2 日時列値の抽出
EXTRACT
関数を使用して、日時または期間の値から値を抽出できます。
EXTRACT
関数は、日時または間隔の値の式から、指定された日時フィールドの値を抽出して返します。抽出できる値は、YEAR
、MONTH
、DAY
、HOUR
、MINUTE
、SECOND
、TIMEZONE_HOUR
、TIMEZONE_MINUTE
、TIMEZONE_REGION
および TIMEZONE_ABBR
です。
sales_ts
ビューから抽出されます。sales_ts
ビューには、CUST_ID
およびTIME_STAMP
列が含まれています。 select cust_id, time_stamp,
extract(year from time_stamp) year,
extract(month from time_stamp) month,
extract(day from time_stamp) day_of_month,
to_char(time_stamp,'ww') week_of_year,
to_char(time_stamp,'D') day_of_week,
extract(hour from time_stamp) hour,
extract(minute from time_stamp) minute,
extract(second from time_stamp) second
from sales_ts
親トピック: ケース表の準備
3.8.3 テキスト変換
Oracle Machine Learning for SQLを使用したテキスト処理について説明します。
OML4SQLを使用してテキストを処理できます。ケース表内のテキスト列は、適切に変換すると処理できるようになります。
テキスト列は、ビューではなく、表内に存在している必要があります。変換プロセスでは、いくつかのOracle Textの機能が使用され、表の各行のテキストがそれぞれ別個のドキュメントとして処理されます。各ドキュメントは、数値およびテキスト・ラベルを持つ用語と呼ばれるテキスト・トークンのセットに変換されます。テキスト列は、DM_NESTED_NUMERICALS
のネストした列に変換されます。
親トピック: ケース表の準備
3.8.4 ビジネスおよび分野に依存した変換について
ビジネス上の問題に従い、データを変換する必要がある理由を理解します。
一部の変換は、ビジネス上の問題の定義によって決まります。たとえば、高い利益を生む顧客を予測するモデルを作成する場合を考えます。現在の顧客の利益データはドルなどの通貨で表されているため、どの程度が「高い利益」なのかを定義する必要があります。この場合、モデルを作成する前に、これまでの経験から導かれたいくつかの式を使用して、利益属性を「低」、「中」および「高」の範囲に再コード化できます。
その他の一般的なビジネス上の変換には、データ情報の経過時間への変換があります。たとえば、出生日は年齢に変換できます。
専門知識は、データをどのように準備するのかを決める上で非常に重要になることがあります。たとえば、一部のアルゴリズムでは、通常の範囲から遠く外れた値がデータに含まれていると、信頼できない結果が生成されます。場合によっては、これらの値は誤差または異常値を表します。別の場合では、これらの値が意味のある情報を提供することもあります。
3.8.5 ネストした列の作成
トランザクショナル・データでは、各ケースの情報が複数の行に含まれています。データソースにトランザクショナル・データが含まれる場合(複数レコード・ケース)、ネストした列でトランザクションをケース・レベルに集計する必要があります。
例として、本番レベルでの機械学習時のスター・スキーマにおける売上データがあります。売上は、その製品が多数の店舗で多数の顧客に対してある期間にわたって販売されるため、単一の製品(ケース)の多数の行に格納されます。
関連項目:
トランザクショナル・データのネストした列への変換の詳細は、「ネストしたデータの使用」を参照してください。
親トピック: ケース表の準備