机器学习自学指南【转】_weixin_30470857的博客-程序员宝宝

技术标签: r语言  数据结构与算法  大数据  

事实上有许多的途径可以了解机器学习,也有许多的资源例如书籍、公开课等可为所用,一些相关的比赛和工具也是你了解这个领域的好帮手。本文我将围绕这个话题,给出一些总结性的认识,并为你由程序员到机器学习高手的蜕变旅程中提供一些学习指引。

机器学习的四个层次

根据能力可以将学习过程分成四个阶段。这也是一个有助于我们将所有学习资源进行分类的好方法。

  1. 初学阶段
  2. 新手阶段
  3. 中级阶段
  4. 高级阶段

我之所以把初学阶段和新手阶段区分开来,是因为我想让那些完全初学者(对这个领域感兴趣的程序员)在初学阶段对机器学习有一个大致的认识,以便决定是否继续深入。

我们将分别探讨这四个阶段,并推荐一些能够帮助我们更好地理解机器学习和提高相关技能的资源。对学习阶段进行这样的分类只是我个人的建议,也许每个分类的前后阶段中也有一些适合当前阶段的资源。

我认为对机器学习有一个整体性的认识是非常有帮助的,我也希望能听听你们的想法,通过在下面评论告诉我吧!

Four-Levels-of-Machine-Learning

初学阶段

初学者是指那些对机器学习感兴趣的程序员。他们或许已经接触过一些相关的书籍、wiki网页,或者是已经上过几节机器学习课程,但是他们并没有真正地了解机器学习。他们在学习过程感到沮丧是因为他们得到的建议往往是针对中级或高级阶段的。

初学者需要的是一个感性的认识而不是纯粹的代码、教科书、课程。他们首先需要对机器学习有一个是什么、为什么、怎么做的认识以此为接下来的阶段学习奠定基础。

新手阶段

新手是指那些已经对机器学习有一定了解的人,他们已经阅读过一些专业书籍或者是接受过完整地课程学习,并且对这个东西有很大的兴趣想做更深入的了解,想通过进一步学习去解决他们所面临的问题。

下面是给新手的一些资料或者建议:

  • 完成一门课程:完整地学习一门机器学习的课程,例如斯坦福大学的机器学习课程。多做课程笔记,尽可能地完成课程作业,多问问题。
  • 阅读一些书籍:这里指的不是教科书,而是为上面所列举的为程序员初学者所准备的书籍。
  • 掌握一门工具:学会使用一门分析工具或者类库,例如python的机器学习包Scikit-Learn、java的机器学习包WEKAR语言或者其他类似的。具体地说,学习如何使用你在课程或书本上学来的算法,看看它们处理问题的实际效果。
  • 写一写代码:动手实现一些简单的算法,例如感知机、K近邻、线性回归。试图写一些小程序去阐述你对这些算法的理解。
  • 学习相关教程:完整地跟一门教程,为你所完成的小项目建立一个文件夹,其中包含数据集、脚本代码等,以便你可以随时回顾并有所收获。

中级阶段

在新手阶段已经阅读过一些专业书籍并完成了一些专业课程,这些人已经懂得如何使用机器学习相关的工具,并且也已经为实现机器学习算法和完成一些教程写过不少的代码了。中级阶段其实是一个自我突破的过程,可以通过建立自己的项目去探索新的技巧并在社区的交流互动中获取更多的知识。

中级阶段的目标是学习如何实现并使用准确、合适、健壮机器学习算法。同样,他们也在数据预处理、数据清洗、归纳总结上花了不少时间,并思考这些数据能解决什么问题。

下面是给中级学习者的一些资料或者建议:

  • 建立自己的小项目:自己设计小型的编程项目或者是应用机器学习算法解决问题的小实验。这就像是为探索你自己所感兴趣的技术而设计一些教程。你可以自己实现一个算法或者是提供一些实现这些算法类库的链接。
  • 数据分析:习惯于从数据集中探索并总结。知道什么时候该用什么工具,获取用于探索、学习相关技术的数据。
  • 阅读教科书:阅读并消化机器学习相关的教科书。这可能对理解用数学方式描述相关技术的能力有一定的要求,并且需要了解用公式的方式去对描述问题和算法。
  • 编写你自己的工具:为开源的机器学习平台或类库编写插件和相关的程序包。这是学习如何实现健壮的、能用于生产环境下的算法的一个很好的锻炼机会。将你的程序包运用到项目中,将代码提交给社区进行代码审核,如果可能的话,努力将你的程序发布到开源的平台上,从大家的反馈中进一步学习。
  • 竞赛:参加与机器学习有关的比赛,比如与机器学习会议有关的,或者是提供像Kaggle这样的平台的比赛。参与讨论、提问题,学习其他参赛者是如何解决问题的。将这些项目、方法和代码添加到你的项目库中。

