19 指数平滑法

指数平滑法アルゴリズムについて学習します。

19.1 指数平滑法について

指数平滑法は、時系列データの予測手法です。これは、指数関数的に減少する重みが過去の観察に割り当てられる移動平均法です。

指数平滑法は、半世紀以上に及ぶ予測で広く使用されています。予測は、履歴データおよびパターンに基づく予測です。preItには、戦略、戦術および操作レベルのアプリケーションがあります。たとえば、戦略的レベルでは、投資利益率、成長率、イノベーションの効果などを推定するために予測が使用されます。戦術的レベルでは、原価、在庫要件、顧客満足などを推定するために予測が使用されます。運用レベルでは、ターゲットの設定や品質および標準への適合性を予想するために予測が使用されます。

最も簡単な形式の指数平滑法は、将来の値に対して過去のレベルが指数関数的に減少する効果をモデル化する単一のパラメータによる移動平均法です。指数平滑法は、様々な拡張によって、Box-Jenkins自己回帰和分移動平均(ARIMA)法などの、他のよく知られた方法よりも幅広いクラスのモデルを扱います。Oracle Machine Learning for SQLは、理論上およびパフォーマンス上の利点を提供する単一の誤差原因(SSOE)の仮定を組み込んだ最先端の状態空間法を使用する指数平滑法を実装します。

指数平滑法は、次のように拡張されています。
  • 誤差タイプ(加法または乗法)、傾向(加法、乗法、なし)、および季節性(加法、乗法、なし)を混合して一致させるモデルの行列。

  • 減衰傾向のあるモデル。

  • 不規則な時系列や欠損値のある時系列を直接処理するモデル。

  • 複数の時系列モデル

参照:

Ord、J.K.、その他の著者による『Time Series Forecasting: The Case for the Single Source of Error State Space Approach, Working Paper』(Department of Econometrics and Business Statistics、Monash大学、VIC 3800、オーストラリア、2005年4月2日)

19.1.1 指数平滑化法のモデル

指数平滑法のモデルは、直観的で柔軟性と拡張性のある予測モデルの広範囲なクラスです。

このクラスのメンバーには、以前のレベルと現在のショックの線形結合として将来を予測する単純な単一パラメータのモデルが含まれています。拡張機能には、線形または非線形の傾向、傾向の減衰、単純または複雑な季節性、関連系列、予測式の非線形性の各種形式、および不規則時系列の処理のためのパラメータを含めることが可能です。

指数平滑法では、系列は過去に無限に続きますが、将来に対する過去の影響は平滑に指数関数的な速さで減衰すると仮定しています。減衰の平滑さの割合は、1つ以上の平滑化定数によって表現されます。平滑化定数は、モデルによって推定されるパラメータです。この仮定は、等価の再帰的定式化を使用することで現実のデータのモデリングにとって実用的なものになります。これは、過去の履歴に基づいた現在のレベルの推定値と、その推定値に対して現在の状況にのみ依存するショックに関してのみ表現されます。この手順には、最初の観測の直前の期間に対する推定が必要なり、それによって過去の履歴のすべてをカプセル化します。この最初の観測値は、モデリング手順によって値が推定された追加のモデル・パラメータです。

傾向拡張機能や季節性拡張機能などのESMの構成要素には、加法的な形式または乗法的な形式があります。より単純な加法的なモデルは、ショック、傾向および季節性が再帰的定式化の範囲内の線形効果であると仮定します。

19.1.2 単純指数平滑法

単純指数平滑法は、データが定常的な平均の付近で変動し、傾向や季節性のパターンがないことを前提としています。

単純指数平滑法モデルでは、各予測(平滑化された値)は以前の観測の加重平均として計算され、加重は平滑化定数αの値に応じて指数関数的に減少します。平滑化定数αの値が1に近い場合は、最近の観測値にほとんどすべての重みを付けます。αの値が0に近い場合は、遠い過去の観測値が大きな影響を与えるようになります。

19.1.3 傾向があり季節性がないモデル

加法的(線形の)傾向に優先される形式は、Holtのメソッドまたは二重指数平滑法と呼ばれることがあります。

傾向があるモデルには、平滑化パラメータγとオプションの減衰パラメータφを追加します。減衰パラメータにより、将来のレベルの推定値に及ぼす過去の線形傾向の影響が平滑に減衰され、多くの場合に精度が向上します。

