机器学习

机器学习(Machine Learning,简称ML)是一种人工智能(AI)的分支,致力于研究让计算机系统能够从数据中学习并自动改进性能的算法和技术。机器学习使计算机系统能够从经验中学习,而不需要明确地进行编程。

对于软件研发而言机器学习意味着什么?

机器学习有望从根本上改变软件开发的本质,这也许是自FORTRAN和LISP被发明以来的第一次。 它对我们几十年来的编程范式提出了第一个真正的挑战。 这些变化对数百万正在实施软件开发的人而言,会意味着什么? 我们是否会看到失业和裁员,或者会看到编程演变成不同的东西,也许会是一种更关注于满足用户的东西?

自20世纪70年代以来,我们已经或多或少地构建了软件。 我们有高级语言,低级语言,脚本语言以及用于构建和测试软件的工具,但这些工具需要我们做的事情没有发生太大变化。 我们的语言和工具比50年前要好得多,但它们本质上是一样的。我们仍然有着代码编辑器。这些编辑器变得更花哨了:他们有彩色的高亮,变量名补全,它们有时可以帮助我们完成重构等任务,但他们仍然是emacs和vi的后代。 面向对象代表了一种不同的编程风格,而不是某种本质上而言“全新”的东西 —— 当然,函数式编程可以一直追溯到50年代(除非我们不知道它曾经被叫作这个名字)。 我们可以做得更好吗?

我们该如何学习机器学习中的数学?

数学在机器学习中非常重要,不论是在算法上理解模型代码,还是在工程上构建系统,数学都必不可少。通常离开学校后很难有机会静下心学习数学知识,因此我们最好能通过阅读小组或读书会等形式营造环境,并专注学习那些在实践中常常需要用到的数学知识。

数学达到什么水平才可以开始机器学习?人们并不清楚,尤其是那些在校期间没有研究过数学或统计学的人。

本文的写作目的是介绍构建机器学习产品或进行相关学术研究所必需的数学背景,以及数学在工程和研究中的重要性。这些建议是根据我和机器学习工程师、研究者和教育者交流而得到的,当然也有我自己在机器学习研究和业界工作中的个人经验。

为了构建必备的数学背景,我首先提出不同的思维模式和策略,帮助大家在学校之外也可以接受数学教育。然后,我会给出不同种类机器学习工作所需的数学背景,从高中水平的统计学和微积分到概率图模型(PGM)的最新进展。希望大家读完本文后,能够对自己在机器学习工作中所需要的数学教育有清楚的认知。

关于数学焦虑

很多人害怕数学,包括工程师。首先,我想解决「擅长数学」这一迷思。

一般精通数学的人有大量和数学有关的实践经验。因此,他们在研究数学时更容易保持专注。相比内在能力,学生的思维模式才是决定一个人学习数学能力的关键。

机器学习里,数学到底有多重要?

之前总有同学问:如果学习机器学习、人工智能用什么软件比较好?从与大家的交流中发现,很多同学把机器学习的核心放到了软件的使用,缺少获取有用结果所必要的数学方法与思维。

事实上,目前针对机器学习的软件十分容易获取,例如 Python,scikit-learn,Weka 等等,而且相应的软件学习教程也不难找到。

但机器学习是集合了统计学、概率论、计算机科学、数学算法多等方面交叉研究,即便你对机器学习的应用炉火纯青,但对这些技术没有一个全面的数学理解,极有可能出现应用失误。

那自然有同学会问:

为什么机器学习中的数学很重要?

这个问题的理由我想强调以下几点:
1. 选择合适的算法,要考虑的包括算法准确性、训练时间、模型复杂度、参数的数量和特征数量。
2. 选择参数设置和验证策略。
3. 理解偏差与方差的权衡以确定欠拟合和过拟合。
4. 预估正确的置信区间和不确定性。

你需要多高的数学水平?

试图了解一个例如机器学习这样的跨学科领域,主要的问题是必要的数学知识的量,以及理解这些技术需要的数学水平。这个问题的答案是多方面的,取决于个人水平和兴趣。

学习机器学习需要理解的五个基本概念

这篇文章主要讲述了机器学习的相关内容,阐述了机器学习的主要意义和形成过程。区别了机器学习与AI、深度学习、神经网络等专业词汇。

大多数人可能对机器学习有点恐惧或困惑。 脑子中会有它到底是什么,它有什么发展方向,我现在可以通过它挣钱吗等等这样的问题。

这些问题的提出都是有依据的。事实上,你可能没有意识到自己其实多年来一直在训练机器学习模型。你看过苹果手机或者是Facebook上的照片吧? 你知道它如何向你展示一组面孔并要求你识别它们吗?其实,通过标记这些照片,你正在训练面部识别模型去识别新面孔。恭喜你,现在可以说你有训练机器学习模型的经验了!但在此之前,请阅读这些机器学习基础知识,以便你可以准确回答任何后续问题。

1)机器学习可以预测

如果你只是在图片中标记朋友的面孔,那就不是在用机器学习模型。如果你上传了一张新照片系统马上告诉你每个人是谁,那你就是应用了机器学习模型。机器学习的主要意义在于根据图案模型和经过训练的其他因素来预测事物。它可以预测任何事物,如要基于地理位置和卧室数量预测房价,基于一年中的时间和天气的变化预测航班是否会延误,依据图片中的人物特点进行人像识别等等。

