0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

从头开始编写任何机器学习算法的6个步骤

DPVg_AI_era 来源:未知 作者:李倩 2018-09-28 09:40 次阅读

本文以单层感知器为案例,介绍从头开始编写任何机器学习算法的6个步骤。这些方法可以很容易地用于其他机器学习算法。

从头开始编写算法是一种有益的体验,当你最终点击运行的那一刻,你会了解算法背后真正发生了什么。

如果你以前用scikit-learn实现过这个算法,从头开始编写就会很容易?不是这样。

有些算法只是比其他算法更复杂,所以可以从简单的开始,比如单层感知器(Perceptron)。

本文将以感知器为案例,引导你完成从头开始编写算法的6个步骤。这种方法可以很容易地用于编写其他机器学习算法。

1. 对算法有一个基本的了解

这又回到了我最初所说的。如果你不了解基础知识,请不要从头开始处理算法。至少,你应该能够回答以下问题:

它是什么?

它通常用于做什么?

什么时候不能使用它?

对于感知器,上面三个问题的答案是:

单层感知器是最基本的神经网络,通常用于二进制分类问题(1或0,“是”或“否”)。

它是一个线性分类器,因此只有在存在线性决策边界的情况下才能有效使用。一些简单的用途可以是情绪分析(正面或负面反应)或贷款违约预测(“会违约”,“不会违约”)。对于这两种情况,决策边界都必须是线性的。

如果决策边界是非线性的,那么你实际上无法使用感知器。对于这些问题,需要使用其他算法。

2. 找到各种类型的学习资源

在对模型有了基本的了解之后,是时候开始进行研究了。我建议使用大量资源。有些人用教科书学得更好,有些人用视频学得更好。就我个人而言,我喜欢使用各种类型的资源。对于数学细节,教科书的解释很好,但对于更实际的例子,我更喜欢看博客文章和YouTube视频。

对于感知器,这里有一些很棒的资源。

教材:

《统计学习基础》,第4.5.1节

《深入理解机器学习:从原理到算法》,第21.4节

博客:

JasonBrownlee的Machine Learning Mastery系列文章,其中一篇是《如何用Python从头开始实现感知器算法》:

https://machinelearningmastery.com/implement-perceptron-algorithm-scratch-python/

SebastianRaschka的博客,Single-Layer Neural Networks and Gradient Descent

https://sebastianraschka.com/Articles/2015_singlelayer_neurons.html

视频:

感知器训练:

https://www.youtube.com/watch?v=5g0TPrxKK6o

Perceptron算法的工作原理

https://www.youtube.com/watch?v=1XkjVl-j8MM

3. 将算法分解为块

现在,我们已经收集了需要的资料,是时候开始学习了。与其从头到尾阅读书本或博客文章,不如先浏览一下章节标题和其他重要信息。写下要点,并尝试概述算法。

在浏览完这些资料后,我们可以将Perceptron算法分解为以下几个块(chunks):

初始化权重

将输入乘以权重,并求和

将结果与阈值进行比较,并计算输出(1或0)

更新权重

重复这个过程

将算法分解成这样的块,可以使得学习更容易。基本上,我已经使用伪代码概述了这个算法,现在可以回过头来填写细节了。 下面这张图是第二步的笔记,即权重和输入的点积:

4. 从一个简单的例子开始

在整理好算法相关的笔记后,是时候开始在代码中实现它了。

在深入研究一个复杂的问题之前,我想先从一个简单的例子开始。对于感知器,NAND gate(与非门)是一个完美的简单数据集。如果两个输入都为真(1),则输出为假(0),否则输出为真。下面是数据集的一个示例:

现在,有了一个简单的数据集,我将开始实现我在步骤3中概述的算法。最好将这个算法分成块编写并进行测试,而不是试图一次性写完。这样在刚开始时更容易调试。

下面是我在步骤3中概述的算法点积部分的Python代码示例:

5. 使用可信的实现进行验证

我们已经编写了代码,并针对一个小数据集进行了测试,现在是时候扩展到更大的数据集了。为了确保我们的代码在这个更复杂的数据集上正确工作,最好在一个可信的实现上对其进行测试。对于感知器,我们可以使用scikit-learn中的实现。

为了测试代码,我将检查权重。如果正确地实现了算法,我的权重应该与scikit-learn中感知器的权重相匹配。

一开始,我没有得到相同的权重,这是因为我不得不调整scikit-learn Perceptron中的默认设置。我并不是每次都实现一个新的随机状态,而只是一个fixed seed,所以不得不关闭它。shuffling也是这样,也需要关闭它。为了匹配学习率,我将eta0改为0.1。最后,我关闭了fit_intercept选项。我在特征数据集中包含了一个1的虚拟列,所以已经自动拟合了偏差项。

这引出了另一个重要的问题。在验证模型的现有实现时,你需要非常清楚模型的输入。你不应盲目地使用模型,而要总是质疑你的假设,以及每个输入的确切含义。

6. 写下你的过程

这个过程的最后一步可能是最重要的。 你已经完成所有的学习工作,做了笔记,从头开始编写了算法,并将它与可信的实现进行了比较。那么不要让所有这些工作白白浪费掉。编写流程非常重要,原因是:

你会得到更深刻的理解,因为这样做相当于在教别人你刚学到的东西。你可以向潜在的雇主展示它。证明你可以利用机器学习库实现算法是一回事,但如果你可以从头开始实现一个算法,那就更令人印象深刻了。