19.1.4 季節性があり傾向がないモデル

時系列平均が時間の経過とともに変化することはなく(定常的)、季節変動の影響を受ける場合、適切なモデルには季節性パラメータがありますが、傾向パラメータはありません。

季節変動は期間mの間は均衡が取れていると仮定されます。このmは季節の数です。たとえば、m=4は、入力データが四半期ごとに集計されている場合に使用できます。加法的誤差のあるモデルの場合、季節性のパラメータの合計はゼロ(0)であることが必要です。乗法的誤差のあるモデルの場合、季節性パラメータの積は1であることが必要です。

19.1.5 傾向と季節性があるモデル

HoltおよびWintersにより、傾向と季節性の両方が指数平滑法モデルに導入されました。

元のモデル(Holt-Wintersまたは三重指数平滑法とも呼ばれる)では、加法的な傾向と乗法的な季節性が考慮されていました。拡張機能には、加法的傾向と乗法的傾向、季節性と誤差、傾向減衰の有無の各種組合せを備えたモデルが含まれています。

19.1.6 予測区間

予測区間を計算する場合、指数平滑法モデル(ESM)は3つのクラスに分割されます。

最も単純なクラスは、線形モデルのクラスです。これには、単純ESM、Holtのメソッド、加法的Holt-Wintersなどが含まれます。クラス2モデル(乗法的誤差、加法的成分)では、正規性仮定の違反が近似補正されます。クラス3モードでは、単純なシミュレーション手法を使用して予測区間が計算されます。

19.2 指数平滑法モデル用のデータの準備

指数平滑法(ESM)モデルのデータを準備する方法について学習します。

ESMモデルを構築するには、次の項目を指定する必要があります。

  • 入力データ

  • 集計レベルとメソッド(ケースIDが日付型の場合)

  • パーティション列(データがパーティション化されている場合)

また、構築プロセスをより詳細に制御するために、ユーザーは必要に応じてモデル構築パラメータを指定できます(これらすべてのパラメータにはデフォルト値が設定されています)。

  • モデル

  • 誤差タイプ

  • 最適化基準

  • 予測ウィンドウ

  • 予測範囲の信頼水準

  • 欠損値の処理

  • 入力の系統が等間隔かどうか

参照:

使用可能なモデル設定のリストと説明は、DBMS_DATA_MINING -アルゴリズムの設定: 指数平滑法モデルを参照してください。

ノート:

hyperparameterという用語は、モデル設定でも同じ意味で使用されます。

19.2.1 入力データ

時系列分析には、順序付けされた入力データが必要です。そのため、各データ行は[索引、値]のペアで構成されている必要があります。この索引により順序を指定します。

CREATE_MODELまたはCREATE_MODEL2プロシージャを使用して指数平滑法(ESM)モデルを作成する際は、CASE_ID_COLUMN_NAMEおよびTARGET_COLUMN_NAMEパラメータを使用して、入力索引および観測された時系列値の計算に使用する列をそれぞれ指定します。時間列には、Oracle数値またはOracle日付、タイムスタンプ、タイムゾーン付きタイムスタンプまたはローカル・タイムゾーン付きタイムスタンプが格納されます。ケースID列の型がOracle NUMBERである場合、モデルでは入力時系列が等間隔であるとみなされます。重要なのは順序位置のみで、数値が小さいほど後の時間を示します。特に、入力時系列についてはcase_idの値(時間ラベル)に基づいてソートされます。case_id列には、欠損値を含めることはできません。ギャップを示すには、欠損値をNULLとして値列に格納します。隣接する時間ラベルの差の大きさは関係なく、間隔やギャップのサイズの計算には使用されません。CASE_IDとして渡される整数値は、負ではないと想定されます。

ESMでは、パーティション化されたモデルもサポートされます。その場合、入力表にはパーティションを指定する追加の列が含まれています。同じパーティションIDのすべての[索引、値]ペアは、1つの完全な時系列を形成します。指数平滑法アルゴリズムでは、パーティションごとに独立したモデルが作成されますが、すべてのモデルで同じモデル設定が使用されます。

