理论、算法、工具、实践在机器学习/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 至于工具的学习 你感觉到用途就学 学的下去就学 学不下去就拉倒 项目中用上了 只鳞片爪的学一点 真觉得有用了 挤出时间也要系统的学一下 并无一定之规