IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【一二月实战清单】LightGBM和文本相似度 -> 正文阅读

[人工智能]【一二月实战清单】LightGBM和文本相似度

注意事项

(1)之前只是粗浅地学了点理论,如XGBoost用二阶近似损失函数,LightGBM提出单边梯度采样和互斥特征绑定,一二月的打卡是LightGBM的实战和文本相似度。
(2)在第二部分的打卡顺便熟悉paddle和白嫖GPU。
(3)具体内容后面更新。

一、题目及介绍

在这里插入图片描述

打卡要求:

(1)所有任务可以写到一个jupyter notebook中;
(2)打卡过程记录思考过程,包括尝试和资料记录等;

二、LightGBM实战(项目一)

LightGBM(Light Gradient Boosting Machine)是微软开源的一个实现 GBDT 算法的框架,支持高效率的并行训练。LightGBM 提出的主要原因是为了解决 GBDT 在海量数据遇到的问题。本次学习内容包括使用LightGBM完成各种操作,包括竞赛和数据挖掘中的模型训练、验证和调参过程。

任务名称难度所需技能
任务1:模型训练与预测低、1LightGBM
任务2:模型保存与加载低、1LightGBM
任务3:分类、回归和排序任务高、3LightGBM
任务4:模型可视化低、1graphviz
任务5:模型调参(网格、随机、贝叶斯)中、2模型调参
任务6:模型微调与参数衰减中、2LightGBM
任务7:特征筛选方法高、3特征筛选方法
任务8:自定义损失函数中、2损失函数&评价函数
任务9:模型部署与加速高、3Treelite

三、具体任务

任务1:模型训练与预测

  • 步骤1 :导入LightGBM
  • 步骤2 :使用LGBMClassifieriris进行训练。
  • 步骤3 :将预测的模型对iris进行预测。

任务2:模型保存与加载

  • https://github.com/microsoft/LightGBM/blob/master/examples/python-guide/advanced_example.py
  • 步骤1 :将任务1训练得到的模型,使用pickle进行保存。
  • 步骤2 :将任务1训练得到的模型,使用txt进行保存。
  • 步骤3 :加载步骤1和步骤2的模型,并进行预测。

任务3:分类、回归和排序任务

  • https://github.com/microsoft/LightGBM/blob/master/examples/python-guide/sklearn_example.py
  • https://github.com/microsoft/LightGBM/blob/master/examples/python-guide/simple_example.py
  • 步骤1 :学习LightGBMsklearn接口的使用,导入分类、回归和排序接口。
  • 步骤2 :学习LightGBM原生train接口的使用。
  • 步骤3:二分类任务
    • 使用make_classification,创建一个二分类数据集。
    • 使用sklearn接口完成训练和预测。
    • 使用原生train接口完成训练和预测。
  • 步骤4:多分类任务
    • 使用make_classification,创建一个多分类数据集。
    • 使用sklearn接口完成训练和预测。
    • 使用原生train接口完成训练和预测。
  • 步骤5:回归任务
    • 使用make_regression,创建一个回归数据集。
    • 使用sklearn接口完成训练和预测。
    • 使用原生train接口完成训练和预测。

任务4:模型可视化

  • 步骤1:安装graphviz
    • https://blog.csdn.net/m0_55099488/article/details/118685625
    • 如果在AI Studio平台可以使用pip install graphviz完成安装,重启Notebook即可使用。
  • 步骤2 :将树模型预测结果进行可视化,https://blog.csdn.net/kyle1314608/article/details/111245782
  • 步骤3(可选) :在任务2中我们保存了json版本的树模型,其中一家包含了每棵树的结构,你可以手动读取后,试试吗?

任务5:模型调参(网格、随机、贝叶斯)

  • 步骤1 :运行以下代码得到训练集和验证集
import pandas as pd, numpy as np, time
from sklearn.model_selection import train_test_split

# 读取数据
data = pd.read_csv("https://cdn.coggle.club/kaggle-flight-delays/flights_10k.csv.zip")

# 提取有用的列
data = data[["MONTH","DAY","DAY_OF_WEEK","AIRLINE","FLIGHT_NUMBER","DESTINATION_AIRPORT",
                 "ORIGIN_AIRPORT","AIR_TIME", "DEPARTURE_TIME","DISTANCE","ARRIVAL_DELAY"]]
data.dropna(inplace=True)

# 筛选出部分数据
data["ARRIVAL_DELAY"] = (data["ARRIVAL_DELAY"]>10)*1

# 进行编码
cols = ["AIRLINE","FLIGHT_NUMBER","DESTINATION_AIRPORT","ORIGIN_AIRPORT"]
for item in cols:
    data[item] = data[item].astype("category").cat.codes +1