データ・プロパティによって警告通知が発生したり、設定が無視されたりすることがあります。ユーザーが乗法的傾向と乗法的季節性の両方またはどちらかを指定したモデルを設定した場合で、データに値Yt<= 0が含まれていると、モデル・タイプがデフォルトに設定されます。系列に含まれている値がユーザーが指定した季節数よりも少ない場合、季節性の指定は無視され、警告が発行されます。

ユーザーがパラメータEXSM_SERIES_LISTを使用して予測子系列のリストを選択した場合は、入力データに最大20の追加の時系列列を含めることができます。

19.2.2 累計

指数平滑法アルゴリズムでは、列が日付型(datedatetimetimestamptimestamp with timezoneまたはtimestamp with local timezone)の場合に累計手順が適用されます。

ケースIDは、NUMBER列にすることが可能です。その列のソート索引は時系列順に並んだ値の位置を表します。ケースID列は、日付型にすることも可能です。日付型は、ユーザー指定の累計ウィンドウに従って累計されます。型とは無関係に、ケースIDは列を等間隔の時系列に変換するために使用されます。ケースIDの型がNUMBERの場合、累計は適用されません。たとえば、販促イベントについて時系列について考えてみます。時間列には、各イベントの日付が含まれていて、その日付は不均等な間隔になることがあります。ユーザーは間隔区間を指定する必要があり、これが累計または変換される等間隔の時系列の間隔になります。この例では、ユーザーが区間に月を指定すると、元の時系列からカレンダ月ごとの収益が含まれた等間隔の時系列が生成されます。間隔区間の指定には、EXSM_INTERVALの設定を使用します。ユーザーは、EXSM_ACCUMULATEの値も指定する必要があります。たとえば、EXSM_ACCU_MAXを指定すると、この例の場合、等間隔の月間系列には、その月のすべてのイベントにわたる最大収益が観測された時系列値として格納されます。

19.2.3 欠損値

入力時系列には、欠損値を含めることができます。ターゲット列のNULLエントリは、欠損値を示します。時間列の型が日時の場合、累計プロシージャに欠損値を導入することもできます。欠損値の処理方法を指定するには、EXSM_SETMISSINGの設定を使用できます。特殊な値EXSM_MISS_AUTOは、系列に欠損値が含まれているときに、その系列が不規則時系列として処理されることを意味します。

ノート:

欠損値処理の設定は、モデル設定に適合している必要があります。そうでない場合は、エラーがスローされます。

19.2.4 予測

指数平滑法(ESM)モデルは、予測ウィンドウを指定することで予測に応用できます。

予測ウィンドウを指定するには、EXSM_PREDICTION_STEPの設定を使用できます。予測ウィンドウが区間数(EXSM_INTERVALの設定)で表されている場合、時間列の型は日時型になります。時間列が数値の場合、期間ウィンドウは予測するステップ数になります。時系列が定期であるか不定期であるかに関係なく、予測ウィンドウはEXSM_PREDICTION_STEPで指定します。

参照:

使用可能なモデル設定のリストと説明は、『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』を参照してください。

ノート:

hyperparameterという用語は、モデル設定でも同じ意味で使用されます。

19.2.5 パーティション単位の並列性

Oracle Machine Learning for SQLでは、パーティション単位の並列度がサポートされます。

たとえば、ユーザーは1つのパーティション列としてPRODUCT_IDを選択して、モデル・ビルドで別の製品の予測を生成できます。パーティションごとに個別の平滑法モデルがビルドされますが、すべてのパーティションが同じモデル設定を共有します。たとえば、EXSM_MODELの設定がEXSM_SIMPLEに設定されている場合は、すべてのパーティション・モデルが単純指数平滑法モデルになります。それぞれのパーティションからの時系列は、別々のプロセスに分散して並列で処理できます。時系列ごとのモデルは、逐次的にビルドされます。

19.2.6 初期値の最適化

長い季節的周期では、ESMモデルの初期値が初期推定を超えて最適化されないようにすることも選択できます。

これは標準的なESM最適化とは対照的で、標準的なESM最適化ではエラーの低減を図るため、最適化プロセス中に初期値が調整されます。初期値ではなくレベル、傾向、季節性パラメータのみを最適化することで、パフォーマンスの大幅な向上と最適化の収束速度を上げることができます。長期の季節変動が正確な予測に大きく貢献することが専門知識からわかっている場合は、このアプローチが有効です。パフォーマンス上の利点はありますが、一般的な短い季節周期では初期値の最適化を無効にすることはお薦めしません。モデルのオーバーフィットや信頼性の低い信頼限界が生じる可能性があるためです。

