時系列データのクレンジング|5つの手法と失敗しないポイント

時系列データのクレンジング|5つの手法と失敗しないポイント

設備の稼働ログや売上の推移、電力の消費量など、時間の流れに沿って記録されるデータは、分析や予測の土台となる存在です。ところが記録の抜けやタイムスタンプの乱れを放置したまま分析へ進むと、予測モデルが誤った学習をしてしまいます。

時系列データのクレンジングは、欠けた値を埋めるだけの単純な作業ではありません。時間軸そのものを整え、各時点の値が持つ前後の関係を壊さずに整えていく工程なのです。

本記事では、時系列データに特有の品質問題から、代表的な5つのクレンジング手法、実務での進め方、現場で起きやすい失敗までを具体的に整理しました。読み終えたあとに、自社のデータへ何から着手すべきかを判断できる状態を目指しています。手順の設計や見直しの出発点として役立ててください。

目次

時系列データのクレンジングが分析精度を左右する理由

時系列データは、各時点の値が互いに独立していないという点で、通常の表形式データとは扱いが大きく異なります。この前提を理解しないままクレンジングを進めると、かえって分析の精度を下げてしまうことがあるのです。ここでは時系列データならではの特性と、品質の低さが予測や異常検知へどう波及するのかを順に整理していきましょう。

時系列データの特性:各時点の値が時間的な依存関係を持つ

時系列データの最大の特徴は、ある時点の値が直前や過去の値と強く結びついている点にあります。たとえば店舗の売上は前日や前週の傾向を引きずりますし、気温も前の時刻からなだらかに移り変わるものです。こうした前後のつながりを無視して行を並べ替えたり欠損をランダムに埋めたりすれば、データ本来のリズムそのものが壊れてしまいます。統計の世界では平均や分散が時間によって変わらない状態を定常性と呼び、多くの分析手法はこの定常性を前提に組み立てられているのです。

この依存関係があるために、時系列データのクレンジングでは行を消したり値を置き換えたりする操作の一つひとつが、後続の時点へと波及します。1件の外れ値を安易に除去しただけで、その周辺の移動平均やトレンドの推定値まで変わってしまう点には注意が必要でしょう。作業に入る前には、対象データが日次なのか秒単位なのか、季節性を持つのかどうかといった性質を先に把握しておくと、処理の判断を誤りにくくなります。粒度や季節性を先に把握しておくと、最初の判断がぶれずに済むのです。

一般的なデータクレンジングとの違い:行の独立性を前提にできない

顧客マスタや商品リストのような一般的なデータでは、各行が独立した1件の記録として扱えます。並べ替えても重複を削除しても、1行が持つ意味は変わりません。ところが時系列データでは行の順序そのものが情報を持つため、同じ感覚で処理すると分析結果が崩れてしまうのです。行単位で完結する処理と、時間軸全体を見ながら進める処理は、設計思想からして別物だと考えておくとよいでしょう。順序が意味を持つ以上、処理の順番そのものを設計対象として扱う意識を持っておきたいところです。

この違いは、欠損の埋め方に最もはっきりと現れます。一般的なクレンジングでは平均値や最頻値での一括補完がよく使われますが、時系列では前後の値や傾向を踏まえた補間を選ばなければ、時間的な連続性が失われます。行の独立性を前提にできないことこそ、時系列データのクレンジングを難しくしている本質です。処理の目的が見た目を整えることではなく、時間構造を保つことにある点を最初に押さえておきましょう。見た目より時間構造を優先するという発想が、時系列では一貫して求められます。

データクレンジングとは?意味と代表手法を解説!

品質の低いデータが予測や異常検知に与える影響

品質の低い時系列データは、予測モデルの精度を静かに、しかし確実に蝕みます。たとえば欠損を安易にゼロで埋めると、その時点だけ需要が急減したように見え、モデルは誤ったパターンを学習してしまうでしょう。タイムスタンプの重複や順序の逆転が混じっていれば、特徴量の計算そのものがずれ、後段の精度検証も信頼できなくなります。誤差はモデルの学習段階で静かに増幅し、運用に入ってから初めて表面化することも多いのです。

異常検知の場面では、この影響がさらに深刻になるものです。ノイズと本物の異常が区別できないデータでは、誤検知が増えて現場のアラート疲れを招き、やがて警報そのものが無視される事態へ陥ります。クレンジングの巧拙は、モデルの選択やチューニング以上に最終的な精度を左右します。土台となるデータの品質を軽視したまま高度な手法へ進んでも、期待した成果は得られにくいものです。だからこそ、精度の議論はデータ品質の点検から始めるのが筋といえるでしょう。

データ品質とは?品質評価項目や品質を向上させるための実務的対策を解説

時系列データに生じやすい4つの品質問題

