《机器学习实战》-机器学习基础

目录

  • 机器学习基础
  • 什么是机器学习
    • 机器学习
    • 应用场景
    • 海量数据
    • 机器学习的重要性
  • 机器学习的基本术语
  • 监督学习和非监督学习
    • 监督学习:supervised learning
    • 非监督学习:unsupervised learning
  • 机器学习工具介绍
    • Python
    • 非 Python
    • NumPy 函数库基础
      • 测试 Numpy 库
      • 测试 NumPy 库代码整合
  • 总结

机器学习基础

  • 什么是机器学习
  • 机器学习的基本术语
  • 监督学习和非监督学习
  • 机器学习工具介绍
  • 总结

人工智能的核心是机器学习,机器学习的本质是算法

机器学习的官方解释:机器学习是指如果一个程序可以在任务 T 上,随经验E 的增加,效果 P 也随之增加,则这个程序可以从经验中学习。A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.

机器学习的真实含义:机器学习能让我们自数据集中受到启发,换句话说,我们会利用计算机来彰显数据背后的真实含义。他也许不是我们所想象的那种会模仿的机器人,也不是那种具有人类感情的仿生人。 —《机器学习实战》

机器学习的应用场景:

  1. 你早上到了公司,点开你的公司邮箱检查昨晚有没有人给你发送邮件。在你点开邮件系统的时候,垃圾邮件过滤器已经在后台帮你自动的过滤了垃圾广告邮件。
  2. 工作闲暇之余,你去某宝通过关键字搜索某件你想要购买的东西,但是老板突然走了过了,你还没有购买便强行退出了某宝。那么某宝会记录你这次的行为,然后你下次登陆某宝时会发现某宝换了一批你想要的产品推荐给你。
  3. 工作之后,你去一个大商场购买一袋酒鬼花生,然后在结账的时候收银员给了你一张5元的优惠券,可以用于购买一打啤酒。之所以你会得到这张优惠券,是因为这台收费软件基于以前的统计知识,认为买酒鬼花生的人往往也会买啤酒。
  4. 回到家你拿出手机点开了抖音,你会发现抖音给你推送的都是你喜欢的短视频,你看的目不转睛。因为抖音在你每次搜索之后都会记录你的行为,然后把所有与你搜索相关的视频作为推送给你的主要目标。

总而言之,机器学习技术目前应用于各种场景,例如:人脸识别、手写数字识别、垃圾邮件过滤和某宝的产品推荐。

什么是机器学习

机器学习

把无序的数据转换成有用的信息。

应用场景

机器学习不限制某个单独的领域,机器学习可以应用于任何需要解释并操作数据的领域。

注意:机器学习无法保持完美地预测,但通过统计学的知识能够提高我们预测的正确率,并且在社会科学领域,如果某个分析的正确率能高达60%就会被认为是非常成功的。如果我们需要建立一个模型,用此来预测如何能让每个人以同样的方式获得幸福。但这可想而知是很难得,因为大家对幸福的理解都是迥异不同的。

海量数据

现在智能手机上有各式各样的传感器,例如磁力计、偏航率陀螺仪、三轴加速器、温度传感器和 GPS 接收器,通过这些传感器会产生海量的数据,也就意味着我们未来要面临越来越多的数据,因此如何从这些海量数据中抽取到有价值的信息将是一个非常重要的课题。

机器学习的重要性

在过去的半个世纪里,发达国家的多数工作岗位都从体力劳动转化为脑力劳动,但现在都在逐步消失,例如目前兴起的无人便利店、无人加油站、无人飞机、无人驾驶等等,而这些都依赖于对信息的处理,对海量数据的处理,机器学习也就运用而生,他将帮助我们从中抽取有用的信息。

机器学习的基本术语

如果我们工作一段时候后,打算去找中介买房。中介会询问你对房子的需求,例如:大小、布局、朝向、地理位置。当然,一定不仅仅只有这些,我们假设中介只会问你这四点,而这四点在机器学习中称之为特征feature,有时候也会称为属性attribute,以后我们会统称为特征。

之后你说出了你的需求——大小:100㎡、布局:三室一厅一卫、朝向:朝南、地理位置:上海市徐汇区——的房子,然后中介会去他们的搜索系统中找到这些特征输入对应的值,之后该系统会列出与你想要的房子相似的房源,并打印一份带有价格的表格给你,这个表格中的每一所房子在机器学习中都是一个具有相关特征的示例instance,也可以称之为样本sample

