热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

机器学习笔记(六)机器学习算法的选择与优化

1、当预测结果与实际偏差很大时的处理方法:(1)增加训练样本;(2)减少特征集防止过拟合;(3)增加特征集或者多项式特征(如x1²,x2&

1、当预测结果与实际偏差很大时的处理方法:

(1)增加训练样本;

(2)减少特征集防止过拟合;

(3)增加特征集或者多项式特征(如 x1², x2³ 等);

(4)减小 / 增大 lambda .

 

2、评估假设函数:

将数据集分成两部分:训练集(70%)和测试集(30%)

具体流程:

(1)通过学习获得 θ ,计算训练误差 J(θ);

(2)计算测试误差 Jtest(θ)

①对于线性回归:

 ②对于逻辑回归:

 Misclassification error 误分类率(0/1错分率):

测试误差:

 

3、模型的选择:

假设有以下10个待选模型:

(1)将数据集分为三部分:训练集(60%)、交叉验证集(cross validation set,简写CV,20%)和测试集(20%).

(2)增加参数 d,表示多项式的次数,依次取值 d = 1,2,...,10.

(3)对模型进行依次训练,获得各个模型的 θ,记为 θ(1) , θ(2) , ... , θ(10)  

(4)根据交叉验证集计算 JCV(1)) , JCV(2)) , ... , JCV(10)) . 选择误差最小的模型.

(5)得出 d = k(其中第k个模型是选定的模型),使用验证集计算测试误差,对模型进行评估。

 

4、偏差和方差问题:

(1)举例说明:

Pic.1 欠拟合(高偏差) d = 1     Pic.2 拟合 d = 2        Pic.3 过拟合(高方差) d = 4

当 d 较小时,高偏差问题:Jtrain(θ) 高,JCV(θ) ≈ Jtest(θ) ≈ Jtrain(θ) .

当 d 较大时,高方差问题:Jtrain(θ) 低,JCV(θ) ≈ Jtest(θ) >> Jtrain(θ) .

 

(2)假设已经选出了 d = 4,引入正则化解决过拟合问题:

对于λ 太小,依然存在过拟合;对于 λ 太大,假设函数趋于直线,欠拟合。

① 设置 λ = 0,0.1,0.2,0.4,...,10.24 (最后一组可以设置为10,一共12组),分别进行拟合,获得不同的 θ,对应分别为 θ(1) , θ(2) , ... , θ(12)

② 用交叉验证集进行评估,选择评估结果最佳的 λ 。

 

5、学习曲线:

(1)高偏差的情况(欠拟合):

随着训练集的增多,拟合的偏差依然较大,训练集和验证集误差相差较小,且趋于水平。说明收集再多的数据对于结果帮助甚微。

下图举例:随着训练集增多,拟合的结果依然是一根直线,误差依然很大。

 学习曲线:

 

(2)高方差的情况(过拟合):

随着训练集的增多,训练集误差较低,但是验证集误差一直处于较高的状态,两者之间有很大的偏差。如果两者距离随着训练集的增大而靠近,收集更多的训练集可能会对结果带来帮助。

下图举例:随着训练集增多,曲线拟合越来越精细的拟合数据。

 学习曲线:

 

 6、算法的改进方法:

(1)收集更多的数据,对于高方差的情况;

(2)减少特征,对于高方差的情况;

(3)增加特征 / 多项式特征,对于高偏差的情况;

(4)增大 lambda,对于高方差的情况;

(5)减小 lambda,对于高偏差的情况。

 

7、神经网络的选择:

(1)小型神经网络:计算量小;隐藏层 / 单元少;参数少;容易出现欠拟合;

 (2)复杂神经网络:计算量大;隐藏层 / 单元多;参数多;容易产生过拟合。

可以使用正规化修正过拟合。

 

8、Skewed classes (倾斜类)

(1)问题背景:

预测肿瘤问题上,采用机器学习预测准确率为99%,但是实际恶性肿瘤概率只有0.5%,这意味着单纯假设全部为良性的方法准确率为99.5%,比机器学习的准确率更高。然而全部假设为良性的方法并不科学。

 