時系列データの品質問題は、大きく4種類に整理できます。タイムスタンプの不備、欠損値、外れ値とノイズ、そして時間間隔の不揃いです。いずれも発生源や記録の仕組みに起因することが多く、原因を突き止めないまま対症療法を重ねても再発します。以下では、それぞれの問題がどのように現れ、どこに注意すべきかを具体的に見ていきましょう。

  • タイムスタンプの不備:重複・順序の逆転・タイムゾーンの混在
  • 欠損値:センサー停止や通信障害による記録の抜け
  • 外れ値とノイズ:測定誤差と実際の変動の混在
  • 時間間隔の不揃い:記録頻度が発生源ごとに異なる状態

タイムスタンプの不備:重複・順序逆転・タイムゾーンの混在

タイムスタンプの不備は、複数のシステムからデータを集めるほど起こりやすくなります。よくあるのが、同じ時刻のレコードが二重に記録される重複、記録順が前後する順序の逆転、そして日本時間とUTCが混在するタイムゾーンのずれです。とくに海外拠点やクラウドサービスのログを扱う場合、UTCで保存された時刻を現地時間と誤認したまま集計してしまう失敗が後を絶ちません。集計結果が想定と食い違うときは、時刻の扱いをまず疑ってみるとよいでしょう。

対処の第一歩は、時刻の表現を1つの基準へ統一することにあります。実務では、Pythonのpandasでpd.to_datetime関数を使うのが定番でしょう。utc=Trueで一度UTCへそろえ、tz_convertで分析に使う時間帯へ変換する流れが扱いやすいはずです。重複はdrop_duplicatesで時刻キーを基準に除き、並びはsort_valuesで時刻順に整えます。この3つを最初に済ませておけば、後続の処理が驚くほど安定します。

欠損値:センサー停止や通信障害による記録の抜け

欠損値は、時系列データで最も頻繁に遭遇する品質問題です。センサーの電源断、通信の瞬断、バッチ処理の失敗など、原因はさまざまでしょう。厄介なのは、欠損が値そのものが無い形ではなく、その時刻の行ごと存在しない形で現れる場合がある点です。行が抜け落ちていると欠損として認識すらされず、集計時に件数が合わずに初めて気づくことも珍しくありません。件数の突き合わせを習慣にしておくと、隠れた欠損を早い段階で拾い上げられるでしょう。

対策として重要になるのは、まず本来あるべき時刻の一覧を作り、実データと突き合わせて抜けを洗い出すことにあります。pandasならdate_rangeで理想的な時間軸を生成し、reindexで実データを当てはめると、欠損箇所がNaNとしてはっきり明示されるのです。欠損は埋める前に、その発生メカニズムを確認することが精度を分ける分岐点になります。停止や障害の記録が残っていれば、後の補完方法を選ぶ手がかりにもなるでしょう。

データ収集の重要性と技術的方法&よくある課題と対応策を解説

外れ値とノイズ:測定誤差と実際の変動の混在

外れ値とノイズは似て見えますが、その性質は異なります。ノイズは測定機器の微細な揺らぎのように常時混じる小さな誤差で、外れ値は突発的に大きく外れた値を指すのが一般的でしょう。難しいのは、その大きな値がセンサーの誤作動なのか、実際に起きた急変なのかを、データだけからは判別しづらい点にあります。設備の異常やキャンペーンによる需要の急増は、外れ値のように見えて実は貴重な情報です。両者を同じ処理でまとめて消すと、大切な信号まで失いかねないのです。

この見極めを誤ると、本物の異常を測定誤差として消し去り、検知すべき兆候まで失う事態を招きます。実務では、まず箱ひげ図や散布図で値の分布と時間的な位置を目視し、機械的に除去する前になぜその値が出たのかを業務側へ確認する手順を挟むと安全でしょう。どうしても自動処理が必要な場合でも、除去ではなくフラグを立てて残す方針にしておけば、後から検証し直せます。自動と手動のバランスをとりながら、判断の根拠を残す運用を組んでおきたいところです。

時間間隔の不揃い:データ発生源ごとに異なる記録頻度

複数のデータソースを組み合わせると、記録の間隔がそろわないという問題が生じます。ある機器は1秒ごと、別の機器は5分ごと、手入力のデータは日次といった具合に、頻度がばらばらな状態です。このまま結合すると、時刻がわずかにずれた行同士が別レコードとして並び、対応関係を見失ってしまいます。時間間隔の不揃いは、後続のリサンプリングや特徴量作成の前に必ず解消しておきたい問題でしょう。結合の前に各系列の記録間隔を一覧化しておくと、ずれの原因を早く特定できます。

対処の判断基準はシンプルです。分析で使いたい最小の時間粒度を先に決め、それより細かいデータは集約し、粗いデータは補間して、全系列を同じ時間軸へそろえます。たとえば需要予測を1時間単位で行うなら、秒単位の計測値は1時間ごとの平均や合計へまとめ、日次のデータは各時間へ配分するといった整理が必要になるでしょう。粒度をそろえてから結合する順序を守るだけで、後の手戻りが大きく減ります。粒度をそろえる順序さえ守れば、以降の結合や集計は驚くほど素直に進むものです。

