普通码农入门机器学习,必须掌握这些数据技能

其实,机器学习一直在解决着各种重要的问题。比如说90年代中期,人们已经开始用神经网络来扫描信用卡交易记录,从中找到欺诈行为;90年代末,Google把这项技术用到了网络搜索上。

但在那个时候,机器学习还和普通的工程师无缘。开发一个机器学习系统,需要读个PhD,还得找到一群想法类似、志同道合的朋友。

现在,机器学习终于更强大也更亲民了。

一个普通的软件工程师,不需要去专门回炉重造读个研究生,就能运用机器学习开发出非常不错的系统。

当然,普通的码农要用好机器学习,还得补一些课,学一些数据技能。InforWorld的这篇文章就讲述了一些技巧和策略,能够帮助开发者们更有效地使用机器学习。

让数据说话

在良好的软件工程实践过程中,你经常能通过推理得到所需的设计,写好软件部分,然后直接且独立地对这个解决方案进行检验。

有时候,你甚至能从数学上证明你软件是正确的。但这在实际问题中往往较难实现,尤其是要考虑人类参与的时候,但如果你有良好的规范,你仍可以执行一个正确的解决方案。

但机器学习不一样。大体上,你不需要一个严格的规范。你有了能表示系统以往经验的数据,然后需要的是建立一个能够在未来奏效的系统。

为了测试系统是否真的奏效,你需要在真实情况中评估它的表现。切换到这种“重数据,轻阐述”的开发模式会有很大阻力,但这是你构建机器学习系统的关键一步。

学会辨识更优的模型

比较两个数字的大小是很简单的事情。假设它们都是有效的值(不是非数字类型),你只需要判断哪个值更大,就结束了。

而在比较机器学习的准确性时,问题就不这么简单了。

你要比较的模型有大量的输出结果,而没有一个明确的答案。构建机器学习系统所需的一项非常基本的能力,就是通过观察两个模型之前制定的决策,决定哪个模型更符合你的问题情境。

做出这个判断,你需要将这些数据做整体考虑而不是某个单一的值。这通常也需要你能够很好地进行数据可视化,比如说使用柱状图,散点图和许多其他相关的数据表示方式。

对你的结论保持怀疑

与判断哪个模型更好一样,对你自己的结论保持怀疑同样很重要。

你的结果是否只是统计上的偶然,数据变多后就不再成立?在你评估后情况是否发生了变化,因此之前的决策是否仍有效?

搭建一个内嵌机器学习的系统意味着你需要时刻确认系统依然在做你一开始布置的任务。这种怀疑精神是在变化的现实情况中进行模糊比较所必须的品质。

搭建多个模型以便筛选

在软件行业有一句老话,你构建的第一版系统是注定要扔掉的。这句话的含义是,直到你实实在在搭建了一个有效的系统之后,你才能充分理解问题从而更好地搭建系统。所以你可以先通过构建一个版本来积累经验,随后把学到的经验应用到设计中,构建出实际的系统。

对于机器学习来说,情形相同乃至更甚。搭建一个系统来练手还不够,你要做好搭建数十上百个版本的准备。有些版本可能用的是不同的学习方式,或者只是不同的参数设置;另外一些版本则是对问题或者训练数据完全不同的重述。

举例来说,你可能会发现在你想预测的信号之外,还可以用其它的替代信号来训练模型。这样,你可能会有十倍于原始的数据来训练。或者你可以去尝试用另一种方式来重述问题,使其变得更易解决。

这个世界瞬息万变。比如说你搭建模型检测欺诈行为的时候,即便你已经搭建了一个成功的系统,仍需要在未来适时做出改变。因为骗子会识别出你的漏洞,从而改变它们的行为。你将会被迫采取新的对策。

所以为了取得成功,你需要搭建一系列用来丢弃的机器学习模型。不要寄希望于有一个永久适用的万能模型。

无畏于改变

开始你想用机器学习解决的问题情景通常是不对的,甚至可能大错特错。因此,可能会遇到根本无法训练的模型,或是收集不到用于训练的数据,又或者模型训练出的最优结果却价值有限。