? 表1-1:基于上述特征搜索的房源

大小 布局 朝向 地理位置 价格
100㎡ 三室一厅一卫 朝北 上海市徐汇区 500w
105㎡ 三室两厅一卫 朝南 上海市闵行区 502w
100㎡ 三室一厅一卫 朝南 上海市黄浦区 505w
…… …… …… …… ……

输出该表格的搜索系统就是一个机器学习系统,他会对我们给出的数据判断并把合适的结果推荐给我们,并且在推荐给我们之前他们使用回归算法对这些房子的价格进行了预测。此处我们只拿房价预测举例

这个时候我们可能对买房不感兴趣了,因为我们只准备了100w,然而符合我们心里预期的房子最低也要500w,所以我们认为他们的机器学习系统对房价的预测是不准确的,所以我们想自己研究一个预测房价的机器学习系统卖给他们。现在我们就开始手动实现一个机器学习算法让我们可以通过这四个特征来预测这所房子的价格。

  1. 因此我们去房源官网采集了一些数据,并对这些数据进行清洗,以确保我们的数据格式是我们的机器学习算法所需要的。
  2. 现在我们拥有了很多房子的数据供我们测试、分析,这些数据在机器学习中被称为训练集training set:训练集用于训练机器学习算法的数据样本集合,表1-1就是一个包含多个训练样本training sample的训练集,每个训练样本中包含4种特征、一个标记label:本例中标记是房价,是机器学习算法的预测结果。
  3. 在机器学习中,通常我们会把训练集中的数据分为训练数据training data测试数据testing data,我们设计一个机器学习算法对训练数据进行训练,之后我们用测试数据来测试该算法的精准度——比对算法输出的结果与测试数据已有的结果,就可以得出我们该算法的精准度,如果精准度没有达到要求,我们就需要重新设计算法然后再分析。当然还有交叉验证集的概念,以后我们在叙述。

如果我们做出的算法的精准度很高,我们就可以把机器学习算法转换为应用程序,我们就可以把这个系统卖给那所中介了。

监督学习和非监督学习

监督学习:supervised learning

上述的房价的实例是通过房子的特征预测房价,而房价是连续值,因此用到的是回归regression,即通过给定的特征拟合数据点的位置,然后通过该拟合曲线与测试数据点的位置即可得到测试的结果。机器学习的另一项任务是分类classification,他的目标变量大都是离散值,如果房价≥500w 的我们称之为高房价,否则我们称之为低房价,则我们可以通过房子的特征判断房价是高房价还是低房价。分类和回归都属于监督学习,之所以称之为监督学习,是因为这类算法必须知道预测什么,即有明确的目标变量。

非监督学习:unsupervised learning

除了对房价的预测,我们还可以对房子分成若干个组,每组我们称为一个cluster,这些自动形成的簇可能对应一些潜在的概念划分,例如电梯房、无电梯房,但是电梯房和无电梯房这样的概念我们事先是不知道的,并且训练样本通常也无该标记信息,只是通过聚类clustering的方法对房子的数据进行分析,然后给出了我们这样一个潜在的概念。

当然,机器学习远不止这些内容,但是这些基本术语对我们这些初学者来讲,已经够用了。房子也买了,预测房价系统也实现了,相信大家对机器学习有了一个更深层次的了解,而不是《变形金刚》中的大黄蜂诸如此类…

下面我们也要从一个买房者的身份转换成一个机器学习者,这样我们才能实现我们的房价预测系统顺带实现我们的买房大愿,而不是以程序员的口吻说出:“怎么能这么贵呢?一定是房价预测系统出了问题。”

机器学习工具介绍

Python

首先浅谈我们的 Python 吧!Python 相信大家一定不陌生,这两年已经成了风口上的那头“神猪”,他能成为“神猪”的原因和机器学习是密不可分的,他虽然没有 编译语言如 C 那样的执行效率,但是他以开发效率快著称,他的语法清晰,易于操作纯文本文件,使用广泛,存在大量的开发文档。并且他一度被称作可执行伪代码,默认附带了很多高级数据类型,可以使用自己熟悉的编程风格,如面向对象编程、面向过程编程。

Python 自带的 SciPy 和 NumPy 等许多科学函数库都可以实现向量和矩阵的操作,并且这些科学函数库使用底层语言编写,极大的提高了相关应用程序的计算性能。