19.3 複数の時系列モデル

複数時系列は、時系列回帰への入力を構築するときに便利な操作です。複数時系列では共通の時間間隔を持つ複数の時系列モデルが作成され、これらを時系列回帰への入力として使用できます。時系列モデルの1つが、対象であるターゲット時系列として識別されます。

すべての時系列出力がターゲットに対して生成されます。その他の時系列は、ターゲットと相関性があるとものと想定されます。

この操作では、時系列ごとにバックキャストおよび予測が生成され、識別されたターゲット系列の信頼限界の上限と下限が計算されます。この操作は、降雨、売上、顧客満足度など、様々なイベントの予測に使用できます。

天気予報の例では、温度および湿度属性を依存または相関の時系列とみなすことができ、降雨をターゲット時系列として識別できます。

19.3.1 時系列でのバックキャスト

降雨、温度、湿度の複数時系列の例では、バックキャストは履歴データのモデルによって生成される推定です。

たとえば、降雨が湿度に依存している場合、対象期間の湿度の値があると便利です。すでに発生しており、モデルの構築に使用されている期間(先週など)には、先月からではなく先週の湿度が必要です。

19.3.2 複数時系列モデルの構築方法

Oracleの指数平滑法が拡張され、単一の時系列予測に加え、モデル構築メソッドへの単一コールで複数の時系列モデルの構築を処理できるようになりました。系列リストEXSM_SERIES_LISTを指定して、複数の時系列を構築します。残りのパラメータは、ESMモデルと同じです。

天気予報の例では、ビルド・データセットとスコア・データセットを設定できます。ビルド・データセットには、識別されたターゲット系列(雨)、依存する系列(温度および湿度)が含まれます。DM$VPモデル詳細ビューは、識別されたターゲット系列(雨)の予測を依存系列(温度と湿度)とともに表示するために使用します。DM$VRモデル詳細ビューは、ターゲット系列(雨)、湿度および温度のバックキャストを表示するために使用します。時系列モデルのバックキャストおよび予測は、一般化線形モデル、ニューラル・ネットワーク、時系列回帰用のXGBoostなどの回帰手法に供給できます。

この例のサンプル・コードでは、https://github.com/oracle-samples/oracle-db-examples/blob/main/machine-learning/sql/23c/oml4sql-time-series-regression-dataset.sqlからダウンロードして実行できる株式市場データを使用しています。

次の例では、ターゲット属性DAXは予測対象の株式市場インデックスです。一般的な株式市場インデックスであるSMI、CAC、FTSEの依存属性は、複数の系列属性として渡されます。指数平滑法設定を使用して、系列リスト(EXSM_SERIES_LIST)と複数の属性を指定し、複数時系列モデルを構築します。

  1. 複数時系列モデルを構築します。
    DECLARE
        v_setlst DBMS_DATA_MINING.SETTING_LIST;
    BEGIN
        v_setlst('ALGO_NAME')            := 'ALGO_EXPONENTIAL_SMOOTHING';
        v_setlst('EXSM_INTERVAL')        := 'EXSM_INTERVAL_DAY';
        v_setlst('EXSM_MODEL')           := 'EXSM_ADDWINTERS_DAMPED';
        v_setlst('EXSM_SEASONALITY')     := '7';
        v_setlst('EXSM_PREDICTION_STEP') := '1';
        v_setlst('EXSM_SERIES_LIST')     := 'SMI,CAC,FTSE';
          
        dbms_data_mining.create_model2(
                   MODEL_NAME          => 'MSDEMO_MODEL',
                   MINING_FUNCTION     => 'TIME_SERIES',
                   DATA_QUERY          => 'SELECT * FROM EUSTOCK',
                   CASE_ID_COLUMN_NAME => 'DATES',
                   TARGET_COLUMN_NAME  => 'DAX',
                   SET_LIST            => v_setlst);
    END;
    /
    
  2. DM$VPMSDEMO_MODELビューを使用して、予測を表示します。
    SELECTCASE_ID, VALUE, PREDICTION, UPPER, LOWERFROMDM$VPMSDEMO_MODEL;
  3. DM$VRMSDEMO_MODELビューを使用して、バックキャストを表示します。
    SELECT * FROM DM$VRMSDEMO_MODEL
    FETCH FIRST 10 ROWS ONLY;
    このモデルの出力は時系列回帰に使用されます。

