用Madlib学习『机器学习』之KNN

作者: 孙辉 2017-11-24 10:43:43

前言

机器学习(ML)分为:监督学习,无监督学习,半监督学习等。

1.1 监督学习(supervised learning)

监督学习是训练神经网络和决策树的常见技术,高度依赖事先确定的分类系统给出的信息,对于神经网络,分类系统利用信息判断网络的错误,然后不断调整网络参数。对于决策树,分类系统用它来判断哪些属性提供了最多的信息。

从给定的训练数据集中学习出一个函数,当新的数据到来时,可以根据这个函数预测结果。

监督学习的训练集要求包括输入输出,也可以说是特征和目标,训练集中的目标是由人标注的。

常见的有监督学习算法:回归分析和统计分类,最典型的算法是KNN和SVM。

有监督学习最常见的就是:regression & classification

Regression:Y是实数向量,回归问题,就是拟合(x,y)的一条曲线,使得价值函数(cost function) L最小。

Classification:Y是一个有穷数(finite number),可以看做类标号,分类问题首先要给定有label的数据训练分类器,故属于有监督学习过程,分类过程中cost function l(X,Y)是X属于类Y的概率的负对数。

其中fi(X)=P(Y=i/X)。

有监督学习方法必须要有训练集与测试样本,在训练集中找规律,而对测试样本使用这种规律。

有监督学习的方法就是识别事物,识别的结果表现在给待识别数据加上了标签,因此训练样本集必须由带标签的样本组成。

1.2 名词KNN

k-Nearest Neighbors

在一个给定的数据点上找出k个最近的数据点,在分类的情况下输出输出类的多数投票值,以及在回归情况下目标值的平均值。

撸袖子

2.1 新新相映

软件是基于***的postgresql 10.0加上***的madlib 1.12。

为了操作方便,我这里使用基于docker的ubuntu 16.04安装madlib,这样以后就可以拿着这个镜像到处嗨了,以下操作就是在MAC里面进行的。

2.2 查看madlib版本

  1. #select madlib.version();

2.3 导入训练数据

  1. DROP TABLE IF EXISTS knn_train_data; 
  2. CREATE TABLE knn_train_data ( 
  3.                     id integer,  
  4.                     data integer[],  
  5.                     label float 
  6.                     ); 
  1. INSERT INTO knn_train_data VALUES 
  2. (1, '{1,1}', 1.0), 
  3. (2, '{2,2}', 1.0), 
  4. (3, '{3,3}', 1.0), 
  5. (4, '{4,4}', 1.0), 
  6. (5, '{4,5}', 1.0), 
  7. (6, '{20,50}', 0.0), 
  8. (7, '{10,31}', 0.0), 
  9. (8, '{81,13}', 0.0), 
  10. (9, '{1,111}', 0.0);
  1. SELECT * from knn_train_data ORDER BY id; 

2.4 导入测试数据

  1. DROP TABLE IF EXISTS knn_test_data; 
  2. CREATE TABLE knn_test_data ( 
  3.                     id integer,  
  4.                     data integer[] 
  5.                     ); 
  1. INSERT INTO knn_test_data VALUES 
  2. (1'{2,1}'), 
  3. (2'{2,6}'), 
  4. (3'{15,40}'), 
  5. (4'{12,1}'), 
  6. (5'{2,90}'), 
  7. (6'{50,45}');
  1. SELECT * from knn_test_data ORDER BY id; 

2.5 分类训练

  1. SELECT * FROM madlib.knn( 
  2.                 'knn_train_data',      -- 训练数据表名 
  3.                 'data',                -- 训练数据所在列 
  4.                 'label',               -- 训练标签 
  5.                 'knn_test_data',       -- 测试数据表名 
  6.                 'data',                -- 测试数据所在列 
  7.                 'id',                  -- 测试数据列名id 
  8.                 'madlib_knn_result_classification',  -- 结果输出 
  9.                 'c',                   -- 分类 
  10.                  3                     -- 最近相邻数 
  11.                 );               

2.6 查看分类输出结果

  1. SELECT * from madlib_knn_result_classification ORDER BY id; 

图形化示例:

2.7 进行回归

  1. DROP TABLE IF EXISTS madlib_knn_result_regression; 
  2. SELECT * FROM madlib.knn( 
  3.                 'knn_train_data',      -- 训练数据表名 
  4.                 'data',                -- 训练数据所在列 
  5.                 'label',               -- 训练标签 
  6.                 'knn_test_data',       -- 测试数据表名 
  7.                 'data',                -- 测试数据所在列 
  8.                 'id',                  -- 测试数据列名id 
  9.                 'madlib_knn_result_regression',  --结果输出 
  10.                 'r',                   -- 回归 
  11.                  3                     -- 最近相邻数 
  12.                 ); 

2.8 查看回归输出结果

  1. SELECT * from madlib_knn_result_regression ORDER BY id; 

图形化示例:

小结

postgresql提供了对结构化数据的存储和加工的便捷,madlib提供了ML算法的支持,强强联手,相得益彰。

【作者简介】孙辉,DataHunter技术总监。曾在索尼等知名公司任职,先后担任过系统架构、技术总监等职位,负责过尚邮,索爱中文输入法,快牙,mPush(魔推)等知名产品研发。拥有15年深厚IT技术行业经验,熟悉掌控产品研发各个环节,有丰富的后端、前端、运维、DBA、测试经验。

【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】

Madlib 机器学习
上一篇:黑箱难题仍在阻碍深度学习的普及 下一篇:深入浅出解读卷积神经网络
评论
取消
暂无评论,快去成为第一个评论的人吧

更多资讯推荐

GPT-3:被捧上天的流量巨星,却有重大缺陷,很危险...

去年当红的流量明星非GPT-3莫属,能答题、写文章,做翻译,还能生成代码,做数学推理,不断被人们吹捧。不过,过誉的背后也有人开始质疑,GPT-3真的达到了无所不能的地步了吗?

佚名 ·  17h前
女子被困浴室超30小时,危急情况AI能否救人于水火?

本文介绍了几种危急情况下AI技术救人姓名的案例,探讨了危急情况下是否可以信任AI的问题。

佚名 ·  19h前
机器学习隐私研究新进展:数据增强风险被低估,新算法“降服”维数依赖

如今,数据是推动人工智能创新的核心要素。但数据的安全和隐私问题限制了数据充分释放其潜能。一直以来,微软都倡导打造负责任的人工智能,并正在开发和利用多种技术以提供更强大的隐私保护、确保数据安全。

张辉帅 ·  23h前
谷歌气球的人工智能为何令开发者自己感到惊奇

北京时间 3 月 5 日消息,使用人工智能的算法正在尝试以意想不到的技巧来解决问题,这让它们的开发者感到惊讶。但与此同时,这也引发了人们对如何控制人工智能的担忧。

任天 ·  1天前
浙大机器鱼登Nature:深入万米马里亚纳海沟,里程碑式突破

3 月 4 日,最新一期《自然》杂志以封面文章的形式介绍了由浙江大学、之江实验室、中国科学院深海科学与工程研究所、国防科技大学、上海海洋大学、大连海事大学等团队共同完成的新研究,论文标题为《Self-powered soft robot in the Mariana Trench》。

机器之心 ·  1天前
如何爬升用于机器学习的测试集

在本教程中,您将发现如何爬升用于机器学习的测试集。完成本教程后,您将知道一下内容,一起来看看吧。

沂水寒城 ·  1天前
三个场景,用机器学习简化保险业务问题

在实际索赔案例中,保险机构往往需要使用涉及个人、场景乃至其他影响因素的大量数据。如果再结合具体保险条款的限制,整个评判体系将变得更为复杂。此外,保险业务还划分为大量险种——人寿保险与汽车保险明显就不是一回事——其各自对应不同的数据与流程。

科技行者 ·  2天前
翻滚跳跃、集群飞行,MIT新一代类昆虫无人机还能承受人为撞击

近日,MIT 电子工程与计算机科学系(EECS)助理教授 Kevin Yufeng Chen 构建了一种接近昆虫敏捷度的系统,并开发了一个无可比拟敏捷型和回弹性的类昆虫无人机(insect-sized drone)。

机器之心 ·  2天前
Copyright©2005-2021 51CTO.COM 版权所有 未经许可 请勿转载