算法
文章平均质量分 75
susandebug
keep moving
展开
-
分类模型的 Loss 为什么使用 cross entropy 而不是 classification error 或 squared error
提纲:分类模型 与 Loss 函数的定义,为什么不能用 Classification Error,Cross Entropy 的效果对比,为什么不用 Mean Squared Error,定量理解 Cross Entropy,总结,参考资料。交叉熵定义:http://blog.csdn.net/lanchunhui/article/detai转载 2017-07-19 18:47:36 · 2923 阅读 · 0 评论 -
关于与运算和取余之间的关系
一个数和3进行与运算,就是对4取余.解释: 和3进行与运算,是取该数2进制形式的最后2位的值,因为3的二进制形式是(假设该数用1个字节表示,多个字节也一样,这里为了讲述,暂举1个字节为例)00000011,最后两位和1进行与,则把该数最后2位的状态取出来(和1与的特性,不理解的话复习数字逻辑基础).如下推导:随便举一个数255,其二进制形式是11111111,根据十进制和二进制之转载 2015-10-14 19:34:06 · 2986 阅读 · 2 评论 -
【基础】常用的机器学习&数据挖掘知识点
Basis(基础):MSE(Mean Square Error 均方误差),LMS(LeastMean Square 最小均方),LSM(Least Square Methods 最小二乘法),MLE(MaximumLikelihood Estimation最大似然估计),QP(Quadratic Programming 二次规划), CP(Conditional Probability条转载 2015-10-13 09:52:08 · 695 阅读 · 0 评论 -
国外牛人总结的机器学习领域的框架、库以及软件
本文汇编了一些机器学习领域的框架、库以及软件(按编程语言排序)。C++计算机视觉CCV —基于C语言/提供缓存/核心的机器视觉库,新颖的机器视觉库OpenCV—它提供C++, C, Python, Java 以及 MATLAB接口,并支持Windows, Linux, Android and Mac OS操作系统。通用机器学习MLPackDLib转载 2015-10-13 09:49:35 · 5252 阅读 · 2 评论 -
九大排序算法再总结
本文是 http://blog.csdn.net/xiazdong/article/details/7304239 的补充,当年看了《大话数据结构》总结的,但是现在看了《算法导论》,发现以前对排序的理解还不深入,所以打算对各个排序的思想再整理一遍。本文首先介绍了基于比较模型的排序算法,即最坏复杂度都在Ω(nlgn)的排序算法,接着介绍了一些线性时间排序算法,这些排序算法虽然都在线性时间,但是都转载 2015-09-23 15:32:47 · 524 阅读 · 1 评论 -
LDA-math-MCMC 和 Gibbs Sampling
LDA-math-MCMC 和 Gibbs Sampling一直不理解MCMC,看完这篇文章恍然大悟原文转自:http://cos.name/2013/01/lda-math-mcmc-and-gibbs-sampling/3.1 随机模拟随机模拟(或者统计模拟)方法有一个很酷的别名是蒙特卡罗方法(Monte Carlo Simulation)。这个方法的发展始于20世转载 2015-09-21 09:02:13 · 672 阅读 · 0 评论 -
最小的k个数
面试题 30,最小的k个数,堆解法和快速选择解法。 (附最大堆的插入/删除操作实现)这道题最简单的思路是排序,时间复杂度是O(nlog(n))。但是这样做在那n-k 个数的排序上浪费了资源。改进一下,将数组的前k个数作为最小的k数的缓存。从第k+1个数开始遍历,如果有比前k个数小的,就将其和前k个数那个较大交换。照这个思路,可以引入一个结构,使得前k个数总是最大的数在第一个转载 2015-10-22 19:32:04 · 502 阅读 · 0 评论 -
眼睛直观感受几种常用排序算法
看到作者做的图很有趣,转过来存着。原文地址:http://blog.csdn.net/zhoubl668/article/details/77862131 快速排序介绍: 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他转载 2015-09-17 10:31:04 · 479 阅读 · 0 评论 -
使用rand5()生成rand7()
给你一个能生成1到5随机数的函数,用它写一个函数生成1到7的随机数。 (即,使用函数rand5()来实现函数rand7())。解答rand5可以随机生成1,2,3,4,5;rand7可以随机生成1,2,3,4,5,6,7。 rand5并不能直接产生6,7,所以直接用rand5去实现函数rand7似乎不太好入手。 如果反过来呢?给你rand7,让你实现rand5,这个好实现吗?转载 2015-11-05 21:10:00 · 22054 阅读 · 9 评论 -
组合优化问题求解方法GA-交叉算子的总结
离散的组合优化问题:通过数学方法的研究去寻找离散事件的最优编排分组、次序或者筛选等。这些问题的描述都非常简单,并且具有很强的工程性,但最优化的求解很困难。 组合优化问题具有一个共同的特点,就是爆炸式增长的候选集(组合爆炸),例如对于旅行商问题而言,其候选集的数量为(N-1)!,其中N为城市的数目。对于这种NP-hard问题,如果采用穷举遍历,那么消耗的时间是指数级增长的,因此解决大规模的T原创 2015-10-11 20:34:56 · 15198 阅读 · 2 评论 -
蚁群算法、遗传算法、模拟退火算法介绍
蚁群算法、遗传算法、模拟退火算法介绍穷举法列举所有可能,然后一个个去,得到最优的结果。如图一,需要从A点一直走到G点,才能知道,F是最高的(最优解)。这种算法得到的最优解肯定是最好的,但也是效率最低的。 穷举法虽然能得到最好的最优解,但效率是极其低下的。为了能提高效率,可以不要枚举所有的结果,只枚举结果集中的一部分,如果某个解在这部分解中是最优的,那么就把它当成最优转载 2015-09-15 16:10:50 · 15189 阅读 · 3 评论 -
在乱序数组中寻找特定出现次数的数字——异或运算
在乱序数组中寻找特定出现次数的数字——异或运算题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。分析:这是一道很新颖的关于位运算的面试题。首先我们考虑这个问题的一个简单版本:一个数组里除了一个数字之外,其他的数字都出现了两次。请写程序找出这个只出现一次的数字。这个题目转载 2015-10-28 15:57:14 · 2263 阅读 · 0 评论 -
Matlab 最大值滤波 中值滤波 最小值滤波 函数 ordfilt2
Matlab 最大值滤波 中值滤波 最小值滤波 函数 ordfilt2【转载】原文出处:http://blog.csdn.net/fengbingchun/article/details/5951629ordfilt2函数在MATLAB图像处理工具箱中提供了二维统计顺序滤波函数ordfilt2函数。二维统计顺序滤波是中值滤波的推广,对于给定的n个数值{al ,a2,...,转载 2015-12-04 21:28:59 · 3881 阅读 · 0 评论 -
马尔可夫模型及隐马尔可夫模型(HMM)
马尔可夫模型马尔可夫模型是由Andrei A. Markov于1913年提出的∙∙ 设 SS是一个由有限个状态组成的集合S={1,2,3,…,n−1,n}S={1,2,3,…,n−1,n}随机序列 XX 在 tt时刻所处的状态为 qtqt,其中 qt∈Sqt∈S,若有:P(qt=j|qt−1=i,qt−2=k,⋯)=P(qt=j|qt−1=i)P(qt=转载 2016-11-18 09:16:16 · 3013 阅读 · 1 评论 -
计算1到n的数字中1的出现的次数
主要思路:计算数字每一位出现1的次数,并相加,得到该数字中1出现的次数。例如:1304中,个位出现1的次数,是131次,即1304/10 + 1 = 131;十位出现1的次数 (1304/100)*10 = 130;百位出现1的次数 (1304/1000 + 1)*100 = 200 ;千位出现1的次数( 1304/10000)*1000+1+1304-int(1304/1000)*10原创 2016-06-21 15:11:51 · 1602 阅读 · 1 评论 -
矩阵求导公式总结
今天推导公式,发现居然有对矩阵的求导,狂汗--完全不会。不过还好网上有人总结了。吼吼,赶紧搬过来收藏备份。基本公式:Y = A * X --> DY/DX = A'Y = X * A --> DY/DX = AY = A' * X * B --> DY/DX = A * B'Y = A' * X' * B --> DY/DX = B * A'1. 矩阵Y对标量x求导转载 2016-06-12 15:40:53 · 81480 阅读 · 2 评论 -
Huffman树编码与解码
#include #include using namespace std;#define MAX 32767 typedef struct{ int weight; char value; int parent; int lchild; int rchild;}HTNode, *HuffmanTree; //动态分配数组存储霍转载 2016-05-23 17:10:45 · 773 阅读 · 0 评论 -
海量数据处理常见面试题
1. 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?方案1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。s 遍历文件a,对每个url求取,然后根据所取得的值将url分别存储到1000个小文件(记为)中。这样每个小文件的原创 2016-05-26 21:20:50 · 4652 阅读 · 0 评论 -
一个无序实数数组中的相邻两个元素的最大差值
题目描述:一个无序的实数数组a[i],要求求里面大小相邻的实数的差的最大值。比如 double a[]={1,5,4,0.2,100} 这个无序的数组,相邻的数的最大差值为100-5=95.题目分析:这题有个简单的做法,首先就是对数组进行一个排序,然后扫面一遍数据就可以得到结果;但时间复杂度依赖于排序时间复杂度,一般为O(nlog n)。然而一般面试官会让给出一转载 2016-05-27 08:47:49 · 5050 阅读 · 0 评论 -
Heap Sort ——重拾堆排序
之前有整理八大排序算法,也有源码和对比,好久不写堆排序了,有点遗忘,重写一遍。堆排序包括两个过程,建堆和调整堆。建堆:找到第一个非叶结点(n/2-1)(堆是完全二叉树),然后从底向上进行调整。// heap sort.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include using namespace std;void Adj原创 2016-04-18 18:49:26 · 430 阅读 · 0 评论 -
TopSort(拓扑排序)中DFS和BFS的应用
图的搜索:深度优先搜索:下面图中的数字显示了深度优先搜索顶点被访问的顺序。为了实现深度优先搜索,首先选择一个起始顶点并需要遵守三个规则:(1) 如果可能,访问一个邻接的未访问顶点,标记它,并把它放入栈中。(2) 当不能执行规则1时,如果栈不空,就从栈中弹出一个顶点。(3) 如果不能执行规则1和规则2,就完成了整个搜索过程。广度优先搜索:在深度优先搜索中,算法原创 2015-07-11 21:39:28 · 12877 阅读 · 1 评论 -
寻找第K大的数的方法总结
寻找第K大的数的方法总结 今天看算法分析是,看到一个这样的问题,就是在一堆数据中查找到第k个大的值。 名称是:设计一组N个数,确定其中第k个最大值,这是一个选择问题,当然,解决这个问题的方法很多,本人在网上搜索了一番,查找到以下的方式,决定很好,推荐给大家。 所谓“第(前)k大数问题”指的是在长度为n(n>=k)的乱序数组中S找出从大到小顺序的第(前)k个数的问题转载 2016-01-08 11:03:54 · 847 阅读 · 0 评论 -
matlab图像滤波
matlab图像滤波 clc; clear all; I=imread('eight.tif'); % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %用中值滤波,多维滤波,使用中心为-4,-8的拉普 % %拉斯滤波器,高斯低通滤波,拉普拉斯滤波器进行滤波处理 % %%转载 2015-12-04 21:31:16 · 1986 阅读 · 0 评论 -
求所有最大公共子序列的算法实现(转)
最近看了很多关于LCS(Longest common subsequence problem,最长公共子序列)的文章,大部分问题都只是求出最大公共子序列的长度,或者打印处其中的任意一个最大子序列即可,但是如何快速的打印出所有的最大长度子序列?这个问题好像看到的不多。本文给出了传统的DP(dynamic programming,动态规划)算法进行求解的过程,并用c语言实现。另外参考一篇论文实现了其中转载 2015-08-19 21:16:23 · 775 阅读 · 0 评论 -
排序算法系列之八大排序算法性能比较-从实验结果分析
回顾各大排序算法的实现代码:#include "stdafx.h"#include #include #include using namespace std;templatevoid BubbleSort(T *x, const int N){ for(int k= N-1; k>0 ;k--) { for(int i=0; i<k; i++) { if(x原创 2015-06-24 18:33:22 · 1576 阅读 · 1 评论 -
单链表初始化、插入、删除
单链表初始化、插入、删除//单链表初始化、插入、删除#include #include typedef int ElemType; //定义结点类型 typedef struct Node{ ElemType data; //单链表中的数据域 struct Node *next; //单链表的指针域 }N转载 2015-07-14 16:29:16 · 1414 阅读 · 0 评论 -
排序算法系列之快排
快排(对于大的、乱数串行一般相信是最快的已知排序)思想:快速排序是所有排序算法中最高效的一种。它采用了分治的思想:先保证列表的前半部分都小于后半部分,然后分别对前半部分和后半部分排序,这样整个列表就有序了。快速排序的基本算法是:1. 从数列中挑出一个元素,称为 "基准"(pivot),2. 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相原创 2015-06-24 17:51:44 · 671 阅读 · 0 评论 -
排序算法系列之冒泡排序
冒泡排序思想:1.首先将所有待排序的数字放入工作列表中。2. 从列表的第一个数字到倒数第二个数字,逐个检查:若某一位上的数字大于他的下一位,则将它与它的下一位交换。3. 重复2号步骤(倒数的数字加1。例如:第一次到倒数第二个数字,第二次到倒数第三个数字,依此类推...),直至再也不能交换。每次冒泡得到最大的数存在数组尾数上。 注:函数模板定义的一般形式template 数据类型参数原创 2015-06-24 17:44:22 · 516 阅读 · 0 评论 -
排序算法系列之算法性能评价标准与算法选择标准
一些用于理解的概念:内排序和外排序在排序过程中,所有需要排序的数都在内存,并在内存中调整它们的存储顺序,称为内排序;在排序过程中,只有部分数被调入内存,并借助内存调整数在外存中的存放顺序排序方法称为外排序。算法的时间复杂度和空间复杂度所谓算法的时间复杂度,是指执行算法所需要的计算工作量。一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间。1. 性能评价标准转载 2015-06-24 17:35:31 · 2863 阅读 · 0 评论 -
排序算法系列之基数排序
基数排序思想:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。最高位优先(Most Significant Digit first)法,简称MSD法:先按k1排序分组,同一组中记录,关键码k1相等,再对各组按k2排序分成子组,之后,对后面的关键码继续这样的排序分组,原创 2015-06-24 18:04:33 · 701 阅读 · 0 评论 -
排序算法系列之选择排序
思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。程序:templatevoid SelectSort(T *x,constintN)//不稳定{ for(inti =0; i < N; i++) { intminindex = i;原创 2015-06-24 17:49:11 · 524 阅读 · 0 评论 -
排序算法系列之插入排序
思想:1. 从第一个元素开始,认为该元素已经是排好序的。2. 取下一个元素,在已经排好序的元素序列中从后向前扫描。3. 如果已经排好序的序列中元素大于新元素,则将该元素往右移动一个位置。4. 重复步骤3,直到已排好序的元素小于或等于新元素。5. 在当前位置插入新元素。6. 重复步骤2。程序: templatevoid InsertSort(T *x,constint原创 2015-06-24 17:47:52 · 405 阅读 · 0 评论 -
排序算法系列之归并排序
思想:归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。设有两个有序(升序)序列存储在同一数组中相邻的位置上,不妨设为A[l..m],A[m+1..h],将它们归并为一个有序数列,并存储在A[l..h]。程序: templatevoidMergeArray(T *x,in原创 2015-06-24 17:54:15 · 396 阅读 · 0 评论 -
排序算法系列之堆排序
思想:堆排序是一种树形选择排序,是对直接选择排序的有效改进。堆的定义如下:具有n个元素的序列(h1,h2,...,hn),当且仅当满足(hi>=h2i,hi>=h2i+1)或(hi时称之为堆。由堆的定义可以看出,堆顶元素(即第一个元素)必为最大项。完全二叉树可以很直观地表示堆的结构。堆顶为根,其它为左子树、右子树。初始时把要排序的数的序列看作是一棵顺序存储的二叉树,调整它们的存储顺序,使之原创 2015-06-24 17:58:46 · 530 阅读 · 0 评论 -
堆及其应用
最近在看排序算法,看到堆排序的时候,顺带整理了一下堆的性质及应用。还有不详细的地方,之后慢慢补充。 对于堆的数据结构的介绍,在网上搜了下,具体讲的不是很多。发现比较好的一篇介绍堆的博客是http://dongxicheng.org/structure/heap/。在此感谢他。 通过对上面那篇博客的学习,然后自己也去翻了下《算法导论》里面关于堆排序(heapsort转载 2015-06-24 11:40:57 · 594 阅读 · 0 评论 -
常见的hash函数
简介哈希方法学哈希函数和素数位偏向各种形式的哈希常用的哈希函数各版本哈希代码下载简介哈稀函数按照定义可以实现一个伪随机数生成器(PRNG),从这个角度可以得到一个公认的结论:哈希函数之间性能的比较可以通过比较其在伪随机生成方面的比较来衡量。一些常用的分析技术,例如泊松分布可用于分析不同的哈希函数对不同的数据的碰撞率(collision rate)。一转载 2015-06-23 18:56:45 · 965 阅读 · 0 评论 -
排序算法系列之希尔排序
希尔排序思想:在直接插入排序算法中,每次插入一个数,使有序序列只增加1个节点,并且对插入下一个数没有提供任何帮助。如果比较相隔较远距离(称为增量)的数,使得数移动时能跨过多个元素,则进行一次比较就可能消除多个元素交换。D.L.shell于1959年在以他名字命名的排序算法中实现了这一思想。先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同原创 2015-06-24 18:02:59 · 557 阅读 · 0 评论 -
查找算法系列之复杂算法:哈希查找
目前为止已经介绍了顺序查找、二分查找、分块查找、二叉排序树,见作者之前的文章:http://blog.csdn.net/u010025211/article/details/46635325http://blog.csdn.net/u010025211/article/details/46635183今天这篇博文将介绍哈希查找。1.为什么要用哈希查找之前所讲原创 2015-06-25 15:14:39 · 4209 阅读 · 1 评论 -
Softmax回归
Softmax回归Contents [hide]1 简介2 代价函数3 Softmax回归模型参数化的特点4 权重衰减5 Softmax回归与Logistic 回归的关系6 Softmax 回归 vs. k 个二元分类器7 中英文对照8 中文译者简介在本节中,我们介绍Softmax回归模型,该模型是logi转载 2015-07-28 15:16:01 · 560 阅读 · 0 评论 -
Huffman编码与解码C++程序
//*******************************huffman.h**********************//*****************叶子结点为n的哈夫曼树共有2n-1个结点**********#ifndef HUFFMAN_H#define HUFFMAN_Hclass HuffmanNode {public: char info; //结点原创 2015-07-04 17:06:18 · 4317 阅读 · 1 评论