特征向量

机器学习算法总结(九)——降维(SVD, PCA)

假如想象 提交于 2021-01-13 05:48:02
  降维是机器学习中很重要的一种思想。在机器学习中经常会碰到一些高维的数据集,而在高维数据情形下会出现数据样本稀疏,距离计算等困难,这类问题是所有机器学习方法共同面临的严重问题,称之为“ 维度灾难 ”。另外在高维特征中容易出现特征之间的线性相关,这也就意味着有的特征是冗余存在的。基于这些问题,降维思想就出现了。   降维方法有很多,而且分为线性降维和非线性降维,本篇文章主要讲解线性降维。 1、奇异值分解(SVD)   为什么先介绍SVD算法,因为在后面的PCA算法的实现用到了SVD算法。SVD算法不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域。是很多机器学习算法的基石。   在线性代数中我们学过矩阵(在这里的矩阵必须是$n × n$的方阵)的特征分解,矩阵A和特征值、特征向量之间的关系如下      将A矩阵做特征分解,特征向量$Q$是一组正交向量,具体表达式如下      在这里因为$Q$中$n$个特征向量为标准正交基,满足$Q^T = Q^{-1}$,也就是说$Q$为酉矩阵。   矩阵的特征值分解的局限性比较大,要求矩阵A必须是方阵(即行和列必须相等的矩阵),那么对于一般的矩阵该如何做分解?   奇异值分解就可以处理这些一般性的矩阵,假设现在矩阵A是一个$m × n$的矩阵,我们可以将它的奇异值分解写成下面的形式      在这里$U$是$m ×

如何入门线性代数?这里有一份Python线性代数讲义

和自甴很熟 提交于 2021-01-12 07:55:46
这份讲义为初学者设计,涉及线性代数的基本概念、特殊矩阵及其应用,并提供了相应代码和图示。 机器之心报道,作者:魔王。 人工智能的基础是数学,线性代数又是其中的重要部分。然而,对于数学基础不好的人来说,「线性代数」是一门非常抽象的课程。如何学习线性代数呢?这个 GitHub 项目介绍了一份入门级线性代数课程讲义,适合大学生、程序员、数据分析师、算法交易员等,使用的代码用 Python 语言写成。 项目地址: https:// github.com/MacroAnalyst /Linear_Algebra_With_Python 讲义大致基于以下线性代数教科书: 1. Linear Algebra and Its Applications 作者:Gilbert Strang(此前,我们曾介绍过他的 最新线性代数课程 ) 2. Linear Algebra and Its Applications 作者:David Lay 3. Introduction to Linear Algebra With Applications 作者:DeFranza、Gagliardi 4. Linear Algebra With Applications 作者:Gareth Williams 该讲义为初学者设置,不过它对略有线性代数和微积分知识的人也有帮助。学习者应具备 Python、NumPy

清华大学发布首个自动图机器学习工具包 AutoGL,开源易用可扩展,支持自定义模型...

混江龙づ霸主 提交于 2021-01-11 13:29:30
来源:机器之心 本文约2800字,建议阅读6分钟如何应用自动机器学习 (AutoML) 加速图机器学习任务的处理? 清华大学发布全球首个开源自动图学习工具包:AutoGL (Auto Graph Learning),支持在图数据上全自动进行机器学习。 人工智能的蓬勃发展离不开数据、算力、算法这三大要素。而在浩瀚的数据中,有一种数据结构既普遍又复杂,它就是图(graph)。 图是一种用于描述事物之间关系的结构,其基本构成元素为节点和连接节点的边。 很多不同领域的研究问题都可以很自然地建模成图机器学习,例如蛋白质建模、物理系统模拟、组合优化等基础研究;社交媒体分析、推荐系统、虚假新闻检测等互联网应用;以及金融风控、知识表征、交通流量预测、新药发现等。 社交网络图示例 图结构丰富且具有与生俱来的导向能力,因此非常适合机器学习模型。同时,它又无比复杂,难以进行大规模扩展应用。而且不同的图数据在结构、内容和任务上千差万别,所需要的图机器学习模型也可能相差甚远,这就导致不同任务的模型自动化面临巨大挑战。 如何设计最优的图自动机器学习模型,是一个尚未解决 的难题。 图 + AutoML = ? 自动机器学习 (AutoML) 旨在将机器学习的过程自动化,在降低机器学习使用门槛的同时,提升机器学习的效果。但现有的自动机器学习工具,无法考虑图数据的特殊性,因此无法应用在图机器学习模型中。

线性代数很重要,选对教材更重要:同济版《线性代数》引发激烈争议