Python 自带的科学工具还可以与绘图工具 Matplotlib协同工作。Matplotlib 可以绘制2D、3D 图形,也可以处理科学研究中经常用到的图形。

Python 的好处不多叙述,不能因为我们用 Python 而去吹捧他,只是因为他是真的很适合我们这些新手吧。并且最最重要的是:Python 的核心代码可以使用 C 来替换,而没必要非得和编译型语言拼执行效率,那不是自寻死路吗?

非 Python

机器学习的工具中,在我心中除了 Python其他的都是非 Python,为什么这么讲呢?让我娓娓道来。

首先 MATLAB 不用多讲了,单个软件授权费就要花费上千美元。作为一个合格的程序员,如果让我花钱使用某个软件,那么我情愿……当然,你也可以使用 Octave,Octave 我也使用过一段时间,怎么讲呢?执行速度是不用讲的,但是 Octave 功能太单一,如果只是单纯的拿来操作矩阵,那是可以的,如果用它来进行机器学习程序的编写,我只能说有点累。

Java 和 C 等强类型语言也有矩阵数学库,但是曾经网上就流传过一段佳话:一个程序 C 写可能需要100行,Java 可能需要50行,而 Python 可能只需要20行。对于只写过 Python 代码的你来说,你可能无法体会,但对于我这个用过 C 的人来说,为什么你写个简单的九九乘法表那么麻烦?不论更代码是不是给人看的,更重要一点的是,在这个快社会,相比较快速的执行效率,公司还是希望更快的开发效率吧?毕竟现在是个人都想成为第一个吃螃蟹的人。当然,你自创的公司可能例外。

NumPy 函数库基础

注意:如果不熟悉线性代数也不用着急,这里用到的线性代数只是简化不同的数据点上执行的相同数学运算。将数据表示为矩阵形式,只需要执行简单的矩阵运算而不需要复杂的循环操作。总而言之使用线性代数只是为了简化运算,并没有用到较深的数学只是,例如矩阵的运算其实可以使用 for 循环来代替,只不过使用矩阵运算更方便、更有效率。

测试 Numpy 库

注意:再次重申,也许你不懂线性代数,也许你不知道什么是数组,什么是矩阵,什么是矩阵的逆,什么是单位矩阵,但这一点都不影响你成为一名机器学习专家,但他或许会影响你成为图灵、成为冯诺依曼那样的大师,但我极力推荐你需要去自己了解一些机器学习的原理,这就好比看 Django、看 Flask 源码一样令你心情舒畅。这里推荐吴恩达老师机器学习视频,以及周志华老师的《机器学习》西瓜书,都是很好的入门教材。

from numpy import *

print(random.rand(3,3)) # 构建一个3*3的随机数组
'''
array([[0.49464356, 0.76076607, 0.43525461],
       [0.37401296, 0.83818918, 0.8630109 ],
       [0.30685469, 0.65686257, 0.9354526 ]])
'''

# 将数组转化为矩阵
rand_mat = mat(random.rand(3,3))
print(rand_mat)
'''
matrix([[0.53549597, 0.1512243 , 0.13608029],
        [0.43568756, 0.75499249, 0.27348369],
        [0.06484205, 0.67025154, 0.25451123]])
'''

# 对矩阵求逆
inv_rand_mat = rand_mat.I
print(inv_rand_mat.I)
'''
matrix([[  0.37301234,   2.22174614,  -2.58680522],
        [ -3.92575573,   5.37174698,  -3.67318659],
        [ 10.24338676, -14.7124522 ,  14.26142481]])
'''

# 执行矩阵乘法
my_eye = inv_rand_mat * rand_mat
'''
计算结果本应该是单位矩阵,即对角线全是1,其他元素都是0,但是由于计算机处理有误差,矩阵里还留下了许多非常小的元素。
matrix([[1.00000000e+00, 1.76037137e-17, 1.35053809e-16],
        [7.06118772e-17, 1.00000000e+00, 3.09252006e-16],
        [1.93493163e-16, 1.02215889e-17, 1.00000000e+00]])
'''

# 得到误差值:
error = my_eye - eye(3)
'''
eye(3)得到一个3*3的单位矩阵
matrix([[ 0.00000000e+00,  1.76037137e-17,  1.35053809e-16],
        [ 7.06118772e-17, -1.11022302e-16,  3.09252006e-16],
        [ 1.93493163e-16,  1.02215889e-17, -3.33066907e-16]])
'''