時系列データクレンジングの代表的な5つの手法

品質問題の全体像を押さえたところで、具体的な対処手法へ進みます。ここで取り上げるのは、タイムスタンプの整備、外れ値の検出と処理、欠損値の補完、リサンプリング、平滑化という5つの柱です。どれか1つだけで完結するものではなく、データの状態に応じて組み合わせて使うのが実務の基本になります。それぞれの手法が向く場面と、選ぶ際の判断材料を具体的に解説していきましょう。

タイムスタンプの整備:形式の統一と時間軸の再構築

5つの手法の中で、最初に着手すべきなのがタイムスタンプの整備です。時間軸が定まっていないと、外れ値検出も欠損補完も基準を持てず、砂上の楼閣になってしまいます。具体的には、文字列で記録された日時をdatetime型へ変換し、タイムゾーンを統一し、重複や順序の乱れを取り除いて、抜けのない連続した時間軸を作り直す作業です。地味ですが、ここでの丁寧さが後工程の精度を大きく決めます。急がば回れの典型で、時間軸を固める投資は後の工程で必ず回収できます。

現場でよくあるつまずきは、日付形式の混在です。同じ列に複数の日付表記が混じっていると、単純な変換ではエラーになったり、月と日を取り違えたりするのです。pandasのpd.to_datetimeにはformat引数やerrors='coerce'があり、変換できない値をいったんNaTとして洗い出せます。想定外の形式をエラーで止めず、まず全体を可視化して把握する姿勢が整備の質を左右します。変換に失敗した件数を最初に数えておくと、対応の見通しが立てやすくなるでしょう。

外れ値の検出と処理:統計的手法と時系列モデルの活用

外れ値の検出には、大きく分けて統計的な手法と時系列モデルを使う手法があります。統計的手法は、平均から標準偏差の何倍離れているかを見るZスコアや、四分位範囲を使うIQR法が代表的でしょう。一方の時系列モデルは、ARIMAやProphetなどで各時点の予測値を出し、実測値との差が大きい点を外れ値と判定します。データに強い季節性やトレンドがある場合は、後者のほうが誤検知を抑えやすくなります。検出はゴールではなく、その後どう扱うかまでを見据えて選ぶのが実務の勘所です。

どちらを選ぶかは、データの性質と分析の目的で決まります。季節変動が小さく分布が安定したデータなら、計算が軽く導入も速い統計的手法で十分でしょう。周期性やトレンドが強いデータでは、予測値との差分を見る時系列モデルのほうが誤検知を抑えられます。判断に迷う場合は、まず軽い統計的手法から試し、精度が足りなければモデルへ移る二段構えが安全な入り口でしょう。選定の判断材料になるよう、それぞれの特徴と注意点を以下の表へ整理しました。

手法

仕組み

向いているデータ

注意点

Zスコア

平均と標準偏差からの乖離で判定

分布が正規に近く定常なデータ

季節性やトレンドに弱い

IQR(四分位範囲)

中央値まわりの散らばりで判定

外れ値の影響を抑えたい場合

周期変動を外れ値と誤認しやすい

移動中央値・Hampel

一定窓内の中央値からの乖離で判定

局所的なスパイクを除きたい場合

窓幅の設定で結果が変わる

予測残差(ARIMA等)

モデル予測値と実測の差で判定

季節性やトレンドが明確なデータ

モデル構築の工数がかかる

工数の目安として、ZスコアやIQRは数十行のコードで即日試せますが、ARIMAやProphetを使う場合はパラメータ調整に数日を見込んでおくと安心でしょう。まずは軽い統計的手法で当たりをつけ、精度が足りなければモデルベースへ切り替える進め方が現実的です。検証データで両者の検出結果を突き合わせておくと、除去や補正の判断に自信が持てます。外れ値の一覧は業務担当とも共有し、消してよい値かどうかを確認する一手間を挟んでおきましょう。

箱ひげ図とは?外れ値の見方やExcelでの作成方法まで徹底解説

欠損値の補完:前方補完・線形補間・移動平均の使い分け

欠損値の補完には複数の方法があり、データの動き方によって最適解が変わります。値がしばらく一定に保たれる性質のデータなら、直前の値をそのまま引き継ぐ前方補完が自然でしょう。なだらかに増減する連続量であれば、前後の値を直線で結ぶ線形補間が向いています。細かな変動を含みつつ大枠の傾向を残したい場合は、移動平均による補完が候補になります。どの方法も万能ではないため、データの動きを一度グラフで確かめてから選ぶのが確実です。

使い分けの判断基準を、欠損の状況とあわせて整理しました。補完はあくまで推定にすぎず、欠損率が高い区間を無理に埋めると、実態とかけ離れた値が紛れ込む点には注意が必要です。まずは欠損の割合と連続する長さを数え、それに応じて方法を選ぶ流れを基本にするとよいでしょう。処理を始める前に、欠損の割合と分布をひととおり確認しておくと選択に迷いません。各方法の長所と短所は、次の表で見比べられるようにまとめています。

