机器学习笔记-14

机器学习系统设计

1.导入

以垃圾邮件分类器为例子,当我们想要做一个能够区分邮件是否为垃圾邮件的项目的时候,首先在大量垃圾邮件中选出出现频次较高的10000-50000词作为词汇表,并为其设置特征,在对邮件分析的时候输出该邮件的特征判断是否为垃圾邮件。

假设词汇表为(word1,word2,word3),其中word1和word3是垃圾邮件中出现频次很高的,word2是非垃圾邮件中常出现的。比如一个邮件的输出为(1,0,1),意思就是邮件中含有word1、word3,没有word2,那么可以判定为垃圾邮件。

注意词汇表中不止包含垃圾邮件中的词还包括非垃圾邮件出现的词,上述例子中word2就是从非垃圾邮件中选取的。

上面的例子中的word1、word2、word3都是随便起的名字不具有任何含义!!

如果还没有理解的可以看看这个视频

2.误差分析(Error Analysis)

依旧以垃圾邮件分类器为例子,当我们算法将一些垃圾邮件、非垃圾邮件错误分类时,我们可以把这些被误分的邮件统计起来看看有什么共同的特征和规律,以此来设计新特征、改进算法。

为了方便统计引入数值评价指标"误差率",这个大家应该都懂。

在验证集上做误差分析,不要在测试集上做误差分析。

在我们新开始一个机器学习问题时,可以先快速设计一个简单粗暴的算法,随后通过误差分析找到算法的缺陷以及优化的方向。

不用学习曲线是因为最开始的时候样本少画不出来。

3.不对称性分类的误差评估

偏斜类(skewed classes):正负样本比例非常大。

当遇到偏斜类问题时,比如说一个二元分类问题的训练集中一共有10个样本,其中9个y=1,只有1个y=0,这时就会产生只要我们的算法一直输出y=1误差率就会很小,但是这并不能泛化,所以要用其他的数值评价指标来评判算法是否足够优秀。

继续以垃圾邮件分类器为例子。

查准率(Precision) :对于所有我们预测是垃圾邮件的邮件中有多大比例是真的是垃圾邮件, 查准率 = 预测结果为垃圾邮件的邮件中真的是垃圾邮件的邮件数量 预测出的垃圾邮件数量 查准率=\frac{预测结果为垃圾邮件的邮件中真的是垃圾邮件的邮件数量}{预测出的垃圾邮件数量} 查准率=预测出的垃圾邮件数量预测结果为垃圾邮件的邮件中真的是垃圾邮件的邮件数量。查准率越高越好。

召回率(Recall) :对于所有的垃圾邮件我们有多大比例能发现他是垃圾邮件, 召回率 = 预测值和真实值都是垃圾邮件的邮件数量 真正的垃圾邮件数量 召回率=\frac{预测值和真实值都是垃圾邮件的邮件数量}{真正的垃圾邮件数量} 召回率=真正的垃圾邮件数量预测值和真实值都是垃圾邮件的邮件数量。同样召回率也是越高越好。

拥有高查准率和高召回率的模型是一个好的模型,但是根据查准率和召回率的定义我们可以看出二者是此消彼长的关系,所以选择一个好的模型需要另一个数值评价指标对查准率和召回率进行平衡取舍。以P代表查准率、R代表召回率,故而定义F值 或 F 1 F_1 F1值:
F = 2 P R P + R F=2\frac{PR}{P+R} F=2P+RPR

F值越高的越好。

除此之外,在我们定义机器学习问题的特征时,可以将心比心,自己尝试一下假如自己是专业人士,用自己所给定的特征能否推出结果。比如假设你是一个卖房子的,只设计了一个房子面积的特征,并没有给其他的特征比如地段、是否精装、房型等等,要输出价格,显然是不能推出的,所以同样的机器学习算法也不能输出对应的假设。

相关推荐
千逐681 小时前
《鸿蒙备忘录:基于 Flutter for OpenHarmony 的极简本地笔记应用全实现》
笔记·flutter·harmonyos
政安晨2 小时前
政安晨【零基础玩转开源AI项目】- AutoGPT:全球首个自主AI Agent从入门到实战(致敬OpenClaw的小回顾)
人工智能·ai·autogpt·全球首个agent框架·致敬openclaw之作·参考价值·ai开源agent框架
Shawn_Shawn6 小时前
mcp学习笔记(一)-mcp核心概念梳理
人工智能·llm·mcp
冷雨夜中漫步8 小时前
Python快速入门(6)——for/if/while语句
开发语言·经验分享·笔记·python
33三 三like8 小时前
《基于知识图谱和智能推荐的养老志愿服务系统》开发日志
人工智能·知识图谱
芝士爱知识a8 小时前
【工具推荐】2026公考App横向评测:粉笔、华图与智蛙面试App功能对比
人工智能·软件推荐·ai教育·结构化面试·公考app·智蛙面试app·公考上岸
腾讯云开发者10 小时前
港科大熊辉|AI时代的职场新坐标——为什么你应该去“数据稀疏“的地方?
人工智能
工程师老罗10 小时前
YoloV1数据集格式转换,VOC XML→YOLOv1张量
xml·人工智能·yolo
Coder_Boy_10 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习