6.第六章:数据分类的技术体系
文章目录
- 6.1 数据分类的技术架构
- 6.1.1 数据分类的整体流程
- 6.1.2 数据分类的技术组件
- 6.1.2.1 数据采集与预处理
- 6.1.2.2 特征工程与选择
- 6.1.2.3 分类模型构建
- 6.1.2.4 模型评估与优化
- 6.1.2.5 分类结果应用与反馈
- 6.2 数据分类的核心技术与算法
- 6.2.1 传统机器学习算法
- 6.2.2 深度学习算法
- 6.2.3 无监督与半监督学习
- 6.2.4 分类模型优化技术
- 6.3 数据分类的工具与平台
- 6.3.1 开源机器学习库
- 6.3.2 深度学习框架
- 6.3.3 大数据处理平台
- 6.3.4 自动机器学习平台
- 6.4 数据分类的技术选型与实施
- 6.4.1 分类问题的业务理解
- 6.4.2 数据质量与特点分析
- 6.4.3 选择合适的技术方案
- 6.5 小结
相关专栏:数据分类的艺术
数据分类是数据治理中的一个重要环节,对于企业的数据资产管理、安全合规等方面起着关键作用。本章将系统地介绍数据分类的技术体系,包括整体架构、核心算法、常用工具以及实施建议,帮助读者全面掌握数据分类的理论与实践。
6.1 数据分类的技术架构
6.1.1 数据分类的整体流程
数据分类通常包括以下几个主要步骤:
- 数据采集与预处理:从各种数据源收集原始数据,并进行清洗、转换、集成等预处理操作,为后续步骤提供高质量的数据基础。
- 特征工程与选择:从预处理后的数据中提取有效特征,去除冗余和噪声特征,构建合适的特征表示,为分类模型提供信息丰富的输入。
- 分类模型构建:根据分类任务的需求,选择合适的分类算法(如决策树、支持向量机等),并使用训练数据对模型进行训练和调优。
- 模型评估与优化:使用测试数据对训练好的分类模型进行评估,分析模型的准确率、召回率、F1值等指标,必要时对模型进行进一步优化。
- 分类结果应用与反馈:将优化后的分类模型应用于实际业务场景,对新的数据进行自动分类,并收集用户反馈,不断迭代优化模型。
这个流程并非一蹴而就,而是需要多次迭代,不断优化每个环节,才能构建出高质量的数据分类系统。
6.1.2 数据分类的技术组件
数据分类系统通常由多个技术组件构成,各司其职,协同工作,下面对其中的关键组件进行详细介绍。
6.1.2.1 数据采集与预处理
- 数据采集:从结构化(如关系型数据库)、半结构化(如XML、JSON)、非结构化(如文本、图像)等异构数据源中获取原始数据。常用的采集方式有ETL(抽取-转换-加载)、爬虫、日志收集等。
- 数据清洗:检测并纠正数据中的错误,如缺失值、异常值、不一致等,提高数据质量。常用技术有正则表达式、统计学方法(如中位数过滤)、数据挖掘算法等。
- 数据转换与集成:将异构数据转换为统一的格式,并整合到一致的数据存储中。常见的数据转换如结构化数据关系型转非关系型,非结构化数据文本向量化等。数据集成可基于主题、对象等维度,合并来自不同来源的同类数据。
高质量的数据是分类任务的前提。数据治理中的"垃圾进,垃圾出"说的就是,分类模型再强大,若输入是"垃圾"数据,输出的分类结果也难有质量保证。因此数据采集预处理是十分关键的环节,要投入足够的时间和精力去做好。
6.1.2.2 特征工程与选择
特征是数据的抽象表示,直接影响分类模型的性能。特征工程就是从原始数据中开发并选择信息丰富、有区分度的特征子集的过程。按特征类型可分为:
- 统计特征:对数值型数据做描述性统计(如均值、方差、分位数等)、对类别型数据做频数统计,得到反映数据代表性的统计值。
- 文本特征:对非结构化文本数据,主要方法有词袋模型、TF-IDF、主题模型、词嵌入(如Word2vec、GloVe)等,用于提取文本语义信息。
- 时间序列特征:对带有时间属性的数据,考虑时间维度上的特征,如趋势、周期、残差等,还可构建滑动窗口统计特征。
- 图像视频特征:对多媒体数据,传统方法有颜色直方图、SIFT、HOG等,深度学习方法有CNN提取的层级特征。
- 组合特征:多个特征的交叉组合,用于挖掘特征间的关联性,如特征X1大于a且特征X2小于b。
在海量特征中,难免会有信息冗余和无关噪声特征。特征选择就是从已有特征中选出最具区分度的子集,方法主要有过滤法、包裹法、嵌入法:
- 过滤法:先用评价指标(如方差、信息增益等)对每个特征打分,然后选择分数靠前的特征。计算简单但独立于后续建模。
- 包裹法:将特征选择视为一个特征子集搜索问题,用分类性能评估子集,代表性算法有递归特征消除等。
- 嵌入法:将特征选择与分类建模同时优化,如L1正则化的逻辑回归,会使无关特征系数变为0,达到特征选择效果。
特征工程是数据挖掘、机器学习的核心,相比堆砌模型,把精力用在开发高质量特征更有价值。而特征选择是很多工业界模型能快速收敛的"秘方",因为"相同时间里,只用挑选的关键特征来分析,总是比用全量冗余特征更高效"。
6.1.2.3 分类模型构建
分类模型是整个系统的核心,用于学习特征与类别标签间的对应关系。主要分为:
- 传统机器学习模型:如决策树、随机森林、SVM、KNN等,基于人工定义特征,使用较少的训练样本,具有可解释性。
- 深度学习模型:如CNN、RNN、GNN等,能自动学习层级特征表示,需要大量训练数据,在图像、文本等领域成为主流。
不同分类器各有优劣。传统模型胜在训练快、可解释性强,但难刻画高阶特征;深度模型特征表示能力突出,但需要大量标注数据。如何根据实际问题选择合适的分类器是关键。
具体到代码实现,主流做法是基于成熟的开源机器学习库,如Scikit-learn、XGBoost、LightGBM等。深度学习框架主要有TensorFlow、PyTorch、Keras等。无论哪种框架,核心步骤都包括:
- 定义模型架构,如模型类别(逻辑回归、决策树等)、超参数(树的深度、正则项等)。
- 准备并划分数据,分为训练集和测试集,前者用于模型学习,后者用于性能评估。
- 模型训练与调优,用训练集对模型进行训练,并不断调整超参数,寻求泛化性能最优。
- 模型评估,用测试集评估模型的各项性能指标,如精确率、召回率等。
模型构建看似简单,实则需要对算法原理有深刻理解,并在大量实践中总结经验教训。分类器的选择要结合数据特点(规模、维度、噪声情况等),切忌盲目追随新算法而不考虑实际问题的需求。
6.1.2.4 模型评估与优化
构建好分类模型后,需要评估其性能表现,具体指标有:
- 精确率(Precision):预测为正类的样本中,真正为正类的比例。
- 召回率(Recall):真实为正类的样本中,被预测为正类的比例。
- F1分数:精确率和召回率的调和平均,兼顾两者,取值为[0,1]区间,越高越好。
- 混淆矩阵:二分类问题的全面评估指标,展示真实类别与预测类别的所有组合情况。
- ROC曲线与AUC值:刻画模型判定阈值变化时,真正例率与假正例率的变化曲线,AUC值为曲线下方面积,越大越好。
模型性能不理想时,可采取以下优化手段:
- 特征处理:返回特征工程环节,开发更有区分度的特征,剔除冗余噪声特征。
- 数据处理:扩充数据规模,对不平衡数据进行采样,提升数据质量。
- 模型调参:针对性地调整模型超参数,如提高正则项以缓解过拟合。
- 优化方法:改进模型训练中的损失函数、优化算法等,提高收敛效率。
- 模型集成:将多个弱分类器组合为强分类器,如Bagging、Boosting、Stacking等方法。
- 迁移学习:从其他大规模数据集上预训练模型,迁移到小规模的目标任务中微调。
模型性能评估要全面系统,单一指标难以反映模型的真实表现。在优化环节要有耐心,循序渐进、逐步迭代,每次改进一点,日积月累,厚积薄发。
6.1.2.5 分类结果应用与反馈
模型优化完成后,就可应用于实际分类任务中。这需要将模型集成到企业的生产环境中,常见做法有:
- 离线批处理:用模型对历史数据进行分类,用于统计报告、趋势分析、异常检测等。
- 在线实时分类:对实时数据流进行即时分类,用于实时预警、个性化推荐等。
- 人机交互式分类:专家对系统分类结果进行审核纠错,反馈结果用于模型迭代。
实际应用中,要关注分类系统的几个关键性能指标:
- 分类准确率:要满足业务需求的合格率。
- 分类效率:要在可接受的时间内完成分类。
- 资源消耗:模型存储、计算等资源消耗不能过高。
- 可扩展性、鲁棒性:支持分类类别、数据规模的可扩展,对异常情况有良好的适应性。
应用只是起点,还需要建立用户反馈的闭环,不断迭代优化分类系统。反馈渠道可以是:
- 人工反馈:用户对误分类结果的人工报告。
- 用户行为:分类结果被使用、点击等正反馈行为。
- 异常情况统计:各种异常指标,如特定类别分类错误率上升。
及时收集多方反馈,用于触发新一轮的迭代优化,才能保持分类系统与不断变化的业务需求同步迭代更新,应用出真正价值。
分类系统的构建不能脱离业务实际,要站在解决实际问题的角度,甄选最合适的技术方案。要有全局视角和前瞻思维,统筹规划系统的整体架构。同时要脚踏实地,在每个环节下苦功,追求高质量的数据、特征、模型,这是分类系统成功的基础。最后还要主动把分类系统融入到业务闭环中,让分类结果真正服务和反哺业务,这是分类系统的最高境界。
6.2 数据分类的核心技术与算法
6.2.1 传统机器学习算法
6.2.1.1 决策树与随机森林
- 决策树:以树形结构表示样本特征与类别的对应关系,包括根节点、若干内部节点,及叶节点(即类别标签)。优点是可解释性强,缺点是易过拟合、不稳定。代表性算法有ID3、C4.5、CART等。
- 随机森林:基于Bagging集成思想,训练多棵决策树,对多数表决分类结果。每棵树随机选择不同特征子集,以降低决策树间的相关性,提高泛化性能。
6.2.1.2 支持向量机(SVM)
- 原理:寻求高维空间中能最大间隔地分离不同类别数据的超平面,对应于分类决策边界。当原始空间线性不可分时,先映射到更高维特征空间,再寻求分离超平面。
- 优点:理论基础严谨,分类精度高,能处理高维小样本数据。
- 缺点:对参数调节、核函数选择敏感,训练开销大。
6.2.1.3 朴素贝叶斯
- 基于贝叶斯定理和"特征条件独立性假设",先验概率根据训练集估计,条件概率按独立性假设计算。
- 优点:原理简单,训练开销小,能处理缺失数据。
- 缺点:特征独立性假设较强,对特征关联性建模能力不足。
6.2.1.4 K最近邻(KNN)
- 思想:一个样本的类别可由其最近邻样本的类别来近似。
- 算法:计算待分类样本与所有训练样本的距离,选择最近的K个邻居,多数表决决定分类结果。
- 优点:思想简单,训练开销小,天然支持多分类。
- 缺点:预测阶段计算开销大,需要存储全部训练样本。K值、距离度量的选取影响大。
6.2.2 深度学习算法
6.2.2.1 卷积神经网络(CNN)
- 原理:局部连接、权重共享,逐层提取图像的层级特征表示。
- 网络结构:卷积层用于特征提取,池化层用于特征选择,全连接层用于分类预测。
- 优点:能自动学习层级图像特征,平移旋转不变性好,在图像领域表现优秀。
- 缺点:需大量标注样本,参数调校复杂,解释性不足。
6.2.2.2 循环神经网络(RNN)
- 原理:引入状态单元,能够建模数据的序列依赖关系。
- 网络结构:输入层接收序列当前值,状态单元联接前一时刻隐层,输出层输出当前预测。
- 代表模型:LSTM通过门机制缓解梯度消失,GRU简化LSTM结构。常用于文本、语音、时序数据。
- 优点:能够建模数据的长距离依赖关系。
- 缺点:训练不稳定,容易过拟合,难以并行化。
6.2.2.3 图神经网络(GNN)
- 原理:在图结构数据上,通过迭代聚合邻居节点信息,不断更新节点表示。
- 核心操作:邻居信息聚合与节点表示更新,分别对应图卷积和池化操作。
- 代表模型:GCN基于谱图卷积,GraphSAGE以采样邻居信息做聚合,GAT引入注意力机制。
- 优势:能建模图的拓扑结构信息,处理化合物、社交网络等图结构数据。
6.2.2.4 Transformer模型
- 原理:基于自注意力机制,建模输入序列的全局依赖关系。
- 网络结构:编码器包含多头自注意力、前馈网络,解码器还引入编码-解码注意力,实现并行化。
- 代表模型:BERT用于文本表示预训练,GPT用于文本生成。在NLP领域占主导。
- 优点:并行计算效率高,长距离依赖建模能力强,预训练后迁移性好。
- 缺点:模型参数量巨大,严重依赖大规模语料,推理速度较慢。
6.2.3 无监督与半监督学习
6.2.3.1 聚类算法
- 原理:对无标签数据,基于样本间相似性度量,自动将数据划分为多个簇。
- 代表算法:K-means基于划分策略,DBSCAN基于密度,层次聚类自底而上合并。
- 优点:不需要人工标注数据,能发现数据内在结构。
- 缺点:聚类结果随初始化、相似性度量变化,须人工确定聚类簇数。
6.2.3.2 自编码器(AE)
- 原理:用神经网络同时学习数据的编码器(Encoder)和解码器(Decoder),目标是最小化重构误差。
- 应用:数据降维、异常检测(重构误差大为异常)、生成对抗网络(对抗训练编码器-解码器)。
- 优点:能自动化地学习数据的低维表示。
- 缺点:训练不稳定,学习到的特征表示不一定可解释。
6.2.3.3 生成对抗网络(GAN)
- 原理:通过生成器网络和判别器网络的对抗博弈,学习生成数据的概率分布。
- 训练:生成器(G)用高斯噪声生成假样本,判别器(D)识别真假样本,交替更新两者参数。
- 应用:高质量图像生成,图像风格迁移,半监督学习(把D当分类器)。
- 优点:生成效果逼真,为无标签数据创造"无限"标注样本。
- 缺点:训练不稳定,loss函数设计、网络平衡等超参数调节复杂。
6.2.4 分类模型优化技术
6.2.4.1 集成学习
- 原理:结合多个弱分类器的输出,得到比单个强分类器更优的性能。
- 常用框架:Boosting串行训练若干个弱分类器;Bagging并行训练多个弱分类器取平均;Stacking将多个分类器的输出再次训练元分类器。
- 代表模型:基于Boosting的Adaboost、梯度提升树(GBDT)等,基于Bagging的随机森林。
- 优点:集成减少模型的偏差和方差,避免过拟合、提高泛化性。
- 缺点:计算开销大,集成太多反而会降低性能,黑盒模型解释性差。
6.2.4.2 迁移学习
- 定义:从源领域学到的知识,迁移应用于不同但相关的目标领域任务。
- 常见形式:基于实例(样本)、特征、模型参数的迁移。
- 代表工作:BERT等大规模语言模型预训练,再针对下游任务微调。
- 优点:克服目标领域标注数据稀缺难题,提高泛化性。
- 缺点:源-目标域的相关性假设,域自适应方法等理论有待完善。
6.2.4.3 Few-shot学习
- 定义:从极少量标注样本中学习新的类别。常见形式为K-shot N-way。
- 基本思路:元学习(提取具有泛化能力的特征表示)、度量学习(最近邻分类)、数据增强等。
- 代表工作:匹配网络通过注意力机制学习样本嵌入,原型网络学习每个类的原型表示。
- 优点:减少对大规模标注数据的依赖,模型具备快速泛化能力。
- 缺点:小样本噪声敏感,类间差异建模不足,泛化能力有限。
6.2.4.4 主动学习
- 定义:模型主动挑选最有价值的未标注样本,供专家标注后加入训练,不断迭代优化模型。
- 关键:度量样本的信息量(不确定度、代表性、多样性等),平衡探索与利用。
- 优点:用最少的标注样本,最大化提升模型性能,节约人力。
- 缺点:度量函数难设计,批量查询等实际问题有待研究。
6.3 数据分类的工具与平台
数据分类应用中,高效的工具和平台能帮助快速开发和部署。以下对主流的机器学习库、深度学习框架等进行介绍。
6.3.1 开源机器学习库
6.3.1.1 Scikit-learn
- 基于Python,提供从数据预处理、特征工程到模型训练、评估的全流程支持。
- 优点:接口统一,文档丰富,适合快速构建原型系统。
- 缺点:调参自动化程度低,对大规模数据处理能力不足。
6.3.1.2 XGBoost
- 高效的梯度提升树(GBDT)实现,由华盛顿大学陈天奇等人开源。
- 优化手段包括特征列方式存储、基于直方图的决策树构建、并行化等。
- 在结构化数据分类任务上效果出色,连续斩获kaggle竞赛冠军,被称为"kaggle killer"。
6.3.1.3 LightGBM
- 由微软亚洲研究院开源的GBDT框架,在XGBoost基础上进一步优化。
- 主要改进:基于梯度的单边采样(GOSS)、互斥特征捆绑(EFB),直方图做差加速等。
- 进一步提高训练速度和准确率,内存占用更少。
6.3.2 深度学习框架
6.3.2.1 TensorFlow
- 由Google开源,提供统一的大规模机器学习计算框架。
- 数据流图(Data Flow Graph)作为基本计算模型,自动求导,支持异构设备。
- Keras作为高层接口,快速构建神经网络。丰富的功能模块,如TensorBoard可视化等。
- 生态系统活跃,社区资源丰富。
6.3.2.2 PyTorch
- 源自Facebook,基于Python的深度学习平台。
- 采用动态计算图,提供类似Numpy的张量(Tensor)计算接口,使用简单灵活。
- 易于调试,适合快速迭代开发。支持分布式训练,与C++天然集成。
- 在学术界接受度高,前沿模型实现较多。
6.3.2.3 Keras
- 由Google工程师开发的高阶神经网络API。
- 简洁统一的接口,快速构建各种神经网络架构。
- 可基于TensorFlow、Theano等平台运行。内置常见数据集和预训练模型。
- 适合初学者入门,但灵活性不足。后被集成到TensorFlow。
6.3.3 大数据处理平台
6.3.3.1 Hadoop生态系统
- 原理:分而治之,MapReduce将任务拆分到集群各节点并行处理。
- 组成:分布式存储HDFS、资源管理YARN、计算框架MapReduce等。
- 周边工具:Hive用于类SQL查询,Mahout实现常见机器学习算法。
- 为大规模数据存储、处理、分析奠定了基础。
6.3.3.2 Spark MLlib
- 基于Spark大规模分布式计算引擎,提供完整的机器学习工具库。
- 包括分类、回归、协同过滤、聚类、降维等常见算法。
- 基于内存计算、DAG(有向无环图)任务调度,比Hadoop快数十倍。
- 支持交互式数据分析,与Hive等工具无缝集成。
6.3.4 自动机器学习平台
6.3.4.1 Auto-sklearn
- 开源的Python自动机器学习工具包。
- 基于贝叶斯优化、元学习等技术,自动搜索数据预处理、分类算法及超参数。
- 使用Scikit-learn接口,简化机器学习工作流。
- 在经典分类任务如digits、16特征量的二元分类等表现优秀。
6.3.4.2 AutoKeras
- 基于Keras的AutoML系统。
- 使用神经架构搜索(NAS)技术,自动优化模型结构和超参数。
- 任务导向,支持图像分类、文本分类、结构化数据分类等。
- 降低深度学习应用门槛,但搜索空间受限,性能稳定性不足。
6.3.4.3 ModelArts
- 华为云提供的一站式AI开发平台。
- 涵盖数据处理、模型训练、模型部署全流程。预置经典数据集,支持自动学习。
- 算法丰富,如多源异构数据分类中的自动特征交互等。
- 适合中小企业和个人开发者,但定制化能力较弱。
6.4 数据分类的技术选型与实施
前面章节系统介绍了数据分类各个环节常用的技术方法,面对实际问题,如何选择合适的技术路线至关重要。以下给出一些思路和建议。
6.4.1 分类问题的业务理解
深入理解业务背景和需求是一切的基础。要回答以下几个问题:
- 分类的业务目标是什么?模型性能如何考核?
- 数据规模如何?获取是否方便?标注成本如何?
- 分类的类别体系是否明确?类别数、不平衡程度如何?
- 有无先验知识可利用?如专家规则、已成熟的分类体系等。
6.4.2 数据质量与特点分析
全面分析数据对设计技术方案至关重要:
- 结构化程度如何?字段语义、类型、分布如何?
- 非结构化数据占比如何?图文视频等的内在模式、相关性如何?
- 数据维度如何?是否稀疏?是否有冗余、噪声特征?
- 数据有无时间、空间属性?不同来源数据的异质性如何?
6.4.3 选择合适的技术方案
综合考虑任务需求和数据特点,选择恰当的技术路线。
6.4.3.1 考虑业务约束
- 训练时间有严格限制的,优先考虑传统机器学习算法。
- 要求可解释性强的,考虑决策树、线性模型等。
- inference部署要求高实时性的,选择推理速度快的模型。
- 对异常、小样本识别要求高的,考虑few-shot、one-shot学习等。
6.4.3.2 模型性能与效率权衡
- 对分类精度要求高的,优先考虑深度学习、集成学习。
- 训练数据很少的,优先考虑贝叶斯、SVM等少样本友好的算法。
- 对训练效率要求高的,考虑单模型、异步并行SGD等。
- 推理速度要求高的,考虑轻量级模型如线性、树模型等。
除此之外,还要考虑:
- 对模型大小敏感的,选择参数量小的模型,如将NN改为树模型。
- 召回优先场景,考虑召回导向的loss,如Focal Loss等。
- 精准率优先场景,考虑层级分类、样本过采样等。
- 泛化性要求高的,考虑集成学习、领域自适应等。
6.4.4 模型开发与迭代优化
基于选定的技术框架,开发训练分类模型,核心环节包括:
- 分析数据质量,对缺失值、异常值等"脏"数据进行修复。
- 面向不同类型数据,如文本、图像等,设计特征工程流程。
- 划分训练、验证、测试集,搭建模型训练与评估pipeline。
- 离线评估模型性能,分析错误样本,改进特征和模型。
- 线上评估模型服务性能,监控关键指标,持续优化迭代。
在迭代优化中,要关注:
- 引入具有互补特性的新数据,如难分样本、小类别样本等。
- 尝试数据增强策略,如旋转、裁剪、Mixup等。
- 提升特征表达能力,如引入领域词典、知识图谱等。
- 模型集成,训练互补的多个基学习器,在融合层做集成。
- 算法参数自动调优,如贝叶斯优化、强化学习等。
6.4.5 分类系统的部署与监控
模型开发成熟后,还需考虑工程实施,主要包括:
- 流程整合,将离线训练的模型集成到业务流程中。
- 性能优化,如模型量化、剪枝、知识蒸馏等,提升推理性能。
- 部署上线,提供分类服务API,保障高可用、可扩展。
- 过程监控,实时统计分类效果、资源消耗等,预警异常。
- 持续改进,跟踪线上数据变化趋势,定期迭代优化。
持续关注业务反馈、模型表现、资源开销,做好分类系统的运营维护,及时发现和解决问题,不断迭代优化,让数据分类真正服务于业务,创造价值,是分类系统的生命力所在。
6.5 小结
本章系统梳理了数据分类的技术体系,包括整体架构、关键技术、常用工具和实施方法。一方面,分类技术日新月异,从传统机器学习、深度学习到迁移学习、自动机器学习等,可供选择的工具和框架越来越丰富。另一方面,分类系统日益复杂,涉及数据处理、特征工程、模型训练、服务集成等诸多环节,每个环节都有不同的技术策略组合。
要构建行之有效的分类系统,既需要对前沿算法有敏锐洞察,又要对工程实现有深厚积淀。同时还要对业务需求有准确把握,善于权衡分类性能与工程效率。概括而言:
- 算法上,要"术有专攻",对传统机器学习、深度学习等分类算法的原理和特性了然于胸。
- 工程上,要"通晓全局",熟练掌握分类系统从设计、开发、实施到运维的端到端流程。
- 业务上,要"将心比心",精准理解业务目标和痛点,设身处地为业务考虑分类方案。
这一章节的内容可供初学者系统了解数据分类的技术全貌,也可帮助从业者查缺补漏、对症下药,希望对你有所裨益。技术在发展,行业在变革,唯有不断学习,开拓创新,方能立于潮头。用专业和热爱去对待每一次问题、每一个项目,必将收获成长的果实。
相关文章:
6.第六章:数据分类的技术体系
文章目录 6.1 数据分类的技术架构6.1.1 数据分类的整体流程6.1.2 数据分类的技术组件6.1.2.1 数据采集与预处理6.1.2.2 特征工程与选择6.1.2.3 分类模型构建6.1.2.4 模型评估与优化6.1.2.5 分类结果应用与反馈 6.2 数据分类的核心技术与算法6.2.1 传统机器学习算法6.2.2 深度学…...
Nginx 反向代理,啥是“反向代理“啊,为啥叫“反向“代理?而不叫“正向”代理?它能干哈?
Nginx 反向代理的理解与配置 User 我打包了我的前端vue项目,上传到服务器,在宝塔面板安装了nginx服务,配置了文件 nginx.txt .运行了项目。 我想清楚,什么是nginx反向代理?是nginx作为一个中介?中间件来集…...
下篇:深入剖析 BLE GATT / GAP / SMP 与应用层(约5000字)
引言 在 BLE 协议栈的最上层,GAP 定义设备角色与连接管理,GATT 构建服务与特征,SMP 负责安全保障,应用层则承载具体业务逻辑与 Profile。掌握这一层,可实现安全可靠的设备发现、配对、服务交互和定制化业务。本文将详解 GAP、GATT、SMP 三大模块,并通过示例、PlantUML 时…...
Linux Awk 深度解析:10个生产级自动化与云原生场景
看图猜诗,你有任何想法都可以在评论区留言哦~ 摘要 Awk 作为 Linux 文本处理三剑客中的“数据工程师”,凭借字段分割、模式匹配和数学运算三位一体的能力,成为处理结构化文本(日志、CSV、配置文件)的终极工具。本文聚…...
无人设备遥控之调度自动化技术篇
无人设备遥控器的调度自动化技术是现代科技发展的重要成果,它通过集成先进的通信、控制、传感器及人工智能技术,实现了对无人设备的高效、精准调度与自动化管理。 一、核心技术 无线通信技术 调度自动化依赖于高速、稳定的无线通信网络(如5…...
STM32F407 HAL库使用 DMA_Normal 模式实现 UART 循环发送(无需中断)
在 STM32 开发中,很多人喜欢使用 DMA 来加速串口发送数据。然而,默认的 DMA 往往配合中断或使用循环模式(DMA_CIRCULAR)使用。但在某些特定需求下,我们希望: 使用 DMA_NORMAL 模式,确保 DMA 每次…...
汽车自动驾驶介绍
0 Preface/Foreword 1 介绍 1.1 FSD FSD: Full Self-Driving,完全自动驾驶 (Tesla) 1.2 自动驾驶级别 L0 - L2:辅助驾驶L3:有条件自动驾驶L4/5 :高度/完全自动驾驶...
Uniapp-小程序从入门到精通
沉淀UNIAPP项目精华模版 ******************************************************************************************************************************************* 1、数据库的导入SQL **************************************************************************…...
深度剖析操作系统核心(第一节):从X86/ARM/MIPS处理器架构到虚拟内存、分段分页、Linux内存管理,再揭秘进程线程限制与优化秘籍,助你成为OS高手!
文章目录 OS处理器X86ARMMIPSPowerPC 内存管理虚拟内存内存分段内存分页段页式内存管理Linux 内存管理 OS 处理器 常见处理器有X86、ARM、MIPS、PowerPC四种。 X86 X86架构是芯片巨头Intel设计制造的一种微处理器体系结构的统称。如果这样说你不理解,那么当我说…...
基于 EFISH-SBC-RK3588 的无人机通信云端数据处理模块方案
一、硬件架构设计 核心计算单元(EFISH-SBC-RK3588) 异构计算能力:搭载 8 核 ARM 架构(4Cortex-A762.4GHz 4Cortex-A551.8GHz),集成 6 TOPS NPU 与 Mali-G610 GPU,支持多任务并行处理…...
Unity 内置Standard Shader UNITY_BRDF_PBS函数分析 (二)
四、BRDF1_Unity_PBS // 主物理基BRDF实现 // 基于Disney工作并以Torrance-Sparrow微面模型为基础 // 公式: // BRDF kD / π kS * (D * V * F) / 4 // I BRDF * (N L) // // * NDF(法线分布函数)可根据 UNITY_BRDF_GGX 选择&#…...
GitHub万星项目维护者分享:开源协作的避坑指南
GitHub万星项目维护者分享:开源协作的避坑指南 ——开发者张三与237个文件改动PR的五年战争 序幕:深夜的炸弹 2019年夏天,张三维护的开源项目TerminalX刚突破8000星,一个标题猩红的PR突然弹出:“彻底重构࿰…...
Linux基础篇、第四章_01软件安装rpm_yum_源码安装_二进制安装
Linux基础篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! ————laowang 基础命令:rpm、yum、源码安装、二进制安装 一、rpm本地安装: (无需网络安装,无法解决软件依赖) rpm -ivh …...
焊接机排错
焊接机 一、前定位后焊接 两个机台,①极柱定位,相机定位所有极柱点和mark点;②焊接机,相机定位mark点原理:极柱定位在成功定位到所有极柱点和mark点后,可以建立mark点和极柱点的关系。焊接机定位到mark点…...
4.2 Prompt工程与任务建模:高效提示词设计与任务拆解方法
提示词工程(Prompt Engineering)和任务建模(Task Modeling)已成为构建高效智能代理(Agent)系统的核心技术。提示词工程通过精心设计的自然语言提示词(Prompts),引导大型语…...
oracle 锁的添加方式和死锁的解决
DML锁添加方式 DML 锁可由一个用户进程以显式的方式加锁,也可通过某些 SQL 语句隐含方式实现。 DML 锁有三种加锁方式:共享锁方式、独占锁方式、共享更新。 共享锁,独占锁用于 TM 锁,共享锁用于 TX 锁。 1)共享方式的表级锁 共享方…...
Nginx 二进制部署与 Docker 部署深度对比
一、核心概念解析 1. 二进制部署 通过包管理器(如 apt/yum)或源码编译安装 Nginx,直接运行在宿主机上。其特点包括: 直接性:与操作系统深度绑定,直接使用系统库和内核功能 。定制化:支持通过…...
以太网的mac帧格式
一.以太网的mac帧 帧的要求 1.长度 2.物理层...
每日算法-250424
每日算法打卡 (24/04/25) - LeetCode 2971 & 1647 记录一下今天解决的两道 LeetCode 题目 2971. 找到最大周长的多边形 题目 思路 贪心 一个基本的多边形构成条件是:最长边必须小于其他所有边的长度之和。 为了找到周长最大的多边形,我们应该尽可能…...
在本地部署n8n:完整指南
n8n是一个强大的工作流自动化工具,可以帮助你连接不同的应用程序和服务,无需编写复杂的代码。本指南将带你完成在本地计算机上部署n8n的完整过程。 什么是n8n? n8n(发音为"n-eight-n")是一个开源的工作流自…...
棋盘格角点检测顺序问题
文章目录 前言一、OpenCV函数测试二、原因分析三、libcbdetect修改总结 前言 棋盘格角点检测在相机拼接、机械臂手眼标定中等应用很广泛,通常也要求尽量各种角度摆放从而保证标定精度。然后就自然想到了这个问题:如果棋盘格任意角度摆放怎么能对应上角点…...
C++之类和对象:定义,实例化,this指针,封装
C语言是面向过程的,C是面向对象的,利用对象交互,接口完成事情。 类的定义: 我们在C语言中可以用struct创建自定义结构体,在C中可以在结构体中定义函数了,这种就被称为类。 #include<iostream> usi…...
Ubuntu系统下交叉编译iperf3
一、参考资料 Linux下iperf3移植到arm下测试100M网口-CSDN博客 Iperf3移植到ARM Linux及使用教程-CSDN博客 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编…...
游戏引擎学习第243天:异步纹理下载
仓库 https://gitee.com/mrxiao_com/2d_game_6 https://gitee.com/mrxiao_com/2d_game_5 回顾并为今天设定阶段 目前的开发工作主要回到了图形渲染相关的部分。我们之前写了自己的软件渲染器,这个渲染器性能意外地好,甚至可以以相对不错的帧率运行过场…...
27、Session有什么重⼤BUG?微软提出了什么⽅法加以解决?
Session的重大BUG 1、进程回收导致Session丢失 原理: IIS的进程回收机制会在系统繁忙、达到特定内存阈值等情况下,自动回收工作进程(w3wp.exe)。由于Session数据默认存储在进程内存中,进程回收时这些数据会被清除。 …...
机器学习在网络安全中的应用:守护数字世界的防线
一、引言 随着信息技术的飞速发展,网络安全问题日益凸显,成为全球关注的焦点。传统的网络安全防护手段,如防火墙、入侵检测系统(IDS)和防病毒软件,虽然在一定程度上能够抵御攻击,但在面对复杂多…...
从数据到智慧:解密机器学习的自主学习密码
在数字洪流奔涌的时代,每一次点击、每一行代码、每一条传感器数据都在生成海量信息。传统编程如同精心设计的齿轮组,需要工程师逐行编写规则;而机器学习则打破这一范式,赋予机器从数据中自主提炼规律、总结模式的超能力。这种能力…...
Trae或者VsCode无法识别相对路径(不自动切换工作目录)
在VsCode中或者Trae中,只要是在vscode的基础上修改得到的编辑器,都默认没有勾选自动选择当前文件路径为工作路径,因此需要手动修改工作路径或者设置,否则无法识别相对路径,PyCharm中就不会出现这种问题。 解决方法&…...
解决VSCode每次SSH连接服务器时,都需要下载vscode-server
如下图所示,本地下载或者在服务器终端上运行wget指令获得vscode服务器包 注意,解压完成后,需要修改文件名为你本地vscode的commit ID...
架构-系统工程与信息系统基础
一、系统工程核心知识 1. 系统工程定义 本质:一种组织管理技术,从整体出发分析系统要素(组成、结构、信息流、控制机制),追求“整体最优”,借助计算机实现规划、设计、管理、控制的优化。目标:…...
矩阵运算和线性代数操作开源库
用于矩阵运算和线性代数操作常用的开源库推荐,涵盖不同编程语言和硬件平台: C/C 库 Eigen 特点:高性能的模板库,支持矩阵/向量运算、线性求解、特征值计算等,无需依赖外部BLAS/LAPACK。 官网:https://eig…...
无标注文本的行业划分(行业分类)算法 —— 无监督或自监督学习
对于无标注文本的行业划分(行业分类),属于典型的无监督或自监督学习任务。以下是几种常见的算法方法及实现思路,适用于缺乏标注数据的场景: 一、基于关键词匹配的规则方法 核心思想:通过预定义的行业关键…...
电子病历高质量语料库构建方法与架构项目(计划篇)
电子病历(EMR)作为医疗信息化的重要产物,包含了丰富的医疗信息和临床知识,是辅助临床决策、药物挖掘和医学研究的重要资源。然而,电子病历数据具有非结构化、噪声大、专业性强等特点,如何构建高质量电子病历语料库成为医疗自然语言处理领域的核心挑战。本全计划将从项目背景…...
什么混合检索?在基于大模型的应用开发中,混合检索主要解决什么问题?
混合检索的定义 混合检索(Hybrid Retrieval)是一种结合多种检索技术优势的信息检索方法,旨在通过整合不同检索策略提升检索系统的准确性、召回率和适应性。其核心思想是将基于关键词的检索(如BM25、TF-IDF)与基于语义的检索(如向量检索、深度学习模型)相结合,以应对单…...
优化uniappx页面性能,处理页面滑动卡顿问题
问题:在页面遇到滑动特别卡的情况就是在页面使用了动态样式或者动态类,做切换的时候页面重新渲染导致页面滑动卡顿 解决:把动态样式和动态类做的样式切换改为通过获取元素修改样式属性值 循环修改样式示例 bannerList.forEach((_, index)…...
Yocto meta-toradex-security layer 创建独立数据分区
By Toradex 胡珊逢 简介 Toradex 为其产品使用的软件系统如 Linux 提供了诸多的安全功能,例如 Secure Boot、分区加密、OP-TEE 等,帮助用户应对安全合规。这些功能可以通过在 Yocto Project 中添加由 Toradex 开发的 meta-toradex-securitylayer 被轻松…...
uniapp 安卓离线本地打包,Android Studio生成apk包
第一步:HbuilderX生成本地资源包 下载最新的SDK 下载完后压缩下来是这样的 将HbuilderX生成的复制到这里,替换 Android Studio引入下载的最新文件里的HBuilder-Integrate-AS目录 好,接下来开始修改配置 把你的证书签名ÿ…...
C语言教程(十四):C 语言指针详解
一、指针的基本概念 指针是一个变量,其值为另一个变量的内存地址。简单来说,指针指向了内存中的某个位置,通过指针可以间接访问该位置存储的数据。指针的使用可以让程序更加高效地处理数据,特别是在处理数组、动态内存分配等方面。…...
2025年04月24日Github流行趋势
项目名称:markitdown 项目地址url:https://github.com/microsoft/markitdown项目语言:Python历史star数:53,351今日star数:822项目维护者:afourney, gagb, sugatoray, PetrAPConsulting, l-lumin项目简介&a…...
切割PDF使用python,库PyPDF2
使用 Python 将大型 PDF 文件分割成多个小文件 理解任务 将一个 170M 的 PDF 文件分割成多个 10M 左右的小文件。这在处理大型 PDF 文件时非常有用,例如: 减少单个文件的大小,方便传输或存储分别处理不同的文件部分提高 PDF 处理的效率 选…...
网络IP冲突的成因与解决方案
网络IP冲突的成因与解决方案 一、IP冲突的常见现象与危害二、IP冲突的常见原因三、6种实用解决方案四、预防IP冲突的4个最佳实践五、总结 前言 肝文不易,点个免费的赞和关注,有错误的地方请指出,看个人主页有惊喜。 作者:神的孩子…...
python版本得数独游戏
python版本得数独游戏 游戏说明: 游戏使用9x9数独棋盘,.表示可填写的空格 输入格式为行,列,数值(如3,5,7表示第3行第5列填7) 系统会自动检查以下内容: 输入格式是否正确 数字是否在1-9范围内 是否修改固定数字 是…...
64位系统上编译32位openh264 x264
在64位系统上要使用i386(32位库)的时候,有些是找不到apt可以安装的版本,所以需要手动编译安装,下面是openh264和x264的编译过程。 默认编译openh264 git clone https://github.com/cisco/openh264make ARCHi386 OSlinux PREFIX/lib/i386-li…...
加深对vector理解OJ题
17. 电话号码的字母组合 - 力扣(LeetCode) OJ(一)电话号码的字母组合 思路:这里以引用leetcode里面的一个大佬里面的图 1.这道题中,我们用递归的方法来写。 为了简洁展示,我们举例子”456“&am…...
协作开发攻略:Git全面使用指南 — 第三部分 特殊应用场景
协作开发攻略:Git全面使用指南 — 第三部分 特殊应用场景 Git 是一种分布式版本控制系统,用于跟踪文件和目录的变更。它能帮助开发者有效管理代码版本,支持多人协作开发,方便代码合并与冲突解决,广泛应用于软件开发领域…...
机器学习(9)——随机森林
文章目录 1. 随机森林的基本原理想2. 算法流程2.1. 数据采样(Bootstrap):2.2. 构建决策树:2.3. 聚合预测: 3. 随机森林的构建过程3.1. 数据集的随机抽样3.2. 决策树的训练3.3. 树的生长3.4. 多棵树的集成3.5. 输出预测…...
(第三篇)Springcloud之Ribbon负载均衡
一、简介 1、介绍 Spring Cloud Ribbon是Netflix发布的开源项目,是基于Netflix Ribbon实现的一套客户端负载均衡的工具。主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时&…...
Linux并发与竞争:从生活例子到内核实战
Linux并发与竞争:从生活例子到内核实战 一、并发与竞争:多车道公路的交通问题 想象一条四车道的高速公路(多核CPU),所有车辆(线程/进程)都想通过同一个收费站(共享资源)…...
【金仓数据库征文】——金仓数据库:国产数据库的卓越之选
目录 一、金仓数据库的核心技术优势 (一)强大的事务处理能力 (二)高度安全 (三)全面兼容与深度适配 (四)强大的扩展性 (五)智能便捷的工具 二、电信行…...
人脸识别考勤系统实现教程:基于Face-Recognition、OpenCV与SQLite
引言 随着人工智能技术的飞速发展,人脸识别技术已广泛应用于安防、金融、教育等多个领域。本文将带领大家利用Python的face-recognition库、OpenCV和SQLite数据库,从零开始构建一个具备异常报警功能的人脸识别考勤系统。该系统能够实时检测视频流中的人…...