山东建设机械协会官方网站,百度推广包做网站吗,天津网站建设运营方案,集约化网站群建设方案文章目录1. 什么是机器学习2. 引入机器学习3. 应用场景4. 机器学习分类4.1. 有无人类监督4.2. 是否增量学习4.3. 泛化方式5. 主要挑战6. 测试与验证1. 什么是机器学习
机器学习#xff08;Machine Learning#xff0c;ML#xff09;是一个研究领域#xff0c;让计算机无需…
文章目录1. 什么是机器学习2. 引入机器学习3. 应用场景4. 机器学习分类4.1. 有无人类监督4.2. 是否增量学习4.3. 泛化方式5. 主要挑战6. 测试与验证1. 什么是机器学习
机器学习Machine LearningML是一个研究领域让计算机无需进行明确编程就具备从数据学习的能力
一个计算机程序利用经验 E 来学习任务 T性能是 P如果针对任务 T 的性能 P 随着经验 E 不断增长则称为机器学习
垃圾邮件过滤器根据垃圾邮件用户标记为垃圾和普通邮件学习标记垃圾邮件任务 T 就是标记新邮件是否是垃圾邮件经验 E 就是训练数据性能 P 需要定义如准确率正确分类的邮件比例
训练集系统用来进行学习的样例训练实例样本每一个训练样例
2. 引入机器学习
垃圾邮件过滤器传统规则系统 研究问题看垃圾邮件一般是什么样子比如垃圾邮件会频繁出现一些固定模式的词或短语4U、credit card、free、amazing 等编写规则为每个模式各写一个检测算法程序在邮件中匹配到一个模式规律就将之标记为垃圾邮件评估 分析错误测试程序匹配正确性重复迭代直到匹配效果足够好
传统规则系统应对这类需要大量人工微调或大量规则的问题很难维护大量复杂的规则 ML 技术的垃圾邮件过滤器会自动学习词和短语预测因素通过与非垃圾邮件比较检测垃圾邮件中反复出现的词语模式更易维护也更精确 更新数据用户手动标记垃圾邮件此时 ML 算法会自动完成垃圾邮件标记无须人工干预 数据挖掘在训练了足够多的样本后就可以列出模型的特征这有时可能发现不引人注意的关联或新趋势有助于更好的理解问题这种使用机器学习方法挖掘大量数据来发现不明显规律的方式就是数据挖掘
ML 适用场景
有解决方案但需要大量人工微调或准信大量规则的问题机器学习通常可以简化代码相比传统方法有更好的性能如垃圾邮件过滤器传统方法难以解决的复杂问题最好的 ML 自我学习算法也许可以找到解决方案如语言识别环境有波动的问题ML 算法可以适应新数据帮助人类洞察复杂问题和大量数量数据挖掘
3. 应用场景
图像分类使用卷积神经网络CNN分析生产线产品图像对产品进行自动分类语义分割通过脑部扫描图像使用 CNN 给图像每个像素分类以确认肿瘤的确切位置和形状文本分类使用循环神经网络RNN、CNN、Transformer 等 自然语言处理NLP工具进行新闻自动分类文本分类使用自然语言处理NLP工具自动标识论坛中的恶评文本总结使用自然语言处理NLP工具自动对长文章做总结自然语言理解NLU 问答模块使用自然语言处理NLP工具创建聊天机器人或个人助理回归问题使用回归模型如线性回归、多项式回归、SVM 回归、随机森林回归、人工神经网络等或通过过去性能指标使用如 RNN、CNN、Transformer 等预测公司下一年的收入语言识别使用 RNN、CNN、Transformer 等处理音频采样实现对语言命令做出反应异常检测检测性用卡欺诈聚类问题基于客户的购买记录对客户进行分类对不同类别的客户设计不同的市场策略数据可视化通过降维技术使用图表展示复杂的高维数据集推荐系统使用人工神经网络基于以前的购买记录给客户推荐可能感兴趣的产品强化学习RL通过奖惩机制训练代理为游戏建造智能机器人
4. 机器学习分类
分类方式类别是否在人类监督下监督学习、无监督学习、半监督学习、强化学习是否动态进行增量学习在线学习、批量学习泛化方式基于实例的学习、基于模型的学习
4.1. 有无人类监督
有监督学习
通过经标记的数据标签进行训练的学习任务
标签在学习中提供给算法的包含解决方案的训练集属性一种数据类型反映事件或对象在某方面的表现或性质的事项特征通常指一个属性加上其值也可指代属性分类任务典型的有监督学习任务通过大量包含类别信息的样本进行训练学习如何对新样本进行分类预测结果为离散值回归任务典型的有监督学习任务通过大量包含标签的样本进行训练学习如何给新的样本预测一个目标数值预测结果为连续值
重要的监督学习算法
k-近邻算法线性回归逻辑回归支持向量机SVM决策树和随机森林神经网络
无监督学习
通过未经标记的数据进行训练的学习任务
聚类将通常不拥有标记信息的训练集的样本分为若干组每个组称为一个“簇”(cluster)对应一些潜在的概念划分可视化将大量复杂的未经标记的数据绘制成 2D 或 3D 的数据表示保留尽可能多的结构并识别出一些未知的模式降维在不丢失太多信息的前提下简化数据如将多个相关特征合并为一个特征提取如将汽车的里程和使用年限合并成一个磨损度的特征异常检测用正常的实例进行训练然后判断新势力是正常还是异常关联规则学习挖掘大量数据发现属性之间的联系
可以通过降维减少训练数据的维度在将之提供给另一个 ML 算法比如监督学习算法这样可以缩小运行所需空间并提升执行性能
重要的无监督学习算法
聚类算法k-均值算法DBSCAN分层聚类异常检测和新颖性检测单类 SVM孤立森林可视化和降维主成分分析PCA局部线性嵌入LLEt-分布随机近邻嵌入t-SNE关联规则学习AprioriEclat
半监督学习
处理部分已标记数据的算法被称为半监督学习算法
照片托管服务先自动识别照片中出现的人物 A、B、C然后由认为告诉系统 A、B、C 是谁
半监督学习算法
深度信念网络DBN基于一种互相堆叠的无监督组件受限玻尔兹曼机RBM无监督使用监督学习技术对整个系统进行微调
强化学习
通过观察环境做出选择执行动作并获得正负回报奖惩从而学习什么是最好的策略如 DeepMind 的 AlphaGo机器人行走等
4.2. 是否增量学习
批量学习
使用所有可用数据进行离线训练得到系统然后将停止学习的系统投入生产环境将所学到的应用出来
新数据的学习需要在完整数据集新旧数据的基础上重新训练系统然后停用旧系统用新系统取代
无法增量学习需要的大量时间和计算资源CPU、内存、磁盘空间、磁盘 I/O、网络 I/O 等
在线学习
循序渐进的给系统提供训练数据逐步积累学习成果模型经过训练并投入生产环境然后根据飞速写入的最新数据继续不断学习
新的数据一旦经过在线学习系统的学习就可以丢弃节省了大量资源除非需要留备重新学习
适用于资源有限的系统或者超大数据集的学习任务核外学习将数据集分成小批量数据用于在线学习系统的持续训练
在线学习在接收不良数据后系统的性能会逐渐下降这需要密切监控系统一旦性能下降及时中断学习甚至恢复之前的工作状态需要监控输入数据检测出异常数据异常检测算法
学习率在线学习系统的一个参数代表适应新数据的速度学习率高则很快适应新数据但会很快忘记旧数据学习率低则系统存在较高的惰性学习会更缓慢但也会对新数据的噪声和非典型数据点离群值的序列更不敏感
4.3. 泛化方式
泛化系统通过给定的训练示例在它未见过的示例上进行预测的能力ML 的真正目的是要在新的对象实例上表现出色而非局限在训练集上
基于实例学习
系统会记住训练实例死记硬背通过使用相识度度量来比较新实例和已学习的实例从而泛化新实例
例k-近邻回归
通过找到与新实例最相近的若干训练实例将这些训练实例的均值作为新实例的预测结果
基于模型学习
泛化出适配训练实例的模型可以描述实例分布的代数表示使用该模型进行新实例的预测
模型数据中学得的结果对应了数据中某种潜在的规律亦称假设规律本身称作“真相”学习过程就是为了找出或逼近真相模型表示全局性结果模式表示局部性结果比如一条规则模型训练运行一种寻找模型参数的算法通过训练样本找出最符合训练数据的模型参数使成本函数最小模型选择包括选择模型的类型和完全指定它的架构输入输出结构效用函数衡量模型多好的函数成本函数衡量模型多差的函数
例线性回归
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import sklearn.linear_model
# Load the data
oecd_bli pd.read_csv(oecd_bli_2015.csv, thousands,)
gdp_per_capita pd.read_csv(gdp_per_capita.csv,thousands,,delimiter\t,encodinglatin1, na_valuesn/a)
# Prepare the data
country_stats prepare_country_stats(oecd_bli, gdp_per_capita)
X np.c_[country_stats[GDP per capita]]
y np.c_[country_stats[Life satisfaction]]
# Visualize the data
country_stats.plot(kindscatter, xGDP per capita, yLife satisfaction)
plt.show()# Select a linear model
model sklearn.linear_model.LinearRegression()
# Train the model
model.fit(X, y)
# Make a prediction for Cyprus
X_new [[22587]] # Cypruss GDP per capita
print(model.predict(X_new)) # outputs [[ 5.96242338]]# # Select a 3-Nearest Neighbors regression model
# import sklearn.neighbors
# model1 sklearn.neighbors.KNeighborsRegressor(n_neighbors3)通过模型训练找到最拟合训练数据的模型参数然后直接通过得到的模型计算新实例的预测结果
研究数据 - 选择模型 - 训练模型 - 模型推理
5. 主要挑战
在 ML 过程中最主要的任务是选择学习算法、使用某些数据进行训练因此最可能出现的问题就是坏算法和坏数据;
数据不足
数据的不合理有效性给定足够数据不同的 ML 算法在自然语言歧义消除上表现几乎一致
把钱和时间花在算法的开发上还是语料库的建设上是需要权衡的问题对于复杂的问题数据比算法更重要
训练数据不具代表性
对于将要泛化的新实例训练数据必须有非常强的代表性
采样偏差若样本集太小会出现采样噪声即使样本集够大若采样方式欠妥也可能拿到非代表性数据集
低质量数据
训练集是错误、异常值或噪声系统将难以检测底层模式学习效果不可能好
若某些实例明显异常可以直接丢弃、或尝试手动修复若某些实例缺少部分特征可以整体忽略这些特征、忽略这部分缺失的实例、将缺失部分补全中位数等、训练一个带这个特征的模型再训练一个不带这个特征的模型进行比较
无关特征
只有训练数据里包含足够多的相关特征较少的无关特征系统才能完成学习
特征工程提取一组好的用来训练的特征集 特征选择从现有特征中选择最有用的特征进行训练特征提取将现有特征进行整合产生更有用的特征如降维创建新特征收集新数据等
过拟合
把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质可以检测到数据中微小模式但若训练集本身是有噪声的或者数据集太小引入了采样噪声就很可能导致模型检测噪声本身的模式这些模式不能泛化新的实例 简化模型选择较少参数的模型高阶多项式模型 - 线性模型、减少训练数据中的属性数量、约束模型 收集更多训练数据 减少训练数据中的噪声修复数据错误和异常值 自由度模型的参数个数代表了调整模型的自由度大小 正则化通过约束模型使其更简单并降低过拟合的风险这个过程叫正则化 超参数学习算法本身的参数并非模型的参数如应用正则化的数量
在完美匹配数据和保持模型简单之间找到平衡点从而确保模型能够较好的泛化
欠拟合
欠拟合与过拟合相反表示底层数据结构的模型太简单对训练样本的一般性质尚未学好
选择一个带有更多参数、更强大的模型给学习算法提供更好的特征集特征工程减少模型中的约束减少正则化超参数
6. 测试与验证
一旦训练了一个模型不能只是希望它可以正确的对新的场景做出泛化还需要评估它必要时做出一些调整
了解一个模型对新场景的泛化能力唯一的办法是让模型真实的去处理新场景部署到生产环境然后监控它的输出但可能导致用户抱怨
将数据分割为两部分训练集、测试集
训练集用于训练模型的数据集测试集用于测试模型泛化能力的数据集从样本真实分布中独立同分布采样而得应尽量与训练集互斥且未被训练集使用过为了得到泛化性能强的模型泛化误差样例外误差通过测试集评估模型评估应对新场景的误差率体现了模型处理新场景时的能力
训练误差很低但泛化误差很高就是典型的过拟合
超参数调整与模型选择
使用若干个不同超参数训练出不同的模型用验证集找到其中最佳的超参数版本最佳模型然后用完整的训练集训练集 验证集训练这个最佳模型最后在测试集上评估这个模型的泛化误差
若直接使用测试集进行超参数调整和模型选择则使用测试集进行的拟合评估是无效的因为通过测试集选择出来的模型必然会高度拟合测试集因此需要再从训练集中分出一个验证集专用于做超参数调整与模型选择
保持验证保留训练集的一部分以评估几种候选模型并选择最佳模型新的保留集称为验证集或开发集dev set验证集用于评估和选择模型超参数的数据集奥卡姆剃刀偏好选择若有多个假设与观察一致则选最简单的那一个
验证集太小则模型选择不精确太大则训练集剩余部分变小犹如让短跑运动员参加马拉松
交叉验证法cross validation/k 折交叉验证k-fold cross validation将数据集 D 划分为 k 个大小相似数据分布一致通过分层采样获得的互斥子集每次用 k-1 个子集对并集作为训练集剩余那个子集作为验证集这样可以获得 k 组训练/验证集进行 k 次训练和测试后求 k 次测试结果的均值
数据不匹配
验证集和测试集必须与在生产环境中使用的数据具有相同的代表性可以将其混洗一半作为验证集一半作为测试集确保两者不重复也不接近重复
分层采样stratified sampling保留类别比例的采样方式
当训练集与验证集和测试集的数据之间不匹配时可以使用 train-dev 集 train-dev 集训练集的一部分模型未在其上训练过该数据集应始终与模型投入生产环境后使用的数据尽可能接近模型在训练集的其他部分上进行训练并在 train-dev 集和验证集上进行评估 如果模型在训练集上表现良好但在 train-dev 集上表现不佳则该模型可能过拟合训练集如果它在训练集和 train-dev 集上均表现良好但在验证集上却表现不佳那么训练集与验证集和测试集之间可能存在明显的数据不匹配应该尝试改善训练数据使其看起来更像验证集和测试集 NFLNo Free Lunch Theorem没有免费的午餐: 无论算法 a 多聪明算法 b 多笨拙他们的期望性能相同若对数据绝对没有任何假设就没有理由偏好于某个模型脱离具体问题空泛地谈论什么学习算法更好毫无意义 专栏《机器学习》
PS感谢每一位志同道合者的阅读欢迎关注、评论、赞 参考资料
[1]《机器学习》[2]《机器学习实战》