关于机器学习,你所知道的,可能都是错的?

虽然机器学习已经成为一个高频名词,但是对于大众而言,它依然是一个遥不可及乃至模糊不清的概念。为此,著名投资人 Benedict Evans 在自己的博客上发表博文,针对这一问题表达了自己的看法;本文对这篇博文进行了不改变原意的编译。

机器学习的风潮已经刮了四五年了,除了以 AI 为名如雨后春笋般快速崛起的新创公司们,各家科技巨头也希望围绕这个时髦词“重塑金身”。此外,通过媒体的大肆宣传,机器学习也已经成了一个家喻户晓的名词。总之,机器学习将成为下一个能帮“猪”起飞的风口已经是大家的共识。

在正式开始之前,我们先说说人工智能(AI),机器学习,神经网络和深度学习四者的关联。简单来说,人工智能的范畴最大,机器学习包含在内,它是带来人工智能的方法。至于神经网络,则是机器学习众多算法中的一类,而深度学习则是实现机器学习的技术,是它的一种延伸。

经过这么多年的知识普及,恐怕理解(理论上)神经网络是什么的人已经相当多,至少大家都知道它与范式和数据有关。机器学习让我们能在数据中找到那些暗示性和随机性的范式或结构,而在此之前能找到这些隐含属性的只有人类,因为我们会推理。

有了机器学习,那些原本对人类来说相当简单(或者说无法向计算机描述的问题)但却能难倒计算机的问题就迎刃而解了,各路公司也都拿出了相当炫酷的演示。

机器学习实践的10个小秘诀

对于开发人员而言,基于云的机器学习工具带来了使用机器学习创造和提供新的功能的可能性。然而,开发者想要在它们的应用程序中融入机器学习,通常会犯一些错误,本文列了十条注意点以飨读者。

在提供发现埋藏数据深层的模式的能力上,机器学习有着潜在的能力使得应用程序更加的强大并且更能响应用户的需求。精心调校好的算法能够从巨大的并且互不相同的数据源中提取价值,同时没有人类思考和分析的限制。对于开发者而言,机器学习为应用业务的关键分析提供了希望,从而实现从改善客户体验到提供产品推荐上升至超个性化内容服务的任何应用程序。

像Amazon和Micorosoft这样的云供应商提供云功能的机器学习解决方案,承诺为开发者提供一个简单的方法,使得机器学习的能力能够融入到他们的应用程序当中,这也算是最近的头条新闻了。承诺似乎很好,但开发者还需谨慎。

对于开发人员而言,基于云的机器学习工具带来了使用机器学习创造和提供新的功能的可能性。然而,当我们使用不当时,这些工具会输出不好的结果,用户可能会因此而感到不安。测试过微软年龄检测机器学习工具( http://how-old.net/ )的人都会发现,伴随即插即用的易用性而来的是主要的精度问题——对于关键应用程序或者是重大决策,它应该不值得信赖。

机器学习算法综述

近些年来,随着大数据、云计算、移动互联网、人工智能技术的兴起,“机器学习”成为了行业内炙手可热的一个名词。从通信互联网领域的专家,到各式各样的企业,甚至到普通的老百姓,都对“机器学习”技术略知一二。那么,机器学习到底是什么,它与我们常见的“人工智能”、“神经网络”、“数据挖掘“等相似概念都有什么关系?机器学习有那些基本分支、基本方法?在本文中,我们将用最简单易懂的语言解释这些问题。

问题一:“机器学习”和“人工智能”的关系是什么?

随着“机器学习”火起来的还有一个词语,即“人工智能”。每个人都肯定还记得不久以前的AlaphGo,随着机器打败围棋顶级高手李世石,人们也不得不感叹:“人工智能”时代真正到来了。

那么,“机器学习”和“人工智能”的关系到底是什么尼?其实,“人工智能”是一个很大的学科领域,里面包含很多子领域,如“机器学习”,“数据挖掘”,“模式识别”,“自然语言处理”等。这些子领域可能有交叉,但侧重点往往不同。比如”机器学习“就比较侧重于算法方面。总的来说,“人工智能”是一个学科领域,是我们研究的最终目的,而”机器学习“是这个领域中比较核心的,比较重要的,侧重于算法的一门学科,可以说,“人工智能”和“机器学习”是包含与被包含的关系。

机器学习十大算法的每个算法的核心思想、工作原理、适用情况及优缺点

一、C4.5 算法:

ID3 算法是以信息论为基础,以信息熵和信息增益度为衡量标准,从而实现对数据的归纳分类。ID3 算法计算每个属性的信息增益,并选取具有最高增益的属性作为给定的测试属性。

C4.5 算法核心思想是ID3 算法,是ID3 算法的改进,改进方面有:
1)用信息增益率来选择属性,克服了用信息增益选择属性时偏向选择取值多的属性的不足;
2)在树构造过程中进行剪枝
3)能处理非离散的数据
4)能处理不完整的数据

优点:产生的分类规则易于理解,准确率较高。

缺点:
1)在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,因而导致算法的低效。
2)C4.5 只适合于能够驻留于内存的数据集,当训练集大得无法在内存容纳时程序无法运行。

二、K means 算法:

是一个简单的聚类算法,把 n 的对象根据他们的属性分为k 个分割,k < n。算法的核心就是要优化失真函数J,使其收敛到局部最小值但不是全局最小值。