補完方法

適したデータ

目安の欠損率

主なリスク

前方補完(ffill)

在庫数や設定値など変化が少ない量

短い連続欠損

変化点を見逃す

線形補間

気温など連続的な計測値

欠損率5%未満が目安

急変時に実態とずれる

移動平均補完

ノイズを含む連続量

散発的な欠損

窓幅で滑らかさが変わる

補完せず区間除外

欠損率20%超の区間

大きな欠落

使えるデータ量が減る

欠損率が5%未満なら線形補間、20%を超えるなら補完よりも要因調査を優先するといった目安を、あらかじめチームで決めておくと判断がぶれません。pandasではinterpolate(method='time')が時刻間隔を考慮した補間を行うため、間隔が不揃いなデータでも扱いやすいでしょう。補完後は必ず元データと重ねて描き、埋めた値が周囲と不自然につながっていないかを目視で確かめましょう。自動化する場合も、この確認だけは人の目を残しておくと安心です。

リサンプリング:時間粒度を分析目的に合わせて統一する

リサンプリングは、データの時間粒度を分析の目的に合わせて変換する手法です。細かい粒度を粗くまとめるダウンサンプリングと、粗いデータを細かく分けるアップサンプリングの2方向があります。たとえば秒単位の計測値を1分ごとの平均へまとめたり、日次の売上を時間帯へ按分したりする処理が該当するでしょう。分析の目的が決まれば、必要な粒度は自然と定まってきます。粒度を変えると1件あたりの意味も変わるため、変換後の値が何を表すかを常に意識しておきましょう。

実装はpandasのresampleメソッドが中心になります。頻度を指定したうえで、ダウンサンプリングでは平均や合計、アップサンプリングでは前方補完や補間を続けて呼び出す形です。どの集約関数を選ぶかで意味が変わるため、平均が適切か合計が適切かを指標ごとに見極める必要があります。売上なら合計、気温なら平均というように、指標の性質に沿って選びましょう。集約の前後で件数と合計値をログに残しておくと、意図しない取りこぼしにすぐ気づけます。

平滑化によるノイズ除去:移動平均とフィルタリングの適用

平滑化は、細かなノイズをならして本質的な動きを見やすくする手法です。最も手軽なのは一定期間の平均を取る移動平均で、窓幅を広げるほど滑らかになりますが、その分だけ変化への反応は鈍くなります。より高度な方法として、加重移動平均や指数平滑、信号処理で使われるSavitzky-Golayフィルタなども選択肢に入るでしょう。目的に応じて滑らかさと応答性のバランスを取るのが要点です。対象データの周期を見てから強さを決めるのが、かけすぎを防ぐコツになります。

現場でよくある失敗は、平滑化のかけすぎです。ノイズを消したい一心で窓幅を大きくしすぎると、異常の兆候や急な立ち上がりまでならされ、検知すべき変化が見えなくなってしまいます。窓幅は、まず小さめの値から試し、対象が持つ周期の数分の一を目安に少しずつ広げていくと過剰処理を防げるでしょう。平滑化後のデータは分析用に別途保持し、元のデータには手を加えないのが安全です。処理の前後を並べて描き、消えた変動が無いかを毎回点検する癖をつけておきたいものです。

時系列データクレンジングの進め方5ステップ

手法を個別に理解したら、それらを実務の流れへ落とし込みます。時系列データのクレンジングは、目的の定義から始めて可視化、時間軸の整備、外れ値と欠損の処理、そして自動化へと進む5つのステップで捉えると迷いにくくなります。順序には意味があり、飛ばすと後戻りが増えるものです。ここからは各ステップで何をどう判断するかを、具体的な作業とともに示していきます。

STEP1:分析目的と必要な時間粒度を定義する

最初のステップは、クレンジングそのものではなく目的の明確化です。何を予測したいのか、どの粒度で意思決定するのかが決まらなければ、必要な前処理も判断できません。日次で在庫を発注するのに秒単位のデータを整えても労力の無駄ですし、逆に異常検知には秒単位の粒度が欠かせない場合もあります。ゴールから逆算して必要な粒度を先に決めることが、以降のすべての判断基準になるのです。目的が曖昧なまま整えても、後で粒度をやり直す二度手間になりやすいのです。

この段階で、関係者と合意しておきたい観点を書き出しておくと、後の迷いが減ります。具体的には、対象期間、目標とする時間粒度、許容できる欠損の割合、外れ値の扱い方針、そして最終的なアウトプットの形です。これらを1枚のメモにまとめておくだけで、処理の途中でそもそも何のためだったかと立ち止まる場面が大きく減るでしょう。目的が曖昧なまま手を動かすのが、最も避けたい進め方です。合意した観点は文書に残し、途中で判断が揺れたときの拠りどころにしておきましょう。

STEP2:データを可視化して品質問題を洗い出す

