常用的数据挖掘算法有哪几类数据挖掘

大数据这个名词是被炒得越来越火了,各种大数据技术层出不穷,做数据挖掘的也跟着火了一把,呵呵,现今机器学习算法常见的并行实现方式:MPI,Map-Reduce计算框架,GPU方面,graphlab的图并行,Spark计算框架,本文讲讲一些机器学习算法的map-reduce并行策略,尽管有些算法确实不适合map-reduce计算,但是掌握一些并行思想策略总归不是件坏事,下面简单介绍一下常用的数据挖掘算法,大家如果对某个算法有更好的并行策略,也请多多指教,欢迎大家交流,OK,下面先从一个最基本的均值、方差的并行开始。

均值、方差的map-reduce

一堆数字的均值、方差公式,相信都很清楚,具体怎么设计map跟reduce函数呢,可以先从计算公式出发,假设有n个数字,分别是a1,a2....an,那么均值m=(a1+a2+...an)/n,方差s=[(a1-m)^2+(a2-m)^2+....+(an-m)^2]/n

把方差公式展开来S=[(a1^2+.....an^2)+m^m*n-2*m*(a1+a2+....an)]/n,根据这个我们可以把map端的输入设定为(key,a1),输出设定为(1,(n1,sum1,var1)),n1表示每个worker所计算的数字的个数,sum1是这些数字的和(例如a1+a2+a3...),var1是这些数字的平方和(例如a1^2+a2^2+...)

reduce端接收到这些信息后紧接着把所有输入的n1,n2....相加得到n,把sum1,sum2...相加得到sum,那么均值m=sum/n,把var1,var2...相加得到var,那么最后的方差S=(var+m^2*n-2*m*sum)/n,reduce输出(1,(m,S))。

算法代码是基于mrjob的实现

KNN算法的map-reduce

KNN算法作为机器学习里面经典的分类算法,它简单有效,但很粗暴,是一个非参模型(非参并非指算法没有参数,而是说它没有假设底层数据的分布,尽管该算法的有效性要遵循流行/聚类假设),算法具体的步骤如伪代码所示

foriintest_data

从train_data中找与i样本最相近的K个样本(K是参数,过小引起过拟合,过大引起欠拟合)

衡量相近的标准有多种(欧氏距离,马氏距离等等)

把这K个样本的标签出现最多的那个赋予给i

endfor

从上面的代码可以看出该算法的计算量也是非常大的,但有个好处是非常适合拆分计算步骤,进行并行处理,具体设计map函数跟reduce函数如下

map过程:每个worker节点load测试集和部分训练集到本地(当然也可以训练集和部分测试集,但感觉是不是很浪费磁盘?),map的输入是这不废话么。。。具体的key是样本行号,value是样本的属性跟标签,map的输出key是测试样本的行号,value是某个训练样本的标签跟距离,具体的map函数伪代码如下

forjintrain_data

取出j里面的标签L

计算i与j的距离D

context.write(测试样本行号,vector(L,D))

reduce过程:这个相对就比较简单,对输入键值对,对同一个key的(L,D)对D进行排序,取出前K个L标签,计算出现最多的那个标签,即为该key的结果。

总结:上面是一个最基本的knn的map-reduce过程,正常情况下我们reduce的机器一般小于map的机器,如果完全把map的输出,全扔到reduce那边,会造成reduce过程耗时,一个优化的方向就是在map的最后阶段,我们直接对每个key取前K个结果,这样就更合理的利用了计算资源,另外高维情况下,近邻的查找一般用局部敏感哈希算法。

朴素贝叶斯算法的map-reduce

包括先验概率、每个属性的值在特定类别下的条件概率,下面以一个例子详细说明map-reduce过程,假设数据集如下所示

行号

类别

性别

风强度

温度

01

02

03

中等

首先把属性都进行0/1编码(把属性连续化的一个好方法),效果如下所示

类别(好)

类别(坏)

性别(男)

性别(女)

风强度(强)

风强度(中等)

风强度(弱)

温度(热)

