『周期的な時間特徴のエンコード方法』

周期的な時間特徴のエンコード方法

ディープラーニングや他の予測モデルのための日付、曜日、および時間の注意深い処理。

Figure by Author

多くの予測タスクでは、モデルの入力として時間情報が必要です。小売会社のレモネードの売上を予測する回帰モデルを考えてみましょう(コンテキスト豊かな特徴についての私の記事からの例を覚えているかもしれません)。暑い夏にはさわやかな飲み物の需要が明らかに高くなり、7月/8月にピークを迎える周期的な売上曲線が生じます(ここではヨーロッパの場所を考えてみてください)。

この場合、年の中での時間は明らかに有益な季節情報であり、モデルに入力する必要があります。しかし、どのようにすれば良いのでしょうか?日付は難しいです。月によって日数が変わります(2月の場合はさらに年によっても異なります)し、さまざまな形式が存在します:

2023年1月13日

13.01.2023

2023/03/13

まず、年を省略できます。季節効果を考慮するために、日と月だけが必要です。非常にシンプルな(そして考慮が足りない)アプローチでは、月を1つの数値として、日を別の数値として入力するだけです。

なぜそれが悪い考えなのでしょうか?モデルはキリスト教のグレゴリオ暦の働き方(月あたり約30日、年あたり12ヶ月、閏年など)を学習する必要があります。十分なトレーニングデータがあれば、ディープラーニングモデルは私たちのカレンダーを「理解」することができるはずです。「理解」とは、この場合、モデルが月と日の入力から年の相対的な時間位置を推測できることを意味します。しかし、モデルの学習をできるだけ簡単にするために、私たちはこの仕事を引き受けるべきです(少なくとも私たちはすでにカレンダーの働き方を知っています)。Pythonのdatetimeライブラリを利用して、年の相対的な時間をかなりシンプルなロジックで計算します:import datetime as

from datetime import datetimeimport calendaryear = 2023month = 12day = 30passed_days = (datetime(year, month, day) - datetime(year, 1, 1)).days + 1nr_of_days_per_year= 366 if calendar.isleap(year) else 365position_within_year = passed_days / nr_of_days_per_year

1月1日に近い値から12月31日に近い値までの範囲を持つposition_within_yearという結果の特徴は、(厄介な)グレゴリオ暦よりもモデルにより簡単に解釈できます。

しかし、まだ理想的ではありません。position_within_year特徴は、年ごとに1.0から0.0への急なジャンプという「のこぎり歯状」のパターンを示しています。この急激な不連続性は、効果的な学習に問題を引き起こす可能性があります。12月31日と1月1日は非常に似た日付です。直接の隣人であり、多くの共通点(例えば、似たような天候条件)を持ち、おそらくレモネードの売上の類似の潜在力を持っています。しかし、position_within_year特徴は、12月31日と1月1日に対してこの類似性を反映しておらず、実際には可能な限り異なる値です。

理想的には、互いに近接している時点は似たような時間値を持つべきです。年の周期性を表す特徴を設計する必要があります。つまり、12月31日には1月1日に戻る位置に到達するのが合理的です。ですので、当然のことですが、年の内部位置を円の位置としてモデル化することは意味があります。これを実現するために、position_within_yearを単位円のx座標とy座標に変換します。

これにはサインとコサインの関数を使用します:

sin(α) = x

cos(α) = y

αは円に適用される角度です。単位円が1年を表す場合、αは既に経過した年の中の時間を表します。

αは、position_within_yearと同等であるが、スケールが異なる点が異なります(α: 0.0–2π¹、position_within_year: 0.0-1.0)。

position_within_yearをαにスケーリングし、正弦と余弦を計算することで、「鋸の歯」のパターンを円形の表現に変換します。

import math# scale to 2pi (360 degrees)alpha = position_within_year * math.pi * 2year_circle_x = math.sin(alpha)year_circle_y = math.cos(alpha)# scale between 0 and 1 (original unit circle positions are between -1 and 1)year_circle_x = (year_circle_x + 1) / 2year_circle_y = (year_circle_y + 1) / 2time_feature = (year_circle_x, year_circle_y) # 美しいですね ;)

結果として得られるtime_featureは、0から1までのスケールで表される2要素のベクトルであり、予測モデルが簡単に処理できます。わずか数行のコードで、モデルにとって不必要な学習作業を大幅に削減しました。

単位円モデルは、月の日、週の日、一日の時間、一時間の分など、任意の周期的な時間情報に適用することができます。この概念は、時間領域外の循環的な特徴にも拡張することができます:

  • 物流/公共交通:市内を往復するバスの相対的な位置

  • 生物学:細胞周期内の細胞の状態。
  • 他の使用例はありますか?コメントで書いてください!

さらなる情報/接続ポイント

  • Pierre-Luis Bescond氏による同じトピックに関する素晴らしい実践的な記事。
  • ディープラーニングモデルの特徴エンジニアリングについてもっと学びたいですか?コンテキスト豊かなデータについての私の記事をチェックしてください。
  • 質問がありますか?AI、データサイエンス、データエンジニアリング、Python開発のフリーランスエキスパートが必要ですか?私のウェブサイトにアクセスして、メッセージを送ってください。

[1] ここでは角度はラジアンで与えられます。ラジアンの0は0°に相当し、ラジアンの2πは360°に相当します。

すべての図は著者によって作成されました。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

AIニュース

Googleはチャットボットの使用について従業員に警告、ここにその理由があります

Googleの親会社であるAlphabet Inc.は、ChatGPTや自社製品であるBardを含むチャットボットの使用について従業員に注意を促し...

機械学習

音声合成:進化、倫理、そして法律

ロマン・ガーリン、シニアバイスプレジデント @イノベーション、スポートレーダー この記事では、音声合成の進化を辿り、それ...

AIニュース

需要を駆動するための新しいAIパワード広告ソリューションの紹介

GoogleとYouTubeの新しいAIパワードソリューションは、広告主が創造性を増幅し需要を生成するのを支援します

データサイエンス

単一のマシンで複数のCUDAバージョンを管理する:包括的なガイド

私の以前の役職の一つでAIコンサルタントとして、仮想環境をPython環境を管理し、分離するツールとして利用するという課題が...

機械学習

「これらの完全自動の深層学習モデルは、スマートフォンの統合を使用して、猫の苦痛指標スケール(FGS)を使用した痛み予測に使用できます」

人工知能(AI)の能力は、医療、金融、教育など、あらゆる業界に広がっています。医学や獣医学の分野では、適切な治療を施す...

人工知能

「EU AI法案:AIの未来における有望な一歩か、危険なギャンブルか?」

「EU AI法案は、AIに関する最初の国際的な規制法ですそれは、AIシステムの倫理的かつ安全な開発を確保すると同時に、イノベー...