(2)Precision(查准率) Recall(召回率):

假设是一个0 / 1二分问题,定义如下表:

 

       Actual Class

Predicted

Class

 

    1

    0

  1   

True

Positive

False

Positive

  0   

False

Negative

True

Negative

Precision = True Positive / Predicted Postive = True Positive / (True Positive + False Positive)(预测有癌症的人中多大比例真患癌症)

Recall = True Positive / Actual Positive = True Positive / (True Positive + False Negative)(所有患癌症的人中有多大比例被成功预测)

如果全部预测为良性,即预测 y = 0,那么Recall = 0,可以判断出该方法不合理。

一个好的分类模型,需要拥有较高的查准率和召回率。

 

(3)平衡Precision 和 Recall:

① 在肿瘤预测的案例中,为了保证在非常确定的情况下才能把恶性肿瘤作为预测结果,需要对预测过程进行修改:

原预测过程:Predict 1 if hθ(x) ≥ 0.5,Predict 0 if hθ(x) < 0.5;

修改后的预测过程:Predict 1 if hθ(x) ≥ 0.7,Predict 0 if hθ(x) < 0.7.

这种情况下将会有较高的precision,但recall将较低。

② 若为了保证在较保守的情况下也将恶性肿瘤作为预测结果,以让患者提早检测治疗,需要对预测过程进行修改:

修改后的预测过程:Predict 1 if hθ(x) ≥ 0.3,Predict 0 if hθ(x) < 0.3.

这种情况下将会有较高的recall,但precision将较低。

Predict 1 if hθ(x) ≥ threshold.

 上图从左到右,threshold = 0.99 To 0.01

③ 如何比较 Precision(P) 和 Recall(R) ?

F1 Score = 2PR / (P + R) 

 


推荐阅读
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 本文介绍了贝叶斯垃圾邮件分类的机器学习代码,代码来源于https://www.cnblogs.com/huangyc/p/10327209.html,并对代码进行了简介。朴素贝叶斯分类器训练函数包括求p(Ci)和基于词汇表的p(w|Ci)。 ... [详细]
  • 建立分类感知器二元模型对样本数据进行分类
    本文介绍了建立分类感知器二元模型对样本数据进行分类的方法。通过建立线性模型,使用最小二乘、Logistic回归等方法进行建模,考虑到可能性的大小等因素。通过极大似然估计求得分类器的参数,使用牛顿-拉菲森迭代方法求解方程组。同时介绍了梯度上升算法和牛顿迭代的收敛速度比较。最后给出了公式法和logistic regression的实现示例。 ... [详细]
  • cs231n Lecture 3 线性分类笔记(一)
    内容列表线性分类器简介线性评分函数阐明线性分类器损失函数多类SVMSoftmax分类器SVM和Softmax的比较基于Web的可交互线性分类器原型小结注:中文翻译 ... [详细]
  • Python入门后,想要从事自由职业可以做哪方面工作?1.爬虫很多人入门Python的必修课之一就是web开发和爬虫。但是这两项想要赚钱的话 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • 【论文】ICLR 2020 九篇满分论文!!!
    点击上方,选择星标或置顶,每天给你送干货!阅读大概需要11分钟跟随小博主,每天进步一丢丢来自:深度学习技术前沿 ... [详细]
  • 3年半巨亏242亿!商汤高估了深度学习,下错了棋?
    转自:新智元三年半研发开支近70亿,累计亏损242亿。AI这门生意好像越来越不好做了。近日,商汤科技已向港交所递交IPO申请。招股书显示& ... [详细]
  • 支持向量机训练集多少个_25道题检测你对支持向量机算法的掌握程度
    介绍在我们学习机器算法的时候,可以将机器学习算法视为包含刀枪剑戟斧钺钩叉的一个军械库。你可以使用各种各样的兵器,但你要明白这些兵器是需要在合适的时间合理 ... [详细]
  • 本人学习笔记,知识点均摘自于网络,用于学习和交流(如未注明出处,请提醒,将及时更正,谢谢)OS:我学习是为了上 ... [详细]
author-avatar
崔建洋
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有