测试 NumPy 库代码整合

rand_arra = random.rand(3,3)
rand_mat = mat(random.rand(3,3))
inv_rand_mat = rand_mat.I
my_eye = inv_rand_mat * rand_mat
error = my_eye - eye(3)
print("""
      rand_arra: {0}\n
      rand_mat: {1}\n
      inv_rand_mat: {2}\n
      my_eye: {3}\n
      error: {4}""".format(
     rand_arra,rand_mat,inv_rand_mat,my_eye,error))

总结

曾经热火朝天的互联网+、跌落神坛的比特币(区块链),不说接盘侠们,别那么悲观,我们更应该考虑的是他们给多少人带来了财富自由的机会,你要知道正态分布的左端只会涨不会跌。

现如今,如本文前面所说,现如今人类所能产生的数据量是海量的,随着大数据的推进,数据量只会越来越大,而机器学习的重要性也可想而知。虽然Python、机器学习已经踩在风口浪尖上,他随时有可能跌落神坛,但我们是无法预测他什么时候也会跌落神坛的,事实证明我们已经无法成为那第一头“神猪”,也正是这个无法预测、这个事实证明,我们才有机会,你要知道,最后称王的不是陈胜吴广、不是 ofo、不是 Uber、不是开心农场,后来者居上,正所谓“长江后浪推前浪,前浪被拍死在沙滩上”,我们要向牛顿学习——站在巨人的肩膀上,然后超过他们,而不是鄙夷之。

曾听过一段很经典的话,如果你只是单纯的做IT,那么每年会有数不清的人和你竞争,这个市场迟早会饱和,Python 也许会成为下一个 C、下一个.net、下一个 Java,但是在医药行业你会编程,在汽车行业你会编程,那么就是香饽饽了。而现如今机器学习给我们提供了一个很好的机会,正如本文所说机器学习不限领域,它更多地是对数据的处理。

世俗也好,名利也罢,希望本文能让你对机器学习有一个大概的了解,能够爱上他。也许他并没有你想的那么神秘。

预知后事如何,请看下回分解——k-近邻算法

原文地址:https://www.cnblogs.com/nickchen121/p/10912087.html

时间: 2024-10-22 18:22:12

《机器学习实战》-机器学习基础的相关文章

【机器学习基础】混合和装袋

融合模型(Aggregation Model) 如果我们已经得到了一些特征或者假设,它们和我们做机器学习的目标有若干的一致性的话,我们可以将这些假设综合起来,让预测效果变得更好,这样的模型被称为融合模型. 融合模型是通过混合(mix)和组合(combine)一些假设的方式,得到更好的预测结果. 下面列举了四种不同的混合组合方式,并给出了数学表示形式: 当有多个假设时,我们选择检验误差最小的假设作为我们最信任的目标函数: 我们现在有多个假设,我们可以给每个假设一个投票的权利,综合所有假设的投票结果

机器学习实战笔记1(机器学习基础)

1:如何选择合适的算法 2:python简介 (1)   python的优势:相对于matlab,matlab单个软件授权就要花费数千美元,也没有一个有影响力的大型开源项目.相对于c++/c/java,完成简单的操作就需要编写大量的代码:而如今我们应该花费更多的时间去处理数据内在的含义,而无需花费太多精力解决计算机如何得到数据结果(python简洁) (2)   python具有numpy科学函数库,它是一个使运算更容易.执行更迅速的库:另外还有matplotlib绘图工具. 3:python语

第一章:机器学习基础

第一部分:分类 本书前两部分主要探讨监督学习(supervisedieaming).在监督学习的过程中,我们只需要给定输入样本集,机器就可以从中推演出指定目标变量的可能结果.监督学习相对比较简单,机器只需从输入数据中预测合适的模型,并从中计算出目标变量的结果.      监督学习一般使用两种类型的目标变量:标称型和数值型.标称型目标变量的结果只在有限目标集中取值,如真与假.动物分类集合{爬行类.鱼类.哺乳类.两栖类.植物.真菌};数值型目标变量则可以从无限的数值集合中取值,如0.100.42.0

【机器学习实战】第1章 机器学习基础