目的が定まったら、いきなり処理へ進む前にデータを可視化します。折れ線グラフで全期間を描くだけで、欠損による途切れ、突発的なスパイク、記録が止まっている区間などが一目で見えてきます。数値の一覧を眺めているだけでは気づけない異常が、グラフにすると驚くほどはっきり浮かび上がるものです。可視化は品質問題の地図を描く作業であり、以降の処理の優先順位を決める土台になります。最初のグラフ1枚が、その後の作業計画をほぼ決めてしまうといっても過言ではありません。

実務では、matplotlibやplotlyで時系列プロットを描き、欠損箇所を色分けして重ねると効果的でしょう。ヒストグラムで値の分布を確認し、月別や曜日別に集計して季節性の有無も見ておきましょう。処理を始める前に全体像をつかんでおくことが、無駄な手戻りを防ぐ最大の近道になります。ここで見つけた問題を一覧にしておけば、次のステップ以降の作業計画がそのまま立てられます。気づいた点はスクリーンショットとメモで残し、処理後の比較材料にしておくと便利です。

データ可視化とは?その重要性や手法、よくある課題と解決策を解説

STEP3:タイムスタンプを整備して時間軸を確定する

品質問題が見えたら、まずタイムスタンプの整備で時間軸を確定させます。ここを固めないと、外れ値検出も欠損補完も基準がぶれてしまうためです。作業は、datetime型への変換、タイムゾーンの統一、重複の除去、順序の整列、そして理想的な時間軸への再配置という順で進めます。この段階を終えた時点で、データは連続した正しい時間の器へ整っている状態が理想でしょう。ここを丁寧に固めるほど、後続の外れ値処理や補完が安定して進むようになるのです。

確定した時間軸は、以降の全処理の共通基盤になります。ここで一度reindexして抜けのない時間軸を作っておくと、欠損が明示的なNaNとして現れ、後の補完がずっと扱いやすくなるのです。逆にこの整備を省くと、欠損が行の不在として隠れたまま処理が進み、集計の段になって件数の不整合に気づく羽目になります。時間軸の確定は、遠回りに見えて最短のルートだと考えておきましょう。面倒でも最初に時間軸を作り切ることが、結果的に総作業時間を縮める近道になります。

STEP4:外れ値を処理してから欠損値を補完する

4つ目のステップでは、外れ値の処理を欠損補完よりも先に行います。順序が逆になると、外れ値に引きずられた不正確な値で欠損を埋めてしまい、誤差が周囲へ広がるためです。たとえば移動平均で欠損を補完する場合、近くに外れ値が残っていると、その影響が補完値へそのまま反映されてしまいます。処理には正しい順番があり、この一手間が全体の精度を左右するのです。順番を守るだけで精度が変わるため、慣れないうちはこの流れを手順書に明記しておきましょう。

具体的な手順は、まず外れ値を検出してフラグを立て、明らかな誤りだけを除去または補正します。そのうえで、生じた欠損ともともとの欠損をまとめて、STEP1で決めた方針に沿って補完する流れです。外れ値を処理してから欠損を埋めるという順序を守るだけで、補完の精度は目に見えて安定します。作業ログには、どの時点にどの処理を適用したかを併せて残しておきましょう。処理の順序を逆にした場合との差を一度試すと、この手順の効果を実感できるでしょう。

STEP5:処理ルールを記録しパイプラインとして自動化する

最後のステップは、ここまでの処理を再現可能な形へ落とし込むことです。手作業で一度きれいにしても、翌月に新しいデータが届けば同じ作業を繰り返すことになります。適用したルールをコードとして記述し、パイプラインとして自動化しておけば、同じ品質のクレンジングを何度でも再現できるのです。属人化を防ぐうえでも、処理の自動化は投資に見合う価値があります。一度組んだ仕組みは、担当者が替わっても同じ品質を保つ資産になるでしょう。

自動化の実装では、pandasの処理関数を工程ごとに分け、設定値を外出しにしておくと保守しやすくなります。処理の各段階で件数や欠損率をログに出力しておけば、データの傾向が変わったときにも異常に気づけるでしょう。小さなスクリプトから始め、安定してきたらAirflowなどのワークフローツールへ載せ替える段階的な進め方が現実的です。いきなり大きな仕組みを作ろうとせず、動くものを少しずつ育てていきましょう。

クレンジングの精度を高める4つの実践ポイント

基本の流れを押さえたうえで、精度をもう一段引き上げるための実践的な観点を4つ紹介します。取り上げるのは、リーケージの回避、異常検知時の外れ値の扱い、季節性やイベント要因の考慮、そして元データの保持と記録です。いずれも手法を知っているだけでは見落としがちで、実際に運用して初めて効いてくる勘所になります。順に、なぜ効くのかと具体的な対策をあわせて解説していきましょう。

補完や正規化で未来の情報を参照しない:リーケージの回避