19.4 時系列回帰

複数系列ビルドを使用した時系列回帰が可能です。時系列回帰は時系列モデルに組込み可能な特徴を拡張するため、予測の精度が向上する可能性があります。「ターゲット」系列に関連する、または依存すると考えられるその他の時系列を、追加の特徴にすることもできます。

温度と湿度は両方とも降雨の依存時系列であるため、これら2つの属性の履歴データを調べることで、将来の降雨を予測できます。温度が高く、湿度が高い場合、降雨の可能性が高くなります。

時系列回帰モデルでは、温度と湿度の関係、およびその他の要因(予測地点の場所と標高など)が考慮されます。このモデルでは降雨量(ターゲット系列)の予測が上限と下限とともに生成されます。たとえば、雨の確率が90%で、降雨量の上限が1インチであるとモデルが予測した場合は、雨具を準備しておくと安心です。

バックキャストを使用すると、将来の期間の予測の精度を向上できる可能性があります。予測に回帰を使用する際の課題は、予測子の将来値を指定しなければならない点です。たとえば、温度と湿度を予測子にした予測では、それらの将来値を降雨系列と同じ時系列で把握する必要があります。

参照:

Hyndman, R.J.およびAthanasopoulos, G.共著。『Forecasting: Principles and Practice』(第3版)(Department of Econometrics and Business Statistics、Monash大学、VIC 3800、オーストラリア、2021年5月、第7章)

19.4.1 時系列回帰モデルの構築方法

Oracleの指数平滑法では、将来の値をターゲット系列と同じタイム・スケールで知るという問題を、予測子の時系列を指数平滑法を使用して予測する方法で解決します。

将来期間を予測する回帰モデルを構築するには、相関系列にその将来期間の値が必要です。したがって、すべての相関系列を予測する必要があります。相関系列のバックキャストは相関系列値の平滑バージョンとして含まれており、これを回帰モデルへの入力として使用できます。ターゲット系列のバックキャストはOracle機械学習時系列モデルの標準出力の一部であるため、これらも使用できます。ターゲット系列のバックキャストも回帰モデルに含めることができます。

ビルドおよびスコア・データセットを作成することもできます。ビルド・データセットには、ターゲット系列(予測系列。例: 降雨)、バックキャストしたターゲット系列(例: バックキャストした降雨)、バックキャストした依存系列(例: バックキャストした温度および湿度)が含まれます。時系列モデルのバックキャストと予測は、どちらも回帰モデルへの入力として使用できます。系列はすべて同じ期間を使用するため、ターゲットと予測子の値が共存することになります。

スコア・データセットはビルド・データセットと同じスキーマに従いますが、将来の値に必要な予測を提供します。スコア・データセットは回帰モデルのApplyプロシージャに提供できます。バックキャストはより平滑で、予測と構造的な整合性があります。ターゲット系列のバックキャストではベースライン・モデルと比較して回帰モデルの増分的な改善が見られます。

データベースに汎用性があるため、様々な時系列回帰のバリエーションを使用できます。ビルド・データセットおよびスコア・データセットに対する環境変更や休日など、ユーザーは質的変数を考慮する要因を追加できます。複数時系列回帰では、フラグ変数を使用して、依存変数に重大な影響を及ぼす可能性のあるイベントまたは条件を考慮できます。たとえば、特定の日が祝日かどうか、または特定の月が冬の月かどうかを示すフラグ変数を使用できます。このような要因をモデルに含めると、質的変数が依存変数に与える影響を考慮できるため、予測の精度が向上します。

休日はバイナリ値列(0および1)として表すことができます。たとえば、national_holiday列は、祝日の場合は1、その他の場合は0の値になります。需要予測では、競合製品の導入など、環境で認識された変化をバイナリ値列(導入前は0、導入後は1)として示すことができます。

さらに、特殊なケースとして、依存系列の将来の値がわかっている場合は、元のビルド表に結合するデータセットを回帰ビルド・プロシージャで作成し、バックキャストを元の値に置き換えることができます。ビルド・データセットはこのユーザー作成データセットに置換されます。