重新审视这个问题,可能会使得一个简单的模型就具有很高的价值。

我曾经遇到过一个有关推荐商品的问题,哪怕用上一些高大上的技能,想获得一点微博的收益也很难。

但实际上,我们应该关注的高价值问题是优秀的商品何时上市。只要你知道了这个时间点,就有很多好商品可供选择,“推荐什么产品”这个问题就迎刃而解了。

重新定义问题,让整个项目更容易解决了。

“从小处做起”

将你的原始系统应用到一些简单情形或者是一个子问题上,是有很价值的。这会让你集中精力获得该问题领域的专业知识,并在搭建模型的过程中得到同伴的支持。

“从大处落笔”

确认你拥有足够多的训练数据。事实上,如果可能的话,你要收集10倍于本来预想中所需的数据量。

专业知识仍然很重要

在机器学习中,搞清楚一个模型怎样决策或预测是一件事,更重要的是搞清楚真正的问题在哪。

就这点而论,如果你已经拥有很多专业知识,那你更有可能提出恰当的问题,从而能够将机器学习用到一个可行的产品中。要正确判断哪里需要仔细检查,专业知识非常关键。

编程能力仍然很重要

有很多工具意图让你仅通过简单拖拽就完成搭建机器学习模型的过程。事实上,搭建机器学习系统的大部分工作跟机器学习或者模型毫无关系,而是在于收集数据以及搭建能够使用模型输出结果的系统。

于是,拥有良好的编程技能尤为重要。

尽管不同人在处理数据的代码上存在一些风格的差异,但彼此间要相互理解并不难。所以开发的能力在很多机器学习的问题中非常有用。

现在有很多工具和新兴技术,让几乎所有的软件工程师能够针对有趣的问题开发出相应的机器学习系统。基本的程序开发技能将会在这个搭建过程中非常有用,但在使用它们的时候你需要多多关注数据。

掌握这些新技能的最好方式,是从现在开始动手搭建一些有趣的东西。

普通码农入门机器学习,必须掌握这些数据技能-自学视频-CMD导航网

时间: 2024-12-31 09:07:38

普通码农入门机器学习,必须掌握这些数据技能的相关文章

写给立志做程序员(码农)的大学生

作者: 果冻虾仁  来源: CSDN  发布时间: 2017-08-10 23:08  阅读: 32769 次  推荐: 158   原文链接   [收藏]   写给立志做码农的大学生 确定方向 选择比努力更重要.       关于方向的选择其实越早确定越好,生活中我们要面临无数个选择,前几天看的一个黑客相关的美剧中有句台词说的不错: life is binary.       生活就是二进制,一个个0101组成的.每一次抉择,选了就是1,不选就是0.另外也有一句话说:"人一生要面临很多选择,但

码农从菜鸟到大牛的必须文章

几年前我也是一个码农菜鸟,我也常常幻想着成为技术大牛. 如何减小与"大牛"的差距是我常常不得不面对的话题.今天从我走过来的路来总结一下成为大牛的技术之路. 先来看一张程序员的时间管理图. 除了时间管理,技术学习也是少不了的.下面推荐一下比较好的技术文章. 使用瀑布流插件 Masonry 进行瀑布流布局 业余草微信公众号上线了! 使用HTML5 Canvas实现火焰风暴动画 HTML5 实现3D翻转立方体 使用 HTML5 制作像素太空战机游戏 常用的Linux关机命令大全 5个常用的L

穿越之我是码农 1024 篇

0x01 梅雨时节的杭州,白天下过雨完善放晴了,天空飘着白云,被城市的灯光衬成红色.23点的时候,园区里,一个人影仿佛逃亡般的在湿漉的地上奔跑. "蹦......" 翌日,朋友圈里肆意的传播着一条惊人的消息: "某互联网金融公司,苦逼程序员夜里被逼加班至深夜,遭遇车祸." 0x02 "卧槽,头好 TMD 好疼!" 这个叫做 嬴云 的男人在房间里醒来,忍着头部的剧痛,环顾着四周,一切都是黛色的,床.柜子.门,和昏迷之前的写字楼完全是两个样子. 当头

