【机器学习】自学笔记绪论---机器学习进阶之路

机器学习进阶之路

1) 看一些机器学习导论性质的书/视频,完成对机器学习的感性认识;

2) 看一些算法讲解视频,如斯坦福大学公开课;推导算法的过程

3) 找到要学习的算法的实现代码,分析算法的实现过程、优缺点、参数设置;使用框架去训练模型、运用模型;

4) 参加一些机器学习方面的竞赛,综合地运用已形成的能力,进一步巩固提高

5) 选择特定的应用领域(如语音识别、自然语言处理、推荐系统等)进行专攻

 

机器学习工程师必会技能

学习机器学习的目的,当然大部分是为了能找到一份机器学习工程师的工作,拿到一份不错的薪水,因此有必要知道,要称为一名合格的机器学习工程师,应该掌握哪些技能。

 

计算机科学基础和编程

     对机器学习工程师而言,计算机科学基础的重要性包括数据结构(数据堆栈、队列、多位数组、树形以及图像等等)、算法(搜索、分类、优化、动态编程等)、科计算性与复杂性(PNPNP完全问题、大O符号以及近似算法等)和计算机架构(存储、缓存、带宽、死锁和分布式处理等等)

     当你在编程的时候必须能够对以上提到的这些基础知识进行应用、执行、修改或者处理。课后练习、编码竞赛还有黑客马拉松比赛都是你不可或缺的磨练技能的绝佳途径

概率论和数理统计

    概率的形式表征(条件概率、贝叶斯法则、可能性、独立性等)和从其中衍生出的技术(贝叶斯网、马尔科夫决策过程、隐藏式马可夫模型等)是机器学习算法的核心,这些理论可以用来处理现实世界中存在的不确定性问题。和这个领域密切相关的还有统计学,这个学科提供了很多种衡量指标(平均值、中间值、方差等)、分布(均匀分布、正态分布、二项式分布、泊松分布等)和分析方法(ANOVA、假设实验等),这些理论对于观测数据模型的建立和验证非常必要。很多机器学习算法的统计建模程序都是可以扩展的。

数据建模及评估

数据建模就是对一个给定的数据库的基本结构进行评估的过程,目的就是发现其中所蕴含的有用模式(相互关系,聚合关系、特征矢量等)/或者预测以前案例(分类,回归、异常检测等)的特征。评估过程的关键就是不断地对所给模型的优良性能进行评价。根据手中的任务,你需要选取一种恰当的精准/误差衡量指标(比如日志分类的损失、线性回归的误差平方和等等)和求值策略(培训测试、连续Vs. 随机交叉验证等)。通过对算法的反复学习,我们可以发现其中会存在很多误差,而我们可以根据这些误差对模型(比如神经网络的反相传播算法)进行细微的调整,因此即使你想能够运用最基本的标准算法,也需要你对这些测量指标有所了解。

应用机器学习算法和库

尽管通过程式库/软件包/API(比如scikit-learn,Theano, Spark MLlib, H2O, TensorFlow)可以广泛地实现机器学习算法的标准化执行,但是算法的应用还包括选取合适的模型(决策、树形结构、最近邻点、神经网络、支持向量机器、多模型集成等)、适用于数据的学习程序(线性回归、梯度下降法、基因遗传算法、袋翻法、模型特定性方法等),同时还需要你能够了解超参数对学习产生影响的方式。你也需要注意不同方式之间存在的优势和劣势,以及那些可能会让你受牵绊的大量陷阱(偏差和方差、高拟合度与低拟合度、数据缺失、数据丢失等)。对于数据科学和机器学习所带来的这些方面的挑战,大家可以去Kaggle网站获取很多学习参考,你可发现不同的问题当中存在的细微差别,从而可以让你更好的掌握机器学习的算法。

软件工程和系统设计

