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

机器学习基础总结

笔者研一,刚刚步入此行业,目前专攻于(人工智能机器学习自然语言处理NLP文本挖掘)我将会随着自己的学习持续更新,记录自己的成长,与大家共同进步!~总体分类监督学习(S

笔者研一,刚刚步入此行业,目前专攻于(人工智能->机器学习->自然语言处理NLP->文本挖掘)
我将会随着自己的学习持续更新,记录自己的成长,与大家共同进步!~

总体分类

  • 监督学习(Supervised learning)

    • 分类(Logistic Regression逻辑回归)

    • 回归(Linear Regression线性回归)

  • 无监督学(Unsupervised learning)

    • 聚类(cluster)

模型评估与选择方法

我们通过对实验的数据集进行适当的划分并采用一定的方法来对模型进行评估,从而选择适当的模型。

  • 简单方法(适用于数据量较大的情况)

    进行模型选择的简单方法是随机将数据切分成三部分:

    • 训练集(training set):作用是用来拟合模型,通过设置分类器的参数,训练分类模型。后续结合验证集作用时,会选出同一参数的不同取值,拟合出多个分类器。

    • 验证集(validation set):作用是当通过训练集训练出多个模型后,为了能找出效果最佳的模型,使用各个模型对验证集数据进行预测,并记录模型准确率。选出效果最佳的模型所对应的参数,即用来调整模型参数。如svn中的参数c和核函数等。

    • 测试集(test set):通过训练集和验证集得出最优模型后,使用测试集进行模型预测。用来衡量该最优模型的性能和分类能力。即可以把测试集当做从来不存在的数据集,当已经确定模型参数后,使用测试集进行模型性能评价。

  • 交叉验证法(cross validation)(适用于数据不是很充足的情况)

    它的基本思想是重复的利用数据:把给定的数据进行切分,将切分的数据集组合为训练集和测试集,在此基础上反复地进行训练、测试以及模型选择。

    它的作用:1.可以一定程度的减少过拟合 2.可以在有限的数据中获取更多的信息

    常见的交叉验证有S折交叉验证(数据集分成S份,S-1份用于训练,剩下的1份用于测试,重复S次)和留一交叉验证(即当S=N的特殊情况)

泛化(generalization)

泛化是指学习到的模型对位置数据的预测能力,说白话点,其实就是由特殊到一般。

相应的泛化误差则反映了学习到的模型的泛化能力,这个就比较好理解了。实际中用测试集来评价之。

激活函数(activation function)

激活函数可以引入非线性因素,解决线性模型所不能解决的问题。

因为有些数据是线性可分的,我们可以直接用某种特定的机器学习方法找到合适的线性方程(即用一条直线)将数据分类成功。然而现实中大部分数据是线性不可分的,这是就需要采取一定的方法进行分类:

  • 做线性变换(linear transformation)

    比如可以将x,y变换成$ x^2 $,$ y^2 $,或许则可以分类成功

  • 引入非线性函数(激活函数)

    我们可以设计一种神经网络,通过激活函数使得数据线性可分。一般我们选阀值函数(threshold function)作为激活函数,例如大于某个值输出1(被激活),小于某个值输出0(未激活),这个函数是非线性的。

归一化、标准化和正则化

  • 归一化(Normalization)

    • 归一化是将数据变换为(0,1)之间的小数。主要是为了消除不同数据之间的量纲,方便不同量纲的数据作比较和共同处理。在神经网络中,归一化可以加快训练神经网络的收敛性。

    • 线性转换(min-max归一化)$$ y=\frac{x-min}{max-min} $$

    对数函数转换$$ y=log_{10} x $$

    反余切函数转换$$ y=\frac{atan(x)^2}{PI}$$

  • 标准化(Standardization)

    • 标准化是为了方便数据的下一步处理而进行的数据缩放等变换

    • z-score标准化(零-均值标准化)$$ y=\frac{x-μ}{σ}$$

  • 正则化(Regularization)

    • 利用先验知识,在处理过程中引入正则化因子(正则化项regularizer或罚项penalty term),增加引导约束的作用。在逻辑回归中使用正则化可有效降低过拟合。

概率模型(树形结构)无需归一化处理

数值缩放不影响分裂点位置。LR梯度下降时,损失等高线是团员,迭代到最优点会比较麻烦,采用归一化处理后,损失等高线接近于圆形,迭代较快。而树形结构是阶跃的,阶跃点不可导,并且求导没有意义,所以树形结构寻找最优分裂点完成的。(概率模型无需归一化,因为他们不关心变量的值,而是关心变量的分布和变量之间的条件概率。)

成本/损失函数

过拟合、欠拟合及处理方法

生成模型与判别模型

  • 生成模型(方法)

    • 生成方法由数据先学习出联合概率分布P(X,Y),然后才求出条件概率分布P(Y|X),以此作为预测的模型,即生成模型$$ P(Y|X)=\frac{P(X,Y)}{P(X)} $$这样的方法就叫做生成方法,因为它表示了给定输入X产生输出Y的生成关系,并不是直接得出P(Y|X)

    • 典型的生成模型:朴素贝叶斯法和隐含马尔科夫模型

  • 判别模型(方法)

    • 判别方法由数据直接学习得到决策函数f(X)或条件概率分布P(Y|X),以此直接作为预测模型。

    • 典型的判别模型:k近邻法、感知机、决策树、逻辑斯蒂回归模型、最大熵模型、支持向量机、提升方法和条件随机场等。

梯度下降与向后传播(神经网络)算法

梯度消失(爆炸)及解决办法(ReLU、LSTM、droupout、batch noemalization)

ReLU主要贡献:

  1. 解决了梯度消失、爆炸的问题(ReLU函数的导数的正数部分恒为1,故)

  2. 计算方便,计算速度快

  3. 加速了网络的训练

ReLU的缺点:

  1. 由于负数部分恒为0,会导致一些神经元无法激活(可通过小学习率部分解决)

  2. 输出不是以0位中心

维数灾难与降维方法

朴素贝叶斯与平滑方法

  • 极大似然估计与最小二乘法

感知机与神经网络

  • CNN、RNN、DNN

SVM支持向量机

隐马尔可夫模型

k-meam算法

  • 欧式距离与曼哈顿距离

通俗一点讲,欧氏距离是两点间的直线距离,而曼哈顿距离则是两点投影在坐标上(可以是多维)的距离总和。


推荐阅读
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • C++中的三角函数计算及其应用
    本文介绍了C++中的三角函数的计算方法和应用,包括计算余弦、正弦、正切值以及反三角函数求对应的弧度制角度的示例代码。代码中使用了C++的数学库和命名空间,通过赋值和输出语句实现了三角函数的计算和结果显示。通过学习本文,读者可以了解到C++中三角函数的基本用法和应用场景。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
author-avatar
mobiledu2502920897
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有