程序员的职业生涯:年过50还能否继续当码农

IT似乎是一个属于年轻人的行业.当你年届50时,还能从事码农工作吗? 背景:我30出头,但我周围却有一批比我老得多的程序员.以下是我的个人观点,不代表雇主. 关键不在于年龄,而在于雇主的年龄观念.当你40.50.60岁时,雇主会认为你想当项目主管.架构师.首席软件工程师之类的职位.他们还会认为,过去二三十年,你的薪水每年都提升了5%至10%,所以与只有3年http://www.aliyun.com/zixun/aggregation/7314.html">工作经验的25岁年轻人相比,你的市

看看 “悲催” 的码农得学多少东西?

首先你得会一门编程语言,比如 C, Java, Python, PHP 等,但是光语言本身还差得远,还得学习这门语言的类库,学完类库还得学框架,Spring, Struts, Hibernate, MyBatis 每一个都不是善茬. 做前端的同学也不用说了,HTML/JavaScript/CSS,再加上一大堆前端框架 Angular, React, Vue,总得学会一样吧. 学完了框架才能做项目,找工作,才有可能开始光荣的增删改查之旅. 但是这还远远不够,前面说的这些知识只能算是入门. 数据结构

快乐Node码农的十个习惯

从问世到现在将近20年,JavaScript一直缺乏其它有吸引力的编程语言,比如Python和Ruby,的很多优点:命令行界面,REPL,包管理器,以及组织良好的开源社区.感谢Node.js和npm,现如今的JavaScript鸟枪换炮了.Web开发者有了强大的新工具,接下来就看他们的想象力了. 下面这个提示和技巧清单,能让你和你的node程序保持快乐. 1. 用npm init开始新项目 npm有个init命令,可以引导你完成创建package.json文件的过程.即便你非常熟悉package

码农的2014年,年终总结

问题描述 码农的2014年,年终总结 公司无法写博客,改天回家改下,对不住大家了 HI,2015: 我个人是个工作狂,也是研究技术狂,不太喜欢过旧的生活,本来前两天应该总结, 回老家啦--媳妇生小孩啦,我升级了--呵呵-- 公司工作: 2014年初,主要负责xx公司里的应用版本平台服务接口开发,为解决业务问题, 详细了解mybatis和mysql之间sql底层数据交付,完成文件批量上传,优化数据库,借鉴老应用版本的业务, 设计数据库,核心业务逻辑编写和引导新同学. 微信公众平台:功能有,微信用户

也谈“为什么中国的程序员总被称为码农?”

        我经常在CSDN上浏览新闻,同时也喜欢阅读博客.最近,我看到有不少文章在谈"为什么中国的程序员总被称为码农"这个话题.大家虽然各抒己见,但都在表明一个事实:在中国做程序员真的很累,与种地的农民没有什么区别.        作为一个刚工作不久的程序员新手,我想就自己的经历谈一下对这个话题的认识.        在学校的时候,我们对那些"IT界的英雄"很是敬佩,包括:盖茨.乔布斯.扎克伯格,以及大家都很熟悉的李开复老师.想到他们用自己的智慧改变了人类的生

阿里巴巴六年码农自白

各位亲爱的网友朋友大家好,又到了回顾上周新闻的时候了.上一周热闹的事情比较多,我们把他们拆开来看一下. 首先看一下开发者感兴趣的话题.一提到开发,大家可能都会想到一个形容词,那就是"辛苦".的确,开发人员的工作量非常的大,所以很多开发人员被冠以了"码农"的称号.上周点击量第一的文章,标题就叫"一个阿里巴巴码农的六年回眸"这篇文章讲述了一个码农的六年心路历程,中心思想总结起来就是:"技术耐得住寂寞,低谷积累高峰冲刺,主动改变一切.&quo