十三、机器学习算法构建技巧

简介: 十三、机器学习算法构建技巧

1、构建训练数据集



在实践中,通常获取垃圾邮件中出现频率最高的前10000到50000个单词作为训练集。


一个可以提高模型准确性的做法是:收集尽可能多的训练数据。


可以根据邮件的发送路由来构建更复杂的特征;


根据邮件内容构建更加复杂的特征,如字母大小写,有无感叹号等;


检查邮件中的拼写错误,故意错误拼写常在垃圾邮件中出现;




2、误差分析-error analysis



构建一个机器学习模型通用的步骤:


首先从一个简单的算法开始入手构建,使得模型可以很开构建出来,并且可以用来检测交叉验证数据集;


之后绘制学习曲线来辅助判断是否才需要增加训练数据,增加特征数量或者应该采取其他措施;


还可以进行误差分析,手动将算法错误执行的数据挑选出来进行查看,观察是否能从这些错误样本中找到普遍性的规律,以此来帮助提升算法的精度。下面是一个误差分析的例子:误差分析有助于快速找到能够大幅提升机器学习算法性能的关键点所在,如垃圾邮件分类问题中,通过误差分析可以快速确定哪一种类型的邮件容易被错误分类,从而可以采取针对性的措施。

087aefbc8af74e5d90ff438f324b575a.png


在选定了改进项之后,将新的机器学习算法使用交叉验证集进行测试计算误差,同旧的算法对交叉验证集的误差进行对比,若新算法误差有很大的降低,则说明改进有效。



3、偏斜类-skewed classes



当训练数据中某一类数据的数据量原大于另外一类数据的数据量时,则数据量少的哪一类数据就叫做“偏斜类”。在这种情况下,只预测y=0或者y=1会使得算法效果最好。为了使得不是只预测y=0或者y=1时模型最好,使用下述查准率和召回率(precision/recall)来衡量模型的好坏:

b20e64938b824952a6fa112bb61cd036.png


好的机器学习模型应该具备precision和recall均为比较高的数值的特征。



3.1 查准率和召回率之间的权衡


在癌症预测模型中,若将确定癌症的概率由0.5上升为0.7或者0.9,则会使得precision提高,因为预测患有癌症的人数降低;使得recall降低,因为正确判定患有癌症的人数也减少。


反之,若将确定癌症的概率阈值设置为0.3或者0.2,则会使得precision降低,因为预测患有癌症的人数会显著上升;使得recall提高,因为预测准确患有癌症的人数上升。

使用F值来权衡precision-P 和 recall-R


F=2P+RPR

1a7757def36848bd8e36e3d24cac2724.png


F值越大,通常来说模型的效果越好,对于交叉验证集采用不同的阈值进行模型测试,选择最大F值对应的阈值。






相关文章
|
15天前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
44 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
2月前
|
机器学习/深度学习 算法 数据挖掘
8个常见的机器学习算法的计算复杂度总结
8个常见的机器学习算法的计算复杂度总结
8个常见的机器学习算法的计算复杂度总结
|
16天前
|
机器学习/深度学习 存储 人工智能
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
使用Python作为开发语言,基于文本数据集(一个积极的xls文本格式和一个消极的xls文本格式文件),使用Word2vec对文本进行处理。通过支持向量机SVM算法训练情绪分类模型。实现对文本消极情感和文本积极情感的识别。并基于Django框架开发网页平台实现对用户的可视化操作和数据存储。
20 0
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
|
29天前
|
机器学习/深度学习 数据采集 算法
数据挖掘和机器学习算法
数据挖掘和机器学习算法
|
1月前
|
机器学习/深度学习 数据采集 存储
一文读懂蒙特卡洛算法:从概率模拟到机器学习模型优化的全方位解析
蒙特卡洛方法起源于1945年科学家斯坦尼斯劳·乌拉姆对纸牌游戏中概率问题的思考,与约翰·冯·诺依曼共同奠定了该方法的理论基础。该方法通过模拟大量随机场景来近似复杂问题的解,因命名灵感源自蒙特卡洛赌场。如今,蒙特卡洛方法广泛应用于机器学习领域,尤其在超参数调优、贝叶斯滤波等方面表现出色。通过随机采样超参数空间,蒙特卡洛方法能够高效地找到优质组合,适用于处理高维度、非线性问题。本文通过实例展示了蒙特卡洛方法在估算圆周率π和优化机器学习模型中的应用,并对比了其与网格搜索方法的性能。
165 1
|
2月前
|
机器学习/深度学习 PHP 开发者
探索PHP中的面向对象编程构建你的首个机器学习模型:以Python和scikit-learn为例
【8月更文挑战第30天】在PHP的世界中,面向对象编程(OOP)是一块基石,它让代码更加模块化、易于管理和维护。本文将深入探讨PHP中面向对象的魔法,从类和对象的定义开始,到继承、多态性、封装等核心概念,再到实战中如何应用这些理念来构建更健壮的应用。我们将通过示例代码,一起见证PHP中OOP的魔力,并理解其背后的设计哲学。
|
2月前
|
机器学习/深度学习 人工智能 Android开发
揭秘AI编程:从零开始构建你的第一个机器学习模型移动应用开发之旅:从新手到专家
【8月更文挑战第29天】本文将带你走进人工智能的奇妙世界,一起探索如何从零开始构建一个机器学习模型。我们将一步步解析整个过程,包括数据收集、预处理、模型选择、训练和测试等步骤,让你对AI编程有一个全面而深入的理解。无论你是AI初学者,还是有一定基础的开发者,都能在这篇文章中找到你需要的信息和启示。让我们一起开启这段激动人心的AI编程之旅吧! 【8月更文挑战第29天】在这篇文章中,我们将探索移动应用开发的奇妙世界。无论你是刚刚踏入这个领域的新手,还是已经有一定经验的开发者,这篇文章都将为你提供有价值的信息和指导。我们将从基础开始,逐步深入到更复杂的主题,包括移动操作系统的选择、开发工具的使用、
|
2月前
|
机器学习/深度学习 算法 数据挖掘
机器学习必知必会10大算法
机器学习必知必会10大算法
|
2月前
|
机器学习/深度学习 存储 算法
图解最常用的 10 个机器学习算法!
图解最常用的 10 个机器学习算法!
|
3天前
|
传感器 算法 C语言
基于无线传感器网络的节点分簇算法matlab仿真
该程序对传感器网络进行分簇,考虑节点能量状态、拓扑位置及孤立节点等因素。相较于LEACH算法,本程序评估网络持续时间、节点死亡趋势及能量消耗。使用MATLAB 2022a版本运行,展示了节点能量管理优化及网络生命周期延长的效果。通过簇头管理和数据融合,实现了能量高效和网络可扩展性。
下一篇
无影云桌面