予測モデルを扱ううえで最も注意したいのが、リーケージの混入です。リーケージとは、本来その時点では知り得ない未来の情報が、前処理を通じて特徴量へ紛れ込んでしまう現象を指します。たとえば全期間の平均で正規化したり、後方の値も使う中心移動平均で平滑化したりすると、未来の情報が過去のデータへ漏れ出してしまうのです。検証時の精度は高く見えても、本番では再現できない典型的な落とし穴でしょう。検証で好成績が出たときこそ、未来の情報が漏れていないかを疑う姿勢が求められます。

回避の基本は、各時点の処理にはその時点までの情報しか使わないという原則を徹底することです。正規化のパラメータは学習期間だけから計算し、移動平均は過去方向のみを見る形にそろえます。未来の情報を参照していないかを、前処理の一つひとつについて確認する習慣が精度の信頼性を支えます。時系列データの検証では、期間を区切って過去で学習し未来で評価する方法を守りましょう。学習と検証の期間を時系列順に分けるだけでも、多くの漏れは未然に防げるものです。

異常検知が目的なら外れ値を安易に除去しない

外れ値の扱いは、分析の目的によって正反対になります。需要予測のように全体傾向をとらえたい場合は、外れ値がノイズとして働くため除去や補正が有効でしょう。ところが異常検知が目的なら、その外れ値こそが見つけたい対象であり、安易に消してしまえば本末転倒です。同じ外れ値でも、目的次第で除くべきものにも守るべきものにも変わります。同じデータでも用途を分けて二通りに持っておくと、目的ごとに最適な扱いができます。

判断に迷ったら、外れ値を消すのではなく印をつけて残す方針を基本にすると安全です。フラグ列を追加して外れ値の位置を記録しておけば、予測用にはフラグ付きの点を除いたデータを、異常検知用にはフラグそのものを教師情報として活用できます。一度削除したデータは二度と戻らないため、除去は最終手段と位置づけるのが賢明でしょう。まずは残す前提で設計しておきましょう。削除ではなくフラグで残す設計は、後からの方針転換にも柔軟に対応できる利点があります。

季節性やイベント要因を踏まえて補完方法を選ぶ

補完方法を選ぶときは、データが持つ季節性やイベント要因を必ず考慮します。曜日や月による周期を持つデータを単純な直線補間で埋めると、本来あるはずの山や谷がならされ、パターンが崩れてしまうものです。たとえば小売の売上は週末に伸びる傾向があり、平日の値で週末の欠損を線形補間すれば、実態より低い値が入り込みます。季節性を無視した補完は、それ自体が新たな歪みを生むのです。曜日や祝日の効果を無視した補完は、繁忙期の予測を大きく外す一因になります。

対策として有効なのは、季節成分を分けてから補完する考え方です。STL分解などで時系列をトレンド・季節・残差に分け、季節パターンを踏まえた値で欠損を埋めると、周期性を保ったまま補完できます。連休やセール、設備点検といった一時的なイベントは、カレンダー情報を別途持たせておき、通常期と区別して扱うと精度が上がるでしょう。要因を織り込むほど、補完は実態に近づいていきます。イベントカレンダーを整えておくと、翌年以降の補完精度も継続して高められます。

元データを保持し処理内容を記録に残す

どれほど丁寧にクレンジングしても、処理には必ず判断と加工が伴います。だからこそ、加工前の元データは必ず別に保持しておくことが鉄則です。補完や除去の判断が後から誤りだと分かっても、元データさえ残っていればいつでもやり直せます。上書き保存で元データを失うと、検証も再現もできなくなり、分析全体の信頼性が根本から揺らいでしまうでしょう。原本を一つ確保しておくだけで、判断のやり直しにかかる心理的な負担も大きく減ります。

あわせて、どの時点にどんな処理を、なぜ適用したかを記録に残しておきます。補完の方法、外れ値の判定基準、除外した区間とその理由をログやコメントとして残せば、第三者がレビューでき、数か月後の自分も判断を追えるのです。元データの保持と処理の記録は、クレンジングの再現性と説明責任を同時に支える土台になります。地味な作業ですが、ここを省くと後で必ず困る場面が来ます。記録の粒度は、後から第三者が同じ結果を再現できる水準を目安にするとよいでしょう。

時系列データクレンジングでよくある失敗パターン

最後に、時系列データのクレンジングで繰り返し起こりがちな失敗を4つ取り上げます。いずれも知識としては理解していても、作業に追われるとつい見落としてしまうものばかりです。事前にやってはいけないことを知っておくだけで、大きな手戻りや誤った分析結果を避けられます。自分の作業を振り返るチェックリストとして読んでみてください。

欠損の発生メカニズムを確認せず一律に補完してしまう

最も多い失敗が、欠損の理由を確かめないまま機械的に補完してしまうケースです。センサーの停止で値が無いのか、通信障害で一時的に抜けたのか、そもそも計測対象が存在しなかったのかで、適切な埋め方はまったく変わります。埋め方を決める前に、なぜ欠けたのかを一言で説明できるかを自問してみるとよいでしょう。説明できないなら、補完はいったん保留にするのが安全な判断です。原因が特定できた欠損だけを、方法を選んで丁寧に埋めていくのが望ましいといえます。

