Using the online retail II dataset (https://archive.ics.uci.edu/ml/datasets/Online+Retail+II), I'm trying to predict when each customer will place subsequent orders, and if possible, the monetary value of those orders. This will be a proof of concept for a real online retail store, in which I'll have access to even more data/features.
This current dataset contains the following attributes:
- InvoiceNo: Invoice number. Nominal. A 6-digit integral number uniquely assigned to each transaction. If this code starts with the letter 'c', it indicates a cancellation.
- StockCode: Product (item) code. Nominal. A 5-digit integral number uniquely assigned to each distinct product.
- Description: Product (item) name. Nominal.
- Quantity: The quantities of each product (item) per transaction. Numeric.
- InvoiceDate: Invoice date and time. Numeric. The day and time when a transaction was generated.
- UnitPrice: Unit price. Numeric. Product price per unit in sterling.
- CustomerID: Customer number. Nominal. A 5-digit integral number uniquely assigned to each customer.
- Country: Country name. Nominal. The name of the country where a customer resides.
My current intuition is to model the data as a daily time series that would output which customers are likely to order for the day and the value of those orders (if possible?). The output would either be a sparse, one-hot encoded matrix of shape num_customers X num_customers
, or a more dense vector of size num_customers
(which could have thousands of customers). I'm not quite sure how, or even if the model would be able to also output the amount of the order. This model will likely be fed into an LSTM network or similar. I suppose this would be considered a multivariate time series forecast (still learning here)?
From this, I'm hoping to be able to run the prediction for each day in the following year to forecast the next order date, customer value and churn risk
Since this would be an attempt to model human behavior as a time series, without a direct correlation from one day to the next (in contrast to predicting daily temperature or a stock price), and with so many variables, I'm also worried it would just come off as unpredictable noise.
- Anyway, am I on the right track? (any insights would be greatly appreciated)
- Should this be broken into multiple models, and if so, how many?
- Does anyone have any tips, or know good articles or tutorials that could point me in the right direction?
- What are the merits of the one-hot encoded matrix, vs the multi-hot encoded vector (not sure if that's the proper name)?
Thanks!