




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
《機器學習入門與實踐》教案
周次:1日期:年月日課時序:1-4
課題前置知識學習
1.了解機器學習技術前置知識:數據處理、分析、可視化;
教學目的
2.掌握Numpy、Pandas及Malplollib的常用方法;
要求
重點數據分析及可視化的常見操作及實現;
定點Pandas的數據結構理解和應用
課程思政通過機器學習前置知識的講解和練習,引入“工匠精神”的概念,學生
育人內容討論對機器學習工程師應該具備的工匠精神。
1、Pandas學習框架的整體介紹。包括數據讀寫、數據結構、增刪改查
的函數設計、統計方法函數等:(40')
2、案例實踐,使用Pandas進行數據處理的10個任務:(40')
3、組織學生以學習小組方式開展討論,整理Pandas常用函數及用法,
課堂分享:(40堂
教學過程
4、案例解析,總結點評案例實踐情況(40')
設計
及
時間分配
教
學
教學場所方法埋實一體
金通411
建立學習小組(3人/組),機器學習算法知識分享(原理、目標函數、
課后任務
實現方法、超參數含義)
教學反思
授課教師:王志
1.1Pandas的應用
Pandas是WesMcKinney在2008年開發的個強大的分析結構化數據的工具集。Pandas以
NumPy為基礎(數據表示和運算),提供了用于數據處理的函數和方法,對數據分析和數據挖掘
提供了很好的支持:同時Pandas還可以跟數據可視化工具Matplotlib很好的整合在一起,非常
輕松愉快的實現數據的可視化展示。
Pandas核心的數據類型是Series(數據序列)、DataFrame(數據表/數據框),分別用于處理
?維和二維的數據。除此之外還有?個名為Index的類型及其廣類型?它為Series和DataFrame
提供了索引功能。日常工作中以DataFrame使用最為廣泛,因為.:維的數據本質就是一個有行有
列的表格(想一想Excel電子表格和關系型數據點中的二維表)。上述這些類型都提供了大盤的
處理數據的方法,數據分析師可以以此為基礎實現對數據的各種常規處理。
1.1.1Series的應用
Pandas麻中的Series對象可以用來表示一維數施結構.陽數組非常類似,但是多了一些額外的
功能。Series的內部結構包含了兩個數組,其中一個用來保存數據,另一個用來保存數據的索引。
創建Series對象
提示:在執行下面的代碼之前,請先導入pandas以及相關的庫文件,
具體的做法可以參考上一章。
方法1:通過列表或數組創建Series對象,
代碼:
#data參數表示數據,index參數表示數據的索引(標簽)
#如果沒有指定index屬性,默認使用數字索引
serl=pd.Series(data=[320,180,300,405],index,'一季度,二季度',,三
季度‘,’四季度1)
serl
方法2:通過字典創建Series對象。
代碼‘
#字典中的鍵就是數據的索引(標簽),字典中的值就是數據
ser2=pd.Series({'一季度':320,'二季度':180,'三季度':300,‘四季度':405))
ser2
1.1.2索引和切片
跟數組一樣,Series對象也可以進行索引和切片操作,不同的是Series對象因為內部維護了一個
保存索引的數組,所以除了可以使用整數索引通過位宜檢索數據外,還可以通過自己設置的索引
標簽獲取對應的數據。
使用整數索引
代碼:
print(ser2[0],ser[l],ser[2],ser[3])
ser2[0],ser2[3]=350,360
print(ser2)
提示:如果要使用負向索引,必須在創建Series對象時通過index屬性指定非數
值類型的標簽。
使川自己設置的標簽索引
代碼:
print(ser2「一季度1,ser2r三季度'])
ser2「一季度1-380
print(ser2)
切片操作
代碼:
print(ser2[l:3])
print(ser2r二季度T四季度1)
輸出:
二季度180
三季度300
dtype:int64
二季度180
三季度300
四季度360
dtype:int64
代碼:
ser2[l:3]=400,500
ser2
屬性和方法
Series時象的常用屈性如下表所示
%(natplotlibinline
通過下面的魔法指令,可以生成矢量圖(SVG),
%configInlineBackend.figure_format='svg,
【繪圖的流程】
1.創建西布
2.繪制圖像
3.顯示(保存)圖像
1.5Pandas>Numpy庫的數據操作
1.5.1csv數據讀入
?從指定路徑下讀取CSV數據文件,并將LoanJD設為Index
?數據文件[rain.csv在"/data尸路徑下
?打印輸出前該數據集10行
#匕代碼importpandasaspdimportnumpyasnp
data=pd.read_csv("./data/train.csv",index_col='Loan_lD')
data.head(lO)
1.5.2數據選擇
?從數據集中得到“所有■沒有畢業"(Education:NotGraduate)并且“獲得貸款"(Loan_Stalus:
Y)的“女性"(Gender:Female),并輸出“性別"(Gender)、“教育狀況"(Education)及“貸款狀
態”(Loan_Status)。
#參考代碼
data.loc[(data['Education']=='NotGraduate')&(data['Loan_Status']=='Y')&
(data['Gender']=='Female'),['Gender','Education','Loan_Status']]
1.5.3使用apply對數據集應用自定義函數
defnum_missing(x):
returnsum(x.isnull())
1.5.3.1使用apply函數將num_missing函數用于統計數據集的每列缺失值數量
print(data.apply(num^issing,axis=0))
Gender13
Married3
Dependents15
Education0
Self_Employed32
Applicantlncome0
Coapplicantincome0
LoanAmount22
Loan_Amount_Term14
Credit_History50
Property_Area0
Loan_Status0
dtype:int64
1.5.3.2使用apply函數將num.niissing函數用于統計數據集每行缺失值數量,并
打印前10行
print(data.apply(num_missing,axis>l).head(10))
LoanJD
LP0010021
LP0010030
LP0010050
LP0010060
LP0010080
LP0010110
LP0010130
LP0010140
LP0010180
LP0010200
dtype:int64
1.5.4缺失值填充
1.5.4.1對于Gender、Married、Self_Employed三個因子型變量,使用各自最常見
的因子(中位數)進行缺失值填充
#參考答案
data['Gender'].fillna(data['Gender'].mode(;.iloc[0],inplace=True)
data['Married'].fillna(data['Married'].mode().iloc[0],inplace=True)
data['Self_Employed'].fi1Ina(data['Self_Employed'].mode().iloc[0],inplace-True)
1.5.4.2對于LoanAmount變量進行缺失值填充處理
?按照“Gender"、"Married"及"Self_Employed"的組合下的每個組群進行LoanAmoun[變星的
均值統計
?按照每組統計得到的平均值,對“LoanAmount”中缺失值進行填充
#參考答案
inpute_grps=data.pivot_table(values::["LoanAmount"],
index=["Gender","Married","Self_Employed"],aggfunc=np.mean)
for"rowindata.loc[data['LoanAmount'].isnull(),:].iterrows():
ind=tuple([row['Gender'],row['Married'],row['Self_Employed']])
data.loc[i,'LoanAmount']=impute_grps.loc[ind],values[O]
周次:2日期:2021年9月14日課時序:5-8
項目一
課題
幸存者預測模型開發
1.能夠根據業務需求,準確轉換業務為機器學習中的分類、回歸或聚類
問題:
教學目的
2.掌握Seikit-learn中數據笑劃分、算法實例化調用,并進行訓練、
要求
預測和評估的操作:
掌握Scikit-lcarn中數據集劃分、算法實例化調用,并進行訓練、預
重點
測和評估的操作
矩點Scikit-learn中數據集劃分、算法實例化調用的函數理解
課程思政
通過理解數據準備的重要性,融入嚴謹認真的勞動精神
育人內容
L機器學習項目的基本實踐方法論,包括問題定義、數據準備、模型訓
練、模型評估、模型部署、模型監控等環節的具體知識點:(40')
2.Scikit-learn框架環境配置及使用介紹;(400
3.案例實踐:結合實際案例應用實踐方法論,完成一個模型開發完整流
程:(80D
教學過程
設計
及
時間分配
教
學
教學場所方法理實一體
金通411
課后分析電商網站或移動應用口的智能化功能,判斷其屬于何種機器學
課后任務
習項目類型,并思考項目實現流程;
教學反思
授課教師:王志
2.1問題定義
問題定義是數據科學家們分析并理解業務中的實際問題,并將其定義為機器學習可解決的問題。
這是一個機器學習項目的重耍開端,也決定了后續項目中如何準備數據,選擇合適的算法,評估
模型效果等各環節的工作。但在后續工作中也會根據實際遇到的情況,來調整問題定義的方式,
如在數據準備環節發現按照當前問題定義的方式,符合條件的樣本數量極少,這就需要對問題定
義進行適當的調整.
在以往的教科書練習或大部分機器學習競賽中,都已經把問題定義清楚,數據科學家們只需要完
成后續的工作即可。因此要鍛煉問題定義的能力,需要多參與實際業務應用項目或參加一些機器
學習開放類的賽題.在本節內容中,我們對常見的問題類型進行歸類,便于在實際應用中準確的
進行問題定義。
2.1.1常見機器學習問題類型
分類
分類問題要解決的是對實例進行標簽標記,也就是將實例歸為某一類,如:郵件中垃圾/非垃圾的
分類,信用卡交易行為中的欺詐/非欺詐的分類。使用機涔學習建立分類預測模型是為了對新的未
標記的實例進行標記。
回歸
回歸問題與分類問題的區別在于,對實例是以真實的數值而不是一個標答來標記。如商品銷量預
測,股票價格預測等。回歸模型的作用是為實例進行可量化的數值預測0
聚類
聚類問題不標記實例,但是可根據實例的數據維度中挖掘到相似性,然后對實例進行分組.例如
蘋果公司推出的iPhoto及類似的照片管理軟件中.可以通過人臉,而不是名字來對照片分組。聚
類分析是無標記的非監督學習,通常用來對實例進行探索,試圖發現數據中存在的一些模式。在
機器學習實戰中聚類算法也會用在數據準備階段,進行一些數據探索分析和預處理的工作。
2.1.2明確機器學習應用目標
除了理解機器學習問題的類型,在實戰中還需要從機器學習模型的最終應用為終點,推導接下來
要使用的數據、機器學習算法以及評價指標.
例如,實際業務場景中要求模叁在很短時間內給出預測結果,因此大多考慮可并行化的算法來訓
練和部署模型,如果在模型訓練階段嘗試過于復雜的建模方法,最終可能因為執行效率較慢而被
舍棄。
因此在實戰中需要充分了解機器學習應用的目標和場景,已決定在接下來的工作中要采取的方案。
2.2數據準備
數據準備是機甥學習中人與算法“交接數據”前的旦要一環。數據科學家要像老師一樣,把“干凈”、
“合理”的學習資料,即樣本數據,交給算法進行學習,避免出現“Garbagein,garbageout”的
情況,導致項目失敗。
因此數據準備階段的工作目標是,完成可用于機器學習算法訓練的數據集準備。該數據集通常以
二維矩陣形式衣示,母行代衣一條學習樣本,母處代表一個交屋,且必須為算法可以處埋的數據
類型。
在實戰中數據準備的工作通常會占據整個項目工作70%以上的時間,也是在項目中值得深入分析,
迭代優化模型的主要工作環節之一。在本節內容中,我們主要介紹數據類型及數據質量審計,m
在能初步準備符合要求的數據集。數據準備環節中更具技巧性的數據探索分析、特征工程等知識
介紹,將在《第三章探索性數據分析及特征工程》中作為獨立的章節具體介紹。
2.2.1數據類型介紹
數據類型是統計學中的重要概念,正確的理解數據類型并加以利用才能獲得統計分析結論。同理,
為機器學習算法提供能夠正確處理的數據類型,才能保證機器學習模型的合理性。
對數據類型的定義根據用途不同,有不同的定義方式。在機器學習實戰中,可以將經常遇到的數
據定義為三大類型:數值型、分類型及混合型。
數值型變量
數值型變量包括:連續數值型和離散數值型。
連續數值型指在指定區間內可以是任意一個數值,代表者對象可測量的連續取值,雖然不能夠計
數但是可以用某種尺度進行連續的測任取值,例如人的身高、某類產品的銷告收入,都是連續的
數值。
離散數值型指其取值是不連續的分離值,數據只能在一些特定點取值。這樣的數據不能定及測量
但可以進行統計計量,并可將其蘊含的信息通過分類的方式進行表示。例如企業個數,職工人數,
設備臺數等。
區分連續數值與離散數值時,可以思考:數據描述的對象是否可以計數統計,是否可以分割成較
小的部分。如果數據描述的對象可以被測量而不能夠il數,那么意味若數摳是在續數值類至,反
之則是離散數值類型。
分類型變量
分類型變量代表著對象的屬性特點,只在有限目標中取值,如人群的性別(男與女)、語言、國
籍,或花的顏色(紅、藍、黃)。值得注意的是,分類數據通常也可以用數值表示,但這一數值
僅僅是分類的標記而已,并沒有數學上的意義。
如描述花的顏色,1代表紅色,2代表藍色,3代表黃色,算法并不能像人一樣理解其含義,它會
認為黃色比藍色大,紅色最小,這顯然是不合理的,所以在處理分類型變量時,需要進行一定的
數據轉換,才能輸入給算法。常用的處理方式是獨熱編碼(OneHotEncoding),具體的實現操作
在《第三章探索性數據分析及特征工程》展開介紹。
在分類型變量中,除了上述例子中定類的分類數據,還有一種情況是定序的分類型數據。其代表
了離散但是有序的變量單位,不僅具有類別而且類別間具有順序意義。
如描述教育背景的數據,類別可以包括:小學,初中,高中,大學,研究生,依次表示了不同的
教育程度,但卻無法量化初中與高中的差別,和高中與大學差別間的不同。所以定序數據還是屈
于分類型數據,與數值型數據不同,它缺乏對于特征間差別的量化,因此多用于等級劃分的描述,
如用戶情緒、用戶滿意度等。
在進行有監督學習時,目標變量如果是分類型變量,則認為是分類問題,如果是連續數值型,則
認為是回歸問題。
混合型變量
在實戰中會遇到一些變量的內容中包含文本、或把數值和文本的組合等情況,我們統一將這類變
量定義為混合型變量,需要進一步轉換加工才能月于機器學習。
小結
在機器學習中,經常會碰到不同類型的數據,而機器學習算法一般只接受數值型的數據,通過上
述數據類型的學習,同學們可以做到:
?結合業務含義能夠對數據類型有準確的識別;
?申核不能直接用r機器學習的數據類型;
就可以基本確保機器學習工作的合理性。
2.2.2數據質量檢查
數據質量檢查的主要任務是檢查原始數據中是否存在”臟?數據,通常.指不能直接進行分析和模型
訓練的數據。在實戰中如果直接把這類數據丟給機器學習算法,往往會出現報錯,層至出現"不合
理”的結果。
實戰中數據質量檢查工作主要包括兩個方面:數據準確性檢查和數據有效性檢查。
數據準確性檢查
引起數據準確性問題的數據,常包括以下幾種情況:
?缺失值:包括空值或編碼為無意義的值(如NA、NUII等):
?異常值:變量中個別數值明顯偏離其余的觀測值,如年齡中出現“999”這種不符合業務常識
的數值:
?不一致的值:在分類型變量中常遇到類別編碼不一致的值的情況。如同時使用M和male
表示性別:
在面對?份數據集時,我們首先可以根據不同的變后類型,針對性采取統計方法分析不同類型變
量的數據準確性。
分類型變量的統計分布,可以使川pandas中的valuc_8unts()函數,如下例所示:
irrportpandasaspd
y=pd.Series([0,1,1,1,0,0,0,1,'null'])
y.value_counts()
構造的y變量中包括:0,1,'null,標中,運行結具如下:
1404null1
dtype:int64
通過value_counts()統計分析是計數,返回了變母中的所有類別,及對應的樣本數量。可以看到y
中存在?個"null。的類別,如果y是二分類問題的目標變量,那么就可以認為"nul「是?個異常值.
需進行合適的處理才能進一步進行機器學習工作。
數值型變量的統計分析,可以使用pandas中的describe。函數,如下例所示:
irrportpandasaspd
x=pd.Series([1.0,2.0,3.0,4.5,6.0,10.0,999.99])
x.describe()
構造變技x為連續數值變度,運行describe。對其進行統計分析結果如下:
count7.000000
mean146.641429
std376.303134
min1.00000025%2.50000050%4.50000075%8.000000
max999.990000
dtype:float64
describe。函數返回了數據變量x的統計分布,其中count是非空值數,如果數值小于樣本總數,
說明該變量存在缺失值。另外,提供的基本參數還有平均值(mean)、標準差(std),最小值
(min),最大值(max)以及分位數(25%、50%、75%),可以發現數值“999.99”與其它數值
分布距離較大,可以結合實際業務含義判定其是否為“異常值”.
小結
對數據準確性的檢杳并沒有絕對唯一的方法,需要數據科學家根據實際的變量含義和數據情況來
靈活處理.除了使用Pandas模塊中的統計分布函數,還可以使用可視化方式等探索分析方法進
行檢查,在《第三章探索性數據分析及特征工程》將進一步介紹。
數據有效性檢查
數據有效性是以該數據從統計意義上是否能提供有效信息為判斷標準的,常做的檢查工作包括唯
一值檢查、缺失值或。值占比等工作。
唯一值檢查
變量中的數值均為同一值,這種情況也可以通過pandas模塊中describe。或value_counts()統計
分析出來。如下所示:
irrportpandasaspd
a=pd.Series([5,5,5,5])
a.describe()
相同數值的一個變量a,其統計分布如卜.:
count4.0
mean5.0
std0.0
min5.025%5.075%
max5.0
dtype:float64
從結果可見,該變量的標準差std為0,且各分位點數值相同,可以判定該數值變域為唯一值變班。
對于分類型變垃,可以使用value_counts()函數統計,如果只包含1個類別,則同樣可判定為唯
?值變量.
無效性檢查
缺失值、異常值、空值,空字符串,null,。(無意義)都屬F無效值。在準確性檢查中會對缺失值、
異常值進行檢查,若檢查發現變焚中有無效值較多的變量(如該變量無效值比例超過90%等),
若非數據準備過程中出現錯誤,則這類在機器學習建模時需要慎用甚至不用。
2.2.3總結
數據準備環節是機器學習實戰中最為耗時,也是最值得深入開展工作的環節。在本節內容中,通
過對數據類型及數據質量檢查的介紹,希里同學們能達到為后續模型訓練工作準備符合要求的數
據集的能力,以便后續能順利完成一個完整的機器學習項目流程。
數據準備環中中史多的探索分析和特征工程工作,在機器學習工作中對模型效果提升有很人的幫
助,將在《第三章探索性數據分析及特征工程》中逐?介紹。
2.3模型訓練
模型訓練環節的基本過程是用算法擬合樣本數據得到模型,目標是在確保一定“泛化”能力的前提
下,達到最好的擬合效果。
“泛化”能力,通俗講是指基于擬合樣本得到的模里對未知數據的預測能力,也可以認為是既得模
型的舉一反二的能力,或學以致川的能力。所以模型訓練完成之后都要進行模型評估,主要通過
準確率等指標進行評測。
上述概念中涉及到的樣本數據對應了專有的名詞:“訓練集/訓練數據",“測試集/測試數據”,"驗證
切驗證數據,這三份數據集的作用,總體來說是為了保證模型的泛化能力,防止模型過擬合。具
體作用如下:
訓練集,顧名思義,是用來訓練模型的,也就是算法真正用來"學習"(擬合)的數據。測試集的
作用也很直觀,用來測試模型效果,評估泛化能力的,如同我們的期末號試,看下機器學習算法
的'學習成果.如何。
驗證集,主要用于算法調參過程,找出效果展優的模型和參數。在對訓練集使用多組參數訓練多
個模型后,會在驗證集上分別進行預測,并記錄棱型準確率。然后找出準確率最高的模型及其對
應的參數。驗證集可以認為是在機器學習中承擔“階段測試"或“模擬考試"的作用。
2.3.1訓練集、驗證集和測試集的常見劃分方法
在項目實戰中通常在數據準備階段將所有樣本整理好,在模型訓練前根據樣本是否有時間序列屬
性來決定劃分方法。
有時間序列屬性的樣本數據,意味著樣本是有時間先后順序的。在原則上訓練集的時間要“早??于
驗證集和測試集,即避免出現用■1未來”的樣本數據學習,預測“歷史。的樣本。例如在供應鏈預測的
模型中,要求訓練集的時間窗口在測試集的時間窗口之前。
若樣本數據無時間序列屬性,相互之前完全獨立,則劃分訓練集、驗證集和測試集時,可以使川
隨機劃分,為了保證模型的預測效果,通常會建議保持三者的數據分布相近。
在實際項目執行中,氈于樣本數據劃分過程通常為:先劃分出測試集,再對剩下的數據劃分訓練
集和驗證集.劃分驗證集的操作常用的方法有兩和:"hold-out”和交互檢驗。其中“hold-out"是指將
剩余的數據集按照一定比例劃分出訓練集和驗證矣,比如70%作為訓練集,30%作為驗證集。
交互檢驗也被稱為K折交叉驗證(k-foldcross-validation),是將剩余數據劃分為K等份,用K-1
份作為訓練集,剩余1份作為驗證集,依次輪換訓練集和驗證集K次,直到找到預測誤差最小的
模型即是所求模型。值得注意的是,在劃分訓練賓和驗證集時,如果數據集具有時間序列屬性,
則不適合使用交互檢驗,可以用hold-out方法,嘗試不同比例的驗證集效果,以達到相當于交互
檢驗的目的。(對于交互檢驗的原理及實現方法,我們在《第五章機器學習算法超參數尋優3章
節中會詳細介紹.)
2.3.2訓練集樣本平衡性檢查及處理
訓練數據不平衡問題主要存在于有監督機器學習任務中。在大多數實際業務場景中,樣本都是符
令"二八分布"或-長尾效應"的,這導致了樣本的不平衡性在實戰中經常遇到。當算法接收到不均勻
的樣本數據時,由于算法學習的目標函數(關于目標函數相關知識將在《第四章常見機港學習算
法簡介》章節中詳細介紹。)是以總體分類效果為目標,所以算法會過多地關注多數類,從而使
得少數類樣本的分類性能下降。這也是絕大多數常見的機器學習算法對于不平衡數據集都不能很
好地工作的原因。
常用的處理不平衡樣本的方法有隨機欠采樣和隨機過采樣兩種。
隨機欠采樣的思想是通過隨機地消除占多數類的樣木來平衡類分布,直到多數類和少數類的樣本
數量實現比例均勻。這種方法會出現被隨機欠采樣選取的樣本可能具有偏差的現象,從而在實際
的測試數據集上表現不佳。
隨機過采樣的思想則是通過隨機豆制少數類來增加其樣本數量,從而可增加樣本中少數類的代表
性。但往往由r復制少數類的操作,也地加了模型過擬合的風險。
最近比較流行的處理樣本不平衡的方法是信息性過采樣,稱為合成少數類過采樣技術
(SMOTE.SyntheticMinorityOver-samplingTflmniqufi).該方刃:?簡單理解.是基干"插值"來為
少數類合成新的樣本。即從少數類中基于一個數據子集創建相似的新合成的樣本,再將這些合成
的樣本加入原來的數據集。由于通過隨機采樣生版的合成樣本而非直接豆制的樣本,可以緩解過
擬合的問題。但該方法存在的缺點是當生成合成性樣本時,并不會把來自其他類的相鄰實例考慮
進來,這導致了類重通的增加,并會引入額外的噪音,另外SMOTE方法對高維數據不是很有效。
除此之外,“代價敏感學習”也是一種處理樣本不平衡的方法。不同于上述直接調整樣本分布,
代價敏感學習則是通過修改損失函數來加大少數類樣本被錯分的懲罰,如FocalLoss損失函數。
該方法的好處在于提高了模型預測少數類樣本的準確率。
2.3.3訓練并尋找最優模型
這是真正的模型訓練環節,通常涉及到算法的選擇及訓練,以及既定算法的超參數調優兩部分工
作。
機器學習算法選擇
訓練模型所使用的算法,需要基于問題定義環節對模型目標及業務目標的理解來做選擇。
例如,在信貸行業中的信用風險預測場景中,需求方往往對模型的可解釋性要求較高,所以往往
選擇邏輯回歸或決策樹類的算法,使得模型能夠被清晰地理解.仃些項目其目標追求更高的預測
準確率,如圖像識別、文本情感分析等場景,對模型的預測準確性需求更高,所以常常會使用集
成學習、深度學習或融合模型的方法來訓練。
關于機器學習常見的算法,在《第四章常見機器學習算法簡介》中會詳細介紹,理解算法的原理
可以在選擇算法時有明確的方向。
機器學習算法超參數調優
機器學習模型中一般有兩種參數,一種參數是可以從訓練集學習中可以得到的,例如邏輯I可歸中
的正則化參數或決策樹中的深度參數。還有一種無法匪數據里面得到,只能靠人的經驗來設定,
這類參數就叫做超參(hyperparameters),如學習率learningrate。
超參數調優其基本思路是要試算法不同的超參數組合,基于訓練集數據得到不同模型,通過比較
模型的表現(通常是基于驗證集的表現),最終選擇表現最優的模型及其對應的算法參數。對于
機器學習超參數調優的不同方法,可以《第五章機器學習算法超參數尋優》中具體學習。
機器學習算法參數優化
機器學習實戰中的訓練模型環節中,需要訓練機密學習算法來”學習“輸入數據,特別是有監督學
習算法,算法不斷?學習"的過程是為對算法參數求解最優化問題。因此每個算法都以一個"目標函
數"為學習目標,通過求解讓該函數取極大值或極小值,從而訓練得到機器學習克法的模型參數“
本小節內容將以邏輯回歸算法為例,通過介紹損失函數、代價函數及目標函數的知識內容,及梯
度下降的方法,幫助同學們理解該算法參數優化的原理。理解算法”學習”的過程。
損失函數、代價函數與目標函數介紹
掇失函數
損失函數(Lossfunction)被用來"比較"預測結果與真實結果差異程度,是一個非負實值函數。損
失函數是目標函數的基礎組成,不同算法使用的損失函數不同,以邏輯回歸算法中的損失函數計
算為例:
$$L(y',y)=-ylogCyXI-yJIogCl-y1)$$
L(y',y)代表損失函數,其中y'代表模型預測結果,y為真實值,從公式中可見,損失函數是針對單
個訓練樣本的計算函數,衡量的是模型在單個樣本上的表現,可以基于損失函數進一步構建函數
描述模型對于全部樣本的表現。
代介函數
代價函數(Costfunction)是基于損失函數構建的用于描述模型在整體樣本上預測表現的函數,
可以直接用來作為算法的目標函數用于算法訓練.以上述損失函數算法為例,構建代價函數公式
為:
$$Cost=\frac{1}{m}\sum”="Afm〃w{i}log(y'/刃?”?y(i})log(iy_{i}))$$
從上式可見,該代價函數的設計思路是基于前例中的損失函數,對m個樣本的損失函數值求和后
除以樣本數m,是一種求平均損失值的思想。代價函數可以直接作為算法的目標函數使用,也可
以作為目標函數的基本構成,進一步設計目標函數。
目標函數
在前文中我們介紹過,每一個算法都有一個目標函數(objectivefunction),訓練算法的目標就
是通過調整模型參數使得目標函數達到最優。代價函數可以直接做為目標函數使用,通常為了更
好地尋找最優解避免過擬合問題,可以在函數中加入正則項。也可以將正則化看做是損失函數的
懲罰項。所謂“懲罰"是指對損失函數中的算法參數做一些限制。
機器學習中常用的正則項有L1正則化和L2正則化(英文稱作L1-norm和L2-norm),又叫
做L1范數和L2范數。兩者的思路都是對模型參數進行限制性處理,以邏輯回歸模型(\(z-
w*{T}x+b\))中的權值向量w為例:
?L1范數是指權值向量w中各個元素絕對值之和,通常用\(||w||_{1}\)表小:
?L2范數是指權值向量w中各個元素的平方和,通常表示為\(||w||_{2},2}\)。
兩者的計算方法決定了發揮的作用不同,L1正則化可以產生稀疏權值矩陣(部分參數變為0),
即產生一個稀疏模型,可以用于特征選擇。L2正則化可以防止模型過擬合(overfitting):?定
程度上,L1也可以防止過擬合,但L2正則化在控制過擬合的效果比L1正則化要好。仍以邏輯回
歸算法為例,可以在其代價函數后加入L2正則,構建其目標函數如下:
$$J(w,b)=\frac{1}{m}\sum{/-1}A{m}(L(y\\},y砌**ac{\lambda}{2m川w]R2r{2}〉$$
公式中,$14『,丫)$函數為前文介紹的損失函數,公式前半部分為上述的代價函數,后半部分為L2
正則表達式,其中w為邏輯【可歸算法中的權值向量,\(\lambda\)是正則化參數,用來權衡目標函
數中正則項與代價函數的比垂。通過該目標函數的公式,我們也可以直觀的理解損失函數、代價
函數及目標函數之間的關系。
周次:3H期:2021年9月21日課時序:9-12
項目一幸存者預測模型開發
課題
任務一:Scikit-learn環境配置:任務二:樣本數據處理
1.掌握使用ScikitTearn進行決策樹、隨機森林算法調用,訓練及評
教學目的
估的操作技能:
要求
2.理解決策樹與?隨機森林之間的關系及區別;
重點隨機森林算法調用、訓練及評估
是點理解決策樹與隨機森林之間的關系及區別
課程思政
通過隨機森林算法原理學習,融入團結協作的勞動精神
育人內容
L決策樹算法與隨機森林算法原理及其直接的關系:(40')
2.決策樹算法中的關鍵超參數,包括最大深度、葉子節點最小樣本數等:
(40')
3.實訓:決策樹及隨機森林模型訓練與評估。(80,)
教學過程
設計
及
時間分配
教學
教學場所方法理實一體
金通411
課后通過對隨機森林算法進行大同的超參數設置,提升模型效果,實現
課后任務
競賽平臺上排名提高。
教學反思
授課教師:王志
3.1理解建模目標
理解建模目標在實際機器學習應用項目中是關鍵的起步工作,其作用是充分理解業務需求并將業
務問題定義為建模問題,并初步確定將使用的數據范圍、算法以及評價模型的指標。在實際業務
應用中,數據科學家往往要綜合考慮業務需求,以便在模型可解釋性和準確性兩者之前做到權衡.
本次練習來源于Kaggle舉辦的一次數據競賽,項目提供了這樣一段文字來描述目標:
泰坦尼克號的沉沒是歷史上最臭名師著的沉船之一。1912年4月15日,
在首航期間,泰坦尼克號撞上一座冰山后沉沒,2224名乘客和機組人員
中有1502人遇難。這一聳人聽聞的悲劇震撼了國際社會,并導致了更
好的船舶安全條例。沉船導致生命損失的原因之一是乘客和船員沒有
足夠的救生艇。雖然幸存下來的運氣有一些因素,但有些人比其他人更
有可能生存,比如婦女,兒童和上層階級。在這個挑戰中,我們要求
你完成對什么樣的人可能生存的分析。特別是,我們要求你運用機器學
習的工具來預測哪些乘客幸存下來。
從描述中,我們可以這樣理解項目I4標:預測“生"與“死''的二分類問題,常用的二分類算法及理
論知識介紹,在《第四章常見機器學習算法簡介,中將具體學習。在本次實驗中,我們先使用決
策樹算法完成整個實驗練習。
3.2理解并準備數據
基于《機器學習實戰流程——數據準備》章節的學習,我們知道:該階段的目標主要是完成可用
于機器學習算法訓練的數據集準備。因此,該環干的練習任務為:需要通過對數據的預覽和理解,
準悠可用于模型訓練的數據集。該競賽提供了基酬的訓練集和測試集數據:
?train.csv訓練文件,包含了客戶真實幸存情況及相關特征,用于模型訓練;
?test.csv測試文件,僅包含客戶特征,不包含客戶真實的幸存情況,用于模型產生預測結果,
可提交Kaggle平臺評估預測效果:
任務1:
使用pandas模塊中read_csv函數載入train.csv文件數據,并預覽數據。
說明:train.csv文件位于Ititanic/data/?'目錄下
楣練習代碼
任務2
使用DataFrame屬性函數info()來統計每個變量中非空值的個數,以及當前的變盤類型,并選擇
已滿足建模條件的特征變量。
說明:
Pandas將數據載入為DaiaFrame的格式存儲,會自動對變量的數據類型進行定義,但定義類型
的合理與否,仍需我們根據變量實際的含義進行核對修正。所以在該任務中要求同學理解每個變
量的含義,并對info()返回的變量類型進行檢查。
變量含義說明
特征描述值
survival生.存0=No,1=Yes
pclass票類別-社會地位1?1st,2=2nd,3=3rd
特征描述值
name姓名
sex性別
Age年齡
sibsp兄弟姐妹/配偶
parch父母/孩子的數量
ticket票號
fare乘客票價
cabin客艙號碼
embarked登船港口C=Chertx)urq,Q=Queenstown,S=Southampton
任務2小結:
1.通過變量:含義可知,數據中分類型變量(Categorical)包括:Survived,Pclass,Sex,
Embarked;數值型變量(Numerical)包括:Age,SibSp,Parch,Fare,剩余的Name、
Ticket及Cabin變量屬于混合型變盤,需要進一步加工處理.info()函數返E1的變量類型
與業務理解相符。
2.變景Age,Cabin,Embarked存在缺失值。
3.object變量類型表示該變量中存在字符串.這類變量需要處理后才能進行建模。
4.Survived為目標變量(因變量Y),Passengerld為索引無需在建模中使用,可直接用于
后續建模的特征變量(自變量X)有:SibSp,Parch,Fare.
任務3
?使用pandas常用的數據選擇方法構建可用于Scikit-learn進行模型訓練的數據集。
?目標變量丫直接使用Survived字段,可直接使用的特征變量字段為:SibSp,Parch,Fare。
說明:
在《機器學習框架Scikit-learn簡介》中,我們介紹了機潛學習框架Scikit-learn中的Estimator,
并介紹Estimator.fit方法接收的數據,應分別包含特征矩陣(X)及維數組y(目標變量)。因此,
在本次任務中需要分別準備特征矩陣和目標變量。
3.3模型訓練
任務4
?基于上一任務結果劃分出驗證集(ValidationSet)用于模型效果評估,剩余數據川于模型
訓練。
?Skleam提供了model_selection.train_test_spHt()函數可以進行數據集劃分,該函數接收兩
個參數X和Y,包括了將要用到的疝底集和驗證集的所有.數據,在本訃斤對應為上文得到
的trainX和trainY。函數返回四個數據集訓練集X,訓練集Y,驗證集X和驗證集Y,
我們分別用train_Xjrain_y,val_X,val_y四個變分來接收。test_size=0.20的參數設置,
代表了期望分割的驗證集樣本量占分割前數據集的20%,random_state=1參數設置為了
確保隨機抽樣的結果可以凝現。
說明:Kaggle提供的test.csv的數據文件中并沒有目標變量Survived字段,我們若想評估模型
效果就需要將預測結果提交到Kaggle上進行評價。這對于后續迭代優化模型效果造成很大的不
使.所以我們可以從訓練集中抽取一部分樣本,不參與模型訓練,僅用「模型預測評估,我們將
其作為驗證集(ValidationSet)。(關于訓練集、驗證集和測試集的作用及劃分方法,在?2-4機
器學習實戰流程一模型訓練》章節有具體介紹。)
楣#訓練集與驗證集劃分
fromsklearn.model_selectionimporttrain_test_split
任務5
?訓練集樣本平衡性檢查。
?(史用pandas模次中value_8unt3()函數對lrain_y進行正負樣本數量統計。
說明:通過上述步驟得到了真正用于建模的訓練集train_X,train_y,和用于評估模型效果的驗證
數據集val_X,val_y.在進行模型訓練之前,我們首先要檢杳下訓練數據集中的正負樣本均勻性,
如果正負樣本嚴重不均勻,則需要進行處理。關于樣本均勻性的檢查及處理方法,在《機器學習
實戰流程一模型訓練》章節有具體介紹。
練習代碼#股統iltrain_y的正負樣本數量
任務5小結
基于train」中兩類樣本的數量,我們認為屬于可叁受的比例范圍,所以不對該訓練集做進一步抽
樣處理,直接進行第一次模型訓練。
任務6
?使用決策樹算法訓練模型
?決策樹算法可以使用sklearn'ptree.DecisionTreeClassifier的方法來實現。
說明:在《機器學習框架Scikit-learn簡介》中我們介紹了sklearn中使用Estimator來進行模型
訓練和預測“treo.DocisionTroeClassifior就是sklearn提供決策樹Estimator.所以可以使用fit()
函數來進行模型訓練.
#flfromsklearnimporttree
恭喜你得到了自己創建的第一個模型!
3.4模型評估
評估模型的基本思路為:
1.使用模型對用來評估的數據集(通常稱為:臉證條或測試集)進行預測,得到預測值;
2.將預測值與真實值進行比較,可使用不同的評估指標進行計算。對于模型評估更多的知
識學習,可以參考《機器學習實戰流程一模型評估》章節。
任務7
?使用上述分類器elf的predict。函數預測val_X數據集,得到預測值val_pred:
?使用melrics.accuracy_S8re()函數計算準而率,該函數接收兩個參數,分別為真實值數據
和預測值數據。
3.5練習總結
通過木次實驗練習,你已經掌握了基黜的機器學習建模流程的搭建:"問題定義-準備訓練數據與
測試數據?訓練模型?評估模型工
得到的第一個機器學習模型為決策樹模型,其對驗證集預測的準確率在67.6%左右。
如何進一步優化模型的預測能力?接下來的課程及練習中,我們將困繞機器學習項目流程中不同
的環節進行模型的迭代優化,主要針對數據準備和訓練模型兩個環節開展工作。
周次:…4口期:2021年9月28口課時序:13-16
項目二年浮旃施醺前灌扁聚優化
課題任務一:特征工程技術提升模型效果;任務二:梯度提升決策樹分類模
型訓練
1.能夠使用相關性矩陣計算、熱力圖、柱狀圖及宜方圖等方法開展探索
性數據分析;
2.能夠對連續數值型變量進行寓散化特征處理;
教學目的
3.能夠對類別型數據進行獨熱編碼處理;
要求
4.理解探索性數據分析及特征工程在機器學習項目中的重要作用;
5.掌握使用ScikitTearn進行梯度提升決策樹算法的調用,訓練及評
估的操作技能;
重點探索性數據分析及特征工程代碼實現:
是點梯度提升決策樹算法的調用,訓練及評估的操作技能;
課程思政通過梯度提升決策樹算法的原理學習,融入“自查、自省、自改”的精
育人內容益求精的思想。
1.數據類型的特點、整體數據統計分析、相關性分析、柱狀圖、直方圖
等探索性數據分析方法;(40')
2.探索性數據分析的作用;(40')
教學過程
3.數據處理方法:缺失值填充方法、離散化特征處理方法及獨熱編碼方
法:(40')
設計
4.梯度提升決策樹算法原理,及其與決策樹、隨機森林算法的區別與聯
系:(40')
及
時間分配
教
學
方
教學場所法理實一體
金通411
課后任務
教學反思
授課教師:王志
周次:5日期:2021年10月5日課時序:17-20
項目二幸存者預測模型準確率優化
課題
任務三:梯度提升決策樹分類模型評估;任務四:超參數調優模型優化
1.理解梯度提升決策樹算法原理,決策樹及隨機森林之間的區別與聯
教學目的
系;
要求
2.掌握使用ScikilTearn進行網格化搜索最優超參數的操作技能:
重點掌握使用Scikit-learn進行網格化搜索最優超參數的操作技能;
是點掌握使用Scikit-learn進行網格化搜索最優超參數的操作技能:
課程思政
通過超參數優化的技能講解,融入成本意識和求精意識。
育人內容
1.梯度提升決策樹算法原理,及其與決策樹、隨機森林算法的區別與聯
系:(40')
2.梯度提升決策樹算法的關鍵蓬參數及網格化搜索實現;(80')
教學過程
3.驗證集與交互檢驗的原理及實現。(40')
設計
及
時間分配
教學
法
教學場所方理實一體
金通411
課后任務
教學反思
授課教師:王志
問題定義
本次練習來源于Kaggle舉辦的一次數據競賽,希望用機器學習來解決:預測“生”與“死”的二分
類問題為了對比與實驗1的模型效果,我們仍使用決策樹算法完成整個實驗練習。
數據準備
該競賽提供了基礎的訓練集和測試集數據:
?train.csv訓練文件,包含了客戶真實幸存情況及相關特征,用于模型訓練:
?test.csv測試文件,儀包含客戶特征,不包含客戶真實的幸存情況,用于模型產生預測結果,
可提交Kaggle平臺評估預測效果:
與實驗1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 學校校舍使用管理制度
- 家具現場施工管理制度
- 學校讀物借閱管理制度
- 小區物業公司管理制度
- 大廈電梯門禁管理制度
- 幼師上課紀律管理制度
- 醫院物業協助管理制度
- 醫院網絡結算管理制度
- 關于環衛車輛管理制度
- 客戶服務投訴管理制度
- 雇人包工免責協議書
- 船舶應急部署表及船員應變卡
- 2025年下半年山東能源集團權屬企業內蒙古榮信化工限公司社會招聘易考易錯模擬試題(共500題)試卷后附參考答案
- 2025屆高三5月份全國各地聯考文言文閱讀分類匯編(解析版)
- 土建項目分包協議書
- 陜西郵政校招筆試題及答案
- 吐魯番市高昌區招聘社區工作者考試真題2024
- 山東省濟南市2025屆高三三模歷史試卷(含答案)
- 小學語文大單元整體教學設計講座
- 2025年中考道法答題技巧與模板構建專題08主觀題答題技巧(觀點概括類試)(學生版+解析)
- 風力發電場調試規程
評論
0/150
提交評論