回避策は、補完の前に欠損の分布と発生パターンを必ず確認する一手間を挟むことです。特定の時間帯や機器に欠損が集中していないか、連続して長期間抜けていないかを見るだけで、原因の見当がつきます。欠損には理由があり、その理由に応じて埋め方を変えることが正確なクレンジングの前提になります。理由が分からない欠損は、無理に埋めずに区間ごと分析から外す判断も選択肢に入れておきましょう。欠損の原因区分を列として持たせておくと、補完方法の自動振り分けにも使えて便利です。

タイムゾーンやサマータイムの混在を見落とす

グローバルにデータを扱う現場で多いのが、タイムゾーンやサマータイムの取り違えです。UTCで保存されたログを現地時間と思い込んで集計すると、ピークの時間帯が数時間ずれ、まったく違う結論を導いてしまいます。時刻はいったんUTCで統一し、表示や集計の直前だけ現地時間へ直す設計にしておくと、こうした取り違えを根本から防げます。切り替え日の前後は、件数の点検を忘れないようにしましょう。時刻の基準を1か所へ統一する運用が、この種の事故を最も確実に減らします。

対策は、データを取り込んだ直後にタイムゾーンを明示的にそろえてしまうことです。すべての時刻をいったんUTCへ統一し、分析や表示の直前にだけ目的の時間帯へ変換する運用にすれば、混在による事故はほぼ防げるでしょう。サマータイムを持つ地域のデータでは、切り替え日を含む期間の件数を必ず点検し、重複や欠落が無いかを確かめておきましょう。時刻の扱いは、疑わしきは統一が鉄則です。海外拠点を含む案件では、各データの時刻がどの基準かを取り込み時に必ず記録しておきましょう。

ダウンサンプリングで重要な変動を潰してしまう

粒度をそろえるためのダウンサンプリングにも、落とし穴があります。細かいデータを平均でまとめると処理は軽くなりますが、その過程で短時間のスパイクや急変が平均に吸収され、消えてしまうのです。設備の一瞬の異常や、数分だけ現れる需要の山は、粗い粒度に丸めた時点で見えなくなります。分析に必要な変動まで潰していないか、集約の前に立ち止まって考える必要があるでしょう。軽くする目的の処理が、肝心の情報まで削っていないかを毎回問い直す必要があるのです。

回避のコツは、集約するときに平均だけでなく最大・最小や標準偏差も同時に残しておくことです。1時間ごとにまとめる場合でも、平均に加えてその時間内の最大値を別列に持たせておけば、スパイクの痕跡を失わずに済みます。どの情報を残しどの情報を捨てるのかを、目的に照らして意図的に決めることが集約の勘所です。異常検知が目的なら、平均よりも極値のほうが重要になる場面も少なくありません。平均・最大・最小をまとめて残す集約は、後から用途が変わっても対応できる保険になります。

平滑化のかけすぎで異常の兆候まで失われる

ノイズを消そうとするあまり、平滑化を強くかけすぎる失敗もよく見られます。窓幅の広い移動平均をかけると、データは美しく滑らかになりますが、その裏で急な立ち上がりや小さな異常の兆候までならされてしまうのです。見た目の綺麗さと情報の保存は、しばしばトレードオフの関係にあります。滑らかすぎるグラフは、むしろ何かを隠している可能性を疑ったほうがよいでしょう。滑らかで綺麗なグラフほど、何を捨てた結果なのかを一度立ち止まって確かめたいものです。

適切な強さを見極めるには、平滑化の前後を必ず重ねて表示し、消えてしまった変動が無いかを目で確かめることです。窓幅は小さめから始め、対象が持つ周期の数分の一を上限の目安にすると、かけすぎを防ぎやすくなります。異常検知が目的の場合は、平滑化そのものを最小限にとどめ、ノイズ除去は検知アルゴリズム側で吸収する設計も検討しましょう。目的に対して処理が過剰になっていないかを、常に問い直す姿勢を持ちたいものです。

業界別に見る時系列データクレンジングの改善事例

ここまでの手法や注意点が、実際の現場でどう効いてくるのかを業界別の事例で見ていきます。製造業、小売業、エネルギー業という3つの領域を取り上げ、どんな品質問題に対してどのクレンジングを施し、何が改善したのかを具体的に追いかけます。自社の状況に近い例を、自分たちへの当てはめの手がかりにしてみてください。

製造業:センサーデータの整備で設備異常の検知精度を改善

製造業では、設備に取り付けた多数のセンサーから、振動や温度、電流値などが秒単位で送られてきます。ある工場では、通信の瞬断による欠損とセンサー誤作動によるスパイクが混在し、設備異常の予兆をとらえるモデルの誤検知が多発していました。アラートが頻発するあまり現場が警報を軽視し始め、本当の異常を見逃しかねない状況に陥っていたのです。秒単位で届く大量の値をそのまま学習させると、品質問題がそのまま精度の低下へ直結します。

