版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
現代庫存管理:模型、算法與Python實現第4章機器學習方法數據集本節(jié)采用’DC001_SKU044’的周度銷售數據作為示例運行代碼,展示模型效果導入本章使用的庫和數據,并提取想要考察的子數據fromchapter2_forecast_basicimport*
importpandasaspd
importnumpyasnp
importwarnings
warnings.filterwarnings("ignore")data_dir=
'../../data/forecast_data/'
weekly_sales_df=pd.read_csv(data_dir+
'weekly_sales_data.csv')
weekly_sales_df['date']=pd.to_datetime(weekly_sales_df['date'])
weekly_sales_df['dc_id']=weekly_sales_df['unit_id'].str[:5]
weekly_sales_df['sku_id']=weekly_sales_df['unit_id'].str[6:]
sku_id=
'SKU044'
sku_df=weekly_sales_df[weekly_sales_df['sku_id']==sku_id]\
.reset_index(drop=True)
print(sku_df.head())4.1特征工程時間特征機器學習是一種基于特征學習的技術,它無法像時間序列一樣直接對長期的趨勢性、季節(jié)性進行建模,因此需要在數據集上人為地構造和加入時間特征數值型和非數值型的數據并不由數據的表現形式決定,而應該由數據之間是否具有順序關系決定對于非數值型的數據,常用的處理方法是生成啞變量或獨熱編碼月份是與類別相關的非數值型的數據,2月的數據和1月的數據之間并沒有嚴格的順序關系,通過這一變量可以提取同一月份數據之間的相同特征,即季節(jié)性用月份特征生成啞變量,并將其與原始特征數據拼接。這里僅保留了前11個啞變量(即標記數據屬于1~11月中的哪個月),這是因為12個啞變量是多重共線的,即由前11個特征的結果即可以推出最后一個特征的取值4.1特征工程時間特征#時間特征:年份啞變量
defadd_year_dummy_feature(df):
df_=df.copy()
df_['year']=df_['date'].dt.year
drop_year=
'FEA_year_'
+str(df_['year'].unique().tolist()[-1])
df_=df_.join(pd.get_dummies(df_['year'],prefix='FEA_year')\
.drop(drop_year,axis=
1)).drop('year',axis=
1)
returndf_#時間特征:月份啞變量
defadd_month_dummy_feature(df):
df_=df.copy()
df_['month']=df_['date'].dt.month
drop_month=
'FEA_month_'
+str(df_['month'].unique().tolist()[-1])
df_=df_.join(pd.get_dummies(df_['month'],prefix='FEA_month')\
.drop(drop_month,axis=
1)).drop('month',axis=
1)
returndf_
具體代碼4.1特征工程時間特征
具體代碼結果sku_feature_df=sku_df.copy()
sku_feature_df=add_year_dummy_feature(sku_feature_df)
sku_feature_df=add_month_dummy_feature(sku_feature_df)
print(sku_feature_df.head())unit_iddatesaledc_idsku_idFEA_year_2018FEA_year_2019\
0DC001_SKU0442018-01-073782DC001SKU04410
1DC001_SKU0442018-01-143917DC001SKU04410
2DC001_SKU0442018-01-214008DC001SKU04410
3DC001_SKU0442018-01-284289DC001SKU04410
4DC001_SKU0442018-02-045347DC001SKU044104.1特征工程
FEA_month_1FEA_month_2FEA_month_3FEA_month_4FEA_month_5\
010000
110000
210000
310000
401000
FEA_month_6FEA_month_7FEA_month_8FEA_month_9FEA_month_10\
000000
100000
200000
300000
400000
FEA_month_11
00
10
20
30
40
4.1特征工程近期銷量特征shift方法該方法可以用于DataFrame和Series格式的數據,按照指定階數將數據滯后或提前,當沒有指定階數時,該方法默認將數據以滯后一階的方式進行移動和填充接下來將本節(jié)數據按照unit進行聚合,之后將各個unit的周總銷量滯后一周sku_df.groupby(['unit_id'])['sale'].shift()4.1特征工程近期銷量特征在進行本周預測時,上一周的銷量可以作為特征因此,可以將經過滯后的數據按照索引拼接到原始數據上作為特征;也可以通過指定shift方法中的periods參數構造多個不同階數的滯后序列,用之前幾周的各周總銷量作為本周預測的特征接下來我們以將待預測周的前四周銷量均值作為近期銷量特征加入數據集中為例進行代碼展示4.1特征工程近期銷量特征#銷量特征:近期非空銷量均值
#這里選取非空銷量是幫助時間序列中最早的單元建立特征
defadd_latest_sales_feature(df,window_size=4):
df_=df.copy()
fea_vals=[np.nan]
foriinrange(1,len(df_)):
unit=df_.iloc[i]['unit_id']
date=df_.iloc[i]['date']
unit_his=df_[(df_['unit_id']==unit)&(df_['date']<date)]
unit_his=unit_his[~unit_his['sale'].isna()].copy()
iflen(unit_his)>
0:
unit_his=unit_his.sort_values(by='date',ascending=True)
fea_vals.append(unit_his\
.iloc[max((len(unit_his)-window_size),0):]
['sale'].mean())
else:
fea_vals.append(np.nan)
df_['FEA_latest_'
+str(window_size)]=fea_vals
returndf_sku_feature_df=add_latest_sales_feature(sku_feature_df)
print(sku_feature_df.head())4.1特征工程近期銷量特征unit_iddatesaledc_idsku_idFEA_year_2018FEA_year_2019
0DC001_SKU0442018-01-073782DC001SKU04410
1DC001_SKU0442018-01-143917DC001SKU04410
2DC001_SKU0442018-01-214008DC001SKU04410
3DC001_SKU0442018-01-284289DC001SKU04410
4DC001_SKU0442018-02-045347DC001SKU04410
FEA_month_1FEA_month_2FEA_month_3FEA_month_4FEA_month_5\
010000
110000
210000
310000
4010004.1特征工程(接上頁)FEA_month_6FEA_month_7FEA_month_8FEA_month_9FEA_month_10\
000000
100000
200000
300000
400000
FEA_month_11FEA_latest_4
00NaN
103782.000000
203849.500000
303902.333333
403999.0000004.1特征工程近期銷量特征給定測試起始日期和待測試unit,從已經生成的特征數據中篩選并劃分訓練集和測試集由于構造的近期銷量特征在第一期時沒有對應的數據,對缺失值做補零處理#數據切分
test_start_date=pd.Timestamp(2020,4,1)
unit_id=
'DC001_SKU044'
unit_df=sku_feature_df[sku_feature_df['unit_id']==unit_id].reset_index()
train_df=unit_df[unit_df['date']<test_start_date]
test_df=unit_df[unit_df['date']>=test_start_date]
X_train=train_df[[colforcolintrain_df.columnsifcol.find('FEA')!=-1]]
X_train=X_train.fillna(0)
y_train=train_df.set_index('date')['sale']
X_test=test_df[[colforcolintest_df.columnsifcol.find('FEA')!=-1]]
X_test=X_test.fillna(0)
y_test=test_df.set_index('date')['sale']4.1特征工程Tsfresh庫介紹Tsfresh庫是Python中一個可以自動進行時序特征提取的庫可以從一段時間序列數據中自動提取眾多經典指標(如最大值、最小值、波峰數量等)及延伸指標(例如平方形式等)該庫提供接口函數extract_features()供使用者進行序列特征提取,還提供了select_features()來自動剔除無關變量,也可以通過extract_relevant_features()完成以上兩個步驟4.1特征工程Tsfresh庫介紹利用Tsfresh庫的extract_features函數進行時序特征提取代碼示例該方法會返回從原始序列中提取的特征數據,其列名簡單記述了所提取的特征信息。如果打印特征表格的部分列名,返回的特征既有方差、偏度、峰度、數據長度等通用的統(tǒng)計指標,也包含了最大最小值位置、大于或小于均值的樣本數量、重復數據個數等并不常用的統(tǒng)計信息fromtsfreshimportextract_features
tsf_df=sku_df[['unit_id','date','sale']]
tsf_features=extract_features(tsf_df,column_id='unit_id',
column_sort='date')FeatureExtraction:100%|██████████|18/18[00:03<00:00,4.81it/s]4.2正則化和學習目標正則化主要目的---解決過擬合問題機器學習方法中,樣本內平均誤差被稱為經驗風險,模型參數擬合常以最小化經驗風險為目標,這稱為經驗風險最小化原則(empiricalriskminimization,ERM),數學表達形式為:
4.2正則化和學習目標正則化主要目的---解決過擬合問題
4.3超參數選擇這里的參數是指影響模型架構的外生參數,例如決策樹中的最大深度,神經網絡中的隱藏層數量等方法:網格搜索通過預先給定一些參數可能的取值范圍,然后遍歷這些參數組合,并通過交叉驗證選擇泛化性能最好的一個參數組合??梢酝ㄟ^sklearn庫實現優(yōu)點:可以遍歷所有參數組合,通過完全搜索可以給出所有參數組合中的最優(yōu)結果缺點:速度較慢fromsklearn.model_selectionimportGridSearchCV,TimeSeriesSplit
defpara_tuning(x_train,y_train,model,cv_params,
scoring='neg_mean_squared_error',cv=5):
time_cv=TimeSeriesSplit(n_splits=cv).split((x_train))
optimized_GBM=GridSearchCV(estimator=model,
param_grid=cv_params,
scoring=scoring,
cv=time_cv,verbose=1,n_jobs=10)
optimized_GBM.fit(x_train,y_train)
returnoptimized_GBM.best_params_4.3超參數選擇方法:隨機搜索從所有可選參數中隨機挑選參數組合并進行評估,可以以較小的計算開銷完成較大規(guī)模的待調整參數選擇fromsklearn.model_selectionimportRandomizedSearchCV
defrandom_para_tuning(x_train,y_train,model,cv_params,
cv=5,random_seed=0,iter_num=50,
scoring='neg_mean_squared_error',):
"""
cv_params:可選參數范圍
scoring:評估指標
cv:交叉驗證折數
random_seed:隨機種子,用以固定隨機搜索的結果
iter_num:用戶指定的最小隨機搜索次數,這里由該值和總參數組合的5%取大得到
"""4.3超參數選擇(接上頁)
length=
1
forvincv_params.values():
length*=len(v)
time_cv=TimeSeriesSplit(n_splits=cv).split((x_train))
np.random.seed(random_seed)
optimized_GBM=RandomizedSearchCV(estimator=model,
param_distributions=cv_params,
scoring=scoring,
n_iter=max(iter_num,
int(length*
0.05)),
cv=time_cv,verbose=1,n_jobs=-1)
optimized_GBM.fit(x_train,y_train)
returnoptimized_GBM.best_params_4.4單一模型線性回歸和廣義線性模型
#線性模型
fromsklearn.linear_modelimportLinearRegression
model=LinearRegression().fit(X_train,y_train)
y_pred=pd.Series(model.predict(X_test),index=y_test.index)
print(f'線性模型的預測準確率為{pred_evaluate(y_test,y_pred)}')4.4單一模型線性回歸和廣義線性模型
4.4單一模型線性回歸和廣義線性模型
#LASSO
fromsklearn.linear_modelimportLasso
cv_params_linear={'alpha':[0.001,0.05,0.1,0.2,0.3,0.5]}
params_lasso=para_tuning(X_train,y_train,Lasso(),cv_params_linear)
model=Lasso(**params_lasso).fit(X_train,y_train)
y_pred=pd.Series(model.predict(X_test),index=y_test.index)
print(f'LASSO模型預測準確率為{pred_evaluate(y_test,y_pred)}')
print(f'最優(yōu)參數是{params_lasso}')4.4單一模型線性回歸和廣義線性模型
4.4單一模型樹模型決策樹是一種在分類和回歸任務中被廣泛使用的模型。樹模型對學習特征和學習目標的關系不做任何假設,僅依靠對數據集的劃分完成從特征到目標的映射樹結構基本概念樹結構由節(jié)點和子樹構成,類似于自然樹木的分支過程,每一個父母節(jié)點通過分支延伸,連接到子節(jié)點,每個節(jié)點可以同時是父母節(jié)點和子節(jié)點,但只能擁有一個父母節(jié)點;如果一個節(jié)點不再繼續(xù)連接其他節(jié)點,那么該節(jié)點被稱為葉子節(jié)點。從父母節(jié)點開始的樹被稱為一棵子樹,根節(jié)點沒有父母節(jié)點,是一棵樹的開始4.4單一模型樹模型決策樹模型中,一個節(jié)點包含一組數據,一個分支指定了一種特征,父母節(jié)點中的數據會根據分支所指定的特征被分到各個子節(jié)點中。一棵樹的深度由根節(jié)點到葉子節(jié)點的最大長度決定。從根節(jié)點到每一個葉子節(jié)點的分支路徑對應了一組特征,該葉子節(jié)點所有的數據都共享這些特征決策樹模型的核心思路在于分割目標空間,并為每一個子空間分配一個最優(yōu)擬合值,如何進行分支(分割目標空間)和如何為一個葉子節(jié)點的數據賦予一個學習結果(如何擬合最優(yōu)值)是主要的問題4.4單一模型樹模型CART樹模型是最主流的決策樹模型,以CART樹模型為例4.4單一模型樹模型
4.4單一模型樹模型CART樹會遍歷每一個特征和對應特征值,并嘗試以此作為切分點,計算出對應的殘差平方和MSE。如果這一劃分能夠減小當前的MSE,則采用該劃分,并對兩個子樹進行同樣的處理如果決策樹能夠無限分裂,即對特征空間的劃分足夠細致,那么最終將得到一棵每個葉子節(jié)點僅包含唯一數據的決策樹,這樣的模型在已知數據集上可以實現百分百的準確率,但過度擬合了噪音,會導致面對未知數據集時模型表現較差在決策樹模型中,剪枝技術和預先限制決策樹深度是常用的正則化方法,這些方法可以有效降低模型的自由度,從而避免過度擬合4.4單一模型樹模型
4.4單一模型樹模型CART回歸樹代碼示例#決策樹
fromsklearn.treeimportDecisionTreeRegressor
cv_params_tree={'max_depth':[i*
10
foriinlist(range(1,11))],
'max_leaf_nodes':[i*
10
foriinlist(range(1,11))],
'max_features':["log2","sqrt"],
'min_impurity_decrease':[0.05,0.1,0.2,0.5]}
params_tree=random_para_tuning(X_train,y_train,
DecisionTreeRegressor(),
cv_params_tree,random_seed=123456)
model=DecisionTreeRegressor(**params_tree).fit(X_train,y_train)
y_pred=pd.Series(model.predict(X_test),index=y_test.index)
print(f'樹模型模型預測準確率為{pred_evaluate(y_test,y_pred)}')4.4單一模型神經網絡神經網絡仿照人腦中細胞體和突觸組成的神經元結構設計感知機(perceptron)是人工神經網絡中的最小數字處理結構,它往往作為神經網絡中的一個節(jié)點存在。一個感知機接收到傳入的數值和權重后將進行兩步處理:首先將傳入數據按照權重加和,之后將加和值通過激活函數轉化為本節(jié)點輸出值,對于非輸出層的感知機而言,該值會和帶權重連接共同作為下一層感知機的輸入數據4.4單一模型神經網絡如果采用非線性的激活函數,并將多個感知機組合、進行多層堆疊,這樣的網絡結構配合恰當的連接層權重,可以以任意精度逼近任意函數,這就是神經網絡結構4.4單一模型神經網絡
4.4單一模型神經網絡神經網絡python代碼示例#神經網絡
fromsklearn.neural_networkimportMLPRegressor
cv_params_nn={
'hidden_layer_sizes':[3,5,10],
'activation':['logistic','relu','tanh'],
'solver':['adam'],
'alpha':[0.01,0.05],
'learning_rate':['adaptive'],
'learning_rate_init':[0.001,0.005,0.01]}
params_nn=random_para_tuning(X_train,y_train,
MLPRegressor(),
cv_params_nn,random_seed=123456)
model=MLPRegressor(**params_nn).fit(X_train,y_train)
y_pred=pd.Series(model.predict(X_test),index=y_test.index)
print(f'簡單神經網絡模型模型預測準確率為{pred_evaluate(y_test,y_pred)}')4.5集成方法Bagging:Boostrap,RandomForestBagging方法是Boostrap方法(即有放回抽樣)的一個應用Boostrap方法從原始數據中有放回采樣生成一個新的數據集,重復使用多次該方法,便可以利用原始數據集合生成一批新的訓練集合可以保證約有36.8%的原始數據不出現在一個訓練數據集中,因此這些集合中的數據不完全相同。在各個集合上訓練同一個學習模型,學習得到的模型也會具有一定的差異性在面對一組新數據時,所有的模型都會給出一個預測結果,而最終的結果則基于所有模型的結果得到(如簡單平均)優(yōu)點:原始數據不夠豐富時,可以起到豐富數據的作用;減少隨機誤差的干擾,更好地反映特征和目標之間的關系,減小預測方差4.5集成方法Bagging:Boostrap,RandomForest隨機森林(RandomForest)方法是使用Bagging的最知名算法之一通過Bagging方法在給定數據集上訓練多棵決策樹,最終通過簡單平均的方法集合這些決策樹的輸出。除了對訓練數據隨機采樣外,該算法還對訓練特征進行隨機采樣,降低不同決策樹之間的相關性,從而能夠增加算法的準確性算法特有參數n_estimators:決策樹數量,一般而言決策樹數量越多,最終得到的模型效果越好,但代價是計算速度往往較慢n_jobs:并行任務的數量,由于決策樹的各個學習模型之間是獨立的,因此可以同時訓練多棵決策樹,從而加快模型整體的訓練速度。當該參數取-1時表明調用所有可用的cpu線程進行訓練4.4單一模型Bagging:Boostrap,RandomForest隨機森林算法python代碼示例#隨機森林
fromsklearn.ensembleimportRandomForestRegressor
cv_params_rf={'max_depth':[i*
10
foriinlist(range(1,5))],
'max_leaf_nodes':[i*
10
foriinlist(range(1,5))],
'max_features':["log2","sqrt"],
'n_estimators':[10,30,50,100],
'n_jobs':[10]}
params_rf=random_para_tuning(X_train,y_train,
RandomForestRegressor(),
cv_params_rf,random_seed=123456)
model=RandomForestRegressor(**params_rf).fit(X_train,y_train)
y_pred=pd.Series(model.predict(X_test),index=y_test.index)
print(f'隨機森林模型模型預測準確率為{pred_evaluate(y_test,y_pred)}')4.5集成方法Boosting:Adaboost,GBDTBoosting方法的基本思想是不斷加強模型對于“錯誤”的學習Boosting方法中各個學習模型是序貫的,下一個學習模型的訓練數據將影響或構成上一個學習模型的訓練數據,最終的學習結果是各個學習器的集成。通過不斷提取誤差中的有用信息,Boosting使得模型的學習能力得到提升Adaboost算法采用了比較自動化的樣本選擇方式,每一輪訓練都按照一定的分布從原始數據集中采樣出訓練集,而這一分布依賴上一輪訓練中各組數據的訓練誤差可以讓分類任務中每一輪預測錯誤的樣本點在下一輪訓練集的構造中以更大的概率被選擇,在回歸任務中,則是會依據上一輪的預測誤差改變改變每個樣本點被選擇的概率當完成所有基學習器的訓練后,AdaBoost按照加權表決的方法生成集成模型,每個基學習器的表決權重和其正確率正相關4.5集成方法Boosting:Adaboost,GBDTGBDT算法基于樹模型的集成模型直接將上一輪學習后的錯誤作為下一輪學習的目標,如此反復幾次,最終將各輪學習結果相加,得到最終的預測結果難點是如何快速高效地計算XGBoost和LightGBM分別在GBDT框架下做出了改進。這兩種方法是目前最常用的預測模型4.5集成方法Boosting:Adaboost,GBDTXGboost算法針對GBDT框架下的損失函數以及對樹模型的擬合細節(jié)做出了改進,使得算法給出的模型具有更好的泛化能力和計算效率4.5集成方法Boosting:Adaboost,GBDTXGboost算法
常用參數
4.5集成方法Bagging:Boostrap,RandomForestXGboost算法python代碼示例#XGBoost
fromxgboostimportXGBRegressor
cv_params_xgboost={'max_depth':[2,5,10],
'eta':[0.01
*iforiinlist(range(1,6))],
'gamma':[0.05
*iforiinlist(range(1,6))],
'lambda':[0.5
*iforiinlist(range(1,6))]}
params_xgboost=random_para_tuning(X_train,y_train,
XGBRegressor(),
cv_params_xgboost,random_seed=123456)
model=XGBRegressor(**params_xgboost).fit(X_train,y_train)
y_pred=pd.Series(model.predict(X_test),index=y_test.index)
print(f'XGBoost型模型預測準確率為{pred_evaluate(y_test,y_pred)}')4.5集成方法Boosting:Adaboost,GBDT
4.5集成方法Bagging:Boostrap,RandomForestLightGBM算法python代碼示例#LightGBM
fromlightgbm.sklearnimportLGBMRegressor
cv_params_lgb={'learning_rate':[0.01,0.05,0.1],
'max_depth':[5,10,30],
'min_gain_to_split':[0.05
*iforiinlist(range(1,6))],
'lambda_l2':[0.5
*iforiinlist(range(1,6))],
'feature_fraction':[0.8,0.9,1]}
params_lgb=random_para_tuning(X_train.to_numpy(),y_train.to_numpy(),
LGBMRegressor(),
cv_params_lgb,random_seed=123456)
model=LGBMRegressor(**params_lgb).fit(X_train.to_numpy(),
y_train.to_numpy())
y_pred=pd.Series(model.predict(X_test.to_numpy()),index=y_test.index)
print(f'LightGBM型模型預測準確率為{pred_evaluate(y_test,y_pred)}')4.5集成方法Stacking方法思路:將不同基學習器的預測結果作為新的特征,直接通過機器學習方法學習這一組新特征和真實結果之間的關系。也就是訓練一批初級學習器,再利用一個次級學習器輸出最終的預測結果存在的問題:學習能力過強,容易造成過擬合,在實踐中一般選擇沒有被初級學習器利用過的數據來生成次級學習器的訓練集Stacking方法python代碼示例#Stacking
fromsklearn.ensembleimportStackingRegressor
estimators=[('rf',RandomForestRegressor(**params_rf)),
('xgboost',XGBRegressor(**params_xgboost)),
('lightgbm',LGBMRegressor(**params_lgb)),
('nn',MLPRegressor(**params_nn))]
model=StackingRegressor(estimators=estimators,
final_estimator=LinearRegression())\
.fit(X_train,y_train)
y_pred=pd.Series(model.predict(X_test),index=y_test.index)
print(f'Stacking型模型預測準確率為{pred_evaluate(y_test,y_pred)}')現代庫存管理:模型、算法與Python實現第5章實戰(zhàn):某飲料企業(yè)W的需求預測5.1背景介紹W是一家主營食品飲料的快消品公司,渠道類型有批發(fā),零售,直營等多種模式其產品銷量具有明顯的規(guī)律性,例如不同的產品會伴隨著季節(jié)的變化而產生有規(guī)律的銷量變化在每月初的會議上,來自財務、銷售、市場和計劃部門的管理人員將回顧上個月的銷售、庫存和財務等指標,并討論未來幾個月的市場情況和運營策略等。多部門的協同保證了W公司需求計劃的有效實施5.2面臨的問題以及需求面臨的問題公司需求預測的準確率仍然偏低,做需求預測時缺乏對產品銷量數據的深入分析經常發(fā)生客戶需要的商品沒有充足的庫存,客戶不需要的商品庫存卻堆積如山的情況,而食品行業(yè)有保質期的要求,商品放置時間一長只能報廢客戶滿意度下降、市場份額流失,資金流短缺需求通過更加準確且科學合理的需求預測來驅動供應鏈運轉,從而更好地調度企業(yè)的生產運作,在保證及時交貨的同時又不浪費倉庫資源5.3數據集概況W公司的77個SKU在18個分銷中心的歷史銷量數據(sales_data.csv)數據集包含了從2018年1月1日到2020年7月30日每個DC*SKU組合的日銷售信息,共有1141個不重復的DC?SKU組合(unit),共88萬余條記錄數據字段名稱字段含義格式樣例date銷售日期日期2018-01-01dc_id倉庫ID字符DC002sku_id商品ID字符SKU047idxDC*SKU組合ID字符DC002_SKU047sale銷量整數27515.4實戰(zhàn)目標以及擴展思考實戰(zhàn)目標為這77種SKU、1141個unit打造科學的需求預測模型,分析與探究對于不同的SKU,哪一種預測模型的效果最好?可能的原因是什么?以及如何為每種SKU和unit選擇最佳的預測模型擴展思考對于同一種SKU,同時使用多種方法預測的組合模型應該如何實現如何更好地利用不同SKU和unit之間的相關性來輔助預測在機器學習方法中,如何利用Tsfresh庫實現特征構造?其效果如何?是否可以進行更細致深入的特征工程處理5.5實戰(zhàn)建議對產品進行分類需要結合產品屬性,盡可能將需求規(guī)律比較接近的產品放在一個類別里進行建模根據銷量數據還原需求數據銷量不等于需求,當需求超過現貨庫存時,未能及時滿足的需求可能會直接流失。因此,使用銷量數據對未來需求進行預測,得到的預測值可能較真實需求偏低如果相關品類在歷史上有嚴重的缺貨現象出現,則不能直接利用歷史銷量建立預測模型,而需要先對歷史銷量進行還原,根據對缺貨量的估計對歷史銷量進行修正,再建立預測模型5.5實戰(zhàn)建議根據業(yè)務場景進行模型修正模型漂移是指由于環(huán)境的變化而導致模型的預測能力下降。此時需要對預測模型進行重訓練,在拋棄久遠歷史樣本的同時更多地參考近期樣本,盡快地學習新的規(guī)律趨勢
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度賓館酒店客房租賃及收益分成及品牌授權合同2篇
- 二零二五年房產租賃押金返還與住房按揭貸款保全合同3篇
- 二零二五年環(huán)保產業(yè)投資合作合同范本集2篇
- 二零二五年度綠色建筑安裝工程合同范本2篇
- 二零二五版教育局教師幼兒園勞動合同履行評估標準3篇
- 二零二五年度板材行業(yè)風險管理與保險合同2篇
- 展會參展商信息收集合同(2篇)
- 2025年度浙江房產市場風險防范7月1日實施合同3篇
- 二零二五版工業(yè)項目總承包監(jiān)理服務合同范本3篇
- 二零二五版混凝土工程數字化管理與優(yōu)化合同3篇
- 2025年西藏拉薩市柳梧新區(qū)城市投資建設發(fā)展集團有限公司招聘筆試參考題庫附帶答案詳解
- 2025年部編版一年級語文上冊期末復習計劃
- 2024年新高考II卷數學高考試卷(原卷+答案)
- 儲罐維護檢修施工方案
- 地理2024-2025學年人教版七年級上冊地理知識點
- 2024 消化內科專業(yè) 藥物臨床試驗GCP管理制度操作規(guī)程設計規(guī)范應急預案
- 2024-2030年中國電子郵箱行業(yè)市場運營模式及投資前景預測報告
- 基礎設施零星維修 投標方案(技術方案)
- 人力資源 -人效評估指導手冊
- 大疆80分鐘在線測評題
- 2024屆廣東省廣州市高三上學期調研測試英語試題及答案
評論
0/150
提交評論