mcpField
N
neural-networks-forecasting

neural-networks-forecasting

github.com/kishorkukrejaデータ・データベース8453 回インストール3 週間前に更新
リポジトリ

neural-networks-forecasting について

サプライチェーンの予測業務向けのニューラルネットワーク予測スキルです。LSTM、Transformer、TCN、アンサンブルを使い、需要の時系列パターンや季節性、非線形性を扱います。

主な機能

  1. 01LSTMによる需要予測
  2. 02Transformerによる複数期間予測
  3. 03膨張畳み込みを使うTCN予測
  4. 04複数のニューラルネットワークの統合
  5. 05TensorFlow/KerasとPyTorch

活用シーン

  1. 01複雑な時系列パターンを持つ需要の予測
  2. 02複数の予測期間にわたる需要予測
  3. 03複数のニューラルネットワークの予測統合

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/kishorkukreja/awesome-supply-chain --skill neural-networks-forecasting

インストール後、Claude Code で/neural-networks-forecastingを入力して読み込まれたか確認します。

詳細

需要予測のためのニューラルネットワーク

サプライチェーンの需要予測にニューラルネットワークやディープラーニングを適用する専門家です。目標は、需要データの複雑な時間的パターン、季節性、非線形な関係を捉える、高度なディープラーニングモデル(LSTM、GRU、Transformer)を構築することです。

初期評価

  1. データ量:十分なデータがありますか?(ニューラルネットワークには1,000件以上のサンプルが必要です)
  2. パターン:複雑な非線形パターンや長期的な依存関係がありますか?
  3. 特徴量:多変量ですか、単変量ですか?
  4. 予測期間:短期予測ですか、長期予測ですか?
  5. リソース:トレーニングに利用できるGPUはありますか?

需要予測のためのLSTM

import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
import matplotlib.pyplot as plt

class LSTMForecaster:
    """
    LSTM-based demand forecasting
    """
    
    def __init__(self, sequence_length=30, forecast_horizon=7):
        self.seq_len = sequence_length
        self.horizon = forecast_horizon
        self.model = None
    
    def build_model(self, n_features):
        """Build LSTM architecture"""
        
        model = keras.Sequential([
            # First LSTM layer
            layers.LSTM(128, return_sequences=True,
                       input_shape=(self.seq_len, n_features)),
            layers.Dropout(0.2),
            
            # Second LSTM layer  
            layers.LSTM(64, return_sequences=True),
            layers.Dropout(0.2),
            
            # Third LSTM layer
            layers.LSTM(32, return_sequences=False),
            layers.Dropout(0.2),
            
            # Output layer
            layers.Dense(32, activation='relu'),
            layers.Dense(self.horizon)
        ])
        
        model.compile(
            optimizer=keras.optimizers.Adam(learning_rate=0.001),
            loss='mse',
            metrics=['mae']
        )
        
        return model

複数期間予測のためのTransformer

class TransformerForecaster:
    """
    Transformer with self-attention for forecasting
    """
    
    def build_model(self, seq_len, n_features, horizon):
        inputs = layers.Input(shape=(seq_len, n_features))
        
        # Positional encoding
        x = self.positional_encoding(inputs)
        
        # Multi-head attention
        attention_output = layers.MultiHeadAttention(
            num_heads=8,
            key_dim=64
        )(x, x)
        
        x = layers.Add()([x, attention_output])
        x = layers.LayerNormalization()(x)
        
        # Feed-forward
        ff = layers.Dense(256, activation='relu')(x)
        ff = layers.Dense(n_features)(ff)
        
        x = layers.Add()([x, ff])
        x = layers.LayerNormalization()(x)
        
        # Output
        x = layers.GlobalAveragePooling1D()(x)
        x = layers.Dense(128, activation='relu')(x)
        outputs = layers.Dense(horizon)(x)
        
        model = keras.Model(inputs, outputs)
        model.compile(optimizer='adam', loss='mse')
        
        return model

時間畳み込みネットワーク(TCN)

class TCNForecaster:
    """
    TCN with dilated convolutions
    """
    
    def build_tcn_block(self, x, filters, kernel_size, dilation_rate):
        # Dilated causal convolution
        conv = layers.Conv1D(
            filters=filters,
            kernel_size=kernel_size,
            padding='causal',
            dilation_rate=dilation_rate,
            activation='relu'
        )(x)
        
        conv = layers.Dropout(0.2)(conv)
        
        # Residual connection
        if x.shape[-1] != filters:
            x = layers.Conv1D(filters, 1)(x)
        
        return layers.Add()([x, conv])

ニューラルネットワークのアンサンブル

def ensemble_forecast(models, X_test):
    """
    Combine predictions from multiple NN models
    """
    
    predictions = []
    for model in models:
        pred = model.predict(X_test)
        predictions.append(pred)
    
    # Average ensemble
    ensemble_pred = np.mean(predictions, axis=0)
    
    return ensemble_pred

ツールとライブラリ

  • TensorFlow/Keras:ディープラーニング
  • PyTorch:柔軟なニューラルネットワーク
  • N-BEATS:予測に特化したニューラルネットワーク
  • DeepAR:確率的予測

関連スキル

  • demand-forecasting:従来の手法
  • ml-supply-chain:汎用的な機械学習
  • optimization-ml-hybrid:最適化と組み合わせる

コメント