算法导论专栏
文章平均质量分 80
算法导论学习笔记和知识点。
算法导论相关知识点开发。
fjssharpsword
这个作者很懒,什么都没留下…
展开
-
计算机领域EI和SCI收录期刊、影响因子及国际会议
1、SCI\EI收录期刊序号刊物名称(以期刊名称的拼音为序)总被引频次影响因子备注1电子学报(英文版、中文版)中文版1676中文版0.450SCI、EI2高技术通讯(英文版、中文版)中文版540中文版0.原创 2017-10-19 10:00:31 · 7349 阅读 · 0 评论 -
损失函数中正则化项L1和L2的理解
正则化(Regularization)机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作ℓ1-norm和ℓ2-norm,中文称作L1正则化和L2正则化,或者L1范数和L2范数。L1正则化和L2正则化可以看做是损失函数的惩罚项。所谓『惩罚』是指对损失函数中的某些参数做一些限制。对于线性回归模型,使用L1正则化的模型建叫做Lasso回归,使用L2正则化的原创 2017-12-19 14:34:18 · 15179 阅读 · 3 评论 -
损失函数中正则化项L1和L2的理解(二)
今天我们聊聊机器学习中出现的非常频繁的问题:过拟合与规则化。我们先简单的来理解下常用的L0、L1、L2和核范数规则化。最后聊下规则化项参数的选择问题。这里因为篇幅比较庞大,为了不吓到大家,我将这个五个部分分成两篇博文。知识有限,以下都是我一些浅显的看法,如果理解存在错误,希望大家不吝指正。谢谢。 监督机器学习问题无非就是“minimizeyour error while re原创 2017-12-20 10:32:46 · 9292 阅读 · 1 评论 -
【Python-ML】感知器学习算法(perceptron)
1、数学模型 2、权值训练 3、Python代码 感知器收敛的前提是两个类别必须是线性可分的,且学习速率足够小。如果两个类别无法通过一个线性决策边界进行划分,要为模型在训练集上的学习迭代次数设置一个最大值,或者设置一个允许错误分类样本数量的阈值,否则感知器训练算法将永远不停地更新权值。 代码中用UCI机器学习库中的数据集做试验。可设置不同的学习速率eta和迭原创 2017-12-21 14:16:57 · 1960 阅读 · 0 评论 -
【Python-ML】自适应线性神经网络(Adaline)
# -*- coding: utf-8 -*-'''Created on 2017年12月21日@author: Jason.F@summary: 自适应线性神经网络学习算法'''import numpy as npimport timeimport matplotlib.pyplot as pltimport pandas as pdclass AdalineGD(obj原创 2017-12-21 18:00:02 · 5538 阅读 · 0 评论 -
学术论文相关的概念
1、Transactions:一般情况下指某个专业或者学会的议事录,Transaction中的文章对相关背景的介绍比较少,相关理论也会少一点。2、Journal:期刊,文章对相关背景的介绍会多一些,而且理论深度比较深。3、Magazine:杂志,理论推导和高深的技术,主要是方向性指导,有启发意义。4、Article和Paper的区别:Paper一般指还没有提交或原创 2017-12-23 10:18:23 · 1034 阅读 · 0 评论 -
偏差-方差权衡的理解
1、概念:Bias:描述的是预测值与真实值之间的差距。用来衡量模型对特定样本实例预测的一致性(或说变化)。Variance:描述的是预测值的变化范围,离散程度,也就是离其真实值的距离。用来从总体上衡量预测值与实际值之间的差异。对于一个非线性分类问题而言(如XOR),简单的线性分类器(无维度空间映射)由于自身特性并不能较好地进行类别划分,model会出现较大的偏差原创 2018-01-15 09:35:14 · 1640 阅读 · 2 评论 -
【数据挖掘笔记一】引论
1.引论1.1为什么进行数据挖掘数据挖掘,从数据中发现知识(KDD),从各种各样的应用数据中发现有趣数据模式。数据挖掘把大型数据集转换成知识。数据挖掘是信息技术自然进化的结果。数据库和数据管理功能不断发展,从数据收集和数据库创建、到数据管理(包括数据存储和检索、数据库事务处理)、再到高级数据分析(包括数据仓库和数据挖掘)。如下图。现在还要加上大数据和人工智能,没有大量数据集原创 2017-07-07 09:01:56 · 2080 阅读 · 0 评论 -
【数据挖掘知识点一】数据分布特征的描述
知识点:数据分布特征的描述1、变量集中趋势的测定变量在不同个体或不同时间条件下具体表现出来的数据是不同的,不过众多个体的数据常常会呈现出在一定范围内围绕某个中心而波动的分布特征。衡量数据集中趋势的指标有两类:一类是数值平均数,包括算数平均数、调和平均数、几何平均数;另一类是位置代表值,根据数据所处位置直接观察或根据与特定位置有关的部分数据来确定的代表值,主要有众数和中位数。测定集中原创 2017-07-10 12:03:54 · 22068 阅读 · 0 评论 -
【数据挖掘知识点二】概率基础
知识点:概率基础1)随机现象根据客观现象的特征,将其分类两类:一类是确定性现象,在一定条件下必然出现(或不出现)某种结果的现象;另一类是随机现象,在给定的条件下不能确切预言其结果的现象,可在相同条件下重复进行观察或试验,而每次观察或试验的结果不止一个,且事先无法预知确切的结果。在不确定的现象中,还有一种无法重复观察或试验的情况,如无法确定2050年会不会爆发世界大战,这种一次性不可重复的现原创 2017-07-17 08:56:34 · 692 阅读 · 0 评论 -
【数据挖掘笔记二】认识数据
2.认识数据提出一些问题来开启数据的认识。数据由什么类型的属性或字段组成?每个属性具有何种类型的数据值?那些属性是离散的,那些事连续值的?数据值如何分布?什么方法更好地可视化数据可看出离群点?如何度量数据对象之间的相似性或相异性?2.1数据对象与属性类型数据集是由数据对象组成。一个数据对象代表一个实体。数据对象用属性描述。数据对象也称样本、实例、数据点或对象。如果数据对象存放在数据库中原创 2017-07-20 10:08:24 · 2524 阅读 · 0 评论 -
【数据挖掘笔记三】数据预处理
3.数据预处理数据预处理技术:数据清理用来清除数据中的噪声,纠正不一致;数据集成将数据由多个数据源合并成一个一致的数据存储,如数据仓库;数据归约通过如聚集、删除冗余特征或聚类来降低数据的规模;数据变换(如规范化)把数据压缩到较小的区间,如[0,1],可以提高涉及距离度量的挖掘算法的准确率和效率。3.1数据预处理:概述数据质量的三要素:准确性、完整性和一致性。然而,现实世原创 2017-08-10 10:05:10 · 11597 阅读 · 4 评论 -
【数据挖掘笔记四】数据仓库和联机分析处理
4.数据仓库和联机分析处理数据仓库泛化、合并多维空间的数据。构造数据仓库涉及数据清理、数据集成和数据变换,是数据挖掘的预处理步骤。数据仓库提供联系分析处理(OLAP)工具,用于各种粒度的多维数据的交互分析,助力数据泛化和数据挖掘,可以和数据挖掘功能集成,如关联、聚类、分类和预测,用以加强多个抽象层上的交互知识挖掘。数据仓库是数据分析和联系数据分析处理的重要平台,并为数据挖掘提供有效平台,构原创 2017-09-15 12:53:59 · 4885 阅读 · 0 评论 -
【数据挖掘知识点三】大数定理与中心极限定理
知识点:大数定理与中心极限定理大数定理与中心极限定理是与统计学密切相关的重要数学定理,为抽样推断提供了数学理论基础。1、大数定理即当n充分大时,事件A发生的频率接近(依概率收敛于)事件A发生的概率,反映了频率在大量重复试验过程中的稳定性。该定理称为贝努力大数定理,它提供了用频率代替概率的理论依据。大数定理表明:尽管个别现象受偶然因素影响,有各自不同的表现;但原创 2017-09-16 11:45:05 · 1361 阅读 · 0 评论 -
【数据挖掘笔记五】数据立方体技术
5.数据立方体技术数据仓库系统在各种粒度上为多维数据的交互分析提供OLAP工具,OLAP工具使用数据立方体和多维数据模型对汇总数据提供灵活的访问,因此重点要关注数据立方体的技术。数据立方体技术包括数据立方体的计算方法方法和多维数据分析方法。数据立方体技术对于数据挖掘也是有用的。多维数据挖掘是基于OLAP的数据分析与知识发现技术集成再一起的。多维数据挖掘,通过探查多维空间中的数据来搜索有趣的原创 2017-09-30 10:16:33 · 10754 阅读 · 0 评论 -
【数据挖掘笔记六】挖掘频繁模式、关联和相关性:基本概念和方法
6.挖掘频繁模式、关联和相关性:基本概念和方法频繁模式(frequent pattern)是频繁地出现在数据集中的模式。6.1 基本概念频繁模式挖掘搜索给定数据集中反复出现的联系,旨在发现大型事务或关系数据集中项之间有趣的关联或相关性,其典型例子就是购物篮分析。购物篮分析假设全域是商品的集合,每种商品有一个布尔变量,表示该商品是否出现在购物篮中。每个购物篮是一个布尔向量表示,分析布原创 2017-10-20 09:15:18 · 3847 阅读 · 2 评论 -
算法导论之NP完全性和近似算法
NP完全性和近似算法在理解NP完全性之前,笔者想引入关于科学与伪科学的定义。凡可接受实践检验、可被证实和被否正的为科学,相反之为非科学,而伪科学是非科学之子集,与科学相对立,认定非科学为科学的即是伪科学。三者关系可简化为:科学相反于非科学、对立于非科学子集伪科学。集合的运算关系见公式(1),科学定义为、非科学定义为、伪科学定义为。(1)算法是用来解决问题的,一个问题能否在多项式时间内完原创 2016-05-04 17:14:52 · 8021 阅读 · 0 评论 -
算法导论之数学归纳法和递归
推理是一种逻辑思维,一种方法论,归纳推理是从个性推导到共性的过程,而演绎推理则从共性递推到个性的过程。事物的一般性和特殊性,是推理方法的基点,通过下面例子来简单理解下归纳推理是如何从特殊上升到一般。数学归纳法首先证明起点值命题成立,然后证明从n值到n+1的过程有效,而后任意值递推可得。证明自然数N的阶乘N!步骤:已知N!=N*(N-1)*(N-2)*(N-3)*…*2*1,当N=1时原创 2016-05-11 10:30:47 · 6172 阅读 · 0 评论 -
算法导论之概率分析和随机算法
在问题的分析中应用概率技术称为概率分析,前期是对所有可能的输入集合可以做假定。如果无法对输入分布做合理性建模,如果一个算法的行为不只是由输入决定,同时也由随机数生成器所产生的数值决定,则为随机算法。行为随机化和概率平均化,是算法设计和分析的工具。原创 2016-05-16 11:04:46 · 2745 阅读 · 0 评论 -
算法导论之排序和顺序统计学
排序:对N个数的序列重排过程。待排序的数,一般是选择记录中数据集的关键字key作为排序的值,而数据集中其他数据(称为:卫星数据)以key为中心移动。实际上,对于排序过程中,key的移动和交换,卫星数据并不定跟着,只要记录的指针随key交换即可,将数据移动量减小到最小。关键字和卫星数据所构成的数据集,在实际排序应用中,不单只关注关键字序列,还关心卫星数据的存储结构,在选用具体排序算法中有一定考量原创 2016-06-02 15:23:06 · 2442 阅读 · 0 评论 -
算法导论之数据结构
数据结构集合,是数学也是计算机科学的基础,在表示和操纵有穷、动态集合上,动态集合中每个元素由对象来表示,并有指向对象的指针。对动态集合的操作分为两类:查询和修改,操作以指针为导航,涉及元素对象内的关键字和卫星数据。数据结构和动态集合的关系,可以这么理解,把集合中的元素根据相互间关系用某种结构组织起来,方便查询和修改。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,是计算机存储和原创 2016-06-17 09:12:50 · 2700 阅读 · 0 评论 -
算法导论之动态规划(最长公共子序列和最优二叉查找树)
动态规划师通过组合子问题的解而解决整个问题,将问题划分成子问题,递归地求解各子问题,然后合并子问题的解而得到原问题的解。和分治算法思想一致,不同的是分治算法适合独立的子问题,而对于非独立的子问题,即各子问题中包含公共的子子问题,若采用分治法会重复求解,动态规划将子问题结果保存在一张表中,避免重复子问题重复求解。动态规划在多值中选择一个最优解,其算法设计一般分为4个步骤:描述最优解的结构;递归定原创 2016-07-06 09:54:29 · 3640 阅读 · 0 评论 -
算法导论之贪心算法(Huffman编码和拟阵)
贪心算法,在解决最优化问题上,通过得到子问题的局部最优解来合成问题的一个解,以局部最优选择来输出一个全局最优解。问题要用贪心算法来求解,需满足和动态规划一样的最优子结构特征,同时还需要再每个子问题最优解选择上具有贪心性质。所谓贪心性质,就是本来一个问题分成两个子问题求解,但现在只需要选择一个来求解,而这个子问题的局部最优就是全局最优。贪心了,只要解决一个子问题就解决了整个问题。通过活动选择原创 2016-07-13 16:19:38 · 4075 阅读 · 0 评论 -
哈夫曼编码(Huffman)Java实现代码
网上找到的一个组Huffman编码Java实现代码,比较经典。1、主类,压缩和解压package cn.hm;import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.DataInputStream; import java.io.File; impor原创 2016-07-14 17:00:50 · 9476 阅读 · 0 评论 -
哈夫曼编码(Huffman)Java实现代码简化版
这个网上发现的Huffuman编码Java实现在组织上相对简化,便于理解文件压缩过程:提取文件统计字符频度-根据字符频度创建huffman树-根据huffman树生成huffman可变字长无前缀编码-根据huffman编码对文件中的字符转化成二进制串-将huffman编码的二进制串(非固定8位,可变字长)转化成8位固定字节的字符并输出文件。代码中对于Java数据类型的使用也值得参考。pac原创 2016-07-14 17:12:24 · 5775 阅读 · 3 评论 -
算法导论之平摊分析(动态表)
平摊分析,amortizedanalysis,对数据结构执行的所有操作的总和时间是油由求平均而得出,用来证明一系列操作中,通过对所有操作求平均代价,即时某一操作具有较大代价,但平均代价还是小的。导论中这个和平均情况分析不同,我自己到没感觉出不同,同样是求平均。Amortized,摊销之意,就是将把总代价平均到一个周期内来承担。平摊分析有什么意义呢?主要为认识数据结构。对数据结构的一系列操作,数原创 2016-07-18 09:52:37 · 4551 阅读 · 0 评论 -
最长公共子序列Java代码实现
最长公共子序列定义:两个或多个已知数列的子序列集合中最长的就是最长公共子序列。比如数列A = “abcdef”和B = “adefcb”,那么两个数列的公共子序列集合有{”a","ab","abc","adef",等等},其中最长的就是adef,这就是最长公共子序列。注意:最长公共子序列的公共子序列里的元素可以不相邻,但是公共子字符串必须是连接在一起的,比如A和B的公共子字符串是“de原创 2016-07-19 11:08:43 · 12557 阅读 · 0 评论 -
二叉查找树Java实现代码
二叉查找树(Binary Search Tree),或者是一颗空树,或者是具有下列性质的二叉树:1、若它的左子树不空,则其左子树上的所有结点的值均小于它根结点的值;2、若它的右子树不空,则其右子树上的所有结点的值均大于它根结点的值;3、它的左、右子树也分别为二叉查找树。实现代码如下:重点是理解插入和删除后树的重新调整package cn.hm;/** * @autho原创 2016-07-20 16:52:18 · 3600 阅读 · 0 评论 -
算法导论之B树
开宗明义,B树是为磁盘或其他直接存取辅助设备而设计的一种平衡查找树。一般设计的简单数据结构都是面向主存而设计的,主存读取速度快但容量小;而磁盘读取速度慢而容量大,于是针对磁盘而设计的数据结构就不同于为主存而设计的。就树结构上来说,红黑树的二叉性质和高深度适合主存,而B树正是应磁盘特点而设计的高级树结构,其高度比红黑树小很多,但广度要大很多,其分支不只2个,分支因子越大,高度越小。在考察算法性能原创 2016-07-25 09:58:09 · 2570 阅读 · 0 评论 -
算法导论之二项堆
每件事物都有其应需而生的目的,既然存在了,一定有其出现的因和果。二项堆的存在,就是因为二叉堆在Union操作上性能不如意而被发明的。二项堆的Union操作只需O(lgn)时间就可以完成两个二项堆的合并(总共n个元素)。二叉堆是完全二元树(二叉树)或者是近似完全二元树(二叉树)。二叉堆有两种:最大堆和最小堆。最大堆:父结点的键值总是大于或等于任何一个子节点的键值;最小堆:父结点的键值总是小于或等原创 2016-08-01 14:52:23 · 3336 阅读 · 0 评论 -
算法导论之斐波那契堆
斐波那契堆,和二项堆类似,也是由一组最小堆有序的树构成。注意区别,不是二项树,是有根而无序的树。导论中,斐波那契堆只是具有理论上的意义,是以平摊分析为指导思想来设计的数据结构,主要是渐进时间界比二项堆有改善。斐波那契堆除去删除元素操作外,其他操作只有O(1)的平摊运行时间,而二项堆需要O(lgn)的最坏情况运行时间。但若要斐波那契堆能转化为实际应用,除要保证有相同平摊时间界限外,还需更简单的数据结原创 2016-08-05 11:28:12 · 4187 阅读 · 0 评论 -
算法导论之用于不相交集合的数据结构
不相交集合,即集合内元素无交集。在一些具体应用中,需将n个不同的元素分成一组不相交的集合。不相交集合的两个重要操作,找出给定元素所属的集合和合并两个集合。为支持不相交集合的操作,需要设计和维护数据结构来满足。导论中给出了链表和有根树两类数据结构来支持不相交集合的操作。1、不相交集合的基本定义不相交集合数据结构保持一组不相交的动态集合S={S1, S2,…, Sk}。每个集合通过一个代表来识原创 2016-08-12 10:15:56 · 4150 阅读 · 0 评论 -
算法导论之图的基本算法
图是一种数据结构,有关图的算法是计算机科学中基础性的算法。这个论述恰如其分。图的基本算法包括图的表示方法和图的搜索方法。图的搜索技术是图算法领域的核心,有序地沿着图的边访问所有顶点,可以发现图的结构信息。1、图的表示方法:给定图G=(V,E),其中V表示图的点、E表示图的边,V[G]表示图G的点集合,E[G]表示图G的边集合。图的表示方法主要有邻接表和邻接矩阵两类,均可用于有向图和无向原创 2016-10-11 12:01:38 · 4075 阅读 · 0 评论 -
Java实现算法导论中图的广度优先搜索(BFS)和深度优先搜索(DFS)
对算法导论中图的广度优先搜索(BFS)和深度优先搜索(DFS)用Java实现其中的伪代码算法,案例也采用算法导论中的图。import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.LinkedList;import java.util.Map;import原创 2016-10-12 11:34:17 · 2945 阅读 · 0 评论 -
算法导论之图的最小生成树
引出最小生成树,是提到电子线路设计时,要把数个元件的引脚连接在一起,使其电位相同。使n个引脚互相连通,可以使用n-1条连接线,每条连接线连接两个引脚。寻求连接线最少的方案,是最小生成树的应用。将电子线路引脚接线连接问题模型化求解一个无向带权连通图的顶点互联最小代价。一个无向带权连通图G=(V,E),其中V是引脚集合(顶点),E是每个引脚之间可能互联的集合(边)。图中每一条边(u,v)∈E,都有原创 2016-10-17 09:54:52 · 2889 阅读 · 0 评论 -
算法导论之单源最短路径
单源最短路径,在现实中是很多应用的,是图的经典应用,比如在地图中找出两个点之间的最短距离、最小运费等。单源最短路径的问题:已知图G=(V,E),找出给定源顶点s∈V到每个顶点v∈V的最短路径。单源最短路径衍生出的变体问题如下:1)单终点最短路径问题:找出从每个顶点v到指定终点t的最短路径。这个是单源最短路径的反向,把图的每条边反向,问题就变成单源最短路径的问题;2)单对顶点最短路径问题:对原创 2016-10-26 09:43:27 · 5750 阅读 · 0 评论 -
算法导论之每对顶点间的最短路径
从单源顶点最短路径到每对顶点间最短路径,求解的问题从一个点扩展到所有点,描述如下:给定一个加权有向图G=(V,E),其加权函数w:E->R为边到实数权值的映射,对于每对顶点u,v∈V,找出从u到v的一条最短路径,其中路径的权值是指其组成边的权值之和。可以把单源最短路径算法运行|V|次来解决每对顶点间最短路径问题,每一次运行时,每个顶点轮流作为源顶点。用邻接表表示的话,输出第u行第v列的元素就是从u原创 2016-10-28 10:01:36 · 3085 阅读 · 0 评论 -
算法导论之最大流
最大流是图应用,将有向图理解为一个流网络,可模型化流经管道的液体、通过装配线的部件、电网中的电流、通讯网络传送的信息等,源点以固定能量产生,而汇点则消耗同等能量,保持守恒。最大流问题追求的就是在流网络中,物质从源点传到汇点的最大能量是多少?对于流网络,算法导论中给出了形式化定义。流网络G=(V,E)是一个有向图,其中每条边(u,v)∈E均有一个非负能量c(u,v)≥0。如果(u,v)∉E,则假原创 2016-11-01 15:08:20 · 4164 阅读 · 0 评论 -
算法导论之排序网络
排序网络算法是基于比较网络模型,可以同时执行多个比较操作,和串行计算(随机存取计算机RAM)机制不一样。首先要介绍下比较网络。比较网络由线路和比较器构成。一条线路把一个值从一处传输到另一处,把比较器的输入端和输出端相连。假定比较网络含n条输入线a1,a2,…,an,以及n条输出线b1,b2,…,bn,需要排序的值通过输入线进入网络,由网络计算出的结果通过输出线输出。算法导论中给出的案例很清晰地原创 2016-11-03 08:44:48 · 5666 阅读 · 0 评论 -
算法导论之矩阵运算
矩阵运算的重要性应该不亚于图算法。先重温下矩阵的相关概念和性质,为后续矩阵运算奠定数据理论基础。矩阵A:数字的一个矩形阵列,形式化为A=(aij),第i行j列元素为aij,如元素为实数的所有元素mXn矩阵组合的元素用RmXn表示。矩阵转置AT:是矩阵A的行和列互相交换而产生的举证。向量(Vector):是数字的一维向量,列向量看成是nX1的矩阵,转置成行向量就是1Xn的矩阵。单位向原创 2016-11-09 09:18:49 · 6140 阅读 · 0 评论