高级阶段

机器学习的高级玩家是那些已经整理过大量机器学习算法或者是自己独立实现算法的人。他们或许参加过机器学习的竞赛又或许写过机器学习的程序包。他们已经阅读过许多书籍、学习过许多相关课程,对这一领域有较充分的认识,同时对自己研究的几个关键技术有很深入的了解。

这些高级使用者平时负责生产环境下的机器学习系统的建立、部署和维护。他们能时刻紧跟这个行业的最新动态,通过自己或他人的一线开发经验发现并了解每一种机器学习技术的细微差距。

下面是给高级阶段学习者的一些资料:

  • 定制开发算法:根据业务需求定制开发算法,实现会议、期刊论文中关于某个相似问题的算法。
  • 自己设计算法:设计全新的算法去解决工作中 遇到的问题,这样做的目的更多的是为工作中所面临的困难找到最佳的解决方案,而不是进行该领域的前沿研究。
  • 案例学习:阅读甚至是重新设计机器学习竞赛或者是其他参赛者所提供的实际案例。这些一直在谈“我是如何做到”的论文或文章中总是塞满了关于数据准备、工程实践以及使用技术的微妙技巧。
  • 方法论:总结处理问题的过程并系统化,可以正式地分享出来也可以仅仅是作为个人总结。他们总有一套自己解决问题的思路并且不断地提炼和改进处理过程,试图用更好的技术来或得最佳实践。
  • 学术研究:参加学术会议,阅读研究论文和学术专著,与机器学习领域的专家交流学习。他们会记录工作中所积累的经验发布到相关的期刊或者自己博客上,然后回到工作岗位继续研究。

知识在不断地收获,但学习永无止境。在机器学习的征途中遇到问题时你可以随时停住脚步自己钻研问题自行解决,或者绕道而行查阅资料借用群体智慧,事实上,我希望绕道而行成为一种常态。

这样的学习阶段划分是以程序员的角度来规划的,这可以作为技术人员实现从入门到精通的一条线性学习路线。我很乐意收到对于这篇文章的批评建议,这样可以使文章变得更好。在特定的学习阶段你可以得到更多的学习资源,因为针对每个阶段所推荐的学习资源也仅仅是我个人的建议。

转载于:https://www.cnblogs.com/fuleying/p/3893875.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30470857/article/details/98429562

智能推荐

(模板题)How Many Tables_极客字节的博客-程序员宝宝

HDU-How Many Tables-1213问题描述:给n个人分配桌子,要求在一个桌子上只能有认识的人,然后给出了m中关系,求需要多少张桌子;并查集:假设刚开始需要cnt=n张桌子,没合并一次,cnt减一,最后cnt的值就是答案;初始化+查找+合并;#include<iostream>using namespace std;const int maxn=1...

利用Python学习数据挖掘【0】_夜空骑士的博客-程序员宝宝

相信看到这篇文章的你一定是对数据分析,数据挖掘有兴趣,或者想从事和方面。本文不再累述python对数据分析的重要,数据分析这门的由来之类的。在这里,我单刀直入,已我学习数据挖掘3年来的经历告诉大家怎么去学,以让大家少走弯路。纯个人见解,如有不对,还请各位留言指教。话不多说,直接放图。一  学好工具python语言推荐看廖雪峰的python3教程。数据分析python基础...

linux下内联函数实现浅析_caoyan_12727的博客-程序员宝宝

