数据挖掘与机器学习算法
文章平均质量分 92
張清扬
移动互联网专业,大数据方向
展开
-
FP-growth算法
FP-growth算法是基于Apriori算法构建的,但采用了高级的数据结构减少了扫描次数,因此大大加快了算法的执行速度。FP-growth算法发现频繁项集的基本过程如下: 1、构建FP树; 2、从FP树中挖掘频繁项集。上面我们谈到,FP-growth算法的优点是采用了高级的数据结构。那么这种高级的数据结构是什么呢?实际上就是FP树。 FP树是一种输入数据的压缩表示。他通过把事务映射到FP树原创 2017-08-25 10:19:36 · 3184 阅读 · 0 评论 -
Adaboot
AdaBoost,即英文”Adaptive Boosting”(自适应增强)的缩写。是一种流行的提升算法。在Jiawei Han的书中对该算法是这样描述的: 我们着重关注画红线的关键字。 从上述的描述中,我们可以知道。该算法选取训练集是有放回的抽样。但是这个有放回的抽样不是随机的,而是看训练元组权重的。也就是说,每个元组被选中的机会是由他们的权重决定的。 如果一个元组被不正确的分类,则该元组的原创 2017-08-28 15:18:40 · 582 阅读 · 0 评论 -
Bagging和随机森林
随机森林是一个非常灵活的机器学习方法,能够用于分类和回归问题。它可以快速地被应用到几乎任何的数据科学问题中去,从而使人们能够高效快捷地获得第一组基准测试结果。随机森林算法应该可以说是Bagging算法的一种提升。显然的,它也是一种组合分类方法。该算法在2001年由LeoBreiman提出。随机森林的思想 它的算法思想其实特别简单。 我们想象组合分类器中的每个分类器都是一棵决策树,而随机森林就是用原创 2017-08-28 10:14:50 · 2066 阅读 · 0 评论 -
降维算法MDS
在现实应用中,许多学习方法都涉及距离计算,而高维空间会给距离计算带来很大的麻烦。例如当维数很高时,甚至连计算内积都很不容易。 这实际上,是所有机器学习都面临的严重障碍,这被称为“维数灾难(即样本非常洗漱,距离计算很困难)”。而缓解维数灾难的两个普遍做法是降维和特征选择。降维指的是:通过某种数学变换将原始高维属性空间转变为一个低维子空间,在这个低维的子空间中,样本密度大幅度提高,距离计算也变得很容易原创 2017-11-06 19:20:26 · 3816 阅读 · 1 评论 -
LDA(线性判别分析)算法
线性判别分析(Linear Discrimination Analysis,LDA)是一种非常经典的线性学习方法,可以用于在二分类问题上。 我们知道,在二分类问题上,我们想要的理想结果是 同一类的尽量聚集在一起,不同类的尽量分开。 因此,LDA实际上是一个非常简单的(所以经典)方法,它的思想也是极其朴素: 给定训练集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近,异类样例的投影原创 2017-10-09 16:05:44 · 729 阅读 · 0 评论 -
决策树分类器
决策树分类器的基本流程我们通过学习并构造分类器 。这里给出一个相当经典且流行的分类器——决策树分类器。 为什么这样评价这个分类器呢?因为构造这个分类器不需要任何领域的知识,也不需要任何的参数设置。因此它特别适合于探测式的知识发现。此外,这个分类器还可以处理高维数据,而且采用的是类似于树这种形式,也特别直观和便于理解。因此,决策树是许多商业规则归纳系统的基础。关于决策树的发展,早期是从ID3到C4原创 2017-08-25 11:44:38 · 16852 阅读 · 2 评论 -
降维方法PCA
周志华老师的书上省略了很多矩阵运算,而这些运算是PCA的核心之处。建议各位同学 看看我给出的参考文章,学习完之后,再回过来看看西瓜书。为什么要降维? 机器学习中紧接过拟合之后的最大问题就是维度灾难(curse of dimensionality)。这一概念是由贝尔曼(Bellman)在1961年首先提出的,用来描述以下事实:许多在低维空间表现很好的算法,当输入是高维度的时候,就变得计算不可行...原创 2017-11-06 20:33:35 · 457 阅读 · 0 评论 -
支持向量机
支持向量机(Support Vector Machine,SVM)是一种对线性和非线性数据进行分类的方法。简单来说,SVM就是一种算法,它大体上按照如下的方法工作:它使用一种非线性映射,把原训练数据映射到较高的维上。在新的维上,它搜索最佳分离超平面,以将两个类的数据分开。 下面我们具体来说一下。1、数据线性可分的情况 首先来考察最简单的情况——两类问题,其中两个类是线性可分(直线)的。 ...原创 2017-08-30 11:37:16 · 1591 阅读 · 0 评论 -
神经网络
写在前面: 这篇文章,是我在看Jiawei的书时候写的。由于该书在BP的推导公式上面省略了特别特别多。因此,本篇博客的公式推导不太适合初学者理解。 后来,看了周志华老师的西瓜书后,发现上面关于BP的推导非常详细,本想重新修改本篇文章,后来发现已经有一位兄弟把周老师的推导过程发在了他的博客上,因此我也就不做无用功了,就在参考文章里面给出了链接。各位读者不妨反复参看这一推导过程,相信对于BP会有新...原创 2017-08-29 15:12:12 · 1186 阅读 · 0 评论 -
特征选择与特征提取
一、特征选择和特征提取 特征选择(feature selection)和特征提取(Feature extraction)都属于降维(Dimension reduction)这两者达到的效果是一样的,就是试图去减少特征数据集中的属性(或者称为特征)的数目;但是两者所采用的方式方法却不同。 特征提取的方法主要是通过属性间的关系,如组合不同的属性得到新的属性,这样就改变了原来的特征空间。 ...原创 2018-04-28 17:29:30 · 33304 阅读 · 1 评论 -
高斯混合模型(GMM)
讲这个之前,要先对模糊聚类和基于概率模型的聚类有个大体的认识。不清楚的同学可以参考下Jiawei的书去看一看,或者看看我的这篇文章。 这里写链接内容OK,这里假设,大家已经有了上面我提到的先验知识。GMM 和 k-means 很像。不过 GMM 是学习出一些概率密度函数来(所以 GMM 除了用在 clustering 上之外,还经常被用于 density estimation ),简单地说,k-m原创 2017-10-19 21:41:47 · 553 阅读 · 1 评论 -
贝叶斯信念网络
1.1摘要 之前我们讨论了朴素贝叶斯分类。朴素贝叶斯分类有一个限制条件,就是特征属性必须有条件独立或基本独立(实际上在现实应用中几乎不可能做到完全独立)。当这个条件成立时,朴素贝叶斯分类法的准确率是最高的,但不幸的是,现实中各个特征属性间往往并不条件独立,而是具有较强的相关性,这样就限制了朴素贝叶斯分类的能力。这一篇文章中,我们讨论贝叶斯分类中更高级、应用范围更广的一种算法——贝叶斯网络(又称贝原创 2017-08-29 10:28:26 · 22092 阅读 · 2 评论 -
遗传算法
遗传算法手推以后再补上。这里初学,只求先理解思想。 遗传算法是一种利用自然进化的思想来设计的算法。它通过模拟自然进化过程来搜索最优解。 参看下面连接中的文章 如何通俗易懂地解释遗传算法?有什么例子?-sjyan在实际中,一个问题是否能够使用遗传算法去解决,关键在于下面几点: 1.现实问题的解如何映射到遗传算法的个体上? 2.如何确定一个评估函数? 3.如何确定选择算子,交叉算子,变异算子原创 2017-08-30 15:20:13 · 643 阅读 · 0 评论 -
BIRCH:使用聚类特征树(CF-树)的多阶段聚类算法
BIRCH算法是在凝聚和分裂算法之后发展起来的。它克服了凝聚聚类算法一些存在的劣势。 BIRCH算法比较适合于数据量大,类别数K也比较多的情况。它运行速度很快,只需要单遍扫描数据集就能进行有效的聚类。 这得益于它采用的一个特殊的树结构,CF-树。 该算法笼统的说,执行流程课分为两步: 一、BIRCH扫描数据库,建立一棵存放于内存的CF-树,它可以被看作数据的多层压缩,试图保留数据的内在聚类结原创 2017-08-30 16:44:56 · 14873 阅读 · 6 评论 -
Chamelon(变色龙)多阶段层次聚类算法
Chamelon是一种层次聚类算法,它采用动态建模来确定一对簇之间的相似度,从而实现聚类。 这里我们重点关注动态建模这个词? 那么,何为动态建模呢? 要回答这个问题,我们首先要搞清楚簇的相似度依据是什么。 在Chamelon中,簇的相似度依据如下两点评估: 1、簇中对象的连接情况; 2、簇的邻近性。也就是说,如果两个簇的互连性都很高并且他们之间又靠的很近,那么就将其合并。OK,因此,凭借原创 2017-08-31 10:07:05 · 11865 阅读 · 0 评论 -
K-means(K-均值)聚类算法
划分方法聚类分析最简单、最基本的版本是划分,它把对象组织成多个互斥的簇。这一方法,要求每个对象必须/恰好属于每一个簇。(事实上,我们应该知道,这个要求是很不合理的,因为它忽略了离群点,假若把噪声数据强行划分在簇里,那势必会降低聚类的准确率,所以为了改进这一点,在模糊划分中适当放宽了这一要求。 大部分的划分算法都是基于距离的。(这个应该也很好理解吧,我们在前面应该提到过不止一次,这里说的距离实际上是原创 2017-08-30 15:44:53 · 14405 阅读 · 0 评论 -
KNN(K-最近邻分类)分类算法
惰性学习法(或近邻分类)前面提高的所有分类方法——决策树分类,贝叶斯分类,基于规则的分类,贝叶斯网络分类,神经网络分类,支持向量机分类和使用频繁模式的分类都是急切学习法的例子。 何为急切学习法呢? 回顾这些分类方法,都是在接受训练元组训练时期就已经构成了分类模型。 而与之对应的惰性学习法则是直到对给定的检验元组分类之前的一刻才构造“分类模型”。 大家要注意到我在这里对“分类模型”打上了引号,原创 2017-08-30 14:29:44 · 4115 阅读 · 0 评论 -
Apriori算法
Apriori算法是一种发现频繁项集的基本算法,主要用于布尔关联规则挖掘频繁项集。 这里需要弄清楚的是,我们明明说的是挖掘关联规则,但为什么只需要挖掘频繁项集就好了呢? 那是因为,关联规则可以很简单的从支持度和置信度推导出来。所以挖掘关联规则实质上可以归结为挖掘频繁项集。Apriori算法实际上是一个很简单的算法。它使用一种称为逐层搜索的迭代方法,并使用先验性质来压缩搜索空间,提高效率。那么我们原创 2017-08-24 16:28:11 · 1605 阅读 · 0 评论 -
OPTICS:通过点排序识别聚类结构的密度聚类算法
OPTICS算法 在DBSCAN算法中,我们知道该算法需要用户输入半径和阀值。这显然是不靠谱的,虽然我们可以通过其他方法来优化参数的选择,但这其实不是最好的做法。 这里为了克服在聚类分析中使用一组全局参数的缺点,这里提出了OPTICS算法。 该算法的牛逼之处在于:它并不显示地产生数据集聚类,而是为聚类分析生成一个增广的簇排序(如以样本点输出次序为横轴,以可达距离为纵轴的坐标图)。那么这个排序就原创 2017-08-31 15:10:50 · 7880 阅读 · 4 评论 -
DBSCAN(基于高密度聚类的)算法
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)聚类算法,它是一种基于高密度连通区域的、基于密度的聚类算法,能够将具有足够高密度的区域划分为簇,并在具有噪声的数据中发现任意形状的簇。DBSCAN算法的思想其实很简单,粗俗点说就是一圈套一圈套一圈套一圈………………然而,要搞清楚它,首先要弄清楚几个基本概念。基本概念原创 2017-08-31 11:21:43 · 2424 阅读 · 0 评论 -
朴素贝叶斯分类
贝叶斯分类法是统计学的分类方法,它可以预测类隶属关系的概率,如一个给定的元组属于一个特定类的概率。 贝叶斯分类基于贝叶斯定理,经过研究发现,一种被称为朴素贝叶斯分类法的分类法的性能相当好。 在学习朴素贝叶斯分类器之前,我们要先学习贝叶斯定理。 贝叶斯定理 这个贝叶斯定理说白了就是我们给定X的属性描述,然后找出元组X属于类C的概率。 重点关注这个式子 P(X|H)= 在购买计算机的用户中原创 2017-08-25 15:23:09 · 775 阅读 · 0 评论 -
smote(过采样算法)
#-*-coding:utf-8-*-# smote unbalance datasetimport numpy as npfrom sklearn.neighbors import NearestNeighborsimport pandas as pddef smote(data, tag_label='tag_1', amount_personal=0, std_rate=1, k=...原创 2018-04-28 17:42:07 · 4989 阅读 · 1 评论