橙三吉。 提交于 2021-01-11 08:16:56
点击上方“ 迈微电子研发社 ”,选择“ 星标★ ”公众号 重磅干货,第一时间送达 你的线性代数,过了没? 不论是结构力学还是人脸识别,理工类型的科研,深究之后就会发现到处都是线性代数的身影。这样一门课程,要是在大一的时候学不好,可是会要命的。 在国内上过大学的理科同学应该都见过《线性代数》(同济版),就算没有学过,也是听过它的大名。作为一名过来人,只能说,晦涩难懂,章节混杂... 即使不少 985、211 走过高考独木桥的学生,每到期末考试,也要默默祈祷不要挂科。现在想起一些内容:相似矩阵、线性变换、特征值、特征向量…… 真是一个头两个大。 作为一本大学教材,让学习者如此后怕,是该考虑一下教材问题了。如今已经毕业多年,没想到最近在知乎上看到一篇文章《《线性代数》(同济版)——教科书中的耻辱柱》,点赞量快突破五千。对于这篇文章,大家有时间可以读一下,看看是不是同意作者的观点。 线性代数真的很重要,这是很多工程技术人员走上工作岗位的最大感受。好多算法都用到线性代数的知识,就比如现在非常热门的深度学习,它的底层实现方式用到好多线性代数方面的知识。如果底层基础打不好,不明白其中的原理,算法实现方式真的很难理解,更不可能去创新了。好的教材才能起到事半功倍的效果。 目前这本教材已更新了好几版,每次更新的内容看起来也是无关紧要,如果有下次版本更新,还是希望制定教材的老师们听取一下广大学生的建议。

多模态深度学习综述:网络结构设计和模态融合方法汇总

孤街浪徒 提交于 2021-01-10 08:42:03
来源:知乎 作者:小奚每天都要学习 本文 约5900字 ,建议阅读 15 分钟 本文讲述了三种融合文本和图像的方法:基于简单操作的,基于注意力的,基于张量的方法。 [ 导读 ] 多模态深度学习主要包含三个方面:多模态学习表征,多模态信号融合以及多模态应用,而本文主要关注计算机视觉和自然语言处理的相关融合方法,包括网络结构设计和模态融合方法(对于特定任务而言)。本文讲述了三种融合文本和图像的方法:基于简单操作的,基于注意力的,基于张量的方法。 一、简介 从2010年开始,深度学习方法为语音识别,图像识别和自然语言处理领域带来了巨大的变革。这些领域中的任务都只涉及单模态的输入,但是最近更多的应用都需要涉及到多种模态的智慧。多模态深度学习主要包含三个方面:多模态学习表征,多模态信号融合以及多模态应用,而本文主要关注计算机视觉和自然语言处理的相关融合方法,包括网络结构设计和模态融合方法(对于特定任务而言)。 二、多模态融合办法 多模态融合是多模态研究中非常关键的研究点,它将抽取自不同模态的信息整合成一个稳定的多模态表征。多模态融合和表征有着明显的联系,如果一个过程是专注于使用某种架构来整合不同单模态的表征,那么就被归类于fusion类。而fusion方法又可以根据他们出现的不同位置而分为late和early fusion。因为早期和晚期融合会抑制模内或者模间的交互作用

总结学习机器学习过程中用到的数据学知识

最后都变了- 提交于 2021-01-09 06:47:00
现在机器学习行业持续加温,应届毕业生年薪持续走高,2019年毕业生算法岗年薪40万起,上不封顶,吸引着越来越多的人想往机器学习方向转。但是刚接触到算法时,看到那些数学公式都望而生畏,特别是公式的推导。今天本文就介绍机器学习会用到哪些数学知识,让那些想往机器学习方向转的同学心里有底,知道学习的方向。 数学是机器学习的内功。作为机器学习的基石,数学知识无论如何是绕不开的,机器学习中大量的问题最终都可以归结为求解最优化问题,微积分、线性代数是最优化方法和理论的基础,很多机器学习算法的建模涉及到概率论,由此可见学好数学知识多么必要。不少准备或刚刚迈入机器学习的同学,在面临数学基础的学习时,会遇到两个问题: 不知道机器学习和深度学习到底要用到哪些数学知识 无法真正理解这些数学知识,并用于机器学习的推导证明 对此,Summer哥在本文中专门为大家解决这两个问题。 首先,在庞杂的数学系统内,哪些知识是在机器学习中真正有用的,对这些知识掌握到什么程度就足够了? 其次,掌握了的数学知识怎么在机器学习领域内运用,即怎么从机器学习的角度去理解数学知识? 一、机器学习所需要的数学知识 很多人对于机器学习中的数学知识,谈之色变,一想到实变函数、随机过程、泛函分析等等就不寒而栗。事实上,要理解和掌握绝大部分机器学习算法和理论,尤其是对做工程应用的人而言,真正所需要的数学知识不过尔尔,主要包括了:<font

Python机器学习笔记:使用scikit-learn工具进行PCA降维

