
算法
请叫我子鱼
这个作者很懒,什么都没留下…
展开
-
机器学习算法08 - 降维学习
降维学习在概率统计模块,我详细讲解了如何使用各种统计指标来进行特征的选择,降低用于监督式学习的特征之维度。接下来的几节,我会阐述两种针对数值型特征,更为通用的降维方法,它们是主成分分析 PCA(Principal Component Analysis)和奇异值分解 SVD(Singular Value Decomposition)。这两种方法是从矩阵分析的角度出发,找出数据分布之间的关系,从而达...原创 2019-06-04 10:20:50 · 668 阅读 · 0 评论 -
数据挖掘算法09 - Apriori
Apriori关联规则挖掘可以让我们从数据集中发现项与项(item 与 item)之间的关系,它在我们的生活中有很多应用场景,“购物篮分析”就是一个常见的场景,这个场景可以从消费者交易记录中发掘商品与商品之间的关联关系,进而通过商品捆绑销售或者相关推荐的方式带来更多的销售量。所以说,关联规则挖掘是个非常有用的技术。知识点搞懂关联规则中的几个重要概念:支持度、置信度、提升度;Aprio...原创 2019-05-31 12:08:46 · 1479 阅读 · 0 评论 -
数据挖掘算法08 - EM
EMEM 的英文是 Expectation Maximization,所以 EM 算法也叫最大期望算法。例子分菜抛硬币EM 聚类三步骤你能从这个例子中看到三个主要的步骤:初始化参数、观察预期、重新估计。首先是先给每个碟子初始化一些菜量,然后再观察预期,这两个步骤实际上就是期望步骤(Expectation)。如果结果存在偏差就需要重新估计参数,这个就是最大化步骤(Maximi...原创 2019-05-30 17:23:58 · 365 阅读 · 0 评论 -
数据挖掘算法07 - K-Means
K-MeansK-Means 算法原理,来看下这三个问题。如何确定 K 类的中心点?其中包括了初始的设置,以及中间迭代过程中中心点的计算。在初始设置中,会进行 n_init 次的选择,然后选择初始中心点效果最好的为初始值。在每次分类更新后,你都需要重新确认每一类的中心点,一般采用均值的方式进行确认。如何将其他点划分到 K 类中?这里实际上是关于距离的定义,我们知道距离有多种定义的方式,在 K...原创 2019-05-30 17:22:38 · 400 阅读 · 0 评论 -
数据挖掘算法06 - Adaboost
Adaboost今天我们学习 AdaBoost 算法。在数据挖掘中,分类算法可以说是核心算法,其中 AdaBoost 算法与随机森林算法一样都属于分类算法中的集成算法。集成算法的两种模式集成的含义就是集思广益,博取众长,当我们做决定的时候,我们先听取多个专家的意见,再做决定。集成算法通常有两种方式,分别是投票选举(bagging)和再学习(boosting)。投票选举的场景类似把专家召集...原创 2019-05-27 13:20:57 · 431 阅读 · 0 评论 -
数据挖掘算法05 - KNN
KNNKNN 的英文叫 K-Nearest Neighbor,应该算是数据挖掘算法中最简单的一种。KNN 的工作原理***近朱者赤,近墨者黑***可以说是 KNN 的工作原理。整个计算过程分为三步:计算待分类物体与其他物体之间的距离;统计距离最近的 K 个邻居;对于 K 个最近的邻居,它们属于哪个分类最多,待分类物体就属于哪一类。K 值如何选择如果 K 值比较小,就相当...原创 2019-05-27 13:20:03 · 378 阅读 · 0 评论 -
数据挖掘算法04 - SVM
SVMSVM 的英文叫 Support Vector Machine,中文名为支持向量机。它是常见的一种分类方法,在机器学习中,SVM 是有监督的学习模型。什么是有监督的学习模型呢?它指的是我们需要事先对数据打上分类标签,这样机器就知道这个数据属于哪个分类。同样无监督学习,就是数据没有被打上分类标签,这可能是因为我们不具备先验的知识,或者打标签的成本很高。所以我们需要机器代我们部分完成这个工...原创 2019-05-27 13:19:05 · 552 阅读 · 0 评论 -
数据挖掘算法03 - CART
CARTCART 算法另一种常见的决策树是 CART 算法(Classification and Regression Trees,分类与回归树)。这种算法和 ID3、C4.5 相比,主要有两处不同:在分类时,CART 不再采用信息增益或信息增益率,而是采用基尼指数(Gini)来选择最好的特征并进行数据的划分;在 ID3 和 C4.5 决策树中,算法根据特征的属性值划分数据,可能会划...原创 2019-05-26 20:04:27 · 1006 阅读 · 0 评论 -
数据挖掘算法02 - C4.5
C4.5决策树学习通常包括三个步骤特征选择。选取最优特征来划分特征空间,用信息增益或者信息增益比来选择决策树的生成。ID3、C4.5、CART剪枝什么是信息熵?随机变量x概率P(x) 表示 x 出现的概率信息量H(x)=−log(P(x))信息量是信息论中的一个度量,简单来说就是,当我们观察到某个随机变量的具体值时,接收到了多少信息。而我们接收到的...原创 2019-05-26 20:04:09 · 1217 阅读 · 0 评论 -
数据挖掘算法01 - NB
Naive Bayes概率和统计里有哪些需要掌握的概念?随机变量(Random Variable)来描述事件所有可能出现的状态离散型随机变量(Discrete Random Variable)连续型随机变量(Continuous Random Variable)概率分布(Probability Distribution)来描述每个状态出现的可能性联合概率(Joint Probab...原创 2019-05-26 20:03:47 · 591 阅读 · 0 评论 -
算法实战.搜索引擎
搜索引擎整体系统介绍搜索引擎大致可以分为四个部分:搜集、分析、索引、查询。搜集,就是我们常说的利用爬虫爬取网页。分析,主要负责网页内容抽取、分词,构建临时索引,计算 PageRank 值这几部分工作。索引,主要负责通过分析阶段得到的临时索引,构建倒排索引。查询,主要负责响应用户的请求,根据倒排索引获取相关网页,计算网页排名,返回查询结果给用户。搜集待爬取网页链接文件:...原创 2019-05-15 07:13:59 · 558 阅读 · 0 评论 -
数据挖掘算法10 - PageRank
PageRankPageRank 的简化模型假设一共有 4 个网页 A、B、C、D。它们之间的链接信息如图所示:出链指的是链接出去的链接。入链指的是链接进来的链接。比如图中 A 有 2 个入链,3 个出链。简单来说,一个网页的影响力 = 所有入链集合的页面的加权影响力之和,用公式表示为:u 为待评估的页面,Bu 为页面 u 的入链集合。针对入链集合中的任意页面 v,它能给 u ...原创 2019-05-31 12:09:32 · 1143 阅读 · 0 评论 -
机器学习算法07 - 聚类分析
聚类分析“物以类聚,人以群分”K-means在聚类中,数据对象之间的相似度时很关键的。如果我们把样本转换为向量,然后使用向量空间中的距离或者夹角余弦,就很自然的能获得这种相似度,所以向量空间模型和聚类算法可以很容易的结合在一起。EMEM 算法相当于一个框架,你可以采用不同的模型来进行聚类,比如 GMM(高斯混合模型)或者 HMM(隐马尔科夫模型)来进行聚类。GMM 是通过概率...原创 2019-06-04 10:19:58 · 573 阅读 · 0 评论 -
机器学习算法06 - 集成学习
集成学习“三个臭皮匠,顶个诸葛亮”举例利用错题本来提升学习效率和学习成绩IBM 服务器追求的是单个服务器性能的强大,比如打造超级服务器。而 Google 在创建集群的时候,利用了很多 PC 级的服务器,将它们组成集群,整体性能远比一个超级服务器的性能强大。AdaBoost 算法AdaBoost 实战机器学习基本算法之一的集成学习的基本原理,其要点如下:集成...原创 2019-06-04 10:19:20 · 293 阅读 · 0 评论 -
机器学习算法05 - 支持向量机
支持向量机“升维”机器学习基本算法之一的支持向量机的基本原理,其要点如下:线性可分支持向量机通过硬间隔最大化求出划分超平面,解决线性分类问题;线性支持向量机通过软间隔最大化求出划分超平面,解决线性分类问题;非线性支持向量机利用核函数实现从低维原始空间到高维特征空间的转换,在高维空间上解决非线性分类问题;支持向量机的学习是个凸二次规划问题,可以用 SMO 算法快速求解。SVM...原创 2019-06-04 10:18:44 · 359 阅读 · 0 评论 -
机器学习算法02 - 决策树
决策树ID3 & C4.5 & CART机器学习基本算法之一的决策树的基本原理,其要点如下:决策树是包含根节点、内部节点和叶节点的树结构,通过判定不同属性的特征来解决分类问题;决策树的学习过程包括特征选择、决策树生成、决策树剪枝三个步骤;决策树生成的基础是特征选择,特征选择的指标包括信息增益、信息增益比和基尼系数;决策树的剪枝策略包括预剪枝和后剪枝。...原创 2019-06-03 16:21:19 · 305 阅读 · 0 评论 -
机器学习算法04 - 逻辑回归
逻辑回归机器学习基本算法之一的逻辑回归方法的基本原理,其要点如下:逻辑回归模型是对线性回归的改进,用于解决分类问题;逻辑回归输出的是实例属于每个类别的似然概率,似然概率最大的类别就是分类结果;在一定条件下,逻辑回归模型与朴素贝叶斯分类器是等价的;多分类问题时可以通过多次使用二分类逻辑回归或者使用 Softmax 回归解决。逻辑回归 & 线性回归从数学角度看,线性回...原创 2019-06-03 16:27:35 · 290 阅读 · 0 评论 -
机器学习算法03 - 线性回归
线性回归机器学习基本算法之一的线性回归的基本原理,其要点如下:线性回归假设输出变量是若干输入变量的线性组合,并根据这一关系求解线性组合中的最优系数;最小二乘法可用于解决单变量线性回归问题,当误差函数服从正态分布时,它与最大似然估计等价;多元线性回归问题也可以用最小二乘法求解,但极易出现过拟合现象;岭回归和 LASSO 回归分别通过引入二范数惩罚项和一范数惩罚项抑制过拟合。...原创 2019-06-03 16:27:20 · 233 阅读 · 0 评论 -
机器学习算法01 - 朴素贝叶斯
朴素贝叶斯朴素贝叶斯分类机器学习基本算法之一的朴素贝叶斯方法的基本原理,其要点如下:朴素贝叶斯方法利用后验概率选择最佳分类,后验概率可以通过贝叶斯定理求解;朴素贝叶斯方法假定所有属性相互独立,基于这一假设将类条件概率转化为属性条件概率的乘积;朴素贝叶斯方法可以使期望风险最小化;影响朴素贝叶斯分类的是所有属性之间的依赖关系在不同类别上的分布。...原创 2019-06-03 16:18:17 · 344 阅读 · 0 评论 -
算法之美10 - 技巧
技巧编程技巧:递归、递归树工程思路:并行10 | 递归:如何用三行代码找到“最终推荐人”?电影院座位第几排什么是递归?递归是一种非常高效、简洁的编码技巧,一种应用非常广泛的算法,比如DFS深度优先搜索、前中后序二叉树遍历等都是使用递归。方法或函数调用自身的方式称为递归调用,调用称为递,返回称为归。基本上,所有的递归问题都可以用递推公式来表示,比如f(n) = f(n-1...原创 2019-05-07 11:31:29 · 506 阅读 · 0 评论 -
算法之美5 - 树
树二叉树、多路查找树、堆、树状数组、线段树23 | 二叉树基础(上):什么样的二叉树适合用数组来存储?树 - 二叉树 - 满二叉树 - 完全二叉树完全二叉树二叉树的存储想要存储一棵二叉树,我们有两种方法,一种是基于指针或者引用的二叉链式存储法,一种是基于数组的顺序存储法。小结非线性表数据结构,树。关于树,有几个比较常用的概念你需要掌握,那就是:根节点、叶子节点、父节...原创 2019-03-22 23:29:39 · 538 阅读 · 0 评论 -
算法之美8 - 查找
查找二分查找15 | 二分查找(上):如何用最省内存的方式实现快速查找功能?猜数字游戏一、什么是二分查找?二分查找针对的是一个有序的数据集合,每次通过跟区间中间的元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间缩小为0。二、时间复杂度分析?1.时间复杂度假设数据大小是n,每次查找后数据都会缩小为原来的一半,最坏的情况下,直到查找区间被缩小为空,才停...原创 2019-03-23 09:19:31 · 816 阅读 · 0 评论 -
算法之美4 - 字符串
字符串朴素、KMP、BF 、RK、BM、AC自动机、Trie、后缀数组32 | 字符串匹配基础(上):如何借助哈希算法实现高效字符串匹配?BF 算法BF 是 Brute Force 的缩写,中文叫作暴力匹配算法,也叫朴素匹配算法。这种算法的最坏情况时间复杂度是 O(n*m)。但在实际的开发中,它却是一个比较常用的字符串匹配算法。为什么这么说呢?原因有两点。第一,实际的软件开发中...原创 2019-03-21 10:43:11 · 211 阅读 · 0 评论 -
算法之美3 - 散列表
散列表散列函数、冲突解决、动态扩容、位图18 | 散列表(上):Word文档中的单词拼写检查功能是如何实现的?一、散列表的由来?1.散列表来源于数组,它借助散列函数对数组这种数据结构进行扩展,利用的是数组支持按照下标随机访问元素的特性。2.需要存储在散列表中的数据我们称为键,将键转化为数组下标的方法称为散列函数,散列函数的计算结果称为散列值。3.将数据存储在散列值对应的数组下标位...原创 2019-03-20 14:04:20 · 351 阅读 · 0 评论 -
算法之美2 - 线性表
线性表数组、链表、栈、队列05 | 数组:为什么很多编程语言中数组都从0开始编号?数组如何实现随机访问1)数组是一种线性数据结构,用连续的存储空间存储相同类型数据I)线性表:数组、链表、队列、栈 非线性表:树、图II)连续的内存空间、相同类型的数据,所以数组可以随机访问,但对数组进行删除插入,为了保证数组的连续性,就要做大量的数据搬移工作数组如何实现下标随机访问。引入数组...原创 2019-03-20 10:48:43 · 715 阅读 · 0 评论 -
算法之美1 - 复杂度分析
复杂度分析时间复杂度和空间复杂度03 | 复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?一、什么是复杂度分析?1.数据结构和算法解决是“如何让计算机更快时间、更省空间的解决问题”。2.因此需从执行时间和占用空间两个维度来评估数据结构和算法的性能。3.分别用时间复杂度和空间复杂度两个概念来描述性能问题,二者统称为复杂度。4.复杂度描述的是算法执行时间(或占用空间)与数据...原创 2019-01-19 21:05:28 · 349 阅读 · 0 评论 -
Python 算法 - 选择排序
# coding=utf-8# 选择排序def select_sort(lst=[]): """ 基本思想:第1趟,在待排序记录r1 ~ r[n]中选出最小的记录,将它与r1交换; 第2趟,在待排序记录r2 ~ r[n]中选出最小的记录,将它与r2交换; 以此类推,第i趟在待排序记录r[i] ~ r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到原创 2017-04-16 01:31:30 · 256 阅读 · 0 评论 -
Python 算法 - 快速排序
coding=utf-8快速排序def quick_sort(lists, left, right): “”” 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小, 然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。:param lists: :param left:原创 2017-04-16 01:14:16 · 236 阅读 · 0 评论 -
Python 算法 - 希尔排序
# coding=utf-8# 希尔排序def shell_sort(lst=[]): """ 希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法,时间复杂度为O(nlogn)。 该方法因DL.Shell于1959年提出而得名。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算原创 2017-04-16 00:18:24 · 210 阅读 · 0 评论 -
Python 算法 - 插入排序
# coding=utf-8# 插入排序def insert_sort(lst=[]): """ 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。 是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空原创 2017-04-08 00:22:12 · 222 阅读 · 0 评论 -
算法之美6 - 图
图图的存储、拓扑排序、最短路径、关键路径、最小生成树、二分图、最大流30 | 图的表示:如何存储微博、微信等社交网络中的好友关系?另一种非线性表数据结构,图我们就拿微信举例子吧。我们可以把每个用户看作一个顶点。如果两个用户之间互加好友,那就在两者之间建立一条边。所以,整个微信的好友关系就可以用一张图来表示。其中,每个用户有多少个好友,对应到图中,就叫作顶点的度(degree),就是跟顶点...原创 2019-03-23 09:14:27 · 585 阅读 · 0 评论 -
算法之美7 - 排序
排序十大排序:冒泡、插入、选择、希尔、归并、快排、堆、计数、基数、桶11 | 排序(上):为什么插入排序比冒泡排序更受欢迎?一、几种经典排序算法及其时间复杂度级别冒泡、插入、选择 O(n^2) 基于比较快排、归并 O(nlogn) 基于比较计数、基数、桶 O(n) 不基于比较二、如何分析一个排序算法?1.学习排序算法的思路?明确原理、掌握实现以及分析性能。2.如何分析排...原创 2019-03-23 09:17:58 · 598 阅读 · 0 评论 -
算法实战.Redis常用数据类型
Redis常用数据类型算法实战(一):剖析Redis常用数据类型对应的数据结构Redis 数据库介绍Redis 是一种键值(Key-Value)数据库。相对于关系型数据库(比如 MySQL),Redis 也被叫作非关系型数据库而 Redis 中只包含“键”和“值”两部分,只能通过“键”来查询“值”。正是因为这样简单的存储结构,也让 Redis 的读写效率非常高。除此之外,Redis...原创 2019-05-14 22:41:18 · 227 阅读 · 0 评论 -
数学之美3 - 线代篇
线代篇向量空间模型文本检索文本聚类矩阵线性回归PCA主成分分析奇异值分解原创 2019-05-26 20:00:14 · 3710 阅读 · 0 评论 -
数学之美2 - 概率篇
概率篇朴素贝叶斯文本分类语言模型马尔科夫模型决策树A/B 测试原创 2019-05-26 19:59:13 · 2419 阅读 · 0 评论 -
数学之美1 - 离散篇
离散篇程序员的数学基础课原创 2019-05-26 19:56:07 · 1277 阅读 · 0 评论 -
算法之美11 - 思想
思想greed、dc、dp、backtracking、enum原创 2019-05-07 13:18:16 · 395 阅读 · 0 评论 -
算法面试
算法面试通关40讲知识点Array理论Access: O(1)Insert: 平均O(n)Delete: 平均O(n)Singly Linked List & Doubly Linked List理论space: O(n)prepend: O(1)append: O(1)lookup: O(n)insert: O(1)delete: O(...原创 2019-04-08 23:18:42 · 293 阅读 · 0 评论 -
算法之美9 - 搜索
数据结构与算法之美.搜索DFS、BFS、A*启发式31 | 深度和广度优先搜索:如何找出社交网络中的三度好友关系?BFS广度优先搜索,通俗的理解就是,地毯式层层推进,从起始顶点开始,依次往外遍历。广度优先搜索需要借助队列来实现,遍历得到的路径就是,起始顶点到终止顶点的最短路径。时间复杂度是 O(E),空间复杂度是 O(V)。例子:水滴波纹def bfs(graph, star...原创 2019-04-07 12:21:23 · 240 阅读 · 0 评论 -
时间复杂度总结
1、快速排序、希尔排序、并归排序、堆排序的时间复杂度均为O(nlog2n)“快些以nlog2n的速度归队” 2、基数排序的时间复杂度为O(d(n+rd)) 3、直接插入排序、折半插入排序、起泡排序、简单选择排序的时间复杂度均为O(n2)原创 2014-04-16 22:12:33 · 481 阅读 · 0 评论