《數(shù)據(jù)挖掘原理、算法與應(yīng)用(Python語言描述)》課件 【第八章】參數(shù)調(diào)優(yōu)_第1頁
《數(shù)據(jù)挖掘原理、算法與應(yīng)用(Python語言描述)》課件 【第八章】參數(shù)調(diào)優(yōu)_第2頁
《數(shù)據(jù)挖掘原理、算法與應(yīng)用(Python語言描述)》課件 【第八章】參數(shù)調(diào)優(yōu)_第3頁
《數(shù)據(jù)挖掘原理、算法與應(yīng)用(Python語言描述)》課件 【第八章】參數(shù)調(diào)優(yōu)_第4頁
《數(shù)據(jù)挖掘原理、算法與應(yīng)用(Python語言描述)》課件 【第八章】參數(shù)調(diào)優(yōu)_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第八章參數(shù)調(diào)優(yōu)數(shù)據(jù)挖掘原理、算法與應(yīng)用(Python語言描述)(1)了解人工循環(huán)搜索超參數(shù)的方法。(2)掌握超參數(shù)網(wǎng)格搜索方法以及Python實(shí)現(xiàn)。(3)掌握超參數(shù)隨機(jī)搜索方法以及Python實(shí)現(xiàn)。(4)掌握超參數(shù)貝葉斯搜索方法以及Python實(shí)現(xiàn)。學(xué)習(xí)目標(biāo)目錄人工循環(huán)搜索網(wǎng)格搜索隨機(jī)搜索貝葉斯搜索案例:汽車滿意度預(yù)測目標(biāo)數(shù)據(jù)集介紹實(shí)現(xiàn)代碼參數(shù)調(diào)優(yōu)學(xué)習(xí)器模型中的兩種參數(shù):模型參數(shù):從數(shù)據(jù)中學(xué)習(xí)估計得到,如:線性回歸中的系數(shù)模型超參數(shù):無法從數(shù)據(jù)中估計,需根據(jù)經(jīng)驗(yàn)人工設(shè)置,如:k近鄰算法中的k值參數(shù)調(diào)優(yōu),即調(diào)整超參數(shù)來提升模型的泛化性能,常用方法為:人工循環(huán)搜索:編寫代碼循環(huán)遍歷所有可能的參數(shù)組合網(wǎng)格搜索(GridSearch):以窮舉的方式遍歷所有可能的參數(shù)組合隨機(jī)搜索(RandomizedSearch):依據(jù)某種分布對參數(shù)空間采樣,隨機(jī)的得到一些候選參數(shù)組合方案目錄人工循環(huán)搜索網(wǎng)格搜索隨機(jī)搜索貝葉斯搜索案例:汽車滿意度預(yù)測目標(biāo)數(shù)據(jù)集介紹實(shí)現(xiàn)代碼8.1人工循環(huán)搜索本章使用Sklearn自帶的鳶尾花數(shù)據(jù)集。該數(shù)據(jù)集內(nèi)包含3類共150條記錄,每類各50個樣本,每個樣本都有4項(xiàng)特征,通過這4個特征預(yù)測鳶尾花卉屬于(setosa、versicolour、iris-virginica)中的哪一品種。采用datasets.load_iris()方法獲取數(shù)據(jù)集。例8-1獲取iris數(shù)據(jù)fromsklearn.datasetsimportload_iris#導(dǎo)入Load_iris方法data=load_iris()#獲取數(shù)據(jù)X=data.data#提取特征XY=data.target#提取標(biāo)簽Yfromsklearn.model_selectionimporttrain_test_splitX_train,X_test,y_train,y_test=train_test_split(X,Y,train_size=0.75)#訓(xùn)練集測試集劃分人工搜索是通過循環(huán)遍歷可能的超參數(shù)組合,通過對不同組合的性能進(jìn)行評價,獲取最優(yōu)的超參數(shù)組合。8.1人工循環(huán)搜索例8-2采用列表推導(dǎo)式搜索超參數(shù)fromsklearn.neighborsimportKNeighborsClassifieracc=[KNeighborsClassifier(n_neighbors=k).fit(X_train,y_train).score(X_test,y_test)forkinrange(1,10)]#搜索K取不同值時的正確率print("K","正確率")foriinrange(1,10):print(i,acc[i-1])#輸出K取不同值時的正確率由圖可見,當(dāng)K等于8時,測試集上的正確率最高,達(dá)到100%8.1人工循環(huán)搜索例8-3采用for循環(huán)搜索超參數(shù)fromitertoolsimportproductfromsklearn.neighborsimportKNeighborsClassifierfork,weights_,algorithm_inproduct(range(7,9),['uniform','distance'],['auto','ball_tree','kd_tree','brute']):print(k,weights_,algorithm_,end="")print(KNeighborsClassifier(n_neighbors=k,weights=weights_,algorithm=algorithm_).\fit(X_train,y_train).score(X_test,y_test))由圖可見,當(dāng)k=8時,鄰居等權(quán)時正確率達(dá)到100%目錄人工循環(huán)搜索網(wǎng)格搜索隨機(jī)搜索貝葉斯搜索案例:汽車滿意度預(yù)測目標(biāo)數(shù)據(jù)集介紹實(shí)現(xiàn)代碼8.2網(wǎng)格搜索(GridSearch)網(wǎng)格搜索(GridSearch)是一種常用的調(diào)參手段,在所有候選的參數(shù)選擇中,通過循環(huán)遍歷,嘗試每一種可能性,表現(xiàn)最好的參數(shù)就是最終的結(jié)果缺點(diǎn)是比較耗時網(wǎng)格搜索適用于三四個或者更少的超參數(shù),當(dāng)超參數(shù)的數(shù)量增長時,網(wǎng)格搜索的計算復(fù)雜度會呈現(xiàn)指數(shù)增長,這時候推薦使用隨機(jī)搜索網(wǎng)格搜索通常與交叉驗(yàn)證結(jié)合,sklearn.grid_search中提供GridSearchCV類來實(shí)現(xiàn)8.2網(wǎng)格搜索(GridSearch)工作流程如下:定義一個n維的網(wǎng)格,每格都有一個超參數(shù)映射,如:n=(超參數(shù)1,超參數(shù)2,…,超參數(shù)n)對每個超參數(shù)定義可能的取值范圍,如:超參數(shù)1=[1,2,3,4,5,6,7,8]使用交叉驗(yàn)證來評估每種組合的性能得到最佳參數(shù)model_selection.GridSearchCV參數(shù)說明estimator指定的模型param_grid關(guān)于參數(shù)名(鍵)和參數(shù)取值(值)的字典或字典的列表scoring指定評價指標(biāo)的字符串,默認(rèn)采用.score方法,可選參數(shù)為:‘a(chǎn)ccuracy’、‘f1’、‘logloss’和‘mean_squared_error’等cv默認(rèn)為3折交叉分類器,如果為整數(shù)即為指定的k值,也可直接指定k折交叉分類器屬性說明cv_results_輸出以字典形式存儲的每個參數(shù)組合的得分情況best_estimator_輸出篩選出來的最佳模型best_score_最佳模型的性能評分best_params_最佳參數(shù)組合model_selection.GridSearchCV方法說明fit(X[,y])執(zhí)行參數(shù)優(yōu)化predict(X)使用篩選的最佳模型預(yù)測數(shù)據(jù)predict_prob(X)使用篩選的最佳模型預(yù)測數(shù)據(jù)為各類別的概率score(X[,y])通過給定的數(shù)據(jù)集判斷篩選的最佳模型的預(yù)測性能例8-4采用網(wǎng)格搜索交叉驗(yàn)證搜索超參數(shù)fromsklearn.model_selectionimportGridSearchCVfromsklearn.neighborsimportKNeighborsClassifierparam_grid={"n_neighbors":range(1,10),"weights":['uniform','distance'],"algorithm":['auto','ball_tree','kd_tree','brute’]}#指定參數(shù)搜索范圍grid_search=GridSearchCV(KNeighborsClassifier(),param_grid,cv=5)grid_search.fit(X_train,y_train)print(grid_search.best_score_)#輸出訓(xùn)練集最優(yōu)參數(shù)擬合的正確率訓(xùn)練集最優(yōu)參數(shù)擬合的正確率:0.9735177865612649print(grid_search.score(X_test,y_test))#輸出最優(yōu)模型參數(shù)在測試集上的正確率最優(yōu)模型參數(shù)在測試集上的正確率:0.9473684210526315print(grid_search.best_params_)#輸出最優(yōu)的超參數(shù)輸出最優(yōu)超參數(shù)如下:{'algorithm':'auto','n_neighbors':3,'weights':'uniform'}8.2網(wǎng)格搜索(GridSearch)8.2網(wǎng)格搜索(GridSearch)

