只需6步,从头开始编写机器学习算法

简介:

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

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

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

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

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

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

 ●  它是什么?
 ●  它通常用于做什么?
 ●  什么时候不能使用它?

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

 ●  单层感知器是最基本的神经网络,通常用于二进制分类问题(1或0,“是”或“否”)。
 ●  它是一个线性分类器,因此只有在存在线性决策边界的情况下才能有效使用。一些简单的用途可以是情绪分析(正面或负面反应)或贷款违约预测(“会违约”,“不会违约”)。对于这两种情况,决策边界都必须是线性的。
 ●  如果决策边界是非线性的,那么你实际上无法使用感知器。对于这些问题,需要使用其他算法。

e015d9a366bb26e822dabfd3c33b183cc8ad3b33
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

53c270cb804f93064f5277301bebdce62aedfe95

3. 将算法分解为块

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

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

 ●  初始化权重
 ●  将输入乘以权重,并求和
 ●  将结果与阈值进行比较,并计算输出(1或0)
 ●  更新权重
 ●  重复这个过程

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


f8bcd66740e086557cde54b9c607bcd5bfc49c09

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

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

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

13ed8f46a3e7270a45813551eb8e50bc590a7422


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

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

f8af3f2f95e0bdc6eff553bc3988cf5928cc49c8

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

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

09285245f4e80a4d9ebc9b5af9e8e6710ef92855

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

ef2b4d155017e1288a3fbb099cffe92ed11af419

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

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

6. 写下你的过程

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

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

edf934baba4093d7a829a026ba1bd6f0cb45a6e5

结论

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


原文发布时间为:2018-09-27

本文作者:John Sullivan

本文来自云栖社区合作伙伴新智元,了解相关信息可以关注“AI_era”。

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

相关文章
|
2月前
|
机器学习/深度学习 数据采集 人工智能
【机器学习算法篇】K-近邻算法
K近邻(KNN)是一种基于“物以类聚”思想的监督学习算法,通过计算样本间距离,选取最近K个邻居投票决定类别。支持多种距离度量,如欧式、曼哈顿、余弦相似度等,适用于分类与回归任务。结合Scikit-learn可高效实现,需合理选择K值并进行数据预处理,常用于鸢尾花分类等经典案例。(238字)
|
7月前
|
机器学习/深度学习 数据采集 人工智能
20分钟掌握机器学习算法指南
在短短20分钟内,从零开始理解主流机器学习算法的工作原理,掌握算法选择策略,并建立对神经网络的直观认识。本文用通俗易懂的语言和生动的比喻,帮助你告别算法选择的困惑,轻松踏入AI的大门。
|
8月前
|
机器学习/深度学习 存储 Kubernetes
【重磅发布】AllData数据中台核心功能:机器学习算法平台
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
|
9月前
|
机器学习/深度学习 人工智能 自然语言处理
AI训练师入行指南(三):机器学习算法和模型架构选择
从淘金到雕琢,将原始数据炼成智能珠宝!本文带您走进数字珠宝工坊,用算法工具打磨数据金砂。从基础的经典算法到精密的深度学习模型,结合电商、医疗、金融等场景实战,手把手教您选择合适工具,打造价值连城的智能应用。掌握AutoML改装套件与模型蒸馏术,让复杂问题迎刃而解。握紧算法刻刀,为数字世界雕刻文明!
333 6
|
10月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于机器学习的人脸识别算法matlab仿真,对比GRNN,PNN,DNN以及BP四种网络
本项目展示了人脸识别算法的运行效果(无水印),基于MATLAB2022A开发。核心程序包含详细中文注释及操作视频。理论部分介绍了广义回归神经网络(GRNN)、概率神经网络(PNN)、深度神经网络(DNN)和反向传播(BP)神经网络在人脸识别中的应用,涵盖各算法的结构特点与性能比较。
|
11月前
|
机器学习/深度学习 人工智能 算法
机器学习算法的优化与改进:提升模型性能的策略与方法
机器学习算法的优化与改进:提升模型性能的策略与方法
2055 13
机器学习算法的优化与改进:提升模型性能的策略与方法
|
11月前
|
机器学习/深度学习 算法 网络安全
CCS 2024:如何严格衡量机器学习算法的隐私泄露? ETH有了新发现
在2024年CCS会议上,苏黎世联邦理工学院的研究人员提出,当前对机器学习隐私保护措施的评估可能存在严重误导。研究通过LiRA攻击评估了五种经验性隐私保护措施(HAMP、RelaxLoss、SELENA、DFKD和SSL),发现现有方法忽视最脆弱数据点、使用较弱攻击且未与实际差分隐私基线比较。结果表明这些措施在更强攻击下表现不佳,而强大的差分隐私基线则提供了更好的隐私-效用权衡。
280 14
|
10月前
|
人工智能 编解码 算法
使用 PAI-DSW x Free Prompt Editing图像编辑算法,开发个人AIGC绘图小助理
使用 PAI-DSW x Free Prompt Editing图像编辑算法,开发个人AIGC绘图小助理
256 0
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
解锁机器学习的新维度:元学习的算法与应用探秘
元学习作为一个重要的研究领域,正逐渐在多个应用领域展现其潜力。通过理解和应用元学习的基本算法,研究者可以更好地解决在样本不足或任务快速变化的情况下的学习问题。随着研究的深入,元学习有望在人工智能的未来发展中发挥更大的作用。
|
算法
PAI下面的gbdt、xgboost、ps-smart 算法如何优化?
设置gbdt 、xgboost等算法的样本和特征的采样率
342 2

热门文章

最新文章