特征向量

机器学习及flinkML算法学习

走远了吗. 提交于 2020-04-18 17:48:24
参考文章: 机器学习及flinkML算法学习 基于Flink流处理的动态实时亿级全端用户画像系统 机器学习概念 机器学习算法根据训练数据(training data)使得表示算法行为的数学目标最大化,并以此来进行预测或者做出决定。机器学习分为分类、回归、聚类等,每种都有不一样的目标。 应用场景和处理流程 所有的算法都需要定义每个数据点的特征(feature)集->输入; 正确的定义特征才是机器学习中最有挑战的部分。 大多数算法都是专为数据特征(就是一个代表各个特征值的数字向量)定义的,因此提取特征并转化为特征向量是机器学习过程中重要的一步。 输入数据分为“训练集”和“测试集”,并且只使用前者进行训练,这样就可以用后者来检验模型是否过度拟合了训练数据。 机器学习流水线会训练出多个不同版本的模型,然后分别对其进行评估。Ml提供几个算法进行模型评估。 常见的算法 分类算法 基于已经被标注的其他数据点作为例子来识别一个数据点属于几个类别中的哪一种;比如判断一封邮件是否为垃圾邮件。 垃圾邮件分类做法: HashingTF 文本数据构建词频特征向量 LogisticRegressionWithSGD 使用随机梯度下降法实现逻辑回归。 监督学习 SVM使用通信高效的分布式双坐标上升(CoCoA) 多元线性回归 优化框架 L-BFGS Generalized Linear Models

利用Bert和Milvus快速搭建智能问答机器人

走远了吗. 提交于 2020-04-18 12:23:38
问答系统是自然语言处理领域一个很经典的问题,它用于回答人们以自然语言形式提出的问题,有着广泛的应用。其经典应用场景包括:智能语音交互、在线客服、知识获取、情感类聊天等。常见的分类有:生成型、检索型问答系统;单轮问答、多轮问答系统;面向开放领域、特定领域的问答系统。本文涉及的主要是在检索型、面向特定领域的问答系统,通常称之为——智能客服机器人。 在过去,客服机器人的搭建通常需要将相关领域的知识(Domain Knowledge),转化为一系列的规则和知识图谱。构建过程中重度依赖“人工”智能,换个场景,换个用户都需要大量的重复劳动。 随着深度学习在自然语言处理(NLP)中的应用,机器阅读可以直接自动从文档中找到匹配问题的答案。深度语言模型会将问题和文档转化为语义向量,从而找到最后的匹配答案。本文借助Google开源的Bert模型结合Milvus开源向量搜索引擎,快速搭建基于语义理解的对话机器人 整体架构 本文通过语义相似度匹配来实现一个问答系统,大致的构建过程: 获取某一特定领域里大量的带有答案的中文问题(本文将之称为标准问题集)。 使用Bert模型将这些问题转化为特征向量存储在Milvus中,同时Milvus将 给这些特征向量分配一个向量ID。 将这些代表问题的ID和其对应的答案存储在PostgreSQL中。 当用户提出一个问题时: 通过Bert模型将之转化为特征向量

利用Python进行数据处理1——学会使用NumPy

只谈情不闲聊 提交于 2020-04-18 04:28:08
一.学会使用ndarray 1.1什么是ndarray? ndarray是NumPy中的一种多维数组对象,他可以是一维的、二维的、甚至更多维次。当然创建更多维次的数组并不是他的优点所在,他的优点在于它有丰富的运算方法,同时他也是另一个高级Python库pandas的基础库,但是他只能存放同种类型的元素。 1. 2创建一个ndarray 第一种创建方式有:直接使用列表创建ndarray,如下: # 第一种直接通过列表创建 a_list=[0,1,2,3,4 ] a_ndarray =np.array(a_list) # 创建了一个一维的数组 print (type(a_ndarray)) 上面创建了一个一维的数组,那么我们也可以创建一个二维、三位的数组 来看下面的代码: c_list=[[0,0],[1,1,1],[2,2]] # 这是一个不规则的二维列表 c_ndarray= np.array(c_list) print (c_ndarray) # 输出数组 输出为:[list([0, 0]) list([1, 1, 1]) list([2, 2])] 第二种创建方式:创建指定形状指定初始值的数组 当我们制定的初始值为0或者1时,我们可以使用函数zeros或者ones这两个函数接受一个元组来表示这个数组的形状。 代码如下:   # 创建指定形状和初始值的ndarray d

线性代数和概率论——机器学习基础

