机器学习入门与实战(王志 微课版) 教案_第1页
机器学习入门与实战(王志 微课版) 教案_第2页
机器学习入门与实战(王志 微课版) 教案_第3页
机器学习入门与实战(王志 微课版) 教案_第4页
机器学习入门与实战(王志 微课版) 教案_第5页
已阅读5页,还剩99页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《机器学习入门与实践》教案

周次: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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论