作为一个程序员,你会更倾向于实践方面,但是,作为一个“技术人员”,你迟早会碰带天花板,你会需要学习理论来得到有效的提高。你必须阅读关于算法的数学论文,你必须读很厚的书。那是在这个领域作出杰出成果必须要做的。但,问题是,那是一个实践者给初学者的建议,那过于理想化,适合程序员,所以,对初学者依然是不合适的。
程序员喜欢强大的工具。
我认为,对于一个经验丰富的程序员,把机器学习看成是一个高级的编程方法,就像线程(跟上我)。
如果你想掌握线程,你只需写一些多线程的程序并且了解他能解决哪些问题。你把线程的知识和你原先的知识体系进行绑定,你原先的知识体系会起作用,并且你会注意到线程可以解决哪些以前不能解决的问题。如果你确定这是适合你的,你可以阅读书籍并且挖得更深。
你可以使用现成的多线程库,你也可以自己写一个,你可以挖得更深并且学到更多线程结构背后包含的数学知识。你的兴趣驱使着你学习并且最终你可以确保完成一段多线程的代码。这是一个渐变的过程。
显然,机器学习是一个更庞大的更复杂的领域,我提倡使用循序渐进的策略,在未来的文章中我会详细说明。
不要让一个初学者来学习机器学习,并且把系统上线。这是很危险的。你迟早会得到足够多的教训,并且意识到这是危险的。不过,如果有编程的经验就不一样了,代码审查,主从意识,编程常识都会控制那些可能存在的危险性。
就像学习编程,学习机器学习是一个没有终点的旅途,精通就意味着持续的学习。学会阅读公式,用代码实现公式,如果有兴趣的话,接下来就用你自己的代码来解决问题。
资源
如果你想要持续研究这个问题,下面有我列出的资源。可能有一点深,我确定我们会产生很多不错的讨论。
向上翻,看看那些来自StackOverflow的回答。有说程序员不能学机器学习,除非他们懂数学的,但也有鼓励的,给你信心的。
为什么成为一名数据科学家会比你想像的容易?一篇来自Gigaom的报道称,在同等条件下,从scratch起步的数据科学家可以很快具备国际竞争力。
数学对编程是必须的吗?有趣的是,我认为两方的辩论是十分相关的,并且这是一个很有用的观点。
这篇文章可能引发论战,我很感兴趣你们怎吗看。和你的朋友太论这个话题,我的确听到很多关于危险区和“技术人员”循序渐进学习学习机器学习的观点。我会在未来的文章中对以上两个话题进行跟进。