第1章 机器学习基础 机器学习 概述 机器学习就是把无序的数据转换成有用的信息. 获取海量的数据 从海量数据中获取有用的信息 我们会利用计算机来彰显数据背后的真实含义,这才是机器学习的意义. 机器学习 场景 例如:识别动物猫 模式识别(官方标准):人们通过大量的经验,得到结论,从而判断它就是猫. 机器学习(数据学习):人们通过阅读进行学习,观察它会叫.小眼睛.两只耳朵.四条腿.一条尾巴,得到结论,从而判断它就是猫. 深度学习(深入数据):人们通过深入了解它,发现它会'喵喵'的叫.与同类的猫科动物

机器学习实战之第一章 机器学习基础

第1章 机器学习基础 机器学习 概述 机器学习就是把无序的数据转换成有用的信息. 获取海量的数据 从海量数据中获取有用的信息 我们会利用计算机来彰显数据背后的真实含义,这才是机器学习的意义. 机器学习 场景 例如:识别动物猫 模式识别(官方标准):人们通过大量的经验,得到结论,从而判断它就是猫. 机器学习(数据学习):人们通过阅读进行学习,观察它会叫.小眼睛.两只耳朵.四条腿.一条尾巴,得到结论,从而判断它就是猫. 深度学习(深入数据):人们通过深入了解它,发现它会'喵喵'的叫.与同类的猫科动物

【机器学习基础】线性可分支持向量机

引言 接下里的一系列有关机器学习的博文,我将具体的介绍常用的算法,并且希望在这个过程中尽可能地结合实际应用更加深入的理解其精髓,希望所付出的努力能得到应有的回报. 接下来的有关机器学习基础博文主要根据机器学习技法课程的学习,围绕特征转换(feature transforms)这个主要工具,从以下三个方向进行探讨: 如果现在有很多特征转换可以使用的时候,我们该如何运用这些特征转换,如何控制特征转换中的复杂度的问题,从这个角度刺激了支持向量机(Support Vector Machine)算法的发展

机器学习基础2--评价回归模型

再次回到上一节的13次模型. 这个疯狂的曲线造成了一种现象过拟合. 很明显,你的房子不可能只值这么点价钱,所以看上去,这个13次模型甚至还不如一开始的二次模型. 那么现在有个疑问,我们应该怎样去选择最合适的模型? 我们想要准确预测,但是我们无法观测未来. 下面我们模拟一次预测过程: 1.我们随机将一些房子数据排除在外. 2.然后拟合剩下的数据 3.最后进行预测和推断. 术语: 训练集(training set):用来拟合模型的数据. 测试集(test set):排除出去的数据. 训练损失(tra

机器学习基础4--评估线性分类

如线性回归一样,我们也分成了训练集和测试集. 用训练集进行分类器的学习,用测试集来评估分类错误. 分类错误: 测试集 -> 隐藏类型标签 -> 放到分类器进行处理 -> 得出结果 -> 与定义好的类型标签进行比较 错误率: 分类错误数/总句子数 正确率: 分类正确数/总句子数 那么,什么样的正确率才是好的? 至少要比随机猜测效果要好. 如果有k个分类,那么正确率至少要大于等于1/k 同时要关注是否有意义: 2010年,全球有90%的邮件是垃圾邮件.而只要说所有邮件都是垃圾邮件,就有

机器学习基础5--文档相似性检索与度量算法

案例:在阅读文章时,推荐相似的文章. 这个案例简单粗暴,尤其是我看小说的时候,闹书荒的时候,真的很希望有这样的功能.(PS:我现在就职于某小说公司) 那么,如何衡量文章之间的相似度? 在开始讲之前,先提一下elasticsearch. elasticsearch所使用的索引方式被称为倒排索引.将文档拆分成一个一个的词,然后记录该词出现在哪篇文档的哪个位置.具体解释请参照维基百科. 而在这里,我们将使用和倒排索引类似的方法--词袋模型. 我们有如下一句话. "Carlos calls the sp

《Python机器学习基础教程》高清版免费PDF下载

Python机器学习基础教程-[德] 安德里亚斯·穆勒(Andreas C.Müller)[美]莎拉·吉多(Sarah Guido) 著,张亮(hysic) 译 下载地址1:网盘下载 下载地址2:网盘下载 内容简介本书是机器学习入门书,以Python语言介绍.主要内容包括:机器学习的基本概念及其应用:实践中常用的机器学习算法以及这些算法的优缺点:在机器学习中待处理数据的呈现方式的重要性,以及应重点关注数据的哪些方面:模型评估和调参的方法,重点讲解交叉验证和网格搜索:管道的概念:如何将前面各章的方