初学者应该知道的十大机器学习算法
来源:https://builtin.com/data-science/tour-top-10-algorithms-machine-learning-newbies
机器学习算法被描述为学习一个目标函数 (f),它最好地将输入变量 (X) 映射到输出变量 (Y):Y = f(X)
最常见的机器学习类型是学习映射 Y = f(X) 以针对新 X 预测 Y。这称为预测建模或预测分析,目标就是要做出最准确的预测。
线性回归是统计和机器算法中最容易理解的算法之一。
线性回归的表示是一个方程,它通过找到称为系数 (B) 的输入变量的特定权重来描述最适合输入变量 (x) 和输出变量 (y) 之间关系的直线。
例如:y = B0 + B1 * x
我们将在给定输入 x 的情况下预测 y,线性回归学习算法的目标是找到系数 B0 和 B1 的值。
可以使用不同的技术从数据中学习线性回归模型,例如普通最小二乘的线性代数解决方案和梯度下降优化。
逻辑回归是机器学习从统计学领域借用的另一种技术。它是二进制分类问题(具有两个类值的问题)的首选方法。
逻辑回归类似于线性回归,其目标是找到加权每个输入变量的系数值。与线性回归不同,输出的预测是使用称为逻辑函数的非线性函数转换的。
逻辑函数看起来像一个大 S,会将任何值转换为 0 到 1 的范围。这很有用,因为我们可以将规则应用于逻辑函数的输出以将值捕捉到 0 和 1(例如,如果小于 0.5 则输出 1) 并预测一个类值。
由于模型的学习方式,逻辑回归所做的预测也可以用作给定数据实例属于 0 类或 1 类的概率。这对于需要给出更多理由的问题是很有用一个预测。
与线性回归一样,当您删除与输出变量无关的属性以及彼此非常相似(相关)的属性时,逻辑回归的效果会更好。这是一个快速学习的模型,并且对二元分类问题有效。
逻辑回归是一种传统上仅限于两类分类问题的分类算法。如果您有两个以上的类别,则线性判别分析算法是首选的线性分类技术。
LDA 的表示非常简单。它由您的数据的统计属性组成,为每个类计算。对于单个输入变量,这包括:
通过计算每个类别的判别值并针对具有最大值的类别进行预测。假设数据具有高斯分布(钟形曲线),因此最好事先从数据中删除异常值。它是分类预测建模问题的一种简单而强大的方法。
决策树是预测建模机器学习的一种重要算法。
决策树模型的表示是二叉树。这是来自算法和数据结构的二叉树,没什么花哨的。每个节点代表一个输入变量 (x) 和该变量上的一个分割点(假设变量是数字)。
树的叶节点包含一个输出变量 (y),用于进行预测。通过遍历树的分裂直到到达叶节点并在该叶节点处输出类值来进行预测。
树的预测速度也很快。它们通常对于广泛的问题也很准确,并且不需要对数据进行任何特殊准备。
朴素贝叶斯是一种简单但功能强大的预测建模算法。
该模型由两种类型的概率组成,可以直接从您的训练数据中计算出来:
1)每个类别的概率;
2)给定每个 x 值的每个类的条件概率。
计算后,概率模型可用于使用贝叶斯定理对新数据进行预测。当数据是实值时,通常假设高斯分布(钟形曲线),以便可以轻松估计这些概率。
朴素贝叶斯被称为朴素,因为它假设每个输入变量都是独立的。这是一个强有力的假设,对于真实数据来说是不现实的,然而,该技术在处理大量复杂问题时非常有效。
KNN算法非常简单,非常有效。KNN 的模型表示是整个训练数据集。
通过在整个训练集中搜索 K 个最相似的实例(邻居)并汇总这些 K 个实例的输出变量,对新数据点进行预测。
对于回归问题,这可能是平均输出变量,对于分类问题,这可能是模式(或最常见的)类值。
诀窍在于如何确定数据实例之间的相似性。
KNN 可能需要大量内存或空间来存储所有数据,但仅在需要预测时才及时执行计算(或学习)。这个期间你可以随着时间的推移更新和管理训练实例,以保持预测的准确性。
K-Nearest Neighbors 的一个缺点是需要保留整个训练数据集。
学习向量量化算法(或简称 LVQ)是一种人工神经网络算法,它允许选择要挂起的训练实例数量并准确了解这些实例的外观。
LVQ 的表示是码本向量的集合。这些是在开始时随机选择的,并适合在学习算法的多次迭代中最好地总结训练数据集。学习后,码本向量可以像 K-Nearest Neighbors 一样用于进行预测。通过计算每个码本向量与新数据实例之间的距离,找到最相似的邻居(最佳匹配码本向量)。然后返回最佳匹配单元的类值或(回归情况下的实际值)作为预测。
如果重新调整数据以具有相同的范围,例如在 0 和 1 之间,则可以获得最佳结果。
如果发现 KNN 在你的数据集上提供了良好的结果,可以尝试使用 LVQ 来减少存储整个训练数据集的内存需求。
支持向量机可能是最受欢迎和谈论最多的机器学习算法之一。
超平面是分割输入变量空间的线。
在 SVM 中,选择一个超平面来最好地将输入变量空间中的点按它们的类(类 0 或类 1)分开。在二维中,你可以将其可视化为一条线,假设我们所有的输入点都可以被这条线完全隔开。SVM 学习算法通过超平面找到导致类的最佳分离的系数。
超平面和最近数据点之间的距离称为边距。
可以分离这两个类的最佳或最优超平面是具有最大边距的线。
只有这些点与定义超平面和构建分类器有关。这些点称为支持向量。它们支持或定义超平面。在实践中,使用优化算法来找到最大化边际的系数值。
随机森林是最流行和最强大的机器学习算法之一。它是一种集成机器学习算法。称为 Bootstrap Aggregation 或 bagging。
Bootstrap是一种强大的统计方法,用于从数据样本中估计数量。
在 bagging 中,使用相同的方法,但用于估计整个统计模型,最常见的是决策树。
获取训练数据的多个样本,然后为每个数据样本构建模型。当你需要对新数据进行预测时,每个模型都会进行预测,并对预测进行平均以更好地估计真实输出值。
随机森林是对这种方法的一种调整,其中创建了决策树,因此不是选择最佳分割点,而是通过引入随机性来进行次优分割。
因此,为每个数据样本创建的模型与其他模型相比更加不同,但仍然以其独特和不同的方式准确。结合他们的预测可以更好地估计真实的潜在输出值。
Boosting 是一种集成技术,它试图从多个弱分类器中创建一个强分类器。
这是通过从训练数据构建模型,然后创建第二个模型来尝试纠正第一个模型中的错误来完成的。添加模型直到训练集被完美预测或添加最大数量的模型。
AdaBoost 是为二进制分类开发的第一个真正成功的提升算法。这是理解 boosting 的最佳起点。
AdaBoost 与短决策树一起使用。
在创建第一棵树后,树在每个训练实例上的性能用于衡量下一棵创建的树应该对每个训练实例的关注程度。难以预测的训练数据被赋予更高的权重,而易于预测的实例被赋予更少的权重。
模型一个接一个地按顺序创建,每个模型都会更新训练实例上的权重,这些权重会影响序列中下一棵树执行的学习。
在构建完所有树之后,将对新数据进行预测,并且每棵树的性能取决于它在训练数据上的准确程度。
由于算法非常重视纠正错误,因此拥有干净的数据并删除异常值非常重要。
文章浏览阅读461次。本次教程用宇宙模拟器space engine 0.980版本教大家如何创建自定义太阳系系统,包括创建恒星,行星,卫星,小行星,彗星等天体,最后教如何制作插件,打包压缩成pak文件。把链接复制到浏览器地址栏上,按回车键就可以看了关于宇宙模拟器Space Engine的天体(星球,星系,星云,星团等)脚本参数,如何创建天体(星球,星系,星云,星团等)的脚本,请看这些教程space engine打包创建..._space engine
文章浏览阅读10w+次,点赞5次,收藏17次。更新了Chrome,发现网页全部打不开了。都显示:“喔唷 崩溃啦”。点击任何按钮,例如,设置,选项,历史记录等,也“喔唷 崩溃啦” 卸载重装也无效解决方案找到 路径C:\Windows\System32\drivers\bd0001.sys删除(没有强制删除工具重命名也行,随便改个名字)重启电脑chrome就正常了原因可能是注册列表被一些卫士类优化工具或杀毒..._为什么googlechrome设置也打不开
文章浏览阅读1.5k次。安装thrift,我是mac机器,mac下使用homebrew安装thrift很方便,具体看另一篇博客。首先的定义接口文件: service HelloWorldService { string sayHello(1:string username)}因为thrift是支持跨平台的,所以这里接口的定义,thrift定义了自己的规范。 然后使用thrift的工具..._thrift调用例子 java
文章浏览阅读261次。我不确定术语“通配符”是否可以解释我的观点,但有时在一些现成的脚本中,我们可以调用一个非定义的函数,如find_by_age(23),其中age可以是映射到数据库表记录的任何其他内容.所以我可以调用find_by_name,find_by_email,find_by_id等等.那么我们怎么能以程序或面向对象的方式做这样的事情呢?解决方法:你正在寻找的术语是魔法.基本上是这样的:class Foo ..._php路径通配符
文章浏览阅读904次。ANR-WatchDog-ohos一个简单的监测程序,可检测到鸿蒙系统的 ANR(Application Not Response-应用程序无响应)错误并引发有意义的异常项目名称:ANR-WatchDog-ohos所属系列:鸿蒙的第三方组件适配移植功能:可检测到鸿蒙系统的ANR错误并引发有意义的异常项目移植状态:全部完成调用差异:无开发版本:sdk5,DevEco Studio2.1 beta3项..._com.github.anrwatchdog.anrerror: application not responding for at least 400
文章浏览阅读441次。赵辉《Visual+C++_MATLAB图像处理与识别实用案例精选》程序代码说明P0201:MATLAB赋值P0202:MATLAB中的for循环P0203:MATLAB中的for循环和if条件P0205:MATLAB图像处理的基本操作P0206:MATLAB高级图像处理操作P0207:根据RGB图像创建一幅灰度图像P0208:二值图像的取反操作P0209:用imshow函数显示图像P0210:在..._matlab命令行检测网络
文章浏览阅读3.1k次。经常会有机友提问,乐视MAX(乐视 X900+)手机支不支持一键刷机?由于奇兔刷机已经支持多达上千款安卓手机一键刷机,所以有时候小编也无法及时回答上来,最简单的办法就是把手机连上奇兔刷机,即可看到手机是否支持一键刷机。一键刷机并非每次都能一次成功,如果一次不成功可以多试几次,刷机失败不会对您的手机造成任何影响。奇兔市场小编给大家分享下乐视MAX(乐视 X900+)一键刷机教程,虽然使用方法很简单,..._乐视x900刷miui10
文章浏览阅读2.5k次,点赞7次,收藏49次。文章目录1.创建数据库与表2. 创建java项目并且导入jar包(buildPath)2.1 创建数据库连接文件 DBhelper.java2.2 创建vo (stu.java), 与数据库一致2.3 创建service (StuService.java)3. 编写功能类 FromDbToExcel.java注意事项:4. 编写功能类 FromExcelToDb.java注意事项5. 效果展示1.创建数据库与表2. 创建java项目并且导入jar包(buildPath)2.1 创建数据库连接文件_mysql导出多张表结构 excel java代码
文章浏览阅读352次。首先介绍阻塞与非阻塞:阻塞是个什么概念呢?比如某个时候你在等快递,但是你不知道快递什么时候过来,而且你没有别的事可以干(或者说接下来的事要等快递来了才能做);那么你可以去睡觉了,因为你知道快递把货送来时一定会给你打个电话(假定一定能叫醒你)。非阻塞忙轮询。接着上面等快递的例子,如果用忙轮询的方法,那么你需要知道快递员的手机号,然后每分钟给他挂个电话:“你到了没?”很明显一般人不会用第二..._epoll kqueue
文章浏览阅读509次。关于西门子PLC modbus通讯与运动控制的应用应用的设备昆仑通态1570gi(15寸)西门子plc smart-st20昆仑通态参数的设置与组态的重点组态软件选用型号1570gi的屏幕设置通讯地址 192.168.190报警参数的配置脚本的编写关于组态过程中遇到的问题由于这是我参加工作自己独立的完成的,这个期间真的是太坎坷了,我来说说我遇到的问题吧脚本应用if和if的嵌套IF THEN IF THEN ENDIFENDIF由于画面中关联着报_plc作为从站 modbus协议和运动控制命令冲突
文章浏览阅读972次。先用一台电脑连接IPSAN管理端口进去配置阵列配置完成后把IPSAN的ISCSI接口连接到服务器网口,man iscsiadm 查看可以查看是否安装了 iscsiadmyum -y install*iscsi* 命令安装iscsiadm然后在服务器上输入:iscsiadm -m discovery -t sendtargets -p 169.254.194.201:3260 (169.254.19..._centos实现ipsan卸载
文章浏览阅读698次。点击上方 "程序员小乐"关注,星标或置顶一起成长后台回复“大礼包”有惊喜礼包!关注订阅号「程序员小乐」,收看更多精彩内容每日英文Tough people aren..._cannot use range access on index 'env_index' due to type or collation conver