目錄人工循環(huán)搜索網(wǎng)格搜索隨機(jī)搜索貝葉斯搜索案例:汽車滿意度預(yù)測目標(biāo)數(shù)據(jù)集介紹實(shí)現(xiàn)代碼隨機(jī)搜索(RandomizedSearch)隨機(jī)搜索交叉驗(yàn)證(RandomizedSearch)使用方法和GridSearch類似,但不窮舉所有可能的組合,而是選擇每一個超參數(shù)的一個隨機(jī)值的特定數(shù)量的隨機(jī)組合實(shí)現(xiàn)了在參數(shù)空間上進(jìn)行隨機(jī)搜索的機(jī)制,可以選擇相對較少的參數(shù)組合數(shù)量,優(yōu)點(diǎn)為:可以更廣泛地探索超參數(shù)空間解決高維度計算代價過高的問題model_selection.RandomizedSearchCV參數(shù)說明param_distributions關(guān)于參數(shù)名(鍵)和參數(shù)分布(值)的字典或字典的列表,通常使用scipy.stats模塊中提供的分布,如:scipy.expon指數(shù)分布和scipy.uniform均勻分布等n_iter指定每個參數(shù)采樣的數(shù)量隨機(jī)搜索交叉驗(yàn)證(RandomizedSearchCV)例8-5采用隨機(jī)搜索交叉驗(yàn)證搜索超參數(shù)fromsklearn.model_selectionimportRandomizedSearchCVfromsklearn.neighborsimportKNeighborsClassifierparam_grid={"n_neighbors":range(1,10),"weights":['uniform','distance'],"algorithm":['auto','ball_tree','kd_tree','brute']}grid_search=RandomizedSearchCV(KNeighborsClassifier(),param_grid,cv=5)grid_search.fit(X_train,y_train)print(grid_search.best_score_)#輸出訓(xùn)練集最優(yōu)參數(shù)擬合的正確率訓(xùn)練集最優(yōu)參數(shù)擬合的正確率:0.9648221343873518print(grid_search.score(X_test,y_test))#輸出最優(yōu)模型在測試集上的正確率最優(yōu)模型在測試集上的正確率:0.9473684210526315print(grid_search.best_params_)#輸出最優(yōu)的超參數(shù)輸出最優(yōu)的超參數(shù)如下:{'weights':'uniform','n_neighbors':1,'algorithm':'ball_tree'}目錄人工循環(huán)搜索網(wǎng)格搜索隨機(jī)搜索貝葉斯搜索案例:汽車滿意度預(yù)測目標(biāo)數(shù)據(jù)集介紹實(shí)現(xiàn)代碼8.4貝葉斯搜索貝葉斯搜索首先在搜索空間中隨機(jī)選取初始超參數(shù)點(diǎn),然后根據(jù)已有超參數(shù)對應(yīng)的指標(biāo)結(jié)果擬合概率模型,通過概率模型推測最佳超參數(shù),接著再試驗(yàn)得到這些超參點(diǎn)的結(jié)果。如此反復(fù)優(yōu)化,在有限試驗(yàn)次數(shù)中搜索出合適的超參數(shù)。貝葉斯搜索算法基于模型的序貫優(yōu)化方法(SMBO,SequentialModel-BasedOptimization),包括兩個部分:代理模型(surrogatemodel)和采集函數(shù)(acquisitionfunction)。8.4貝葉斯搜索貝葉斯搜索算法:1.隨機(jī)取超參數(shù),計算損失值;2.使用surrogate函數(shù)去擬合超參數(shù)與損失的關(guān)系;3.根據(jù)acquisition函數(shù)確定下一次迭代要嘗試的超參數(shù);4.根據(jù)3)確定的超參數(shù)計算的損失值;5.判斷是否滿足停止條件,若不滿足返回2)繼續(xù)迭代。與網(wǎng)格搜索一樣,貝葉斯搜索算法也同樣與交叉驗(yàn)證一起,通過交叉驗(yàn)證評估不同組合超參數(shù)的效果。使用scikit-optimize的BayesSearchCV需要安裝skopt包,具體安裝方法如下:pipinstallscikit-optimize8.4貝葉斯搜索例8-6貝葉斯搜索交叉驗(yàn)證搜索超參數(shù)fromskoptimportBayesSearchCVfromsklearn.neighborsimportKNeighborsClassifierparam_grid={"n_neighbors":list(range(1,10)),"weights":['uniform','distance'],"algorithm":['auto','ball_tree','kd_tree','brute']}Bays_search=BayesSearchCV(KNeighborsClassifier(),param_grid,cv=5)Bays_search.fit(X_train,y_train)print(Bays_searchr.best_score_)#輸出訓(xùn)練集最優(yōu)參數(shù)擬合的正確率最優(yōu)參數(shù)擬合的正確率:0.9735177865612649print(grid_search.score(X_test,y_test))#輸出最優(yōu)模型參數(shù)在測試集上的正確率最優(yōu)模型參數(shù)在測試集上的正確率:0.9473684210526315print(Bays_search.best_params_)#輸出最優(yōu)的超參數(shù)輸出結(jié)果如下:OrderedDict([('algorithm','kd_tree'),('n_neighbors',3),('weights','uniform')])目錄人工循環(huán)搜索網(wǎng)格搜索隨機(jī)搜索貝葉斯搜索案例:汽車滿意度預(yù)測目標(biāo)數(shù)據(jù)集介紹實(shí)現(xiàn)代碼8.5.1目標(biāo)根據(jù)以往用戶滿意度數(shù)據(jù)以及汽車的特征預(yù)測用戶對新汽車的滿意度。使用不同的參數(shù)調(diào)優(yōu)方法,尋找最優(yōu)的超參數(shù)。8.5.2數(shù)據(jù)集介紹數(shù)據(jù)集來源:UCIUCIMachineLearningRepository:CarEvaluationDataSet樣本總數(shù):1728特征說明:購買價格:非常高、高、中、低保養(yǎng)價格:非常高、高、中、低車門個數(shù):2、3、4、5個及以上載客人數(shù):2、4、4個以上車身大?。盒?、中、大安全性:低、中、高數(shù)據(jù)集沒有缺失值。類別分布:不滿意(unacc)共1210個樣本,占比70.023%。滿意(acc)共384個樣本,占比22.222%。比較滿意(good)共69個樣本,占比3.993%。非常滿意(vgood)共65個樣本,占比3.762%。8.5.3實(shí)現(xiàn)代碼1.導(dǎo)入必要的數(shù)據(jù)包fromsklearn.model_selectionimporttrain_test_splitfromsklearn.neighborsimportKNeighborsClassifierfromsklearn.treeimportDecisionTreeClassifierimportwarningswarnings.filterwarnings("ignore")importnumpyasnpimportmatplotlib.pyplotasplt%matplotlibinlineimportpandasaspd2.讀入數(shù)據(jù)data=pd.read_csv("d:/datasets/car.data",names=["buying","maint","doors","persons","lug_boot","safety","car_Eva"])8.5.3實(shí)現(xiàn)代碼3.探索性分析data.sample(5)#隨機(jī)查看5個樣本()#查看數(shù)據(jù)集信息數(shù)據(jù)共1728個樣本,沒有缺失值,全部類型為“object”8.5.3實(shí)現(xiàn)代碼3.探索性分析data.describe()#查看查看數(shù)據(jù)集基本統(tǒng)計信息8.5.3實(shí)現(xiàn)代碼4.數(shù)據(jù)預(yù)處理data=pd.get_dummies(data,columns=["doors","persons","buying","maint","lug_boot","safety"])#對特征編碼data["car_Eva"]=data["car_Eva"].map({"unacc":0,"acc":1,"good":1,"vgood":1})#標(biāo)簽編碼X=data.drop(["car_Eva"],axis=1)#取特征y=data["car_Eva"]#取標(biāo)簽X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=10)#測試集訓(xùn)練集劃分8.5.3實(shí)現(xiàn)代碼5.人工搜索決策樹分類器的最優(yōu)參數(shù)fromsklearn.treeimportDecisionTreeClassifierforiin["gini","entropy"]:forjin[3,5,7,9,13]:d_m=DecisionTreeClassifier(criterion=i,max_depth=j)d_m.fit(X_train,y_train)print("criterion=",i,"max_depth=",j,"score=",d_m.score(X_test,y_test))輸出結(jié)果如下:8.5.3實(shí)現(xiàn)代碼6.人工搜索K近鄰分類器的最優(yōu)參數(shù)fromsklearn.neighborsimportKNeighborsClassifierforiin[3,5,7,9]:forjin["kd_tree","ball_tree","auto"]:knn_m=KNeighborsClassifier(n_neighbors=i,algorithm=j)knn_m.fit(X_train,y_train)print("n_neighbors=",i,"algorithm=",j,"score=",knn_m.score(X_test,y_test))輸出結(jié)果如下:8.5.3實(shí)現(xiàn)代碼7.網(wǎng)格搜索交叉驗(yàn)證fromsklearn.model_selectionimportGridSearchCVfromsklearn.svmimportSVCparam_grid={"C":np.arange(0.1,1,0.1),"gamma":np.arange(0.1,1,0.1)}grid_search=GridSearchCV(SVC(),param_grid=param_grid,cv=5)%timegrid_search.fit(X_train,y_train)輸出搜索時長如下:Walltime:21.4sprint(grid_search.best_params_)#輸出最優(yōu)參數(shù)組合輸出結(jié)果如下:{'C':0.9,'gamma':0.6}print(grid_search.best_score_)#輸出最優(yōu)正確率輸出結(jié)果如下:0.9793148383114433print(grid_search.score(X_test,y_test))#輸出測試集正確率輸出結(jié)果如下:0.99807321772639698.5.3實(shí)現(xiàn)代碼8.隨機(jī)搜索交叉驗(yàn)證fromsklearn.model_selectionimportRandomizedSearchCVfromsklearn.svmimportSVCparam_grid={"C":np.arange(0.1,1,0.1),"gamma":np.arange(0.1,1,0.1)}RD_search=RandomizedSearchCV(SVC(),param_grid,cv=5)%timeRD_search.fit(X_train,y_train)輸出搜索時長如下:Walltime:2.47s可見隨機(jī)搜索所用時長明顯低于網(wǎng)格搜索。print(RD_search.best_score_)#輸出最優(yōu)得分輸出最優(yōu)得分:0.9793148383114433print(RD_search.score(X_test,y_test))#輸出測試集正確率輸出正確率:0.9980732177263969print(RD_search.best_params_)#輸出最優(yōu)參數(shù)組合最優(yōu)參數(shù)組合:{'gamma':0.6,'C':0.9}8

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論