王字春2015201906 人工智能课程总结 第-周About the class ·课堂笔记 第一周的内容主要是课程安排及介绍,在课堂上了解了人工智能的历史、方法、借助的工具以 及一些应用 一上机练习 本周未安排上机。 ·课后工作 属于了解阶段,暂未进行课后练习。 第二周Arduino Basics ·课堂笔记 课程大作业AiCar需要使用Arduinot板来控制小车。Arduino板的硬件部分是可以用来做电路连 接的A 还有Arduino IDE ,是Arduin板的程序开发环境。只要在DE中编写程序 程序会控制Arduino电路板。 Arduino板有很多端口,可以连接蓝牙、传感器等硬件,并使用程序逻辑控制小车的行为。 Arduino编程语言和C语言很类似, -些简单实用的命今如 Command Description ut One-time command at top of program. Set pinn to 5V for x millis ne(n,f,d) dby three times while (expr)( rpeanuconindene 上机练习 本周未安排上机 ·课后工作 安装Arduino IDE,运行ppt中Arduinof的示例代码
王宇睿 2015201906 ⼈⼯智能课程总结 第⼀周 About the class - 课堂笔记 第⼀周的内容主要是课程安排及介绍,在课堂上了解了⼈⼯智能的历史、⽅法、借助的⼯具以 及⼀些应⽤。 - 上机练习 本周未安排上机。 - 课后⼯作 属于了解阶段,暂未进⾏课后练习。 第⼆周 Arduino Basics - 课堂笔记 课程⼤作业AiCar需要使⽤Arduino板来控制⼩⻋。Arduino板的硬件部分是可以⽤来做电路连 接的Arduino电路板,还有Arduino IDE,是Arduino板的程序开发环境。只要在IDE中编写程序 代码,将程序上传到Arduino电路板后,程序会控制Arduino电路板。 Arduino板有很多端⼝,可以连接蓝⽛、传感器等硬件,并使⽤程序逻辑控制⼩⻋的⾏为。 Arduino编程语⾔和C语⾔很类似,⼀些简单实⽤的命令如: - 上机练习 本周未安排上机。 - 课后⼯作 安装Arduino IDE,运⾏ppt中Arduino的示例代码。 1
王宇睿2015201906 第三周Aicar Building 。课堂笔记 t硬件:Arduino UNO、BTO6 Bluetooth、HC-SR04 Ultrasonic Distance Measuring、.L293D Motor Drive Shield 2WD Smart Robot Car Chassis Kit 软件:DroidCam for Android、DroidCam Client for Win/inux、Arduino IDE(C/C++l、 Matlab.Python 小车前0 ward0:注意由于购买的马达可能动力不同、小车车轮也不完全相同,因此设置小 车前进速度时,左轮和右轮的速度不应该设置为一样的,需要通过测试调整RLRatio。. 超声波测距:编写getdistance0获得单位时间内探测器得到的间隔距离,当距离小于40cm 时随机右转 蓝牙连接:可借助Matlab或python. 使用手机相机获得图像:可借助MatIab,同时可使用imresize和imrotate处理图像。也可以借 助python的OpenCV, ·上机练习 本周未安排上机。 ·课后工作 AiCar制作第一阶段,安装小车,连接电机驱动、超声波、蓝牙模块。电机驱动使用L293D模 块,用于驱动两个电机。超声波和蓝牙模块与Arduino扩展板的连接示意图分别为: 此阶段小组完成小车的基本搭建,利用并修改知pt中的代码,实现小车的随机行走,同时连接 完成蓝牙模块,可以通过手机发送数字来控制小车,完成超声波避障
王宇睿 2015201906 第三周 Aicar Building - 课堂笔记 硬件:Arduino UNO、BT06 Bluetooth、HC-SR04 Ultrasonic Distance Measuring、L293D Motor Drive Shield、2WD Smart Robot Car Chassis Kit 软件:DroidCam for Android、DroidCam Client for Win/Linux、Arduino IDE (C/C++)、 Matlab、Python ⼩⻋前进forward():注意由于购买的⻢达可能动⼒不同、⼩⻋⻋轮也不完全相同,因此设置⼩ ⻋前进速度时,左轮和右轮的速度不应该设置为⼀样的,需要通过测试调整RLRatio。 超声波测距:编写getdistance()获得单位时间内探测器得到的间隔距离,当距离⼩于40cm 时,随机右转。 蓝⽛连接:可借助Matlab或python。 使⽤⼿机相机获得图像:可借助Matlab,同时可使⽤imresize和imrotate处理图像。也可以借 助python的OpenCV。 - 上机练习 本周未安排上机。 - 课后⼯作 AiCar制作第⼀阶段,安装⼩⻋,连接电机驱动、超声波、蓝⽛模块。电机驱动使⽤L293D模 块,⽤于驱动两个电机。超声波和蓝⽛模块与Arduino扩展板的连接示意图分别为: 此阶段⼩组完成⼩⻋的基本搭建,利⽤并修改ppt中的代码,实现⼩⻋的随机⾏⾛,同时连接 完成蓝⽛模块,可以通过⼿机发送数字来控制⼩⻋,完成超声波避障。 2
王宇春2015201906 第四周Machine Learning Landscape ·课堂笔记 根据训练是否受监督,机器学习可分为监督学习、无监督学习、强化学习以及半监督学习。监 督学习算法:KNN、线性回归、逻辑回归、SVM、决策树、随机森林、神经网络;无监督学 习算法:聚类:k-Means、.HCA、EM算法;降维:主成分分析PCA、局部线性嵌入LLE、t SNE 机器学习中的挑战主要是bad data&bad algorithm。Bad data主要是训练数据不足、训练数 据 具有代 无关特征(garbagei ,garbage out));Bad algorithm主要特征是训练数据 过拟合(超参数的选择)、训练数据低度拟合。 Dockerf使用过程:安装Docker,,相当于构造虚拟机,模拟在Linux中跑,进入docker后,打 docker可以看到各种使用命令,使用镜像images(区分CPU、GPU),打docker run+镜像名 可以启动。建立端口映射,再运行docker,提示网址(把localhost改成之前提示的P),即 可使用notebooki运行ipynb。 ·上机练习 本周未安排上机。 ·课后工作 由于是nacOS系统,类似Linux3系统,且已经安装好需要使用的python库,因此未使用 docker;:安装Jupyter Notebook,.运行书中给的第一章代码。 ①从网上提供开源数据集gdp_per_capita.csv下载数据并尝试使用sort_values函数根据不同 列的值排列数据 ②用简单的线性模型对gdp_per_capita和ife_satisfaction进行拟合,绘制图像,并观察过拟 合模型和根据所有数据、部分数据进行线性拟合的图像。 第五周End-to-End Machine Learning Project ·课程笔记 先进行了课程大作业第一次小组展示并投票。 之后以加州1990年收集到房价为数据集,使用机器学习算法预测最近加州的房价水平,了解 End-to-End Machine learn ing Project的构建过程。 分析问题 由于数据集是 注的数据 因此该问题是典型的监督学习;同时,这是一个多元 回归问题,因为我们需要多个特征来进行预测;由于没有连续的数据,数据集较小,batch learning就可以完成任务。 选择模型评价指标:RMSE、MAE等 获得数据:确定数据集下载地址。 展示数据:可以借助natplotlib进行绘图,比如用hist绘制频数直方图。 查看数据相关性:使用pandas中的scatter_.matrix0(,它会描绘出数据间的两两关系
王宇睿 2015201906 第四周 Machine Learning Landscape - 课堂笔记 根据训练是否受监督,机器学习可分为监督学习、⽆监督学习、强化学习以及半监督学习。监 督学习算法:KNN、线性回归、逻辑回归、SVM、决策树、随机森林、神经⽹络;⽆监督学 习算法:聚类:k-Means、HCA、EM算法;降维:主成分分析PCA、局部线性嵌⼊LLE、tSNE。 机器学习中的挑战主要是bad data & bad algorithm。Bad data主要是训练数据不⾜、训练数 据不具有代表性、⽆关特征(garbage in, garbage out);Bad algorithm主要特征是训练数据 过拟合(超参数的选择)、训练数据低度拟合。 Docker使⽤过程:安装Docker,相当于构造虚拟机,模拟在Linux中跑,进⼊docker后,打 docker可以看到各种使⽤命令,使⽤镜像images(区分CPU、GPU),打docker run+镜像名 可以启动。建⽴端⼝映射,再运⾏docker,提示⽹址(把localhost改成之前提示的IP),即 可使⽤notebook运⾏ipynb。 - 上机练习 本周未安排上机。 - 课后⼯作 由于是macOS系统,类似Linux系统,且已经安装好需要使⽤的python库,因此未使⽤ docker;安装Jupyter Notebook,运⾏书中给的第⼀章代码。 ① 从⽹上提供开源数据集gdp_per_capita.csv下载数据并尝试使⽤sort_values函数根据不同 列的值排列数据。 ② ⽤简单的线性模型对gdp_per_capita和life_satisfaction进⾏拟合,绘制图像,并观察过拟 合模型和根据所有数据、部分数据进⾏线性拟合的图像。 第五周 End-to-End Machine Learning Project - 课程笔记 先进⾏了课程⼤作业第⼀次⼩组展示并投票。 之后以加州1990年收集到房价为数据集,使⽤机器学习算法预测最近加州的房价⽔平,了解 End-to-End Machine Learning Project的构建过程。 分析问题:由于数据集是被标注的数据,因此该问题是典型的监督学习;同时,这是⼀个多元 回归问题,因为我们需要多个特征来进⾏预测;由于没有连续的数据,数据集较⼩,batch learning就可以完成任务。 选择模型评价指标:RMSE、MAE等。 获得数据:确定数据集下载地址。 展示数据:可以借助matplotlib进⾏绘图,⽐如⽤hist绘制频数直⽅图。 查看数据相关性:使⽤pandas中的scatter_matrix(),它会描绘出数据间的两两关系。 3
王宇睿2015201906 特征结合:注意到一些原特征对于预测房价是没什么用的,如total_rooms与 total_bedrooms,,很容易想到与其相关且与房价有关的属性应该是rooms_per_household, bedrooms._per_room还有population_.per_household。所以利用如total_rooms, total_bedrooms,households与population等特征结合来生成新的特征。编写 建立测试集:采用分层取样。 特征归一化处理:min-max scaling(normalization)and standardization。 pipline:由于数据需要进行多步处理,为保证顺序处理,可以构造pipline。pipline首先使用 Imputer来处理缺失值, 再用CombinedAttributesAdderi进行特征结合,最后进行特征归一化 处理。 模型评估:使用交叉验证以评估模型表现。可以看到决策树模型的表现甚至还不如线性模型、 决策树模型有过拟合的问题。还可以选择另一个学习模型进行尝试:随机森林。 模型调优:使用网格搜索GridSearchCV,.只需要指定各参数的取值,然后函数会自动随模型 进行训练、评估并选出最优参数。 ·上机练习 本周未安排上机。 ·课后工作 运行书中第二章代码。 第六周Classification ~课堂笔记 以MNST数据集手写体识别为例,首先介绍了二分类问题:判断一个输入图片中的数字是不 是5 洗搔分类器SGD(Stochastic Gradient Descent)随机横度下降:该分类方法通时每个样本来 选代更新一次, 如果样本量很大的情况, 比如几十万, 那么可能只用其中几万条或者几千条的 样本,就已经将参数迭代到最优解,训练速度快,适合应用于大规模数据集。可以直接调用 scikit--learn中的SGDClassifieri进行使用。 在鱼量分类器的表现时可以K折交叉验证(K-fold cr ss validation):把样本集分成k份 分别使用其中的k1)份作为训练集,剩下的1份作为交叉验证集,最后取最后的平均误差,来 评估模型。 但是要注意,很多时候仅仅使用accuracy并不是衡量分类器表现的最好指标,更好的方法是 使用混淆矩阵进行分析。 混淆矩阵(confusion matrix):每一列代表预测值,每一行代表的是实际的类别。混淆矩阵 要统计正确预测到的负例的数量,把负例预测成正例的数量,把正例预测成负例的数量,以及 正确预测到的正例的数量,这样就可以用于衡量分类准确率、正例覆盖率、正例命中率等。可 以直接使用scikit--learn中提供的confusion_.matrix0获得混淆矩阵
王宇睿 2015201906 特征结合:注意到⼀些原特征对于预测房价是没什么⽤的,如total_rooms与 total_bedrooms,很容易想到与其相关且与房价有关的属性应该是rooms_per_household, bedrooms_per_room还有population_per_household。所以利⽤如total_rooms, total_bedrooms,households与population等特征结合来⽣成新的特征。编写 CombinedAttributesAdder进⾏特征结合。 建⽴测试集:采⽤分层取样。 特征归⼀化处理:min-max scaling (normalization) and standardization。 pipline:由于数据需要进⾏多步处理,为保证顺序处理,可以构造pipline。pipline⾸先使⽤ Imputer来处理缺失值,再⽤CombinedAttributesAdder进⾏特征结合,最后进⾏特征归⼀化 处理。 模型评估:使⽤交叉验证以评估模型表现。可以看到决策树模型的表现甚⾄还不如线性模型, 决策树模型有过拟合的问题。还可以选择另⼀个学习模型进⾏尝试:随机森林。 模型调优:使⽤⽹格搜索GridSearchCV,只需要指定各参数的取值,然后函数会⾃动随模型 进⾏训练、评估并选出最优参数。 - 上机练习 本周未安排上机。 - 课后⼯作 运⾏书中第⼆章代码。 第六周 Classification - 课堂笔记 以MNIST数据集⼿写体识别为例,⾸先介绍了⼆分类问题:判断⼀个输⼊图⽚中的数字是不 是5。 选择分类器SGD (Stochastic Gradient Descent )随机梯度下降:该分类⽅法通过每个样本来 迭代更新⼀次,如果样本量很⼤的情况,⽐如⼏⼗万,那么可能只⽤其中⼏万条或者⼏千条的 样本,就已经将参数迭代到最优解,训练速度快,适合应⽤于⼤规模数据集。可以直接调⽤ scikit-learn中的SGDClassifier进⾏使⽤。 在衡量分类器的表现时,可以K折交叉验证(K-fold cross validation):把样本集分成k份, 分别使⽤其中的(k-1)份作为训练集,剩下的1份作为交叉验证集,最后取最后的平均误差,来 评估模型。 但是要注意,很多时候仅仅使⽤accuracy并不是衡量分类器表现的最好指标,更好的⽅法是 使⽤混淆矩阵进⾏分析。 混淆矩阵(confusion matrix):每⼀列代表预测值,每⼀⾏代表的是实际的类别。混淆矩阵 要统计正确预测到的负例的数量,把负例预测成正例的数量,把正例预测成负例的数量,以及 正确预测到的正例的数量,这样就可以⽤于衡量分类准确率、正例覆盖率、正例命中率等。可 以直接使⽤scikit-learn中提供的confusion_matrix()获得混淆矩阵。 4
王宇睿2015201906 接下来介绍多分类问题,识别0-9共十个手写数字。一种方法是构造十个二分类器,在判断测 试数据时,输出最高得分的分类,这被称为one-versus-all(OvA)strategy;或者也可以训练 45个(C2)二分类器,用于判断-对数字,如0和1,0和2等,这叫做one-versus-.one (OvO)strategy。.这两种方法在sklearn中都有实现,分别为OneVsOneClassifier和 OneVsRestClassifier ·上机练习 使用书中提供的代码,在MNIST数据集上进行手写体识别分类。 注意在跑到第31个cel时,precision_.recall_curve0i语句会报错,提示ValueError:bad input shape,这是因为电脑系统原因,我没有安装docker,,因此python中安装的sklearn版本较 高,和代码中要求的不匹配,造成了函数定义的细小差别,将sklearn降低版本安装即可。 书中提供的代码除了包括课堂的内容,还额外补充了KNN(K Neighbors Classifier)分类器 的使用。KNN是通过测量不同特征值之间的距离进行分类,思路是:如果一个样本在特征空 间中的k个最相似即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于 这个类别。在KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只 依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。 代码中有个小tck,通过上下左右不同方向移动数据集的方式,可以扩大训练集,从原来的 70000扩大到300000,accuracy也有一点提升。总的来说,KNN算法用于MNIST数据集手写 体识别准确率能达到97%以上,比SGD好一些 ·课后工作 阅读学习《python大战机器学习》的K邻近章节,使用scikit-learn自带的手写识别数据集 Digit Dataset(由于MNIST数据集太大,速度较慢)进行手写体识别分类,同时测试KNN算 法中n_neighbor ights和p参数的影响, 使用交叉验证,测试集与训练集的比例为1:3,使用KNN分类器,在训练集上最好的accuracy 为0.991091,在则试集上最好的accuracy为0.980000。 试KNN中n nei ors和V hts参数的影响,使用numpy中的linspace方法创建 n_neighbors(k值)的等差数列(数据集大小为179764,因此k值只取到1400),并选取 weights:为uniform、distancei两种,绘制不同weights"下,accuracy随n_neighbors的曲 线 可以看到,weights -uniform时得分随K值的增加而下降, 而weights=-distance时 ,K值的影响 不算太大。weights参数是在进行分类判断时给最近邻附上的加权,uniform:是等权加权, distance是按照距离的倒数进行加权。当K值较小意味着只有与输入实例较近的训练实例才会 对预测结果起作用,但当K值较大时,学习的近似误差增大,这时与输入实例较远的训练实例 也会对预测起作用,使预测发生错误 因此weights=-uniform时得分受K值影响很大。 测试KNN中n_neighbors和p参数的影响,绘制不同p值下,accuracy随n_neighbors的 曲线
王宇睿 2015201906 接下来介绍多分类问题,识别0-9共⼗个⼿写数字。⼀种⽅法是构造⼗个⼆分类器,在判断测 试数据时,输出最⾼得分的分类,这被称为one-versus-all (OvA) strategy;或者也可以训练 45个( )⼆分类器,⽤于判断⼀对数字,如0和1,0和2等,这叫做one-versus-one (OvO) strategy。这两种⽅法在sklearn中都有实现,分别为OneVsOneClassifier和 OneVsRestClassifier。 - 上机练习 使⽤书中提供的代码,在MNIST数据集上进⾏⼿写体识别分类。 注意在跑到第31个cell时,precision_recall_curve()语句会报错,提示ValueError: bad input shape,这是因为电脑系统原因,我没有安装docker,因此python中安装的sklearn版本较 ⾼,和代码中要求的不匹配,造成了函数定义的细⼩差别,将sklearn降低版本安装即可。 书中提供的代码除了包括课堂的内容,还额外补充了KNN(K Neighbors Classifier)分类器 的使⽤。 KNN是通过测量不同特征值之间的距离进⾏分类,思路是:如果⼀个样本在特征空 间中的k个最相似(即特征空间中最邻近)的样本中的⼤多数属于某⼀个类别,则该样本也属于 这个类别。在KNN算法中,所选择的邻居都是已经正确分类的对象。该⽅法在定类决策上只 依据最邻近的⼀个或者⼏个样本的类别来决定待分样本所属的类别。 代码中有个⼩trick,通过上下左右不同⽅向移动数据集的⽅式,可以扩⼤训练集,从原来的 70000扩⼤到300000,accuracy也有⼀点提升。总的来说,KNN算法⽤于MNIST数据集⼿写 体识别准确率能达到97%以上,⽐SGD好⼀些。 - 课后⼯作 阅读学习《python⼤战机器学习》的K邻近章节,使⽤ scikit-learn ⾃带的⼿写识别数据集 Digit Dataset(由于MNIST数据集太⼤,速度较慢)进⾏⼿写体识别分类, 同时测试 KNN算 法中 n_neighbors、weights 和p 参数的影响。 使⽤交叉验证,测试集与训练集的⽐例为1:3,使⽤KNN分类器,在训练集上最好的accuracy 为0.991091,在测试集上最好的accuracy为0.980000。 测试 KNN 中 n_neighbors 和 weights 参数的影响,使⽤numpy中的linspace⽅法创建 n_neighbors(k值)的等差数列(数据集⼤⼩为1797*64,因此k值只取到1400),并选取 weights为uniform、distance两种,绘制不同 weights下, accuracy 随 n_neighbors 的曲 线。 可以看到,weights=uniform时得分随K值的增加⽽下降,⽽weights=distance时,K值的影响 不算太⼤。weights参数是在进⾏分类判断时给最近邻附上的加权,uniform是等权加权, distance是按照距离的倒数进⾏加权。当K值较⼩意味着只有与输⼊实例较近的训练实例才会 对预测结果起作⽤,但当K值较⼤时,学习的近似误差增⼤,这时与输⼊实例较远的训练实例 也会对预测起作⽤,使预测发⽣错误,因此weights=uniform时得分受K值影响很⼤。 测试 KNN 中 n_neighbors 和 p 参数的影响,绘制不同p值下, accuracy 随 n_neighbors 的 曲线。 Cn 2 5
王宇睿2015201906 0←◆+Q包吕 0+++Q多盟 p参数用于衡量两个实例点相似程度的反映,距离公式可表示为: 1/0 d(1,,xn,(…,y》= ∑-P】 当p=2时,表示欧氏距离;当p=1时,表示曼哈顿距离;当p很大时,距离取各维度距离中的 最大值。 可以看到在进行分类时,KNN分类器的参数选择对accuracy的影响很大。在进行参数选择 时,可以使用GridSearch网格搜索。 第七周Training Models ·课堂笔记 使用数据对模型进行训练,寻找模型的最优参数。 线性模型:线性模型最简单,有直接的数学计算公式计算使得cost function最小的参数: 日=(XT,X).XT·y。使用numpy库中提供的rand函数生成在线性模型y=4+3X周围的随 机数(Gaussian noise) ,并用numpy提供的Linear Algebra module计算矩阵转置和矩阵乘 法,得到公式法计算出的theta_best,可以用这个&来进行函数值预测。而sklearn库中提供了 现成的方法进行线性回归,得到的结果与公式法得到的一致。线性模型一旦训练好,进行预测 时非常快。 可以用来训练线性模型的方法有: 梯度下降:一开始进行随机初始化,逐步优化,目标是减小cost function,直到收敛。对于梯 度下降算法,一个重要的参数就是下降的步长,对应的超参数是学习率。学习率如果设置的太 小,可能会迭代太多次都得不到收敛的结果,花费太长时间;如果设置的太大 ,可能会越过最 佳点,得不到最优解。同时,梯度下降法可能发现的是局部最优,而不是全局最优。不过 MSE cost function是凸函数,这使得梯度下降法发现的一定是全局最优。 批量梯度下降:对cost function求偏导,按照梯度的负方向下降,下降的步长为学习率,在每 次更新参数时都使用所有的样本来进行更新 随机梯度下降:由于批量梯度下降法在更新每一个参数时,需要所有的训练样本,所以训练过 程会随着样本数量的加大而变得缓慢,因此出现了随机梯度下降法来解决这一弊端。随机梯度 下降法利用每个样本的损失函数对8求偏导,得到对应的梯度来更新8,训练速度较快
王宇睿 2015201906 p参数⽤于衡量两个实例点相似程度的反映,距离公式可表示为: 当p=2时,表示欧⽒距离;当p=1时,表示曼哈顿距离;当p很⼤时,距离取各维度距离中的 最⼤值。 可以看到在进⾏分类时,KNN分类器的参数选择对accuracy的影响很⼤。在进⾏参数选择 时,可以使⽤GridSearch⽹格搜索。 第七周 Training Models - 课堂笔记 使⽤数据对模型进⾏训练,寻找模型的最优参数。 线性模型:线性模型最简单,有直接的数学计算公式计算使得cost function最⼩的参数: 。使⽤numpy库中提供的rand函数⽣成在线性模型 周围的随 机数(Gaussian noise),并⽤numpy提供的Linear Algebra module计算矩阵转置和矩阵乘 法,得到公式法计算出的theta_best,可以⽤这个 来进⾏函数值预测。⽽sklearn库中提供了 现成的⽅法进⾏线性回归,得到的结果与公式法得到的⼀致。线性模型⼀旦训练好,进⾏预测 时⾮常快。 可以⽤来训练线性模型的⽅法有: 梯度下降:⼀开始进⾏随机初始化,逐步优化,⽬标是减⼩cost function,直到收敛。对于梯 度下降算法,⼀个᯿要的参数就是下降的步⻓,对应的超参数是学习率。学习率如果设置的太 ⼩,可能会迭代太多次都得不到收敛的结果,花费太⻓时间;如果设置的太⼤,可能会越过最 佳点,得不到最优解。同时,梯度下降法可能发现的是局部最优,⽽不是全局最优。不过 MSE cost function是凸函数,这使得梯度下降法发现的⼀定是全局最优。 批量梯度下降:对cost function求偏导,按照梯度的负⽅向下降,下降的步⻓为学习率,在每 次更新参数时都使⽤所有的样本来进⾏更新。 随机梯度下降:由于批量梯度下降法在更新每⼀个参数时,需要所有的训练样本,所以训练过 程会随着样本数量的加⼤⽽变得缓慢,因此出现了随机梯度下降法来解决这⼀弊端。随机梯度 下降法利⽤每个样本的损失函数对 求偏导,得到对应的梯度来更新 ,训练速度较快。 θ ∧ = (XT ⋅ X) −1 ⋅ XT ⋅ y y = 4 + 3X ϑ ϑ ϑ 6
王宇睿2015201906 学习曲线:如果训练好的模型在训练集上表现很好,但使用交叉验证的测试集上表现很差,那 么说明数据出现了过拟合的情况;如果模型在训练集和测试集上变现都很差,则说明数据出现 了欠拟合的情况。 偏差/方差:高偏差意味着模型在训练集上欠拟合,高方差意味着模型在训练集上过拟合。 岭回归:是一种正则化版本的线性回归,为损失函数加上一个正则化项,避免矩阵中某个元素 的一个很小的变动引起最后计算结果误差很大。岭回归有超参数α,如果α为0时,就化简为 线性模型,岭回归牺牲了一部分无偏差性,使得方差变小。 逻辑回归:将数据拟合到一个logistic函数。为估计概率,使用sigmoid函数,它是一个s形的 曲线,取值在0,1]之间。使用逻辑回归可以更好的对事件发生的概率进行预测,以鸢尾花数 据集为例说明逻辑回归。只基于花瓣宽度这一特征构造逻辑回归模型,用于检测Iris-Virginic 种类。 Softmax[回归:Softmaxl回归是逻辑回归的推广,逻辑回归处理二分类问题,而Softmax[回归 处理多分类问题,类标签y的取值大于等于2。对于给定的测试输入×,利用模型针对每一个类 别估算概率值p=j,Softmax函数将k个可能的类别进行了累加,对于Softmax的代价函 数,利用梯度下降法使的J)最小。 课后工作 小组进行课程大作业AiC功能完善,尝试自己构建简单的语音识别系统,识别包括左” “右,前 “后 “停”等控制小车前进方向的关键字,构建和识别的主要过程为 ,数据采集及特征提取 通过录制音频和开源数据中采集两种方式获得了用于输入大量的语音数据和其对应的 文字标签。对获得的原始语音信号讲行外理(由干录制时在较为安静的环境中。因出 不需进行降噪处理) 对语音信号进行分帧(近似认为在10-30ms内是语音信号是短时 平稳的,将语音信号分割为一段一段进行分析)以及预加重(提升高频部分)等处 理。 用kaldit提取出能够反映语音信号特征的关键参数MFCC特征】 翠陈好的MCC特征和时应的类标签验入到狗建的分类器中法行练,利用交 证和网格授索调整分类器的超参数,获得构建好的语音识别模型。 ,识别命令 利用pyth n中的pyaudio包调用电脑的麦克风,从麦克风中获取声音。每隔一定的秒数 将获取到的声音文件实时保存到本地。在iux环境中调用shel脚本利用现有的工具对 音频文件进行MFCC特征提取,将得到的特征结果结果以文件形式保存,然后程序从 文件中读取数据.输入到语音识别樽型中讲行分类,得到对应的标签(左、右.前 后、停) 然而,由于从麦克风中获得声音后进行的操作较多,速度慢,同时,自己构建的语音识别系纺 正确率欠佳,无法满足控制小车的实时性要求,因此目前为止,我们小组决定采用现有的模 对小车进行语音控制。 首先在电脑端利用瑞对端的语音识别系统(IBM Speech to Text)进行语音识别识别出所说 的内容,然后程序读取语音的内容,并根据语言的内容给小车发送相应的指令 小车接到指令 后作出相应的反应,如果没有接到命令则保持现有的运行状态不变。整个语音识别过程见下图: 入√〈〉① 牙发指
王宇睿 2015201906 学习曲线:如果训练好的模型在训练集上表现很好,但使⽤交叉验证的测试集上表现很差,那 么说明数据出现了过拟合的情况;如果模型在训练集和测试集上变现都很差,则说明数据出现 了⽋拟合的情况。 偏差/⽅差:⾼偏差意味着模型在训练集上⽋拟合,⾼⽅差意味着模型在训练集上过拟合。 岭回归:是⼀种正则化版本的线性回归,为损失函数加上⼀个正则化项,避免矩阵中某个元素 的⼀个很⼩的变动引起最后计算结果误差很⼤。岭回归有超参数 ,如果 为0时,就化简为 线性模型,岭回归牺牲了⼀部分⽆偏差性,使得⽅差变⼩。 逻辑回归:将数据拟合到⼀个logistic函数。为估计概率,使⽤sigmoid函数,它是⼀个s形的 曲线,取值在[0, 1]之间。使⽤逻辑回归可以更好的对事件发⽣的概率进⾏预测,以鸢尾花数 据集为例说明逻辑回归。只基于花瓣宽度这⼀特征构造逻辑回归模型,⽤于检测Iris-Virginica 种类。 Softmax回归:Softmax回归是逻辑回归的推⼴,逻辑回归处理⼆分类问题,⽽Softmax回归 处理多分类问题,类标签y的取值⼤于等于2。对于给定的测试输⼊x,利⽤模型针对每⼀个类 别j估算概率值p(y = j|x),Softmax函数将k个可能的类别进⾏了累加,对于Softmax的代价函 数,利⽤梯度下降法使的J(θ)最⼩。 - 课后⼯作 ⼩组进⾏课程⼤作业AiCar功能完善,尝试⾃⼰构建简单的语⾳识别系统,识别包括“左”, “右”,“前”,“后”,“停”等控制⼩⻋前进⽅向的关键字,构建和识别的主要过程为: • 数据采集及特征提取 通过录制⾳频和开源数据中采集两种⽅式获得了⽤于输⼊⼤量的语⾳数据和其对应的 ⽂字标签。对获得的原始语⾳信号进⾏处理(由于录制时在较为安静的环境中,因此 不需进⾏降噪处理),对语⾳信号进⾏分帧(近似认为在10-30ms内是语⾳信号是短时 平稳的,将语⾳信号分割为⼀段⼀段进⾏分析)以及预加᯿(提升⾼频部分)等处 理。 ⽤kaldi提取出能够反映语⾳信号特征的关键参数MFCC特征。 • 模型训练 将整理好的MFCC特征和对应的类标签输⼊到构建的分类器中进⾏训练,利⽤交叉验 证和⽹格搜索调整分类器的超参数,获得构建好的语⾳识别模型。 • 识别命令 利⽤python中的pyaudio包调⽤电脑的⻨克⻛,从⻨克⻛中获取声⾳。每隔⼀定的秒数 将获取到的声⾳⽂件实时保存到本地。在linux环境中调⽤shell脚本利⽤现有的⼯具对 ⾳频⽂件进⾏MFCC特征提取,将得到的特征结果结果以⽂件形式保存,然后程序从 ⽂件中读取数据,输⼊到语⾳识别模型中进⾏分类,得到对应的标签(左、右、前、 后、停)。 然⽽,由于从⻨克⻛中获得声⾳后进⾏的操作较多,速度慢,同时,⾃⼰构建的语⾳识别系统 正确率⽋佳,⽆法满⾜控制⼩⻋的实时性要求,因此⽬前为⽌,我们⼩组决定采⽤现有的模型 对⼩⻋进⾏语⾳控制。 ⾸先在电脑端利⽤端对端的语⾳识别系统(IBM Speech to Text)进⾏语⾳识别,识别出所说 的内容,然后程序读取语⾳的内容,并根据语⾔的内容给⼩⻋发送相应的指令,⼩⻋接到指令 后作出相应的反应,如果没有接到命令则保持现有的运⾏状态不变。整个语⾳识别过程⻅下图: α α 7
王宇睿2015201906 第八周SVM、Decision Trees 课堂笔记 SM是非堂通用并日有效的机器学习模型.可以外理线性和非线性的分类问题.回归问题以 及孤立点检 类面,使得两个点集到此平面的最小距高最大,两个点集中 的欢缘点到干找大,法于特阿非常敏,因此可议定用ea 提供的方法进行特征缩放。SVM可分为Hard-Margin和Soft-Margin,Sof-Margin不能容忍数 据集中的蝶声,因此会造成过拟合的问题;而为了让Hard-Margin容忍一定的误差, 在每个样 本点后面加上了 个宽松条件,允许这个点违反一点误差 称为Sot-Margin。.在sklearn库 实现的SVM类可以通过调整超参数C来控制允许的误差,如果C很大,对错误的惩罚越大,模 型会倾向于尽量将样本分割开;如果C越小,则会有更多的违反边界的点存在,并且图中的 对于线性不可分的数据, 利用ke 将数据从一个空间转换到另 个空间 易于分类器进行分类。常用的核函数有多项式函数,多项式核函数可以实现将低维的输入空伯 映射到高纬的特征空间,但是多项式核函数的参数多,当多项式的阶数比较高的时候,核矩阵 的元素值将趋于无穷大或者无穷小,计算复杂度会大到无法计算。除此之外,还可以使用 RBF高斯径向基函数是一种局部性强的核函数,可以将 个样本映射到 个更高维的空 间内,该核函数是应用最广的一个,无论大样本还是小样本都有比较好的性能,而且其相对于 多项式核函数参数要少,因此大多数情况下在不知道用什么核函数的时候,优先使用高斯核函 除了解决分类问题,SM还能解决回归问题 SVM回归试图适合最多的样例 模型由误差较 大的点决定。在SVM回归算法中,目的是训练出超平面,利用超平面进行预测。与分类问题 一样,支持向量机的回归预测从线性到非线性转换是通过核函数,核函数就是一种映射,所以 洗择不同的核函数.那么结果将会形成不同的算法」 接下来,为更好地理解决策 模型,使用鸢尾花数据训练并图像化 一个决策树模型。决策树的 构造就是进行属性选择度量确定各个特征属性之间的拓扑结构,在某个节点处按照某一特征属 性的不同划分构造不同的分支,其目标是尽量让一个分裂子集中待分类项属于同一类别。在每 次需要分裂时,计算每个属性的增益率,然后选择增益率最大的属性进行分裂。在构造决策树 时,通常要进行剪枝, 为了处理由于数据中的噪声和离群点导致的过分拟合问题 ·上机练习 运行提供的第五、六章代码 ①利用鸢尾花数据集训练并测试SVM模型。构造pipeline,.生成多项式特征,多项式阶数选 为3,对数据进行预处理,利用StandardScaler(0将数据转为标准正态分布,并将处理好的 数据送入不同的SVM分类器。首先核函数选取iear,分类器超参数C=10,选取损失函数 hinge,random_state=42. 再测试多项式核函数 超参数C-5,比较degree=3 coef0-1和degree-=10、coef0=100时得到的预测曲线。最后测试RBF核,分别取不同的超 参数gamma和C,查看分类曲线。 -3.r-1.C-5 -10m.C 44 0
王宇睿 2015201906 第⼋周 SVM、Decision Trees - 课堂笔记 SVM是⾮常通⽤并且有效的机器学习模型,可以处理线性和⾮线性的分类问题、回归问题以 及孤⽴点检测。SVM寻找⼀个分类⾯,使得两个点集到此平⾯的最⼩距离最⼤,两个点集中 的边缘点到此平⾯的距离最⼤。注意SVM对于特征的范围⾮常敏感,因此可以使⽤sklearn中 提供的⽅法进⾏特征缩放。SVM可分为Hard-Margin和Soft-Margin,Soft-Margin不能容忍数 据集中的噪声,因此会造成过拟合的问题;⽽为了让Hard-Margin容忍⼀定的误差,在每个样 本点后⾯加上了⼀个宽松条件,允许这个点违反⼀点误差,称为Soft-Margin。在sklearn库中 实现的SVM类可以通过调整超参数C来控制允许的误差,如果C很⼤,对错误的惩罚越⼤,模 型会倾向于尽量将样本分割开;如果C越⼩,则会有更多的违反边界的点存在,并且图中的 margin就越⼤。对于线性不可分的数据,利⽤kernel将数据从⼀个空间转换到另⼀个空间,更 易于分类器进⾏分类。常⽤的核函数有多项式函数,多项式核函数可以实现将低维的输⼊空间 映射到⾼纬的特征空间,但是多项式核函数的参数多,当多项式的阶数⽐较⾼的时候,核矩阵 的元素值将趋于⽆穷⼤或者⽆穷⼩,计算复杂度会⼤到⽆法计算。除此之外,还可以使⽤ RBF,RBF⾼斯径向基函数是⼀种局部性强的核函数,可以将⼀个样本映射到⼀个更⾼维的空 间内,该核函数是应⽤最⼴的⼀个,⽆论⼤样本还是⼩样本都有⽐较好的性能,⽽且其相对于 多项式核函数参数要少,因此⼤多数情况下在不知道⽤什么核函数的时候,优先使⽤⾼斯核函 数。 除了解决分类问题,SVM还能解决回归问题,SVM回归试图适合最多的样例,模型由误差较 ⼤的点决定。在SVM回归算法中,⽬的是训练出超平⾯,利⽤超平⾯进⾏预测。与分类问题 ⼀样,⽀持向量机的回归预测从线性到⾮线性转换是通过核函数,核函数就是⼀种映射,所以 选择不同的核函数,那么结果将会形成不同的算法。 接下来,为更好地理解决策树模型,使⽤鸢尾花数据训练并图像化⼀个决策树模型。决策树的 构造就是进⾏属性选择度量确定各个特征属性之间的拓扑结构,在某个节点处按照某⼀特征属 性的不同划分构造不同的分⽀,其⽬标是尽量让⼀个分裂⼦集中待分类项属于同⼀类别。在每 次需要分裂时,计算每个属性的增益率,然后选择增益率最⼤的属性进⾏分裂。在构造决策树 时,通常要进⾏剪枝,为了处理由于数据中的噪声和离群点导致的过分拟合问题。 - 上机练习 运⾏提供的第五、六章代码。 ① 利⽤鸢尾花数据集训练并测试SVM模型。构造pipeline,⽣成多项式特征,多项式阶数选 为3,对数据进⾏预处理,利⽤StandardScaler()将数据转为标准正态分布,并将处理好的 数据送⼊不同的SVM分类器。⾸先核函数选取linear,分类器超参数C=10,选取损失函数 为hinge,random_state=42。再测试多项式核函数,超参数C=5,⽐较degree=3、 coef0=1和degree=10、coef0=100时得到的预测曲线。最后测试RBF核,分别取不同的超 参数gamma和C,查看分类曲线。 8
王字春2015201906 的, ②测测试Gaussian rBe核将一个样本映射到一个更高维空间的能力.并了解使用核函数后对 分类效果的提升 ③生成随机数据测试SV回归模型,分别选取线性以及多项式核函数绘制预测曲线,并观察 不同超参数值对预测的影响。 2C-1t0 1019 ·课后工作 1利用所学分类翠 进行多模态情感识别。使用ML数据集,根据数据集视频中人物的声 音、 表情或肢体动作等信息预测该 人 情感类别, 构建并测试不同情感识别分类器,包括 SVM、Random Forest,调整超参数,提高识别准确率。 语音情感识别: 对数据集中s1~s8中所有视频提取语音特征,并将同一个人的不同视频(由于不同说话人情感 差异大,故分说话人对特征进行处理)进行归一化处理。将所有语音特征和标签整理为 numpy数组,数组一行为一个视频提取出的语音特征,对应的标签包括anger,,disgust,.fear sad,surprise,.happy。.使用交叉验证对模型进行评价,比较不同超参数数值、不同分类器的 影响 构造了SVM分类器,在保持kernel-=rbf,gamma为默认值和cross_.validation的参数cv=10保持 不变时,选取C从2的幂次方依次调节(0.25-128),得到结果当C取到4时,模型预测效果最 好,最佳结果accuracy:为0.90277778,平均表现accuracy?为0.7625,用时为14.536531s,之 后C继续变大 (4-128) ,并不改变 效里 但用时变长 取gamma为默认值和cross_.validation的参数cv=10,C=4保持不变时,取kernel--rbf和 linear,通过实验发现Lineart核已经取到较好的效果(最佳结果accuracy为0.8888889),并且 用时仅为b核的65%。若仅考虑精度要求,可以选择Rbf核,若有速度要求,可优先选择 Linear核。 之后构造了Random Forest:分类器,并考察参数max_depth以及n_estimators的影响。 max depth表示单棵树的最大深度.深度越小.计草量越小.速度越快.但深度小时精度较 差,控制决策树深度目的是防过拟合。 在RML数据集中,max_depth=6时表现已经不错 accuracy为0.83333333。n_estimators表示随机森林中树的数量,经过控制变量的实验可以 发现树的数量越大,计算时间越长,而树的数量变化对精度的影响并不是很大。当 9
王宇睿 2015201906 ② 测试Gaussian_RBF核将⼀个样本映射到⼀个更⾼维空间的能⼒,并了解使⽤核函数后对 分类效果的提升。 ③ ⽣成随机数据测试SVM回归模型,分别选取线性以及多项式核函数绘制预测曲线,并观察 不同超参数值对预测的影响。 - 课后⼯作 1. 利⽤所学分类器,进⾏多模态情感识别。使⽤RML数据集,根据数据集视频中⼈物的声 ⾳、表情或肢体动作等信息预测该⼈物的情感类别,构建并测试不同情感识别分类器,包括 SVM、Random Forest,调整超参数,提⾼识别准确率。 语⾳情感识别: 对数据集中s1~s8中所有视频提取语⾳特征,并将同⼀个⼈的不同视频(由于不同说话⼈情感 差异⼤,故分说话⼈对特征进⾏处理)进⾏归⼀化处理。将所有语⾳特征和标签整理为 numpy数组,数组⼀⾏为⼀个视频提取出的语⾳特征,对应的标签包括anger, disgust, fear, sad, surprise, happy。使⽤交叉验证对模型进⾏评价,⽐较不同超参数数值、不同分类器的 影响。 构造了SVM分类器,在保持kernel=rbf,gamma为默认值和cross_validation的参数cv=10保持 不变时,选取C从2的幂次⽅依次调节(0.25-128),得到结果当C取到4时,模型预测效果最 好,最佳结果accuracy为0.90277778,平均表现accuracy为0.7625,⽤时为14.536531s,之 后C继续变⼤(4-128),并不改变预测效果,但⽤时变⻓。 取gamma为默认值和cross_validation的参数cv=10,C=4保持不变时,取kernel=rbf和 linear,通过实验发现Linear核已经取到较好的效果(最佳结果accuracy为0.8888889),并且 ⽤时仅为Rbf核的65%。若仅考虑精度要求,可以选择Rbf核,若有速度要求,可优先选择 Linear核。 之后构造了Random Forest分类器,并考察参数max_depth以及n_estimators的影响。 max_depth表示单棵树的最⼤深度,深度越⼩,计算量越⼩,速度越快,但深度⼩时精度较 差,控制决策树深度⽬的是防过拟合。在RML数据集中,max_depth=6时表现已经不错, accuracy为0.83333333。n_estimators表示随机森林中树的数量,经过控制变量的实验可以 发现树的数量越⼤,计算时间越⻓,⽽树的数量变化对精度的影响并不是很⼤。当 9
王宇睿2015201906 n_estimators=160,其余参数取默认值时,最佳结果accuracy为0.8888889。在不设置 n_estimators时,随机森林分类器的速度比SVM快很多,但牺牲了精确性 使用网格搜索GridSearchCV对SVM分类器进行参数调优,网格搜索的结果显示,当C取大于 等于1的2的幂次方时,对结果不造成影响,最佳结果accuracy>为0.90277778,与交叉验证结 果相近 图像情感识别: 将数据集s1-s8中的每个视频按照每秒3张的速度提取图片,使用openface对图片进行姿势检 测和校准.并将图片的大小裁剪为96.共获得处理时的图片6478张。利用openface提取图片 特征,获得6个标签 及特征矩阵6478128。测试SVM的linear核 rbf核,DecisionTree GaussianNB,DBN等分类器,并使用GridSearchCV取cv=5来寻找SVM的最佳参数。经过实 验,最佳的结果是取SVM分类器,最佳参数是C=1,kernel--linear',但预测结果的 accuracy50%左右,可能是数据集并不具有普遍性。 2.小组继续完善ACr功能,使得小车可以自动追踪红色电烙铁。将手机固定在小车上,利用 软件将手机作为网络摄像头,使得电脑可以通过相应的访问手机摄像头,通过这种方式,将 手机拍摄到的画面实时传送到电脑。在电脑端,我们使用opencv>对传回的视屏进行处理,本 次实验中。我们对识别的规则讲行了设定,利用红色电格铁上的红色方形风域.使得程序能够 根据颜色和形状的信息识别视频中合 并给出电烙铁上的红色方形区域的质心在小车的 视野中的坐标,根据坐标信息判断电烙铁在小车的那个方向,然后通过蓝牙串口给小车发送改 变运动方向的指令,小车收到指令后会做出相应的反应,从而使小车跟踪视屏中的电烙铁。 第九周Ensemble Learning and Random Forests 课堂笔记 这章介绍了很多集成学习方法,并介绍了随机森林 投票分类器:投票分类器的原理是结合了多个不同的机器学习分类器,使用多数票或者平均预 测概率.预测类标。这类分类器对一组相同表现的模型十分有用,同时可以平衡各自的弱点 Soft Voting:返回预测概率值的总和最大的标签.可通讨参数weiahts指定每个分类器的权 重;若权重提供了,在计算时则会按照权重计算,然后取平均;标签则为概率最高的标签 Bagging and Pasting:获得多样分类器的一种方法是使用不同的算法,另一种方法是使用相 同的算法,但是在训练数据的不同子集上进行训练。如果针对训练数据的抽样是有放回的抽样 那么这样的方法是bagging,如果针对训练数据的抽样是没有放回的抽样,那么这样的方法是 pasting。 相比past ng, bagging有放回的抽样虽然会略微提高偏差, 但是能够提高模型的多 样性,降低方差。总的来说,bagging通常能够取得更好的效果。但是,如果时间允许,可以 考虑比较bagging和pasting的结果。 Out-of-Bag Evaluation:在bagging的过程中,部分训练数据可能会被多次抽样,部分训练数 据可能不会被抽样。因为训练特定模型时,0b的训练数据是不被使用的 所以可以利用这些 数据对当前模型进行验证,而不需要单独的验证集或进行交叉验证。可以通过这些结果的平均 值衡量集成学习的结果。在sklearn里,可以通过设置oob_score=True实现。 随机森林:随机森林是决策树的集成,通常根据bagging的思想训练,max_sam lesi通常是训 练数据的规模。随机森林在训练决策树分裂结点时不是从所有特征中寻找最优的特征,而是从 o
王宇睿 2015201906 n_estimators=160,其余参数取默认值时,最佳结果accuracy为0.8888889。在不设置 n_estimators时,随机森林分类器的速度⽐SVM快很多,但牺牲了精确性。 使⽤⽹格搜索GridSearchCV对SVM分类器进⾏参数调优,⽹格搜索的结果显示,当C取⼤于 等于1的2的幂次⽅时,对结果不造成影响,最佳结果accuracy为0.90277778,与交叉验证结 果相近。 图像情感识别: 将数据集s1~s8中的每个视频按照每秒3张的速度提取图⽚,使⽤openface对图⽚进⾏姿势检 测和校准,并将图⽚的⼤⼩裁剪为96,共获得处理过的图⽚6478张。利⽤openface提取图⽚ 特征,获得6个标签,及特征矩阵6478*128。测试SVM的linear核、rbf核,DecisionTree, GaussianNB,DBN等分类器,并使⽤GridSearchCV取cv=5来寻找SVM的最佳参数。经过实 验,最佳的结果是取SVM分类器,最佳参数是C=1,kernel=‘linear',但预测结果的 accuracy50%左右,可能是数据集并不具有普遍性。 2. ⼩组继续完善AiCar功能,使得⼩⻋可以⾃动追踪红⾊电烙铁。将⼿机固定在⼩⻋上,利⽤ 软件将⼿机作为⽹络摄像头,使得电脑可以通过相应的ip访问⼿机摄像头,通过这种⽅式,将 ⼿机拍摄到的画⾯实时传送到电脑。在电脑端,我们使⽤opencv对传回的视屏进⾏处理,本 次实验中,我们对识别的规则进⾏了设定,利⽤红⾊电烙铁上的红⾊⽅形区域,使得程序能够 根据颜⾊和形状的信息识别视频中的电烙铁,并给出电烙铁上的红⾊⽅形区域的质⼼在⼩⻋的 视ᰀ中的坐标,根据坐标信息判断电烙铁在⼩⻋的那个⽅向,然后通过蓝⽛串⼝给⼩⻋发送改 变运动⽅向的指令,⼩⻋收到指令后会做出相应的反应,从⽽使⼩⻋跟踪视屏中的电烙铁。 第九周 Ensemble Learning and Random Forests - 课堂笔记 这章介绍了很多集成学习⽅法,并介绍了随机森林。 投票分类器:投票分类器的原理是结合了多个不同的机器学习分类器,使⽤多数票或者平均预 测概率,预测类标签。这类分类器对⼀组相同表现的模型⼗分有⽤,同时可以平衡各⾃的弱点。 Soft Voting:返回预测概率值的总和最⼤的标签,可通过参数weights指定每个分类器的权 ᯿;若权᯿提供了,在计算时则会按照权᯿计算,然后取平均;标签则为概率最⾼的标签。 Bagging and Pasting:获得多样分类器的⼀种⽅法是使⽤不同的算法,另⼀种⽅法是使⽤相 同的算法,但是在训练数据的不同⼦集上进⾏训练。如果针对训练数据的抽样是有放回的抽样, 那么这样的⽅法是bagging,如果针对训练数据的抽样是没有放回的抽样,那么这样的⽅法是 pasting。相⽐pasting,bagging有放回的抽样虽然会略微提⾼偏差,但是能够提⾼模型的多 样性,降低⽅差。总的来说,bagging通常能够取得更好的效果。但是,如果时间允许,可以 考虑⽐较bagging和pasting的结果。 Out-of-Bag Evaluation:在bagging的过程中,部分训练数据可能会被多次抽样,部分训练数 据可能不会被抽样。因为训练特定模型时,oob的训练数据是不被使⽤的,所以可以利⽤这些 数据对当前模型进⾏验证,⽽不需要单独的验证集或进⾏交叉验证。可以通过这些结果的平均 值衡量集成学习的结果。在sklearn⾥,可以通过设置oob_score=True实现。 随机森林:随机森林是决策树的集成,通常根据bagging的思想训练,max_samples通常是训 练数据的规模。随机森林在训练决策树分裂结点时不是从所有特征中寻找最优的特征,⽽是从 10