这一生的挚爱 提交于 2021-01-07 05:50:54
  之前总结过关于PCA的知识: 深入学习主成分分析(PCA)算法原理 。这里打算再写一篇笔记,总结一下如何使用scikit-learn工具来进行PCA降维。   在数据处理中,经常会遇到特征维度比样本数量多得多的情况,如果拿到实际工程中去跑,效果不一定好。一是因为冗余的特征会带来一些噪音,影响计算的结果;二是因为无关的特征会加大计算量,耗费时间和资源。所以我们通常会对数据重新变换一下,再跑模型。数据变换的目的不仅仅是降维,还可以消除特征之间的相关性,并发现一些潜在的特征变量。   降维算法由很多,比如PCA ,ICA,SOM,MDS, ISOMAP,LLE等,在此不一一列举。PCA是一种无监督降维算法,它是最常用的降维算法之一,可以很好的解决因变量太多而复杂性,计算量增大的弊端。 一,PCA 的目的   PCA算法是一种在尽可能减少信息损失的前提下,找到某种方式降低数据的维度的方法。PCA通常用于高维数据集的探索与可视化,还可以用于数据压缩,数据预处理。   通常来说,我们期望得到的结果,是把原始数据的特征空间(n个d维样本)投影到一个小一点的子空间里去,并尽可能表达的很好(就是损失信息最少)。常见的应用在于模式识别中,我们可以通过减少特征空间的维度,抽取子空间的数据来最好的表达我们的数据,从而减少参数估计的误差。注意,主成分分析通常会得到协方差矩阵和相关矩阵

Multi-modal Multi-label Emotion Detection with Modality and Label Dependence 阅读笔记

孤街醉人 提交于 2020-12-31 20:18:09
背景 这篇文章讲的是 多标签的情感分析 , 这篇文章是考虑多模态的情感分析, 因为是多标签 所以需要考虑不同标签的依赖性,以及每个标签对不同模态的依赖性 任务的具体例子是: 给定一个视频,包括三个模态信息 ( 视觉, 文本, 声音 )然后给出情感倾向(可以是多个) 文章指出 多标签分类比单标签分类要更加难 , 以主要挑战是如何去对标签之间的依赖性进行建模, 正如上图所说, 一个Sad 很有可能 和Disgust 是同时出现的, 但是有很小可能会出现 happy 和 sad。 论文内容 特征初步提取 Text : word embedding 用的是GLoVe, 没有句子的概念, 文本 表示为 单词数 ×单词维度 Visual : Facet 提取视觉特征, 包括 面部动作单元,面部标志,头部姿势,凝视追踪, 一共34维, 一个视频提取多个帧 Audio : COVAREP 提取声音特征 包括: 12 Mel-frequency cepstral coefficients (MFCCs), pitch, voiced/unvoiced segmenting features 问题描述 (好像EMNLP都有这个部分) 这里主要是介绍一下符号, 可以在后面模型结构中再进行解释, 但是有一点注意其优化目标 因为是一个多标签问题, 其优化目标就是, 找到一个最优 label序列 就是要最大化

词袋模型和TF-IDF模型

£可爱£侵袭症+ 提交于 2020-12-19 15:32:55
词袋模型 文本特征提取的两个非常重要的模型: 词集模型:单词构成的集合,即词集中的每个单词都只有一个。 词袋模型:在词集模型的基础上如果一个单词在文档中出现不止一次,统计其出现的次数(频数)。 两者本质上的区别就是词袋模型在词集模型的基础上增加了频率的维度, 词集只关注有和没有,词袋还要关注有几个 。 将单词转化为特征向量 如果需要根据每个文档中的单词数量构建词袋模型,可以使用sklearn中的 CountVectorizer 类。 CountVectorizer以文本数据数组作为输入,其中文本数据可以是个文档仅仅是个句子,返回的就是所要构建的词袋模型。 from sklearn.feature_extraction.text import CountVectorizer count = CountVectorizer() doc = np.array([ 'This is the first document.' , 'This document is the second document.' , 'And this is the third one.' , 'Is this the first document?' ]) bag = count.fit_transform(doc) #{ 'this' : 8 , 'is' : 3 , 'the' : 6 , 'first'

【sklearn文本特征提取】词袋模型/稀疏表示/停用词/TF-IDF模型

痞子三分冷 提交于 2020-12-19 15:00:48
1. 词袋模型 (Bag of Words, BOW) 文本分析是机器学习算法的一个主要应用领域。然而,原始数据的这些符号序列不能直接提供给算法进行训练,因为大多数算法期望的是固定大小的数字特征向量,而不是可变长度的原始文本。 为了解决这个问题,scikit-learn提供了从文本内容中提取数字特征的常见方法,即: tokenizing: 标记字符串并为每个可能的token提供整数id,例如使用空白和标点作为token分隔符;(分词标记) counting: 统计每个文档中出现的token次数;(统计词频) normalizing: 通过减少大多数样本/文档中都会出现的一般性标记来进行标准化和加权。(标准化/归一化) 在此方案中,特征和样本定义如下: 每个独立token出现的频率(已标准化或未标准化)作为特征。 给定文档的所有token频率的向量作为多元样本。 因此,文本语料库可以由矩阵表示,每一行代表一个文本,每一列代表一个token(例如一个单词)。 向量化:将文本集合转换为数字特征向量的一般过程。 这种方法(tokenizing,counting和normalizing)称为“词袋”或“n-gram”模型。 即只通过单词频率来描述文档,而完全忽略文档中单词的相对位置信息。 2. 稀疏表示 由于大多数文本通常只使用语料库中的很小一部分单词,因此生成的矩阵将具有许多为零的特征值