十年热恋 提交于 2020-04-16 21:37:12
【推荐阅读】微服务还能火多久?>>> [toc] 一、线性代数 万事万物都可以被抽象成某些特征的组合,线性代数的本质是将具体事物抽象为数学对象,描述其静态和动态的特征。 常见概念 标量(scalar) 一个标量 a 可以是整数、实数或复数 向量(vector) 多个标量 a1,a2,⋯,an 按一定顺序组成一个序列。通常用一维数组表示,例如语音信号 矩阵(matrix) 矩阵包含向量,一个m*n的矩阵,可以看成是由n个m维的列向量构成,也可以看成是由m个n维的行向量构成。通过用二维数组表示,例如灰度图像 张量(tensor) 张量就是高阶的矩阵,如果把三阶魔方的每一个小方块看作一个数,它就是个 3×3×3 的张量,3×3 的矩阵则恰是这个魔方的一个面,也就是张量的一个切片。通过用三维乃至更高维度的数组表示,例如RGB图像 范数(norm) 对单个向量大小的度量,描述的是向量自身的性质,将向量映射为一个非负的数值。 内积(inner product) 两个向量之间的相对位置,即向量之间的夹角。计算的则是两个向量之间的关系 线性空间(linear space) 一个集合,元素是具有相同维数的向量(可以是有限个或无限个), 并且定义了加法和数乘等结构化的运算 内积空间(inner product space) 定义了内积运算的线性空间 正交基(orthogonal basis)

文本分类模型第三弹:BoW(Bag of Words) + TF-IDF + LightGBM

青春壹個敷衍的年華 提交于 2020-04-15 09:35:52
【推荐阅读】微服务还能火多久?>>> 一、前言 本文是文本分类模型的第三弹,利用词袋模型(BoW),词频逆文档频率(TF-IDF)与 LightGBM 模型进行文本分类。 原本计划的第三弹内容为 TextCNN 网络,介于最近刚刚利用 LightGBM 完成了一个简单的文本分类的任务,就趁热记录一下,作为第三弹的内容。 这里是文本分类系列: 文本分类模型第一弹:关于Fasttext,看这一篇就够了 文本分类模型第二弹:HAN(Hierarchy Attention Network) 文本分类模型第三弹:BoW(Bag of Words) + TF-IDF + LightGBM 二、相关论文及理论 1.LightGBM 这里是 LightGBM 提出的论文《 LightGBM: A Highly Efficient Gradient Boosting Decision Tree 》,LightGBM 本质上也是 梯度提升树(GBDT)的优化模型,GBDT 的本质是回归树模型,在做分类任务时,通过“回归相应类别”的概率值,来曲线完成分类任务。LightGBM 与上一代 kaggle 神器 Xgboost 相比,由于采用了直方图算法(用于特征处理),和 Leaf-wise 的树分裂方法(用于模型构建),模型准确度更高,训练耗时更低。其不仅应用于传统的机器学习回归及二分类,多分类任务,在

阿里云推出高效病毒基因序列检索功能,它的底层逻辑原来是这样的

穿精又带淫゛_ 提交于 2020-04-14 12:10:52
【推荐阅读】微服务还能火多久?>>> 1.背景介绍 2019年年底,中国的新兴的商业中心武汉,爆发了一种新型的冠状病毒,在流行的两个多月中,在中国造成了3300多人死亡,8万2千多人感染。随着疫情的进一步蔓延,目前已经横跨了109个国家,造成了80多万人感染,4万多人失去了生命。到目前为止,疫情使得50多个国家停摆,全世界范围内造成了数千亿美元的经济损失。阿里云提供高效基因序列检索助力冠状病毒序列分析用于疫情防治。 对于当下疫情,基因序列分析技术主要用在一下几个方面。 第一,用在新冠状病毒的溯源和分析,可以帮助人们找到病毒宿主,做好有效的防范。通过基因匹配技术,我们可以发现,蝙蝠和穿山甲身上的冠状病毒的RNA序列匹配度达到到了96%和99.7%,因此穿山甲和蝙蝠很可能是新型冠状病毒的宿主。 第二,通过基因序列分析,对基因序列进行功能区域划分,了解各个模块的功能,从而更好地分析出病毒的复制,传播的过程。找到关键节点,设计出相关的药物和疫苗。 第三,同时也可以检索到与冠状病毒相似的病毒基因序列,比方说SARS,MERS等病毒。从而可以借鉴相关的药物靶点的设计机制,更快更高效的设计出来相关的检测试剂盒,疫苗,以及相关的治疗药物。 但是,当前的的基因匹配算法太慢,因而迫切的需要高效的匹配算法来进行基因序列分析。阿里云AnalyticDB团队将基因序列片段转化成对应的1024维的向量特征

机器学习项目完整的工作流程

你。 提交于 2020-04-11 13:13:30
一. 准备工作 1. 定义问题,收集数据集 2. 确定衡量成功的指标 对于平衡分类问题(每个类别的可能性相同),精度和ROC是常用的指标。 对于类别不平衡 问题,你可以使用准确率和召回率。 对于排序问题或多标签分类,你可以使用平均准确率均值。 自定义衡量成功的指标也很常见。 通过衡量成功的指标指引你选择损失函数,即模型要优化什么。 损失函数需要在只有小批量数据时即可计算(理想情况 下,只有一个数据点时,损失函数应该也是可计算的),而且还必须是可微的(否则无法用反向 传播来训练网络)。 衡量成功的指标和损失函数都是用来评估一个模型好坏的一个标准。指标常用来作为结果来评估。损失函数常用来在模型训练过程中来评估,因为损失函数是可微的,所以可以通过反向传播来训练。 3. 确定评估方法 留出验证集。数据量很大时可以采用这种方法。 K 折交叉验证。如果留出验证的样本量太少,无法保证可靠性,那么应该选择这种方法。 重复的 K 折验证。如果可用的数据很少,同时模型评估又需要非常准确,那么应该使用这种方法。 二. 特征工程 4. 数据预处理 收集数据 导入数据 合并数据、缺失值清洗等 5. 特征表示 要将数据集中的数据特征表示成计算机能够理解的数值形式。常用的表示方法是局部表示和分布式表示。 6. 传统的特征学习(表示学习) 特征选择 常用的特征: 从数据集中选择合适的特征; 自行设计特征

