给初学者介绍什么是机器学习
- 什么是机器学习?它是如何工作的?机器学习中涉及了多少数学知识?一位工程师将这些问题都一一给予了解答。
- 英文原文链接:请点击
机器学习是指不需要对计算机进行明确编程,它自动可以从实例和过往经验中不断学习的这么一个概念。你只需要不断给常规算法提供训练数据,而不是编写代码,它会基于所给数据建立起一套逻辑体系。
例如,分类算法是常见算法的一种。它可以将数据划分成多个不同的组。分类算法不仅可以分辨手写字母,还可以鉴别垃圾邮件。
一个计算机程序从某些任务T的经验E中学习,然后其对于任务T的学习表现用P衡量,随着经验学习P值会有所提高。--Tom M.Mitchell
考虑下跳棋:
E = 多次下跳棋的经验
T = 下跳棋
P = 程序将赢得下次游戏的概率
机器学习的例子
在上一个5年中,得益于计算性能提升和硬件高可用性,机器学习已经被广泛研究。这些都已经实时应用并且部署到部分网站以实现更好的搜索程序和推荐系统。例如你在Amazon搜索一个产品,由于机器学习的存在,在接下去的几天Amazon会向你推荐你所搜索商品的类似产品。
以下是一些分类问题的例子,这些分类问题目标都是将鉴别对象划分为一些固定类别。
- 人脸识别:从图像中识别人脸(或者鉴别某人是否出席)
- 邮件过滤:鉴别邮件是否属于垃圾邮件
- 医疗诊断:诊断就诊者是否身患疾病
- 天气预测:预测,如,明天会下雨
机器学习存在的必要性
机器学习是从人工智能延伸出来的一个领域。通过人工智能的应用,我们试图制造出更好更智能的机器。但是除了类似找AB两点之间最短距离这样的一些简单任务之外,我们还不能应对更加复杂以及持续多变的挑战。基于此人们意识到,解决更高深的难题的唯一途径是让机器自己反复迭代学习,就好像一个孩子在他的生长环境中不断学习然后得到成长一样。因此,机器学习作为计算机的一种新能力发展,并且它甚至出现在我们没有意识到的科技各个层面。
一些数据集过于庞大,人类大脑无法解读其模式,这正是机器学习大展身手,帮助人们快速筛选大型数据集的实践场景。
如果大数据和云计算因为它们的贡献而重要性得到提升,那么机器学习同样的,由于实现自动化分析海量数据集,节省数据科学家时间和精力也应该值得被大家认可。
我们用于数据挖掘的技术已经存在一定年头了,但是由于这些技术无法运行算法,它们并不是那么有效。当你在更好的数据集上运行深度学习,在成果上将会实现梦幻般的突破,这也正是为什么机器学习在这个时代被需要。
机器学习类型
机器学习算法有三种以下类型:
a. 监督学习 Supervised Learning
b. 无监督学习 Unsupervised Learning
c. 强化学习 Reinforcement Learning
监督学习
大多数现实机器学习是监督学习。
这个类型的机器学习,系统会从以往给出的例子中进行学习。(另一方面,非监督学习,系统将会直接从给出的例子中找到规律模式)
数学化的语言来讲,监督学习是你同时有输入变量x和输出变量y,并且可以使用一个算法来求解满足输入到输出的映射。
映射函数表达为Y=f(x)。
监督学习问题可以进一步被分为两类,分别是分类和回归:
分类Classification:一个分类问题是当输出是一个类目(事物的多个方面)或者一个相对的组,例如黑色或白色,垃圾邮件或者非垃圾邮件。
回归Regression:一个回归问题是当输出是一个真实值,例如卢比(印度货币)或者身高。
非监督学习
在非监督学习中,算法自己去发现数据中有趣的结构。
以数学的语言来讲,非监督学习就是你仅仅只有输入变量x,相应的并没有输出变量。
这叫作非监督学习,因为不同于监督学习的是这类问题并没有给出正确答案,而是让机器自己去寻找解决方法。
非监督学习问题可以进一步分为关联和聚类:
关联Association:关联规则学习问题是要去发现大部分数据之间的相关性规则,例如人们谁购买了X商品同时也倾向于购买Y。
聚类Clustering:聚类问题是要去发现数据内在固有分组,例如根据购买行为对客户进行分组。
强化学习
强化学习是机器学习的一个特殊类型,计算机程序将会带着具体目标和一个动态环境交互,例如和对手玩游戏或者驾驶车辆。这个程序在问题空间中实行奖惩机制,以此作为反馈。
使用该算法,机器可以被训练来作特定决定。工作原理是:机器暴露在不断自我训练纠错的环境中。
智能领域的数学知识
机器学习理论是统计学、概率论、计算机科学和算法多方交叉领域,对于数据迭代学习可以被用来建造智能应用。
为什么要关心数学?
机器学习中的数学很重要的原因有以下几点:
- 根据问题选择合适的算法需要考虑精度,训练时间,模型复杂度,参数个数以及特征数量。
- 遵循偏差方差来识别欠拟合和过拟合。
- 选择参数设置和验证策略。
- 估计正确确定性周期和不确定性。Estimating the right determination period and uncertainty
我们需要储备怎样程度的数学知识?
到底需要具备怎样数学功底才能够理解机器学习系统呢?答案是多维的并且视个人兴趣度而定,但是机器学习工程师和数据科学家至少需要具备以下知识:
- 线性代数:矩阵运算,投影,因子分解,对称矩阵,正交化
- 概率论和统计学:概率规则与公里,贝叶斯理论,随机变量,方差和期望,条件分布和联合分布,标准分布
- 微积分:微分和积分,偏导数
- 算法和复杂优化:二进制树、哈希、堆、栈
来源:https://blog.csdn.net/qq_31654575/article/details/100972361