第六课 多算法组合与模型调优

本系列是七月算法机器学习课程笔记

文章目录

  • 1 前序工作流程
    • 1.1 数据处理
    • 1.2 特征工程
    • 1.3 模型选择
    • 1.4 交叉验证
    • 1.5 寻找最佳超参数
  • 2 模型优化
    • 2.1 模型状态
    • 2.2 模型优化1
    • 2.3 模型优化2
    • 2.4 模型优化3
    • 2.5 模型优化4:模型融合
      • 2.5.1 bagging
      • 2.5.2 staking
      • 2.5.3 adaboost
      • 2.5.4 Gradient Boosting Tree

1 前序工作流程

1.1 数据处理

1.2 特征工程

这两部分在第五课已经说明了。

1.3 模型选择

在这里插入图片描述

在sklearn中有关于算法选择的路径图。但也不是绝对的。
模型选择有两种含义。
第一种是:选择不同算法。
当拿到一个问题先看属于这4种类型中的哪一种:分类?回归?聚类?降维?例如搜索结果排序,看上去不是上面的任何一种。继续想为什么要排序,排序就是把用户想点的数据放在前面,那就可以将问题看做是分类问题:用户会点的数据和用户不会点的数据。当然也可以看做是回归问题:用户点击数据的概率。
此外还要看数据类型:是文本型数据还是数值型数据。例如分类问题中文本型数据推荐使用朴素贝叶斯算法。数值型可以使用K近邻或者SVM。

第二种是:选择超参数
这就类似于师哥师姐给你介绍了很多学习方法,当用在你自己的具体情况下,究竟该学习多少小时的英语,该用多少小时学习数学。这是需要考虑的。

1.4 交叉验证

交叉验证是用于评估模型超参数的一种方法。
我们将数据集分为训练集和测试集。测试集用于评估模型,只能使用一次,类比于三年只能参加一次高考。
交叉验证最常采用的方法是K折交叉验证。是将训练集分为k份。每次随机选择一份数据用于验证,其余数据用于训练。
例如下图,在给定一组超参数条件下,使用其中1份数据用于评估,4份数据用于训练。做5次训练,得到5个模型的评估结果,求其平均值作为该组参数的验证结果。

在这里插入图片描述

1.5 寻找最佳超参数

寻找最佳超参数有几种方法,常用的是网格搜索交叉验证GridSearchCV。
网格交叉验证就是任意参数要做两两组合。例如C=[1,10,100],gamma=[0.001,0.0001]。那网格交叉验证就可以得到6组超参数。每一组超参数交给交叉验证算法,评估模型效果。
最后选择模型效果最好的那一组参数作为最终模型的超参数。在训练集上训练得到模型作为最终的模型。

此外还有随机搜索交叉验证方法。他们只是组合超参数的方式不同。

在这里插入图片描述

2 模型优化

2.1 模型状态

模型的状态分为:过拟合、欠拟合、合适。
在这里插入图片描述

欠拟合是指模型学习能力弱,不能很好的表达数据。表现特征是在训练集准确率低,在测试集准确率低。

过拟合是指模型学习能力强,学习了噪音数据。表现特征是在训练集准确率高,在测试集准确率低。

训练集准确率随着样本量的增加而减小。原因是当样本量小的时候,模型不是学习而是记忆结果。所以随着样本量增加,训练集准确率降低。
测试集准确率随着样本量的增加而增加。原因是见到的样本多了,自然训练集数据越接近真实世界的数据,能够正确处理的数据也越来越多。
下图中的红线是一条标准线,是理想中想要找到的线。
在这里插入图片描述

在实际工作中,不会画这么麻烦的曲线,时间也不允许。会直接拿数据,看准确率。准确率都低,那基本就是欠拟合。训练集准确率高,测试集准确率低,过拟合。

2.2 模型优化1

如果发生过拟合:
1 采集更多的数据:增加数据会降低噪音数据的影响
2 增大正则化系数

如果发生欠拟合:
1 找更多的特征
2 减小正则化系数

2.3 模型优化2

如果是线性模型(线性回归、逻辑回归、线性SVM),可以分析特征系数。查看绝对值高的特征,看是不是可以做进一步细化,甚至可以做特征组合。

2.4 模型优化3

bad case分析
分析分错了的样本,归类错误原因。
分类问题:看是哪个特征的影响大,有没有共性
回归问题:哪些样本预测结果差距大,为什么?

2.5 模型优化4:模型融合

模型融合(model ensemble)
模型融合是一组独立的模型的组合。如果所有的模型都是同一种算法,称为base leaner。如果模型算法不同,就称为component leaner。