# 划分训练集和测试集
train, test, y_train, y_test = train_test_split(data.drop(["ARRIVAL_DELAY"], axis=1), data["ARRIVAL_DELAY"], random_state=10, test_size=0.25)
  • 步骤2 :构建LightGBM分类器,并设置树模型深度分别为[3,5,6,9]设置训练集和验证集,分别记录下验证集AUC精度。
  • 步骤3:构建LightGBM分类器,在fit函数中将category变量设置为categorical_feature,训练并记录下分别记录下验证集AUC精度。
    • https://lightgbm.readthedocs.io/en/latest/pythonapi/lightgbm.LGBMClassifier.html#lightgbm.LGBMClassifier.fit
    • https://lightgbm.readthedocs.io/en/latest/pythonapi/lightgbm.train.html#lightgbm.train
  • 步骤4 :学习网格搜索原理,使用GridSearchCV完成其他超参数搜索,其他超参数设置可以选择learning_ratenum_leaves等。
  • 步骤5 :学习随机搜索原理,使用GridSearchCV完成其他超参数搜索,其他超参数设置可以选择learning_ratenum_leaves等。
  • 步骤6 :学习贝叶斯调参原理,使用BayesianOptimization完成超参数搜索,具体过程可以参考https://blog.csdn.net/qq_42283960/article/details/88317003

任务6:模型微调与参数衰减

  • 步骤0 :读取任务5的数据集,并完成数据划分。
  • 步骤1 :学习使用LightGBM微调的步骤逐步完成1k数据分批次训练,训练集分批次验证集不划分,记录下验证集AUC精度。
  • 步骤2 :学习使用LightGBM学习率衰减的方法,使用指数衰减&阶梯衰减,记录下验证集AUC精度。

任务7:特征筛选方法

  • 步骤0 :读取任务5的数据集,并完成数据划分。
  • 步骤1 :使用LightGBM计算特征重要性,并筛选最重要的3个特征。
  • 步骤2:学习排列重要性,并通过排列重要性计算出最重要的3个特征,要求你手动实现其过程。
    • https://scikit-learn.org/stable/modules/permutation_importance.html
    • https://www.kaggle.com/dansbecker/permutation-importance
  • 步骤3:学习null importance重要性,并手动实现其过程,计算出最重要的3个特征。
    • https://www.kaggle.com/ogrellier/feature-selection-with-null-importances

任务8:自定义损失函数

  • https://gitee.com/mirrors/lightgbm/blob/master/examples/python-guide/advanced_example.py
  • 步骤0 :读取任务5的数据集,并完成数据划分。
  • 步骤1 :自定义损失函数,预测概率小于0.1的正样本(标签为正样本,但模型预测概率小于0.1),梯度增加一倍。
  • 步骤2 :自定义评价函数,阈值大于0.8视为正样本(标签为正样本,但模型预测概率大于0.8)。

任务9:模型部署与加速(可选)

  • https://treelite.readthedocs.io/en/latest/tutorials/import.html
  • 步骤1 :训练模型,将模型保存为txt
  • 步骤2 :使用treelite加载模型,导出为so,并进行预测。

四、中文文本相似度(项目二)

在这里插入图片描述
千言数据集介绍:面向NLP和生成任务的中文开源数据集。
文本相似度旨在识别两段文本在语义上是否相似。文本相似度在自然语言处理领域是一个重要研究方向,同时在信息检索、新闻推荐、智能客服等领域都发挥重要作用。

本次评测的文本相似度数据集包括公开的三个文本相似度数据集,分别为哈尔滨工业大学(深圳)的 LCQMC 和 BQ Coupus,以及谷歌的 PAWS-X(中文):

  • LCQMC

LCQMC(A Large-scale Chinese Question Matching Corpus), 百度知道领域的中文问题匹配数据集,目的是为了解决在中文领域大规模问题匹配数据集的缺失。该数据集从百度知道不同领域的用户问题中抽取构建数据。

  • BQ Corpus

BQ Corpus(Bank Question Corpus), 银行金融领域的问题匹配数据,包括了从一年的线上银行系统日志里抽取的问题pair对,是目前最大的银行领域问题匹配数据。

  • PAWS-X (中文)

PAWS (Paraphrase Adversaries from Word Scrambling),谷歌发布的包含 7 种语言释义对的数据集,包括PAWS(英语) 与 PAWS-X(多语)。数据集里包含了释义对和非释义对,即识别一对句子是否具有相同的释义(含义),特点是具有高度重叠词汇,对于进一步提升模型对于强负例的判断很有帮助。

各个数据集的任务均一致,即判断两段文本在语义上是否相似的二分类任务:

类型句子1句子2标签(label)
相似文本看图猜一电影名看图猜电影1
不相似文本无线路由器怎么无线上网无线上网卡和无线路由器怎么用0

打卡的任务:

任务名称难度所需技能
任务1:报名比赛,下载比赛数据集并完成读取低、1Pandas
任务2:对句子对提取TFIDF以及统计特征,训练和预测高、2TDIDF
任务3:加载中文词向量,自己训练中文词向量高、2gensim
任务4:使用中文词向量完成mean/max/sif句子编码高、3mean/max/sif-pooling
任务5:搭建SiamCNN/LSTM模型,训练和预测高、3SiamCNN/SiamLSTM
任务6:搭建InferSent模型,训练和预测高、3InferSent
任务7:搭建ESIM模型,训练和预测高、3ESIM
任务8:使用BERT或ERNIE完成NSP任务高、3BERT
任务9:Bert-flow、Bert-white、SimCSE高、3SimCSE

五、具体任务

任务1:读取数据集

  • 步骤1 :登录&报名比赛:https://aistudio.baidu.com/aistudio/competition/detail/45/0/task-definition
  • 步骤2 :下载比赛数据集
  • 步骤3 :使用Pandas完成数据读取。

任务2:对句子对提取TFIDF以及统计特征,训练和预测

  • 参考代码:https://www.kaggle.com/anokas/data-analysis-xgboost-starter-0-35460-lb
  • 步骤1:对句子对(句子A和句子B统计)如下特征:
    • 句子A包含的字符个数、句子B包含的字符个数
    • 句子A与句子B的编辑距离
    • 句子A与句子B共有单词的个数
    • 句子A与句子B共有字符的个数
    • 句子A与句子B共有单词的个数 / 句子A字符个数
    • 句子A与句子B共有单词的个数 / 句子B字符个数
  • 步骤2 :计算TFIDF,并对句子A和句子B进行特征转换
  • 步骤3 :计算句子A与句子B的TFIDF向量的内积距离
  • 步骤4 :将上述特征送入分类模型,训练并预测,将结果预测提交到比赛网站。

任务3:加载中文词向量,自己训练中文词向量

  • 步骤1 :使用jieba对中文句子进行分词
  • 步骤2 :使用gensim中Word2Vec训练分词后的句子,得到词向量。

任务4:使用中文词向量完成mean/max/sif句子编码

  • 步骤1 :单词通过word2vec编码为100维向量,则句子编码为N?100N?100的矩阵,N为句子单词个数。
  • 步骤2 :将N*100的矩阵进行max-pooling编码,转为100维度。
  • 步骤3 :将N*100的矩阵进行mean-pooling编码,转为100维度。
  • 步骤4 :将N*100的矩阵与单词的IDF进行矩阵相乘,即按照单词的词频进行加权,进行tfidf-pooling编码,转为100维度。
  • 步骤5:学习SIF编码的原理,进行sif编码,转为100维度。
    • https://github.com/PrincetonML/SIF/blob/master/src/SIF_embedding.py#L30
    • https://openreview.net/pdf?id=SyK00v5xx
  • 步骤6(可选) :通过上述步骤2-步骤5的编码,计算相似句子的相似度 vs 不相似句子的相似度, 绘制得到分布图,哪一种编码最优?

任务5:搭建SiamCNN/LSTM模型,训练和预测

  • 步骤1 :将训练好的word2vex作为深度学习embeeding层的初始化参数。
  • 步骤2 :搭建SiamCNN(Word2Vec句子编码 + 1D CNN +FC)的孪生网络结构,完成训练和预测,提交测试集预测结果。
  • 步骤3 :搭建SiamLSTM(Word2Vec句子编码 + LSTM + FC)的孪生网络结构,完成训练和预测,提交测试集预测结果。

任务6:搭建InferSent模型,训练和预测

  • 步骤1 :将训练好的word2vex作为深度学习embeeding层的初始化参数。
  • 步骤2 :搭建InferSent模型,尝试不同的交叉方法。
  • 步骤3 :训练InferSent模型,提交测试集预测结果。

任务7:搭建ESIM模型,训练和预测

  • 步骤1 :将训练好的word2vex作为深度学习embeeding层的初始化参数。
  • 步骤2 :搭建ESIM模型,尝试不同的交叉方法。
  • 步骤3 :训练ESIM模型,提交测试集预测结果。

任务8:使用BERT或ERNIE完成NSP任务

  • 参考代码:
    • https://aistudio.baidu.com/aistudio/projectdetail/3168859
    • bert-nsp代码
  • 步骤1 :学习Bert模型的使用。
  • 步骤2 :使用Bert完成NSP任务的训练和预测,提交测试集预测结果。

任务8:Bert-white、SimCSE(可选)

  • 步骤1 :学习Bert-white原理和实现
  • 步骤2 :学习SimCSE原理和实现

Reference

  • https://lightgbm.readthedocs.io/en/latest/index.html
  • https://github.com/Microsoft/LightGBM
  • https://zhuanlan.zhihu.com/p/266865429
  • https://ai.baidu.com/ai-doc/AISTUDIO/Dk3e2vxg9
  • coggle
  • Notebook环境:https://ai.baidu.com/ai-doc/AISTUDIO/sk3e2z8sb
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-01-25 10:35:14  更:2022-01-25 10:36:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 21:36:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码