温度(冷)

1

0

然后map的输入是<行号,样本>,在map中作如下操作,对于每条记录record1=[[1,0],[1,0],[1,0,0],[1,0]],record2=[[0,1],[0,1],[0,0,1],[0,1]],record3=[[0,1],[1,0],[0,1,0],[1,0]],然后把标签拆分,把类别作为key,这样map的输出端就是<类别,record1..n>,

reduce接收到后,进行如下处理对于每个record1转化成矩阵形式

key=1key=0key=0

record1=1record2=1record3=1

1,00,11,0

1,0,00,0,10,1,0

对于每一个类别相同的record相加得到

sum(类别=1)=1,sum(类别=0)=2

1,01,1

1,0,00,1,1

对上面进行归一化,得到

sum(类别=1)=1,sum(类别=0)=1

1,01/2,1/2

1,0,00,1/2,1/2

最后输出的就是这两个东东了

具体分类的时候,假设一个test样本是(女,强,热)

P(好/(女,强,热))=P(好)*P(女/好)*P(强/好)*P(热/好)

P(坏/(女,强,热))=P(坏)*P(女/坏)*P(强/坏)*P(热/坏)

比较上面两个概率的大小就好了,另外文中举的这个例子不太好,出现了P(女/好)=0,样本足够的情况下是不会的等于零的,即使真出现了0的情况,也可以用拉普拉斯平滑掉就好了。

另外一种思路:map端输出<'好',1>,<'好,男',1>,<'好,强',1>,<'好,弱',1>,。。。。,reduce端输出那些key的sum和。总来说跟前一种做法是差不多,都是求各种频数