为什么这样是有效的呢?
从统计角度来讲,机器学习就是要找到一种从X到y的映射。这个真实的映射是什么谁都不知道。那如果有多个模型来预测学习的话,可能会更接近真实。

从计算角度来讲,很多优化函数是没有全局最优解,找到的是局部最优解。但是初始化参数不同,可能会落到不同的局部。有多个模型求平均,会接近最终想要的优化局部。

模型融合的方式有三种
1 bagging :群众的力量是伟大的,集体智慧是惊人的。
2 stacking:站在巨人的肩膀上能看得更远。
3 adboost:一万小时定律。

2.5.1 bagging

思路:很多时候模型效果不好是因为过拟合了。怎么解决?如果每次只给部分数据,多找几个模型来做一下,综合一下他们的答案。

过程:如果用同一个算法,每次取一个子集训练一个模型。如果是分类问题,将多个模型的结果做vote,如果是回归问题,将多个模型的结果做平均。如果用不同的算法,用全部数据集训练模型。如果是分类问题,将多个模型的结果做vote,如果是回归问题,将多个模型的结果做平均。

2.5.2 staking

在这里插入图片描述

stacking学习步骤分2步。将训练集分为两部分数据集D1和D2。D1和D2是没有交集的。
第一步,也就是level0,使用数据集D1,学习到多个模型。例如学习到LR、SVM、DT三种模型。
第二步,也就是level1,使用数据集D2和使用上一步的模型,学习到新的模型,作为最终的模型。这个模型如果是线性模型,那可以理解为是前面模型的线性组合。这个模型也可能是其他模型。

通常情况下stacking这个模型能力会非常强,所以第二层的模型一般使用线性模型,例如LR。

2.5.3 adaboost

思路:模型效果不好是因为不够努力,要重复迭代和训练。要多做之前的错题,每次分配给分错的样本更高的权重。用最简单的分类器叠加。
在这里插入图片描述
在这里插入图片描述

2.5.4 Gradient Boosting Tree

思路:从残差中学习

总结:模型融合有三种思路:bagging stacking boosting。
bagging的具体例子是:RandomForest
boosting的具体例子是:Adaboost,GDBT

bagging方式:VotingClassifier、BaggingClassifier、RandomForestClassifier
boosting方式:AdaBoostClassifier

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/424102.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我的分页代码