そこで、まず理想的な時間軸を作って欠損を明示し、発生パターンから通信断と誤作動を切り分けました。誤作動由来のスパイクはフラグを立てて補正し、本物の異常はフラグごと残す方針に変えたのです。結果としてノイズと異常を区別できるようになり、誤検知が減って現場がアラートを信頼できる状態へ改善しました。データの整備が、そのまま検知精度と現場の運用改善につながった事例でしょう。ノイズと異常を切り分ける前処理が、モデルの再学習よりも効いた点が示唆に富む事例でしょう。

製造業のデータ分析はなぜ必要?解決できる課題やメリットなどを解説

小売業:欠損補完と粒度統一で需要予測の精度を向上

小売業の需要予測では、POSデータと在庫データ、天候データなど、粒度も更新頻度も異なる情報を組み合わせます。ある事例では、店舗ごとに欠品時の売上がゼロとして記録され、それを実需要と誤認したまま学習していたため、予測が実態より低く偏っていました。加えて日次と時間単位のデータが混在し、結合のたびに時刻のずれが生じていたのです。見かけのゼロを実需要と取り違える誤りは、需要予測ではとりわけ起こりやすいものです。

改善では、欠品による見かけのゼロを欠損として扱い直し、曜日ごとの傾向を踏まえて補完しました。あわせて全データを1時間単位へリサンプリングして時間軸をそろえ、天候などの外部データも同じ粒度に整えたのです。欠損の意味を見直し粒度をそろえるという地道な整備が、需要予測の精度を目に見えて押し上げました。派手なモデル変更ではなく、データ側の手当てが効いた典型例といえるでしょう。地道なデータ整備が派手なモデル改修に勝る場面は、実務では決して珍しくありません。

小売業のデータ分析で何がわかる?目的・やり方・費用をわかりやすく解説

エネルギー業:計測データのノイズ除去で消費量予測を安定化

エネルギー業では、電力の使用量を細かい間隔で計測し、需給の予測へ活用します。ある電力データでは、計測機器由来の細かなノイズと、たまに混じる通信エラーによる異常値が予測モデルを不安定にしていたのです。ノイズを含んだまま学習させると、予測が実態以上に振れてしまい、運用側の判断を惑わせる原因になります。安定した予測のためには、計測データの質を先に整える工程が要になるのです。前処理を後回しにするほど、あとで払う代償は大きくなります。

対応として、異常値をまず検出してフラグ処理し、そのうえで応答性を保てる範囲で控えめに平滑化をかけたのです。窓幅を過度に広げず、消費の急な立ち上がりは残すよう調整したところ、予測は安定しつつ変化への追随も保てています。ノイズ除去の強さを目的に合わせて調整することが、予測の安定と感度の両立につながりました。かけすぎない平滑化が、かえって実用的な精度を生んだ事例でしょう。強すぎる処理を避ける判断が、結果的に予測の実用性を守ったのです。

ワット・ビット連携とは?エネルギー×ICTの意味と活用事例をわかりやすく解説

まとめ:時系列データのクレンジングは時間軸の整備から始める

時系列データのクレンジングは、各時点の値が前後と結びついているという特性を出発点に考えると、進むべき方向が見えてきます。通常のデータのように行を独立して扱えないぶん、時間軸の整備を最初に固め、外れ値を処理してから欠損を補完する順序が精度を大きく左右するのです。手法そのものよりも、目的に合わせた粒度の設計やリーケージの回避といった判断のほうが、成果を分ける場面は少なくありません。

着手にあたっては、次の観点を順に押さえていくと迷いにくくなります。

  • 分析の目的と必要な時間粒度を最初に定義する
  • 処理の前にデータを可視化し、品質問題を洗い出す
  • タイムスタンプを整備し、連続した時間軸を確定させる
  • 外れ値を処理してから欠損値を補完する
  • 元データを保持し、処理ルールを記録して自動化する

これらを1つずつ着実に進めていけば、時系列データは分析や予測に耐える土台へと変わっていきます。まずは自社のデータを1本、グラフに描いて眺めるところから始めてみましょう。

「これから時系列データの活用に取り組みたいけれど、何から手をつけたらいいかわからない」「データ専門家の知見を取り入れたい」という方は、データ領域の実績豊富な弊社、データビズラボにお気軽にご相談ください。

貴社の課題や状況に合わせて、データの取り組みをご提案させていただきます。

データビズラボの実績無料相談・お見積り

このブログについて

データビズラボが運営する、データの価値を最大化するためのナレッジ共有メディアです。
戦略策定から具体的な分析手法、ツールの活用術まで、データの現場で培われた実践的な取り組みから
得られた知見や気づきを発信しています。

データのことなら、
まずはお気軽にご相談ください。

データ活用に、万能の正解はありません。
貴社の業界特性や課題に合わせて、最適な進め方を一緒に設計します。