结论

从头开始编写算法是一种非常有益的体验。这是深入了解模型、构建一个令人印象深刻的项目组合的好方法。

记得要慢慢来,从简单的事情开始吧。最重要的是,一定要记录和分享你的工作。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4570

    浏览量

    98714
  • 算法
    +关注

    关注

    23

    文章

    4452

    浏览量

    90746
  • 机器学习
    +关注

    关注

    66

    文章

    8112

    浏览量

    130546

原文标题:只需6步,从头开始编写机器学习算法

文章出处:【微信号:AI_era,微信公众号:新智元】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    经典算法大全(51C语言算法+单片机常用算法+机器学十大算法

    算法的描述:是对要解决一问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使用什么语句以及如何安排这些语句等。通常使用自然语言、结构化
    发表于 10-23 14:31

    MikroElektronika的mikroBUS Click板是否从头开始的制作?

    的示例代码,因此您不必从头开始。2x2按键单击,FLICKER单击,Arduino UNO单击Shield我想用Click板创建一项目来展示它们,但有数百选项我无法决定该怎么做。起初我想抓住一些像
    发表于 10-31 07:10

    如何使用和声从头开始设置HTTP服务?

    有没有关于如何使用和声从头开始设置HTTP服务的最新教程/设置?(不是从演示项目开始
    发表于 04-08 09:39

    ARM嵌入式系统设计:从头开始构建还是使用SBC?

    一些是早期产品的迭代。对于他们而言,开发一可在其整个产品组合中使用的标准平台是一种可行的替代方案,而不是为每个新产品从头开始进行新设计。选择特定的微控制器或微处理器产品系列,这些产品在一系列处理器速度
    发表于 10-21 10:11

    如何从头开始创建一新的SPC5应用程序?

    这样的指南显示正确配置应用程序的必要步骤。我还提到了帮助部分。我遇到的一问题是,在 MCU 向导中,我无法配置任何外围设备。当我单击其中一外围设备时,似乎没有出现
    发表于 01-16 07:22

    能否连接JTAG调试器并从头开始对MCU进行编程,因为MCU上没有旧代码?

    我正在设计一带有 mimxrt1062 芯片的 PCB。我要把 JTAG 引脚拿出来。我能否连接 JTAG 调试器并从头开始对 MCU 进行编程,因为 MCU 上没有旧代码?有什么需要注意的吗?
    发表于 05-12 06:20

    Excel本身就能编写大量基础机器学习算法

    作为一名数据工作者,这年头“熟悉机器学习算法”远比“精通Excel”在求职市场上要抢手得多,但前者的“熟悉”究竟是熟悉到什么程度呢?Excel本身就能编写大量基础
    的头像 发表于 06-21 10:18 5789次阅读
    Excel本身就能<b class='flag-5'>编写</b>大量基础<b class='flag-5'>机器</b><b class='flag-5'>学习</b><b class='flag-5'>算法</b>

    如果要从事机器学习方面的研发,可以按照以下几个步骤学习

    具备软件开发能力的程序员,转向机器学习领域会更容易一些,但是即使没有软件开发基础,如果具备扎实的数学基础以及较强的学习能力,也完全可以从头开始学习
    的头像 发表于 09-20 10:26 3021次阅读

    从头开始构建无人机

    电子发烧友网站提供《从头开始构建无人机.zip》资料免费下载
    发表于 11-22 10:35 1次下载
    <b class='flag-5'>从头开始</b>构建无人机

    如何从头开始制作六足机器

    电子发烧友网站提供《如何从头开始制作六足机器人.zip》资料免费下载
    发表于 11-23 09:53 2次下载
    如何<b class='flag-5'>从头开始</b>制作六足<b class='flag-5'>机器</b>人

    PyTorch教程3.4之从头开始执行线性回归

    电子发烧友网站提供《PyTorch教程3.4之从头开始执行线性回归.pdf》资料免费下载
    发表于 06-05 11:25 0次下载
    PyTorch教程3.4之<b class='flag-5'>从头开始</b>执行线性回归

    PyTorch教程4.4之从头开始实现Softmax回归

    电子发烧友网站提供《PyTorch教程4.4之从头开始实现Softmax回归.pdf》资料免费下载
    发表于 06-05 15:37 0次下载
    PyTorch教程4.4之<b class='flag-5'>从头开始</b>实现Softmax回归

    PyTorch教程-3.4. 从头开始执行线性回归

    3.4. 从头开始执行线性回归¶ Colab [火炬]在 Colab 中打开笔记本 Colab [mxnet] Open the notebook in Colab Colab [jax
    的头像 发表于 06-05 15:38 324次阅读
    PyTorch教程-3.4. <b class='flag-5'>从头开始</b>执行线性回归

    为什么从头开始为汽车应用设计IC很重要

    体验2级和3级自动驾驶技术的好处,这些技术提供了部分到有条件的转向,加速和制动自动化。反过来,这些技术又推动了对车内半导体内容的需求。本文将探讨为什么从性能和安全角度出发,从头开始设计汽车IC比重新利用最初设计用于其他用途的芯片更好。
    的头像 发表于 06-12 14:25 437次阅读

    在Spartan 6 FPGA上从头开始实现全加器

    电子发烧友网站提供《在Spartan 6 FPGA上从头开始实现全加器.zip》资料免费下载
    发表于 06-15 10:13 0次下载
    在Spartan 6 FPGA上<b class='flag-5'>从头开始</b>实现全加器