在每天工作结束的时候,机器学习工程师通常产生的成果或者应交付的产品就是一种软件。这种软件其实也是一种小型插件,它可以适用于相对更大型的产品或者服务的生态系统。你需要很好地掌握如何才能让这些彼此不同的小插件协同工作,并与彼此进行流畅的沟通(使用库函数调用、数据接口、数据库查询等)的方法,为了让其他的插件可以依附你的插件进行很好的工作,你也得需要为你的差价建立合适的接口。精心设计的系统可以避免以后可能出现的瓶颈问题,并让你的算法系统满足数据量激增时候的扩展性能。软件工程的最佳的实践经验(需求分析、系统设计、模块化、版本控制、测试以及归档等)对于产能、协作、质量和可维护性而言是不可获取的无价之宝。

 

学习机器学习必须明确的几个问题(欢迎补充)

模型和算法的关系  模型=算法

机器学习里的算法实质上就是一个个模型。提出模型的目的,就是为了应用模型来处理问题。模型的应用有如下步骤:确定模型----训练模型----使用模型。模型简单说可以理解为函数。确定模型是说自己认为这些数据的特征符合哪个函数;训练模型就是用已有的数据,通过一些方法(最优化或者其他方法)确定函数的参数,参数确定后的函数就是训练的结果;使用模型就是把新的数据代入函数求值。

机器学习框架(研究模型的工具)

为了很好的解决遇到的机器学习问题,我们必须选择一种或几种合适的机器学习模型,然后用训练样本训练它,训练成熟的模型就可以投入使用----输入未知数据、得到预测结果。而这整个过程如果都由程序员堆代码来完成将非常耗时耗力,而机器学习框架的出现就是为了解决这个问题。机器学习框架提供了现成的模型和训练数据,用户只需要根据使用情景修改数据的数据量、组织结构就可以得到训练好的模型,然后即可输入未知数据投入使用。

几种顶尖的机器学习框架:

Fbcunnfacebook公司开发,训练神经网络模型。既可以进行文本识别、图像识别,也能用于语言模型的训练。

DMTK:由微软公司开发,用C++编写,训练深度学习模型。主要用于自然语言处理方面,比如:文本分类与聚类、话题识别以及情感分析等。

TensorFlowgoogle公司开发,核心使用C++编写,训练神经网络模型。用于处理图像识别、语音识别和语言翻译。可运行在LinuxMacOS上。

SystemML:IBM公司开发,使用Java编写,训练神经网络模型。可实现可定制算法(线性分析、分类、聚类、回归、矩阵分解及生存分析等),可运行在 WindowsLinux MacOS上。

VELESIBM公司开发,使用Pathon编写,训练深度学习模型。

Caffe现就职于google的贾扬清博士编写,是一个清晰、可读性高、快速的深度学习框架,是一个卷积神经网络框架。

    1.有的人可能会问,你说的模型那么多种,为什么用于训练模型的框架只训练深度学习模型。其实不然,说这些框架训练深度学习模型只是说它的最终目的是面向训练深度学习模型,当然也支持回归类和分类算法等。机器学习的大牛基本上最后都聚焦于深度学习领域,不仅因为这块综合性最高、难度最大,也因为其实用价值最高。深度学习在计算机视觉、语音识别和自然语言处理方面已经成功运用,发展也日趋成熟。其他有些算法也重要,不过有些充当基础性作用。要学习好深度学习,也必须从基础学起。以后运用的时候,基础性的算法也是运用非常频繁的。

    2.HadoopSpark也被称为框架,不过偏向数据处理。

3.选择一种框架用熟即可,推荐caffe,可读性高、学习资源丰富。

 

机器学习有关的竞赛

KaggleTopcoder、阿里巴巴大数据竞赛.

】:Kaggle行业认可度还挺高,而且网上能找到很多竞赛题和代码,便于入手,参加一下对于能力的提高还挺有帮助。希望和大家多多交流。

你可能感兴趣的:(机器学习,互联网,机器学习模型及框架,入门,机器学习,算法,Caffe,机器学习模型和框架)