Machine-Learning-7
机器学习经常与人工智能紧密相连,在不考虑显式编程的情况下,机器学习可以使计算机具备完成特定任务的能力,例如识别,诊断,规划,机器人控制和预测等。它往往聚焦于算法创新,即在面对新数据时,其自身能够发生演化。
在某种程度上,机器学习与数据挖掘很相似。它们都是通过数据来获取模式。然而,与人类可理解的数据提取方式不同—通常是按照数据挖掘应用的方式——机器学习主要是使用数据去提升程序本身的理解能力。机器学习程序能够在数据中检测出相关模式并相应的进行程序行为的调整。
现在,你是否准备去了解一些获得机器学习工作必备的技术了呢?一个优秀的求 职者应该对以下各方面知识都有很深的理解:算法和数学应用,问题解决能力和分析 技巧,概率统计和诸如 Python/C++/R/Java 等编程语言。此外,机器学习还需要求职 者具有与生俱来的好奇心,因此,如何你从来没有失去过自孩童时代就有的好奇心, 那么,你就能顺理成章在机器学习领域取得成就。这里详细的列出一个的必备的技能清单。
1. Python/C++/R/Java
如果你希望在机器学习领域获得一份工作,那么在某种程度上,你很可能必须学习这里所列出的所有编程语言。C++ 能够加速代码执行速度。R 在统计绘图方面十分出 色,Hadoop 是以 Java 为基础的,因此,你可能需要在 Java 中完成 Map/Reduce 算法。
2. Probability and Statistics(概率和统计)
概率和统计理论能够帮助你学习算法。很多常用的模型例如朴素贝叶斯、高斯混合模型和隐马尔可夫模型等,需要你有很好的概率和统计背景知识去理解。甚至你需要全身心的投入并且研究测度理论,同时需要理解一些统计指标,这些指标常作为模型评价标准,例如混淆矩阵,ROC曲线, P值等。
3. Applied Math and Algorithms(数学和算法)
对算法理论有相当深入的认识并且了解算法运行的机制, 能够帮助你对模型加以区分, 例如支持向量机模型 (译者注:支持向量机模型包括许多不同的核函数,核函数的不同, 具体模型的原理、应用和结论也不同)。 你需要理解一些数学方法, 例如梯度下降, 凸优化, 拉格朗格方法, 二次规划, 偏微分方程等类似的理论和方法。同时,你也需要熟悉求和运算[http://en.wikipedia.org/wiki/Summation]。
4. Distributed Computing(分布式计算)
大多数时候,机器学习需要处理大型的数据集。使用单机无法处理这些数据,因此,你需要通过集群进行分布式计算。像 Apache Hadoop 架构和 Amazon 的 EC2 云服务等项目能够使这一过程更加容易, 从而提高成本效益。
5. Expanding the Expertise in Unix Tools(使用Unix工具来拓宽你的专业知识)
你应该掌握专门为以下工作而设计的Unix命令或工具: cat, grep, nd, awk, sed, sort, cut, tr 等。由于所有这些处理过程都运行于基于linux平台的设备, 因此, 你需要熟悉这些工具。学习并很好的使用这些工具, 会使你的工作更加轻松。
6. Learning more about Advanced Signal Processing techniques(学习一些信号处理技术)
特征提取是机器学习最重根据部分之一。不同问题需要不同的解决方案, 你可以使用非常酷的高级信号处理算法,例如小波变换,剪切波变换,曲线波,轮廓波和 bandlets 变换等。学习时频分析技术,并用它来解决你的问题。如果你还不知道傅里 叶分析和卷积原理,你同样也需要学习这些知识。二进制码信号处理技术是解决问题 的重要方法。
7. Other skills
(a) 提升自己:你必须时刻保持与新技术的同步以应对将要到来的挑战。这也意 味着你必须注意以下几方面的最新动态:关于这些工具理论的变更日志和会议,算 法的研究论文、博客和会议视频等。(b) 大量阅读。阅读一些像 Google Map-Reduce, Google File System, Google Big Table,以及 e Unreasonable Effectiveness of Data 之类的 论文。此外,网上也有许多免费的机器学习书籍,你同样也应该读一读。
appy Machine Learning!
作者: Alexa Strife
翻译:@善良的右行 from NLPJob翻译小组