理论、算法、工具、实践在机器学习/DM工程师的学习成长过程不同阶段分别应占什么比例？扮演什么角色？
每个专业领域 说到底都是专业知识加通用分析能力的结合 高手和普通人的差别绝对能是几十倍到上百倍 工程中重要的东西 你在学校里很多学不到 所以好好把握你现在能学到的东西 都挺有用 好好学就是了 功不唐捐 理论有用吗？有两个用途 1 学了理论之后不会被各种模型的表面差别所迷惑 更敢于采用简单的模型 使用复杂模型的时候 也更清楚自己获得了什么 又牺牲了什么 2 可以跟上学界的发展 领先别人一步 deep learning火的时候 你先别人一步做出来 那就是升官发财 晚一步没人在乎 除了理论之外，这个领域是不是很浅？绝对不是 Dm/ml入门的专业知识是什么？说的最粗浅一点那就一文不值 就是给你一个能够自动调参的模型 常见的就那么几个 10分钟入门 稍微复杂一点也不过就是知道避免overfitting 这些确实简单。 但是我想要介绍一系列的其他知识与能力。越来越不是狭隘的dm/ml，但是很重要 1 对模型的应用化理解。复杂的模型有没有用？有用。但往往和论文讲的不一样。比如对于我来说深度学习最重要的不是能够刷个记录，提高几个点。因为提高那几个点很多时候公司不在乎。对我来说重要的是几个东西 首先，免去了自己手写feature，这对于我的工作效率就是几十倍的提升。其次，避免了一堆dependency，nlp中一个word embedding的效果有的时候可以避免我使用别人的tagging工具 领域相关的词典 真的发布产品的时候麻烦事少很多 再次是速度。lr要实现深度学习同样的效果往往要升维 unigram bigram trigram，我的模型存放在一个和查询次数成正比的系统里，升维带来的查询次数增加 直接就导致我的模型发布不出去 性能瓶颈全在这了 2 通用的数据分析工具和数据可视化工具和习惯。好好学pandas和matplotlib。他们简单的要死，但是请一定练习到形成下意识反应。就是因为数据分析不熟练，好多人喜欢拿具体例子说话，这非常不科学，绝对会误导你。 3 良好的编程习惯。不要手工做事，尽量写代码。不要写一堆用了就扔的代码，多总结，尽量抽象出可重用的代码。日积月累，很多事情你随便写两行代码就搞定了，别人要么就花几十倍的时间，要么就出于畏难而不做。但是简单的事情谁都会做，难做的事情里才有不同的风景。 4 分析问题的能力。这个能力我也不知道怎么练。多想吧 5 对美的追求。机器学习领域里面有一个很少听人谈论的东西就是模型的优雅程度。你乱加feature，加了几十个feature后模型就不可理解了，然后你再也无法提升这个模型了。怎么正确的分解问题，抽取子模型，怎么干净的做事，遵循软件工程中的kiss原则，减缓模型中的坏味道，这是工程实践中的重要经验。这也是我喜欢深度学习的原因，简单可理解。 6 至于工具的学习 你感觉到用途就学 学的下去就学 学不下去就拉倒 项目中用上了 只鳞片爪的学一点 真觉得有用了 挤出时间也要系统的学一下 并无一定之规
1. 混工业界做应用，理解业务本身，是投入产出比最高的。你通过理解，抽出有用的特征，效果往往要比直接塞给机器要好得多，出成果也快得多。 2. 理论的理解程度，决定了你的天花板高度。不说很深刻的理解，可能是某种程度的理解就可以让你少做很多工作而得到比较理想的结果。你理解得越浅知道得越少，为了达到同等的效果，实验的次数就要越多；理解得越深知道得越多，你就可以直接猜到（有理有据的推测）很多实验的结果，就不用去试了，技术选型直接就比你优、无脑调参和试模型的工作量比你少。我用更低的成本和少得多的时间就可以完爆你的效果。 对于工具，如果你懂理论，自己写工具都不难何况学工具。对于较通用和预测未来使用概率较高的工具，平时抽时间掌握是值得的。对于比较专用的比较低频使用的工具，当然是一边做项目一边熟悉会比较值得。这要是靠自己平衡。再重复前面说的，懂理论再学工具是很低成本的。反过来，如果理论零理解而企图通过学习工具去学习理论，这条路是很难走的。 关于创造价值很间接的问题。金融行业都是间接创造价值的，但是赚钱比什么行业都多。 而且像广告这些算法，已经好直接了啊，你今晚优化了算法，明天赚的钱就多了。还有那些购买预测之类的，直接就影响库存成本、营销成本。这些都是影响决策的，而且离现实数据又那么近，所 以你是离老板和用户都很近，你站的角度就会高得多，思考问题的角度就会高得多。 说回创造价值间接的问题，在过去的大组织方式下，离创造价值近的往往离分享价值远，一线员工创造价值，老板和管理层却分享更多价值；搞生产的也赚不过搞金融的。