facebook / facebook/prophet

Addition of holiday impact score and custom holidays.

Đang mở
#1,873 3 bình luận 2 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Python
Star
20.4k
Fork
4.6k
Merge trung bình
19 giờ 52 phút
Pull request đã merge (30 ngày)
1

Mô tả

This is more of a discussion and request about two new features addition in prophet
1. Scoring system so as to depict how much of an impact an holiday had on the predicted value at any given date. Lets name it Holiday Score
2. Ability to add custom holidays at custom dates (can be future or past). Customisation will be on the Holiday Score.

I am asking for these features based on a use case I recently solved using the aforementioned constructs. As I am only versed with the python implementation of Prophet, I will only be referring to only python sections of the code.

In the use case we were to predict the **incoming call volume in a certain call centre,** now the incoming volumes are heavily impacted for **certain event days**. We used prophet's holiday construct to model the volumes on those days.

Now during prediction, domain experts claimed that a certain future event day will have more impact than the claimed impact in the training data, about 120% of what was in the past . Now instead of changing the prediction dataframe and multiplying the holiday column with the said percent boost, we decided to boost the param in the `model.params['beta']` which controlled the holiday factor for the given event day. This saw done so that the **no extra steps are to be done after the prediction**. Following the above steps we found the forecast adherence ( Actual Volume / Predicted Volume) to be about 0.97 for the said event day.

Changing the param directly allows us to add new type of holiday event in the future which may be similar to that of the previous events but may have slightly more or less impact. Like some kind of ad/business campaign which might be similar to that of a previous one.

For Holiday Score we used liner interpolation over all holiday params to put the params with in a 0 to 10 range (directly proportional to the value of the param), thus making it human readable and new holiday addition for an unseen holiday can be done just by adjusting those scores, later translating it back to the param value is taken care of in the back end.

Suggested addition would mean an updation of `model.train_component_cols` , `model.holidays` and `model.params['beta']`

To conclude the advantages of incorporating the said feature are :

- Addition of new holiday which was not seen in the past data, whose estimation can be provided by some domain expert based on some previous holiday impact.
- Having an Holiday Score, a normalised value of the holiday params, so the estimation of holiday impact is smoother.
- Having the model store the new holidays amounts to a smoother pipeline during deployment. As changing of model will be much less frequent than that of the prediction.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.