首先我们来看看内联函数的相关解释:1.引入目的:为了解决程序中函数调用的效率问题2.  优点:节省了函数调用时间,也就是说没有call指令(也就没有相关参数的压栈(push),跳转(jmp),返回(ret), 参数出栈(add $0x10,%esp)等等一系类的操作,可谓是节省了不少功夫),以空间换时间.3. 缺点:在调用出的代码量会增加很多。在编译器没有将相关函数处理成内联函数时(为

MacBook Air发热严重,如何自检_ITACHI.鼬的博客-程序员宝宝_mac发热

温度对于电脑来说很重要,温度高了会导致电脑运行缓慢,死机等情况。特别是在炎热的夏天,你的电脑的温度正常么,是否能够正常运行呢?如果你的MacBook Air发热比较严重的话可以来看下这篇文章,macz小编为您提供了5个技巧和窍门帮您进行修复。为什么我的MacBook Air会这么热?很多问题都可能导致MacBook Air发热,从堆积的灰尘到大量浏览器选项卡。这些是每台电脑都需要应对的问题,但是MacBook似乎比大多数机器要严重很多。从2019年开始,MacBook Air似乎特别容易出现过热问题,

详细介绍什么是卡片式设计用户界面_hbblzjy的博客-程序员宝宝

作者:Nick Babich日期:2016/10/11原文链接:https://www.smashingmagazine.com/2016/10/designing-card-based-user-interfaces/网页和手机应用正彻底地从页面转向个性化体验,这些新的体验建立在许多单个内容的聚合上,而这些内容目前以卡的形式来呈现。卡片式的交互方式正在广泛传播,无论是新闻网站或是外卖应用,你都可

Inception-Resnet-V2 Pre-train 总结_RainbowSun1102的博客-程序员宝宝

工作之后有点小忙碌,一直都没来得及更新博客。这是工作之后的第一篇博客。Mark一下自己,快要一个月了,快要发工资了,R神很高兴啊。今天在工作培训中,需要运用InceptionV4-Resnet-V2进行图片的分类。由于InceptionV4的网络很深,所以直接训练是很不理智的,于是下载了Pre-train的模型。网络文章地址:http://arxiv.org/abs/1602.0726...

随便推点

jquery 简单的进度条实现代码_chinajobs的博客-程序员宝宝_jquery进度条代码

效果图需要用到的图片:背景图片:进度显示图片:网页结构:复制代码 代码如下: css代码: 代码 复制代码 代码如下:#center{ margin:50px auto; width:400px; } #loading{ width:397px; height:49px; back

windows10安装db2数据库_xinlianluohan的博客-程序员宝宝_win10安装db2

1.下载链接:https://pan.baidu.com/s/19RjLL1b1HWsb5PlUFrJG-g提取码:0e4c2. 解压解压后,如下:3. 安装解压后,自动弹出如下窗口,或者双击打开 setup.exe:选择安装产品4.测试安装是否成功因为安装以上安装成功后,默认数据库实例为:DB2,默认数据库为:SAMPLE。那么我们连上SAMPLE就表示安装成功了。用管理员身份,打开:输入connect to sample回车,连接到SAMPLE 数...

树莓派开发之旅(一)——使用Nomachine进行远程连接_lzzzzzzm的博客-程序员宝宝_nomachine怎么用

系列文章目录文章目录系列文章目录前言一、树莓派Nomachine下载二、Windows端操作总结前言最近又开始捣鼓起树莓派起来,用树莓派安装完系统镜像后的第一步就是对电脑进行远程连接,方便后续开发。树莓派可以使用的远程连接方式有很大,ssh,VNC等等,而使用Nomachine进行连接,是我个人认为最简单,最方便,且连接效果最好的方式了,在这里给大家分享一下一、树莓派Nomachine下载整个步骤也十分简单,下载完后解压,Nomachine会自动配置好和安装好NX,电脑端也下载即可连接。No

Android Input System分析(三)--Native_不服老的码农的博客-程序员宝宝

本来想跟大家讲一下设备节点的,后来发现这方面的资料很多,大家可以到网站自行搜索一下就可以了。在linux系统里,万物皆以文件的形式来处理,设备节点其实就是一个个文件,而且这些个文件对用户空间是开放的,而且是对不同的进程访问都是开放的,也就是说用户空间可以对内核空间的设备节点文件进行读写操作,从而到达数据传输的目的。Android大名鼎鼎的Binder其实也是这个原理实现的。好了,我们还是进入到

定义一个手机类Phone,包含三个属性品牌(brand)、价格(price)、颜色(color)。 创建四个手机("小米"、"华为"、"魅族"、"oppo")对象存入ArrayList集合中,并遍历输..._weixin_30371469的博客-程序员宝宝

package cn.DongPhone;public class Phone { String brand; float price; String color;}//==================================================================package cn.DongPhone;import java.util.Arr...

推荐文章

热门文章

相关标签