Java之Normalizer(归一化)

有些话、适合烂在心里 提交于 2020-04-11 13:12:32
文章目录 什么是归一化? 归一化的数学方法 Java归一化类Normalizer 什么是归一化? 归一化的概念在人工智能领域会普通看到, 比如使用TensorFlow框架编码时,就会出现数据归一化的步骤或函数。 简单来说, 归一化就是对一组数据进行转换,使这组数据具备相同的格式或特性。举例来说: 一组任意的整数数组:1,2,400,5000, 如果每个数都除以这组元素中的最大值的话(这里是5000),则这个数组元素的值位于0-1之间,满足数学上概率的值的区间。 在AI中,对培训数据进行归一化的好处有: 1、保持合适的样本间距 以上面的示例来说, 1和5000相差甚远,如果以坐标图绘制,则相差的太远, 归一化之后就好多了。 2、平等对待多个特征向量。 有个例子示房子面积和房子的数量对房价的影响。面积的体量明显大于房子的数目,面积的因素很容易掩盖数量的影响。所以,归一化之后,更容易找到问题的解。 归一化的数学方法 归一化常见的数学方法有: 线性归一化 也称作(0,1)标准化 线性归一化 , Min-Max标准化和离差标准化。是对原始数据进行线性变换,变换后的结果值在0到1之间。 公式是: X = (x-Min)/(Max-Min) 均值标准差归一化 使用均值和标准差进行数据的标准化。转换后的数据符合正态分布, 即均值为0, 标准差为1。 公式是:X= x-均值/标准差

机器学习项目完整的工作流程

别等时光非礼了梦想. 提交于 2020-04-11 12:50:18
一. 准备工作 1. 定义问题,收集数据集 2. 确定衡量成功的指标 对于平衡分类问题(每个类别的可能性相同),精度和ROC是常用的指标。 对于类别不平衡 问题,你可以使用准确率和召回率。 对于排序问题或多标签分类,你可以使用平均准确率均值。 自定义衡量成功的指标也很常见。 通过衡量成功的指标指引你选择损失函数,即模型要优化什么。 损失函数需要在只有小批量数据时即可计算(理想情况 下,只有一个数据点时,损失函数应该也是可计算的),而且还必须是可微的(否则无法用反向 传播来训练网络)。 衡量成功的指标和损失函数都是用来评估一个模型好坏的一个标准。指标常用来作为结果来评估。损失函数常用来在模型训练过程中来评估,因为损失函数是可微的,所以可以通过反向传播来训练。 3. 确定评估方法 留出验证集。数据量很大时可以采用这种方法。 K 折交叉验证。如果留出验证的样本量太少,无法保证可靠性,那么应该选择这种方法。 重复的 K 折验证。如果可用的数据很少,同时模型评估又需要非常准确,那么应该使用这种方法。 二. 特征工程 4. 数据预处理 收集数据 导入数据 合并数据、缺失值清洗等 5. 特征表示 要将数据集中的数据特征表示成计算机能够理解的数值形式。常用的表示方法是局部表示和分布式表示。 6. 传统的特征学习(表示学习) 特征选择 常用的特征: 从数据集中选择合适的特征; 自行设计特征

【cs224w】Lecture 5

我是研究僧i 提交于 2020-04-08 21:04:02
Spectral Clustering 前面的课程说到了 community detection 并介绍了两种算法。这次来说说另外一类做社区聚类的算法,谱聚类。这种算法一般分为三个步骤 pre-processing: 构建一个描述图结构的矩阵 decomposition: 通过特征值和特征向量分解矩阵 grouping: 基于分解后的矩阵以及点的 representation 进行聚类 在介绍具体操作前我们先了解几个概念 Graph Partitioning 图的划分就是将节点分到不同的组内,如果分为两个组就是二分。划分的目的其实就是找社区,那如何判断一个划分的质量呢?回顾之前说到的社区的特点,即社区内部连接丰富而社区间连接稀疏。因此我们希望我们的划分能最大化每个划分内的连接并最小化划分间的连接数。我们用割这个概念来描述不同划分间的连接数 \(cut(A,B)=\sum\limits_{i\in A,j\in B}w_{ij}\) 。对于无权图这里的 \(w\) 就是 \(\{0,1\}\) 。但这个定义并不完美,因为这样并不能保证划分均匀。例如,一个图中有一个节点的度为 \(1\) 那么只要把这个节点和其余节点分开就能保证 cut 为 \(1\) 。因此我们将划分后不同组内节点的度纳入考虑就能较为全面的评估一个划分的好坏了,即 Conductance,其中 \(vol\)