机器学习(课堂笔记)Day01:机器学习相关概念简介
目录
#在线学习和批量学习(Online Learning and Batch Learning)
0x00 什么是机器学习:
机器学习:让机器去学习(传统算法只是让机器去执行)
最早的机器学习的应用:垃圾邮件的分辨
传统算法的解决思路:
编写规则,定义 垃圾邮件,让计算机去执行。
但是定义规则是很难的,并且规则在不断变化
人类是如何学习的?
机器学习的过程与之类似
人类的大脑是非常厉害的,只需要几个样例,就可以总结出准确率比较高的知识和经验
但是对于机器来说,则需要几百张、几千张样例来实现。
我们的生活中已经大量运用了机器学习:
推荐系统、语音识别、人脸识别、量化交易、医疗诊断、市场分析
未来将有更多的领域需要运用机器学习:
无人驾驶领域、安全领域、医疗领域、自然语言处理领域、矿产勘查、宇宙探索、药物研发...
人工智能> 机器学习算法>深度学习
0x01 理念:
不反对调库,因为不论是在生产环境还是在测试环境,调库都是一个稳定而高效的做法。
反对只会调库,而对概念原理没有理解
深入代码内部,可以帮助我们更好的理解算法,更好的理解算法,可以帮助我们更好的选择算法
而选择算法 恰恰是机器学习领域一个非常重要的环节。
0x02 机器学习世界的数据
数据整体叫数据集
每行数据称为一个样本
除了最后一列,每一列都表达了样本的一个特征
最后一列,是需要机器学习需要学习的那个部分,称为标记
大写字母表表示矩阵,小写字母表示向量(行向量与列向量),数学通常习惯采用列向量
因为数学上习惯使用列向量 ,所以X(1) 这里用列向量的形式表示,X(1)的转置 就是一个行向量 对应 数据表中的一行。
将特征作为坐标轴,构成的坐标系就可以称为一个特征空间,例如,将鸢尾花的萼片长度和萼片宽度抽离出来,作为x轴和y轴,就构成了如下特征空间(feature space):
分类任务的本质就是在切分特征空间:
上例中特征空间是二维的,可以推广到高维空间中
同时 上例中,特征都是比较具体的,可以轻松地量化,但是特征可以很抽象
0x03 机器学习的基本任务
机器学习关注的基本任务主要有两类:分类任务 和 回归任务
(更准确的说是 监督学习主要解决两类问题:分类问题 和 回归问题)
#分类任务:
二分类任务:
例如给你的数据不是猫就是狗、判断邮件是垃圾邮件还是不是垃圾邮件、判断某支股票是涨还是跌
多分类任务:
例如手写数字识别、图像识别、判断发给客户信用卡的风险评级
很多复杂的问题也可以转化为一个多分类任务:例如下围棋、让机器自动玩2048的游戏
很多复杂问题可以转化为一个多分类问题不代表用多分类是解决这类问题的最佳方案
一些算法只支持完成多分类任务,但是多分类的任务可以转化为二分类的任务
还有一些算法天然额可以完成多分类任务
多标签分类:
例如给文章自动加标签,一个文章可以归类到多个标签中。
#回归任务:
标签列是一个连续数字的值,而非一个类别
例如:如果我们想让机器学习房屋的价格,进而预测房屋的价格的话,这就是一个回归任务
有一些算法只能解决回归问题
有一些算法只能解决分类问题
有一些算法的思路既能解决回归问题,又能解决分类问题
一些情况下,回归任务可以简化为分类任务
机器学习的算法本质上获得一个 函数 f(x) ,x就是一个样本资料 ,当我们将样本资料送给f(x)
之后就会得到一个结果 y,如果这个结果是一个类别,就是在解决分类问题,如果这个结果是
一个连续的数值,我们就是在解决回归问题
0x04 监督学习、非监督学习、半监督学习和增强学习
监督学习:
给数据的训练数据拥有”标记“ 或者 ”答案“
非监督学习:
给机器的训练数据没有任何标记 或者 范围
对没有”标记“的数据进行分类,这项任务称为聚类分析
例如:顾客去浏览电商网站,留下了大量的浏览痕迹,电商网站就可以对 浏览的顾客进行 聚类
分析,将客户分为不同的群体
非监督学习的意义:
对数据进行降维处理
1.特征提取:发现某些特征和结果其实是不相关的,例如 信用卡的信用评级和人的胖瘦无关
2.特征压缩:我们并不扔掉任何特征,但是有些特征 之间 的关联非常强,可以压缩为一个特征
,从而将高维特征空间压缩为低维特征向量,常用算法有:PCA算法
降维的意义:方便可视化,方便人类理解
3.异常检测:发现数据中的异常数据
半监督学习:
一部分数据有标记或者答案,另一部分数据没有
这种情况在现实中更为常见:各种原因导致标记的缺失
通常都先使用 无监督学习手段 对数据做处理,之后使用监督虚席手段做模型的训练和预测
增强学习:
根据周围环境的情况,采取行动,根据采取行动的结果,学习行动方式
监督学习 和半监督学习 仍然是增强学习的基础
Agent:机器学习算法
机器学习算法Agent 往往会进行一些行动action,不同的行动环境就会给予不同的反馈
Agent根据反馈增强学习
0x05 机器学习的其他分类
#在线学习和批量学习(Online Learning and Batch Learning)
批量学习:
批量学习的优点:算法简单且固定,不需要考虑投入使用后如何优化算法
例如:我们今年 训练出了一个垃圾邮件识别系统,但是明年后年垃圾邮件的情况可能会发生
变化,原来训练的模型不好用了,因为垃圾邮件的变化速度是比较慢的,所以,我们可以:定时
重新批量学习
缺点:每次重新批量学习,运算量巨大,在某些环境变化非常快的情况下,甚至不可能
在线学习:
优点:及时反映新的环境变化
问题:新的数据带来不好的变化
解决方案:需要加强对数据进行监控
其他:也适用于数据量巨大,完全无法批量学习的环境
#参数学习和非参数学习
参数学习:
一旦学到了参数,就不再需要 原有的数据集了
例如:房屋的面积x和房屋的价格y 之间的关系可以近似拟合为一条直线 f(x) = a*x +b ,机器学习的任务就是训练出参数a
非参数学习:
不对模型进行过多假设
非参数学习不代表没有参数
0x06 和机器学习相关的”哲学“思考
以下是不同的机器学习算法
数据量和准确率之间的关系,可以看到:虽然不同的机器学习算法
有优有劣,但是随着数据量的增大,这些算法的准确率都在变高
这说明在机器学习这个领域,算法本身并不是那么重要,只要我们
喂给算法的数据足够多,得到的结果就足够准确
甚至有人提出了”数据即算法“的论断
#数据即算法?
数据确实非常重要
数据驱动:高度依赖数据的质量,开发人员需要花费更多的时间收集
更多的数据、提高数据的质量、提高数据的代表性、研究对于我们解决的
问题来说,到底数据的哪些特征才是更重要的特征(特征工程)
#算法为王?
AlphaGo Zero:我们并没有给算法输入任何数据,所有的数据都是算法
本身产生的
#如何选择机器学习算法?
针对你要应用的场景你要选择哪种机器学习算法呢?
奥卡姆的剃刀:
简单的就是好的
在机器学习领域,到底什么叫简单?
没有免费的午餐定理:
可以严格得数学推导出,任意两个算法,他们的期望性能是相同的
期望 就是平均值呗,也就说,将任意两个算法,将他们应用于所有的
问题中,可能对于A问题,算法甲更好,但是对于B问题,算法乙更好
,但是总的来说,最后算出来的平均性能是相同的。
即 具体到某个特定问题的时候,有些算法可能更好。但是整体而言,
没有一种算法,绝对比另一种算法好。也就说,脱离具体问题,谈
那个算法好是没有意义的。在面对一个具体问题的时候,尝试使用多
种算法进行对比试验,是必要的
面对不确定的世界,怎么看待使用机器学习进行预测的结果?
例如,根据人脸的特征,机器预测出这个人是罪犯的可能性是百分之60
我们应该如何看待这个预测结果?