THE END
1.最强总结,十大机器算法!!作为入门机器学习的同学,很多常用的算法是不是不是很熟悉,没事! 今儿这一篇文章,必然会给大家一个完整的交代~ 点赞、收藏起来,慢慢学习~ 基本的机器学习算法: ·线性回归算发 ·支持向量机算法 ·最近邻居/k-近邻算法 ·逻辑回归算法 ·决策树算法 https://mp.weixin.qq.com/s?__biz=MzI2OTE0ODY5Mw==&mid=2247525985&idx=1&sn=cf011faecac3617cd721a09791cd1da5&chksm=eb8e093e1bfc7026142b9dd8a53980d31da949fb7292dbc425fc5f054948dfd63e7892331949&scene=27
2.最常用的c语言算法有哪些大家知道最常用的c语言算法有哪些吗?下面小编为大家整理了最常用的c语言算法,希望能帮到大家! 一、基本算法 1.交换(两量交换借助第三者) 例1、任意读入两个整数,将二者的值交换后输出。 main() {int a,b,t; scanf("%d%d",&a,&b); printf("%d,%d ",a,b); https://www.oh100.com/kaoshi/c/547898.html
3.罗戈网常用的需求预测算法有哪些?常用的需求预测算法有哪些? 定量分析之时间序列典型算法简介 移动平均法 字面意思了,比如计算5月的预测,可以使用2,3,4三个月的实际值取平均值计算5月的预测值,具体使用几个月的移动平均可以具体产品具体确定了;这种算法适合需求没有明显的季节性波动的产品,可以用这个方法过滤掉随机需求波动;这里假设了所有观测值http://adm3.logclub.com/articleInfo/NTYzMTU=
4.监督学习有哪些常见算法?都是如何应用的监督学习有哪些常见算法?都是如何应用的 掌握一些最常用的监督学习算法能够帮助我们解决实际问题,本文将通过很多实例进行详细介绍。 ?什么是监督学习? 监督学习是机器学习的子集,监督学习会对机器学习模型的输入数据进行标记,并对其进行练习。因此,监督模型能最大限度地预测模型的输出结果。https://www.51cto.com/article/712484.html
5.数据分析中常用的机器学习算法有哪些?数据分析中常用的机器学习算法有哪些? 在数据分析领域,机器学习算法是一种重要的工具,可以帮助我们从数据中挖掘模式、进行预测和做出决策。下面将介绍几种常用的机器学习算法。 线性回归(Linear Regression):线性回归是一种用于建立变量之间线性关系的监督学习算法。它通过拟合一个线性方程来预测输出变量的值。线性回归https://www.cda.cn/view/204542.html
6.常用的加密方式有哪些?采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密。对称加密算法中常用的算法有:DES、3DES、TDEA、Blowfish、RC2、RC4、RC5、IDEA、SKIPJACK等。 对称加密的优缺点:优点是算法公开、计算量小、加密速度快、加密效率高,安全、可认证;缺点是BS网络传输关系,密钥过多难维护https://nic.hnuu.edu.cn/10043/2023/0029457.html
7.机器学习常见算法类型都有哪些算法是程序员在学习软件编程开发技术的时候需要重点掌握的一个编程开发技术知识,而今天我们就通过案例分析来了解一下,机器学习常见算法类型都有哪些。 1.分类算法 这是一种监督学习方法。有很多算法帮助我们解决分类问题,比如K近邻、决策树、朴素贝叶斯、贝叶斯网络、逻辑回归、SVM等算法。人工神经网络和深度学习也往往用https://www.douban.com/note/782408490/
8.可逆加解密算法Java可逆加密算法有哪些优点:对称加密算法使用相同的密钥进行加密和解密,速度快,适用于大量数据加密。缺点:对称加密客户端和服务端使用相同的密钥,有被抓住的风险;需要大量的钥匙,密钥管理负担。常用的算法: DES:密钥长度可为128、192、256位 DES是一种分组加密技术,即16字节、24字节和32字节;AES:密钥长度64位 ,也就是说,8字节具有更高https://www.tulingxueyuan.cn/tlzx/jsp/2549.html
9.常用的压缩软件有哪些五种常用压缩软件介绍文件管理软件教程WinRAR 在 DOS 时代就一直具备这种优势,经过多次试验证明,WinRAR 的 RAR 格式一般要比其他的 ZIP 格式高出 10%~30% 的压缩率,尤其是它还提供了可选择的、针对多媒体数据的压缩算法。 2、对多媒体文件有独特的高压缩率算法 WinRAR 对 WAV、BMP 声音及图像文件可以用独特的多媒体压缩算法大大提高压缩率,虽然我们https://www.jb51.net/softjc/594611.html
10.600+道Java面试题及答案整理(建议收藏)28、常用的垃圾回收算法有哪些? 29、什么是内存泄漏? 30、为什么会发生内存泄漏? 31、如何防止内存泄漏? 32、什么是直接内存? 33、直接内存有什么用? 34、怎样访问直接内存? 35、常用的 JVM 调优命令有哪些? 36、常用的 JVM 问题定位工具有哪些? https://www.jianshu.com/p/dd215ead6e2e
11.人脸对齐介绍腾讯云开发者社区导语介绍人脸对齐的定义、任务、应用、常用算法以及难点 一、 人脸对齐,也叫做人脸特征点检测,图为人脸特征点例子 二、 人脸对齐有哪些应用? 1. 五官定位 2. 表情识别 3. 人脸漫画、素描生成 4.增强现实 5. 换脸 6.3D建模 三、 人脸对齐的任务 给定人脸区域 i,从该区域出发, 根据一定的规则 F,找到特征点位https://cloud.tencent.com/developer/article/1005756
12.程序员必须掌握哪些算法?程序员必须掌握的常用算法正如@力扣(LeetCode)所讲,主要包括以下内容:算法:1、排序算法:快速排序、https://www.zhihu.com/question/23148377/answer/714596562
13.常见的10种算法算法 研究的目的:是为了更有效的处理数据,提高数据运算效率。数据的运算是定义在数据的逻辑结构上,但运算的具体实现要在存储结构上进行。 参考原文:常见的10种算法 - 知乎 一般有以下几种常用运算: 检索:检索就是在数据结构里查找满足一定条件的节点。一般是给定一个某字段的值,找具有该字段值的节点。 https://blog.csdn.net/zxf347085420/article/details/136269980