次の例では、株式市場データを使用して、トレーニング、実績およびテストのデータセットを作成します。ESMと回帰の精度を比較するため、実績値の特殊ケースが予測データセットに提供されています。変数prodは質的値を考慮するフラグ変数です。これは新製品の導入など、環境の変化を示します。DM$VR<model_name>モデル詳細ビューには、時系列回帰ビルド・スキーマまたはターゲット列の予測の詳細が表示されます。

  1. ビルド/トレーニング・データセットを作成します。
    BEGIN DROP TABLE tmesm_ms_train;
    EXCEPTION WHEN OTHERS THEN NULL; END;
    /
    CREATE TABLE tmesm_ms_train as
    SELECT CASE_ID, DAX, DM$DAX, DM$SMI, DM$CAC, DM$FTSE,
           CASE WHEN case_id < to_date('1998-02-03','YYYY-MM-DD')
           THEN 0 ELSE 1 END AS prod
    FROM DM$VRMSDEMO_Model order by 1;
  2. 実際のデータセットを作成します(これは、依存系列の将来の値がわかっている特殊なケース・シナリオです)。
    BEGIN EXECUTE IMMEDIATE 'DROP TABLE tmesm_ms_actual';
    EXCEPTION WHEN OTHERS THEN NULL;
    END;
    /
    CREATE TABLE tmesm_ms_actual (case_id DATE, DAX binary_double);
    INSERT INTO tmesm_ms_actual VALUES(DATE '1998-02-04', 4633.008);
    commit;
  3. 表を問い合せると、次の結果が表示されます:
    select * from tmesm_ms_actual;
    CASE_IDおよびDAX4633.00が表示されます。
  4. テスト・データセットを作成します。
    BEGIN EXECUTE IMMEDIATE 'DROP TABLE tmesm_ms_test';
    EXCEPTION WHEN OTHERS THEN NULL; END;
    CREATE TABLE tmesm_ms_test as
    SELECT a.case_id, b.DAX, DM$DAX, DM$SMI, DM$CAC, DM$FTSE, 1 prod
    FROM   DM$VTMSDEMO_model a, tmesm_ms_actual b
    WHERE  a.case_id=b.case_id;

    出力には、プロシージャが正常に完了し、tmesm_ms_test表が作成されたことが示されます。

  5. トレーニング・データセットを使用して、GLM時系列回帰モデルを作成します。
    SET echo OFF;
    BEGIN DBMS_DATA_MINING.DROP_MODEL('MS_GLM_MODEL');
    EXCEPTION WHEN OTHERS THEN NULL; END;
    /
    SET echo ON;
    DECLARE
        v_setlst DBMS_DATA_MINING.SETTING_LIST;
    BEGIN
        v_setlst('ALGO_NAME')          := 'ALGO_GENERALIZED_LINEAR_MODEL';
         
        DBMS_DATA_MINING.CREATE_MODEL2(
                   MODEL_NAME          => 'MS_GLM_MODEL',
                   MINING_FUNCTION     => dbms_data_mining.regression,
                    DATA_QUERY         => 'SELECT * FROM tmesm_ms_train',
                   CASE_ID_COLUMN_NAME => 'CASE_ID',
                   TARGET_COLUMN_NAME  => 'DAX',
                   SET_LIST            => v_setlst);   
    END;
    /
  6. モデル詳細ビューを表示してモデルを分析します。
    SELECT VIEW_NAME, VIEW_TYPE
    FROM   USER_MINING_MODEL_VIEWS
    WHERE  MODEL_NAME='MSDEMO_MODEL'
    ORDER BY VIEW_NAME;
  7. バックキャストを表示します。
    SELECT *
    FROM   DM$VRMSDEMO_MODEL
    ORDER BY CASE_ID
    FETCH FIRST 10 ROWS ONLY;
  8. 予測を表示します。
    SELECT *
    FROM DM$VTMSDEMO_MODEL
    ORDER BY CASE_ID
    FETCH FIRST 10 ROWS ONLY;

    さらに、ベースライン(ESM)予測を回帰予測と比較できます。

    完全な例は、https://github.com/oracle-samples/oracle-db-examples/tree/main/machine-learning/sql/23cからoml4sql-time-series-regression.sqlにアクセスして表示できます。