网站不用模板如何更新文章,建成学校网站,建设网站的公司兴田德润实力强,网络营销sem1.4 机器学习分类
1.4.1 训练监督
1. 监督学习#xff1a;已对训练数据完成标记
分类#xff1a;根据数据及其分类信息来进行训练#xff0c;使模型能够对新的数据进行分类 回归#xff1a;给出一组特征值来预测目标数值 2. 无监督学习#xff1a;没有对训练数据进行任…1.4 机器学习分类
1.4.1 训练监督
1. 监督学习已对训练数据完成标记
分类根据数据及其分类信息来进行训练使模型能够对新的数据进行分类 回归给出一组特征值来预测目标数值 2. 无监督学习没有对训练数据进行任何标记 聚类在大量数据中找到一些关联并将其分类 可视化算法提供大量复杂、未标记的数据使用算法绘制其2D或3D表示以尽可能保留其结构 降维在不丢失太多信息情况下简化数据 特征提取将几个相关的特征值合并成为一个 将训练数据提供给另一个机器学习算法前先进行降维算法减少训练数据的维度能够加快算法运行、减少数据的空间占用磁盘、内存有时还能使得算法表现得更好。 异常检测系统在训练期间主要使用正常实例因此它会学习识别它们。然后当看到一个新实例时系统可以判断这个新实例看起来是正常的还是异常的 新颖性检测需要有一个非常“干净”的训练集没有任何你希望算法能够检测到的实例。 新颖性算法与异常检测的不同训练集中极少出现过的如果在测试集合中出现 a) 新颖性算法不认为是新颖的因为测试集里面见到过 b) 异常检测认为是异常的因为很少出现 关联规则学习目标是挖掘大量数据并发现属性之间有趣的关系
例如假设你开了一家超市在销售日志上运行关联规则可能会发现购买烧烤酱和薯片的人也倾向于购买牛排。因此你可能希望将这几样商品摆放得更近一些。
3. 半监督学习对训练数据进行了部分标记
现实案例照片托管服务在大量照片中根据照片中出现的人物将其分成不同的分组无监督学习内容
大多数半监督学习算法是无监督和监督算法的组合。
例如可以使用聚类算法将相似的实例分组在一起然后每个未标记的实例都可以用其集群中最常见的标签进行标记。一旦标记了整个数据集就可以使用任何监督学习算法。
4. 自监督学习从完全未标记的数据集生成完全标记的数据集。
例如如果你有一个很大的未标记图像数据集你可以随机屏蔽每个图像的一小 部分然后训练一个模型来恢复出原始图像。在训练期间屏蔽的图像用作模型的输入原始图像用作标签。
迁移学习将知识从一项任务转移到另一项任务称为迁移学习自监督学习与无监督学习的区别自监督学习在训练期间是使用生成的标签的因此在这方面它更接近于监督学习。在处理聚类、降维或异常检测等任务时通常会使用术语“无监督学习”而自监督学习侧重于与监督学习相同的任务主要是分类和回归。
5. 强化学习自行学习策略以随时间推移获得最大回报
强化学习RL这个学习系统在此上下文中称为智能体可以观察环境选择和执行动作并获得回报或负回报形式的惩罚。然后它必须自行学习什么是最好的方法称为策略以便随着时间的推移获得最大的回报。策略定义了智能体在给定情况下应该选择的动作。 一般执行强化学习的流程为 观察环境使用策略选择下一步的动作执行动作获得惩罚或回报更新策略学习步骤迭代直到找到最优策略 AlphaGo就是强化学习的示例。
1.4.2 批量学习与在线学习 对机器学习系统进行分类的另一个标准是系统能否从输入数据流中进行增量学习。 1. 批量学习无法进行增量学习
在批量学习中系统无法进行增量学习它必须使用所有可用的数据进行训练。这通常会占用大量的时间和计算资源因此通常需要离线完成。
离线学习首先对系统进行训练然后将其投入生产环境运行就不再学习了。它只是应用它学到的东西。这称为离线学习。模型腐烂/数据漂移由于现实世界不断变化发展而模型却保持不变导致模型性能随着时间推移慢慢变差的现象。解决模型腐烂的方案定期根据最新的数据重新训练模型。重新训练的间隔次取决于用例猫狗识别类性能衰减缓慢的模型可以间隔稍长金融预测类性能衰减迅速的模型应该间隔较短。批量学习的优缺点 优点数据量小时重新训练、评估和启动机器学习系统的整个过程可以相当容易地自动化效果较好缺点数据量大或者训练资源占用大时重新训练系统成本巨大 如果系统需要能够自动学习并且它的资源有限例如智能手机应用程序或火星上的漫游机器人那么携带大量训练数据并占用大量资源来每天训练数小时是不太可能的。 在这些情况下更好的选择是使用能够增量学习的算法。 2. 在线学习进行增量学习
在在线学习中通过以单独的数据或小批量的小组数据方式循序地向系统提供数据实例来对系统进行增量训练。每个学习步骤都既快速又便宜因此系统可以即时学习新数据
在线学习的适用场景 需要快速适用变化的系统金融、股票计算资源受限的设备超大数据集超出一台计算机的主存储器所能容纳的数据需要用到核外学习 核外学习(out-of-core)学习该算法加载部分数据在该数据上运行一个训练步骤然后重复该过程直到它在所有数据上运行完。核外学习通常是离线即不在实时系统上完成的学习率在线学习系统适应不断变化的数据的速度 学习率高系统会快速适应新数据但它也会很快忘记旧数据学习率低系统会有惰性会学习得更慢但它对新数据中的噪声或非典型数据点异常值序列的敏感度也会降低。 在线学习的挑战如果将不良数据输入系统系统的性能可能会迅速下降取决于数据的质量和学习率。为降低这种风险你需要密切监控系统并在检测到性能下降时立即关闭学习并尽量恢复到之前的工作状态。你可能还想监控输入数据并对异常数据做出反应。例如使用异常检测算法。
1.4.3 泛化方法 对机器学习系统进行分类的另一种方法是根据它们的泛化方式。 大多数机器学习任务都与做出预测有关。这意味着在给定大量训练样例的情况下系统需要能够对它以前未见到过的样例做出良好的预测泛化。在训练数据上有很好的性能是好的但还不够真正的目标是在新实例上表现良好。 泛化方法主要有两种基于实例的学习和基于模型的学习。 1. 基于实例的学习
系统用心学习样例然后通过使用相似性度量将它们与学习到的样例或它们的子集进行比较来泛化到新实例。
2. 基于模型的学习
为需要进行泛化的样例构建一个模型然后使用该模型进行预测。这称为基于模型的学习。
代价函数对于线性回归问题人们通常使用代价函数来衡量线性模型的预测与训练样例之间的差距目的在于最小化这个差距。
示例1-1一个线性回归模型Linear Regression
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression# 下载和准备数据
data_root https://github.com/ageron/data/raw/main/
lifesat pd.read_csv(data_rootlifesat/lifesat.csv)
X lifesat[[GDP per capita (USD)]].values
Y lifesat[[Life satisfaction]].values# 可视化数据
lifesat.plot(kindscatter,gridTrue,xGDP per capita (USD),yLife satisfaction)
plt.axis([23_500,62_500,4,9])
plt.show()# 选择线性模型
model LinearRegression()# 训练模型
model.fit(X,Y)# 对Cyprus进行预测
X_new [[37_655.2]] #Cyprus的GDP2020年
print(model.predict(X_new)) # 输出[[6.30165767]]输出结果
[[6.30165767]] 在上述代码中用k近邻回归替换线性回归模型
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from sklearn.neighbors import KNeighborsRegressor# 下载和准备数据
data_root https://github.com/ageron/data/raw/main/
lifesat pd.read_csv(data_rootlifesat/lifesat.csv)
X lifesat[[GDP per capita (USD)]].values
Y lifesat[[Life satisfaction]].values# 可视化数据
lifesat.plot(kindscatter,gridTrue,xGDP per capita (USD),yLife satisfaction)
plt.axis([23_500,62_500,4,9])
plt.show()# 选择线性模型
model KNeighborsRegressor(n_neighbors3)# 训练模型
model.fit(X,Y)# 对Cyprus进行预测
X_new [[37_655.2]] #Cyprus的GDP2020年
print(model.predict(X_new)) # 输出输出结果
[[6.33333333]] 1.4.4 机器学习的典型步骤 研究数据选择模型使用训练数据进行训练即学习算法搜索最小化代价函数的模型参数值应用模型对新实例进行预测推断目标是该模型能够很好地被泛化