private void Page_Load(object sender, System.EventArgs e) { // 在此处放置用户代码以初始化页面 if(!this.IsPostBack) { string PageIndexRequest.QueryString["PageIndex"]; if(PageIndexnull||PageIndex.Length0)//这种方法判断快一些 { …

第一百二十一期:当新闻报道用上AR 技术,能为读者带来什么?

「有一种名为记忆宫殿的记忆术,要点就是在人脑内建立起虚拟的空间场景,并把各种信息与空间产生联系。如果我们也能为每一起新闻建立起空间的概念,显然也会给读者带来更深刻的印象。」 作者:木斯 大部分新闻都拥有不同的切入视角…

第七章 scikit-learn与机器学习实战

文章目录1 scikit-learn2 一个项目实战2.1 项目目标2.2 划定问题2.3 选择性能指标2.4 核实假设2.5 获取数据2.6 数据探索和可视化、发现规律2.7 为机器学习算法准备数据2.8 选择并且训练模型2.9 模型微调2.10 测试集上测试1 scikit-learn 导航页与算法指南 API:数据…

Erlang注册进程名称-tut16.erl

作 w3cschool erlang 的练习 --------- 1 -module(tut16).2 3 -export([start/0, ping/1, pong/0]).4 5 %% Erlang 注册进程名称6 7 %% ping 进程必须通过某种途径 获得 pong 进程的进程标识符后 8 %% 才能将消息发送给 pong 进程9 10 %% Erlang 提供了 为每个进程提供一个名称…

verycd重整——CBT系列

《CBT 金牌教程 SCCP 系列》(CBT NUGGETS SCCP SERIES)LiBiSO 教程[Bin]http://lib.verycd.com/2006/06/05/0000105677.html2006-06-05 19:18[CBT.金牌教程.SCCP.系列].CBT.NUGGETS.SCCP.SERIES-LiBiSO.bin498.8MB《CBT 金牌教程 LINUX LPIC-2》(CBT NUGGETS SCCP SERIES)JGTiS…

第一百二十二期:大数据分析:红包先抢好,还是后抢好

本文用matlab程序,模拟微信给10个人发红包,设定次数1亿次,统计每个人抢到的红包,最佳手气和最差手气次数,用以分析红包是应该先抢还是后抢? 作者:景因分析 本文用matlab程序,模拟微信给10个人…

Linux重定向的理解

1 /*2 重定向的实例3 dup2函数4 5  利用filefd来代替STDOUT(标准输出流)&#xff0c;write写入filefd的数据&#xff0c;重定向写出到STDOUT中&#xff1b;6 */7 8 #include <stdio.h>9 #include <sys/stat.h> 10 #include <string.h> 11 #include …

第八章xgboost/lightGBM

文章目录1 xgboost1.1 基本用法1.1.1 通用参数1.1.2 集成参数1.1.3 任务参数1.2 例子1.3 当评价函数不在默认范围内2 lightGBM1 xgboost 1.1 基本用法 xgboost有三类参数&#xff1a;通用参数、集成参数和任务参数。 1.1.1 通用参数 booster&#xff1a;可选值gbree、gblin…

根据Web服务器的记录来追踪黑客(转)

有感触&#xff0c;转此文 现今的网络&#xff0c;安全越来越受到大家的重视&#xff0c;在构建网络安全环境时&#xff0c;在技术手段&#xff0c;管理制度等方面都逐步加强&#xff0c;设置防火墙&#xff0c;安装入侵检测系统等等。但网络安全是个全方位的问题&#xff0c;忽…

spring mvc学习(30):sessionatrribute存储session数据

创建maven项目就不说了&#xff0c;需要的找我前面的博客 pom.xml文件 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http…

验证码

金讯教育有一节课讲的是验证码;代码如下&#xff1a; html: <label><input type"text" /><span id"yz" style" background:url(1.png) -10px -15px;width:80px;font-style: italic; height: 20px;border: 1px solid black;display: in…

C++ Builder 启动时不显示主窗体

在网络上看到不少说法&#xff0c;但标准的做法应该是这样的。首先&#xff0c;设置主窗体Visible属性为false;然后&#xff0c;在Application->Run之前&#xff0c;设置Application->ShowMainForm false; 即可转载于:https://www.cnblogs.com/rookieport/archive/2006/…

第九章 隐马尔科夫模型HMM

文章目录1 隐马尔科夫模型定义2 概率计算算法2.1 前向概率2.2 概率计算3 学习算法3.1 EM算法3.2EM在HMM4 预测算法1 隐马尔科夫模型定义 隐马尔科夫模型是一个seq2seq模型。例如词性标注。 时间序列t1t2t3状态序列代词动词名词观察序列我爱机器学习 能够看到的&#xff0c;例…

spring mvc学习(31):原生api

创建maven项目就不说了&#xff0c;需要的找我前面的博客 pom.xml文件 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http…

如何使用设计模式来构造系统--(7)

(声明:本系列所用的模式都来自GOF23中&#xff0c;本系列并不是讲23种经典设计模式&#xff0c;而是如何去使用这些模式) 在前面的文章中,我们设计完成了员工工资,福利以及按照部门来区分员工,以及遍历统计部门人员成本等业务逻辑,这些设计基本上可以满足我们所设定的场景的…

程序员四大忌 你该如何避免呢?

< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd> 一忌&#xff1a;轻易言败&#xff0c;没有自信没有永不放弃精神的程序员&#xff0c;只是一个有程序员名号的假程序员。一个真正的程序员&#xff0c;知道在程序设计的过程中&#…

spring mvc学习(32):原生代码导入

第一种方法 1点击项目--右键---preferences(添加build path) 勾上 第二种方法 2配置pom.xml <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</…

深度学习03-CNN 应用

说明&#xff1a;本系列是七月算法深度学习课程的学习笔记 文章目录1 概述2 图片识别定位3 物体监测3.1 选择性搜索3.2 R-CNN3.3 Fast R-CNN3.4 Faster R-CNN4 语义分割4.1 滑窗处理4.2全卷积神经网络5 代码1 概述 CNN主要任务包含物体识别定位、物体识别、图像分割。 图片识…

管理信息系统数据库设计标准(草稿)

表名命名标准&#xff1a; 1.所有基础资料表&#xff0c;表名均由dic表名英文含义词构成。 2._Dictionary_Table是表名列表&#xff0c;例外。 字段命名标准&#xff1a; …

spring mvc学习(33):原生apiSpring MVC过滤器-HiddenHttpMethodFilter

浏览器form表单只支持GET与POST请求&#xff0c;而DELETE、PUT等method并不支持&#xff0c;spring3.0添加了一个过滤器&#xff0c;可以将这些请求转换为标准的http方法&#xff0c;使得支持GET、POST、PUT与DELETE请求&#xff0c;该过滤器为HiddenHttpMethodFilter。 Hidden…