基于OpenML框架的flow推荐
各种不同任务的深度学习标签的例子
音乐: Pytorch implementation of “Sample-level Deep Convolutional Neural Networks for Music Auto-tagging Using Raw Waveforms”
词性: 使用CoNLL-2012数据集的一部分和42个可能的标记来实现RNN并比较不同类型的RNN的词性标记任务。
RNN-for-tagging: Pytorch implementation of LSTM, Bi-LSTM and Bi-LSTM-CRF which are in the context of NER.
命名实体识别(NER):sequence tagging for NER for ULMFiT
Sequence Tagger implementation:build model that is used for sequence tagging (POS Tag, NER, etc.).
电影多标签分类器:使用TensorFlow Hub和Estimators构建文本分类模型
新闻话题地点多标签分类:With a given news, our task is to give it one or multiple tags. The dataset is divided into five main categories.
鸢尾花分类:多标签图片分类。标签总量少。
相关技术
ULMFiT-用于文本分类的通用语言模型微调:一种可以在任何自然语言处理任务上实现类似CV的转移学习的方法。
命名实体识别(NER):是信息提取、问答系统、句法分析、机器翻译等应用领域的重要基础工具,在自然语言处理技术走向实用化的过程中占有重要地位。一般来说,命名实体识别的任务就是识别出待处理文本中三大类(实体类、时间类和数字类)、七小类(人名、机构名、地名、时间、日期、货币和百分比)命名实体。
自然语言处理(NLP)
多标签文本分类:用于提取社交网络上的对话是否含有辱骂、威胁、赞扬等信息。
再次重复说明OpenML构造
每个data对应多个task:
每个task对应一个data:
每个task对应多个flow,每个flow对应多个run:
每个run对应data+task+flow
用图片说明OpenML构造
任务说明
为了简化过程,暂时使用以下方法:
- 由于每个data所对应的多个task中,排名第一的往往比第二的运行次数多很多,所以取第一个为最佳task。
- 然后在选中的task中选取前n名为flow。
详细说明如下:
数据集分析
- 数据集的介绍
忽略自带的tag,无用。
数据库介绍使用文本来找出task-type。
数据集分析
- 数据集的特征
data中选取task的方法
对于不达标的task,忽略,防止训练内容有误。
此处选择 $n = 1$。
task中选取flow方法
按照精度排序(这儿假设performance就是accuracy)选取前n个。
实际应用
由于我们的task是不能互通的,每个task必须针对特定的data生成。所以我们不能推荐task,而是推荐task-type。这个之前已经成功实现且acc>80%。所以此处忽略。
此处仅仅训练data推荐flow:训练集为
(data的properties):(flow)
我只做了一个小的csv数据集,内容为
dataid-properties-flow1-flow2-…-flow5
共50条用来测试。
机器学习算法(暂时pass)
2.3.3 用于多分类的线性模型
将二分类算法推广到多分类算法的一种常见方法是“一对其余”(one-vs.-rest)方
法。
然而,flow数量很多,二分类算法运行效果的双边基数相差太大,用线性二分类难以区分。
2.3.6 决策树
对于维度非常高的稀疏数据(比如文本数据),随机森林的表现往往不是很好。对于这种数据,使用线性模型可能更合适。
即使是非常大的数据集,随机森林的表现通常也很好!不过,随机森林需要更大的内存,训练和预测的速度也比线性模型要慢。
单标签任务(iris数据集示范-改写失败)
参考书籍-其它网页:
- 使用
特征值-分类
方法,由于之前爬取数据太全面,导致速度慢,爬取数据量少。全部数据仅有50个data和20000个flow。 - 由于数据量少,而标签(flow)数量是data的很多倍。
- 且由于单标签,不能用于flow推荐算法。
任务构造(理想)
参考:Guide To Multi-Class Multi-Label Classification With Neural Networks In Python
- 将数据集看做需要打标签的目标;
- 将flow的id看做标签;
- 首先将数据集的特征值归一化;
- 然后类似文本分类(文本分类是单词存在标1,否则0),将特征看做文本单词,权重[0,1];与特征的顺序无关(特征没有前后之分);
- 挑出所有用到的flow作为标签, 将标签转换为多热编码
flows = [ flow1, flow2, flow3, … ]
[ 0 0 0 1 0 0 0 1 0 … ] - 进行数据特征学习分类。
为什么任然不能使用?
由于文本和特征值还是有很大区别。
这个算法可以用来进行data的描述分辨tasktype。
与常规任务比较分析
- 常规多标签任务标签量少:比如对 iris flower 分类,只有十种。若是类似识别任务的种类多,但是不是多标签,是单标签。
- 常规多标签任务标签不分先后:比如-红色-衣服-有口袋 这种,不分先后。
- 常规多标签任务基于图片分析,或者是长段文字分析。
不足之处的解决或规避方法
由于推荐的目标是达到最高性能,所以忽略了人的信息。暂时不管。
当前挑出所有用到的flow作为标签, 将标签转换为多热编码
flows = [ flow1, flow2, flow3, … ]
[ 0 0 0 1 0 0 0 1 0 … ]
这样不好,丢失了排序信息。所以我们应该使用小数编码,将性能表现为0-1之间的小数,[ 0.988 0.983 0.970 0.838 … ]
接下来怎么办?
希望可以找到与我的openml数据集类似的数据集。
现在测试过:
- 基于图片的分类
- 图片的多标签任务
- 基于文本(一长段文字)的多标签
- 基于数据特征(iris)的分类
希望找到:
- 基于数据特征的多标签