数据专栏

智能大数据搬运工,你想要的我们都有

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

前言
关于 Python 的可视化我们已经陆陆续续的出了10期,包括饼图、条形图、直方图、箱线图、散点图、折线图、面积图、雷达图、热力图和树地图。如果你跟着我的文章作了一一的学习之后,是不是想动动手来做一个可视化的综合项目呢?不错,如果想的的话,一定要坚持到底哦~
如果你需要绘图的话,先实现这期的数据收集,即如何从豌豆荚的官网中抓取到“网上购物”类APP的所有信息,包括APP对应的下载人数、好评率、评价人数、安装包大小、所属公司等详细信息。关于这一部分的数据抓取,我们仍然使用爬虫利器Python来完成,对于每一个感兴趣的朋友,希望能够详细的安装流程走一遍,既有助于你对Python爬虫的认识,也有助于你知道爬虫的逻辑。
爬虫步骤 爬下“ 网上购物”类APP下的5种子分类链接

由上图可知,由于“ 网上购物”类APP主页下的全部APP只有42页,一共只有1008个APP,如果想获得更多APP的信息,可以将这个大类别拆分到商城、团购、优惠、快递和全球导购5个子分类,发现每个子类别下又有42页(其实网站的数据只能到41页),这样不就可以获得更多APP信息了嘛~~所以,第一步需要做的上就是如何将5个子分类的链接获取到,然后基于子分类生成规律的url(即含page的url)。
# =========== Python3.X Jupyter ===========
# =========== 步骤一、抓取每一个子分类的URL ===========
# 导入第三方包
import requests
from bs4 import BeautifulSoup
import numpy as np
import time
import pandas as pd
# 设置请求头 headers = { ‘User-Agent’ : ‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36’ }
# 豌豆荚应用首页 > 安卓软件分类 > 网上购物 > 商城下载的链接
url = ‘http://www.wandoujia.com/category/5017_591’
# 发送请求
res = requests.get(url, headers = headers).text
# 解析HTML
soup = BeautifulSoup(res, ‘html.parser’ )
# 商城类app的5个分类链接及名称
category_urls = [i.findAll( ‘a’ )[ 0 ][ ‘href’ ] for i in soup.findAll( ‘ul’ ,{ ‘class’ : ‘switch-tab cate-tab’ })[ 0 ].findAll( ‘li’ )[ 1 :]] category_names = [i.text.strip() for i in soup.findAll( ‘ul’ ,{ ‘class’ : ‘switch-tab cate-tab’ })[ 0 ].findAll( ‘li’ )[ 1 :]]
生成规律的urls
你会发现,在某个子分类下,虽然都有42页,但你去点击第2页、第3页…时,你会发现这些子分类下的页数链接是存在规律的,即:
http://www.wandoujia.com/category/5017_591/1
http://www.wandoujia.com/category/5017_591/2
这就是“商城”类APP的前两页URL。所以只需要对每一个类别APP链接的url后跟上这些page数值,就可以得到所有子分类下的所有页数的链接。如果把每个分类下的40页所有APP都遍历的抓一次,会比较耗费时间,故这里就暂时针对每个分类的前10页APP数据进行遍历,生成如下的链接。
# =========== 步骤二、生成所有子分类及页码的URL ===========
# 各类别app的前10页
urls names = [] urls = []
for url,name in zip(category_urls,category_names):
for i in range( 1 , 11 ): names.append(name) urls.append(url+ ‘/’ +str(i))
根据规律的url抓取出APP的名称及其超链接
由于我们需要的详细信息,是通过点击每一个APP之后才能得到的,所以首先需要获得这些通过点击APP之后的超链接,而这些超链接正如下图所示,存放在HTML的h2标签下:

# =========== 步骤三、抓取子分类页下各APP对应的URL ===========
# 根据每一页的url抓出app对应的链接
app_urls = []
for url in urls: res = requests.get(url, headers = headers).text soup = BeautifulSoup(res, ‘html.parser’ )
# 返回每个页面中app对应的链接 # 为防止报错,这里做了异常处理 try : app_lists = soup.findAll( ‘ul’ ,{ ‘id’ : ‘j-tag-list’ })[ 0 ] app_urls.extend([i.findAll( ‘a’ )[ 0 ][ ‘href’ ] for i in app_lists.findAll( ‘h2’ ,{ ‘class’ : ‘app-title-h2’ })])
except :
pass
第二步的目的就是找到每一个APP背后的超链接是什么,故根据上面的代码,可以得到1204个APP对应的超链接。当点击子分类页下的APP后,就来到了APP的详情页,这些信息都规律的存放在一些标记底下,如APP名称在p标记下、APP分类在dl标记下等。那我们就可以这些监控出来的标记进行数据的抓取了:

# =========== 步骤四、爬虫抓取各APP的详细信息 ===========
# 构建空的列表,用于数据的存储
appname = [] appcategory = [] install = [] love = [] comments = [] size = [] update = [] version = [] platform = [] company = []
for url in app_urls: res = requests.get(url, headers = headers).text soup = BeautifulSoup(res, ‘html.parser’ )
try :
# 通过标记抓取APP的信息 appname.append(soup.find( ‘p’ ,{ ‘class’ : ‘app-name’ }).text.strip()) appcategory.append( ‘-‘ .join(soup.find( ‘dl’ ,{ ‘class’ : ‘infos-list’ }).findAll( ‘dd’ )[ 1 ].text.strip().split( ‘\n’ ))) install.append(soup.find( ‘span’ ,{ ‘class’ : ‘item install’ }).find( ‘i’ ).text) love.append(soup.find( ‘span’ ,{ ‘class’ : ‘item love’ }).find( ‘i’ ).text) comments.append(soup.find( ‘div’ ,{ ‘class’ : ‘comment-area’ }).find( ‘i’ ).text) size.append(soup.find( ‘dl’ ,{ ‘class’ : ‘infos-list’ }).findAll( ‘dd’ )[ 0 ].text.strip()) update.append(soup.find( ‘dl’ ,{ ‘class’ : ‘infos-list’ }).findAll( ‘dd’ )[ 3 ].text.strip()) version.append(soup.find( ‘dl’ ,{ ‘class’ : ‘infos-list’ }).findAll( ‘dd’ )[ 4 ].text.strip()) platform.append(soup.find( ‘dl’ ,{ ‘class’ : ‘infos-list’ }).findAll( ‘dd’ )[ 5 ].text.strip().split( ‘\n’ )[ 0 ]) company.append(soup.find( ‘dl’ ,{ ‘class’ : ‘infos-list’ }).findAll( ‘dd’ )[ 6 ].text.strip())
except :
pass
根据以上的url抓取出APP的详细信息
上面的一段代码会耗费一些时间,会根据不同的电脑有所差异,我的电脑跑了约20分钟。虽然等待了一些时间,但当结果正常的存储后,心里还是有一些兴奋的。接下来就是要将这些列表的存储结果输出到本地的Excel表格中,这样便于后期的分析使用。
# =========== 步骤五、数据存储 ===========
# 将存储的列表值写入到字典,并进行数据框的转换
apps = pd.DataFrame({ ‘appname’ :appname, ‘appcategory’ :appcategory,
‘install’ :install, ‘love’ :love, ‘comments’ :comments, ‘size’ :size,
‘update’ :update, ‘version’ :version, ‘platform’ :platform, ‘company’ :company})
# 数据导出
apps.to_excel( ‘apps.xlsx’ , index = False )
回到你Python的工作空间,打开apps的Excel文件,如果上面你的运行没有任何问题的话,存储的数据将会是如下的结果:
结语
OK,这期关于豌豆荚APP应用的爬虫案例就讲到这里,下一期我们将基于这个数据进行数据的可视化分析。如果你有问题,欢迎在公众号的留言区域表达你的疑问。同时,也欢迎各位朋友继续转发与分享文中的内容,让跟多的人学习和操作。最后,本文相关的Python脚本和PDF版本已存放到百度云盘,可以通过下面的链接获取:
链接: https://pan.baidu.com/s/1geDRddT 密码: cud2
欢迎关注“每天进步一点点2015,小编陪你一起学习~

本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2017-10-26 07:40:00
本篇文章介绍使用 Python 和OpenCV对图像进行模板匹配和识别。模板匹配是在图像中寻找和识别模板的一种简单的方法。以下是具体的步骤及代码。
首先导入所需库文件,numpy和cv2。 #导入所需库文件
import cv2
import numpy as np
然后加载原始图像和要搜索的图像模板。OpenCV对原始图像进行处理,创建一个灰度版本,在灰度图像里进行处理和查找匹配。然后使用相同的坐标在原始图像中进行还原并输出。 #加载原始RGB图像
img_rgb = cv2.imread(“photo.jpg”)
#创建一个原始图像的灰度版本,所有操作在灰度版本中处理,然后在RGB图像中使用相同坐标还原
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY) #加载将要搜索的图像模板
template = cv2.imread(‘face.jpg’,0)
#记录图像模板的尺寸
w, h = template.shape[::-1]
这里我们分别输出并查看原始图像,原始图像的灰度版本,以及图像模板。

#查看三组图像(图像标签名称,文件名称)
cv2.imshow(‘rgb’,img_rgb)
cv2.imshow(‘gray’,img_gray)
cv2.imshow(‘template’,template)
cv2.waitKey(0)
cv2.destroyAllWindows()
使用matchTemplate在原始图像中查找并匹配图像模板中的内容,并设置阈值。 #使用matchTemplate对原始灰度图像和图像模板进行匹配
res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)
#设定阈值
threshold = 0.7
#res大于70%
loc = np.where( res >= threshold)
匹配完成后在原始图像中使用灰度图像的坐标对原始图像进行标记。 #使用灰度图像中的坐标对原始RGB图像进行标记
for pt in zip(*loc[::-1]):
cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (7,249,151), 2)
#显示图像
cv2.imshow(‘Detected’,img_rgb)
cv2.waitKey(0)
cv2.destroyAllWindows()

以下为完整代码: def mathc_img(image,Target,value):
import cv2
import numpy as np
img_rgb = cv2.imread(image)
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
template = cv2.imread(Target,0)
w, h = template.shape[::-1]
res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)
threshold = value
loc = np.where( res >= threshold)
for pt in zip(*loc[::-1]):
cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (7,249,151), 2)
cv2.imshow(‘Detected’,img_rgb)
cv2.waitKey(0)
cv2.destroyAllWindows() image=(“photo.jpg”)
Target=(‘face.jpg’)
value=0.9
mathc_img(image,Target,value)
本文为专栏文章,来自:蓝鲸,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/48289.html 。
数据分析
2017-09-30 08:22:00
发展数字普惠金融,用 大数据 的方式做风险控制必不可少。一是因为很多用户没有信用记录,缺少央行的征信数据,而用互联网数据做风控,可以覆盖到银行照顾不及的借款人;另外,用大数据的方式可以实现快速自动放贷,节省了人工审核的时间,特别适合小额量大的场景。
聚信立就是一家大数据公司,它主要为客户提供风险控制方面的服务,目标对象是新金融公司,包括消费金融及小贷P2P等公司。与银行或消费金融等公司的合作,它均是提供标准化的数据端产品,如反欺诈、反多头借贷和信用风险。
它在2015年获得过 京东 的A轮融资,也算是与这家电商巨头的信贷产品京东白条十分契合。值得一提的是,2015年京东还投资了美国 Fintech 公司ZestFinance,它专注于做大数据信用评级,主要面向缺乏信用评分的人。
聚信立创始人罗皓表示,公司提供的是B2B企业信息服务,通过工具帮客户获取数据,服务内容也包括了数据清洗、整合与分析等。作为一家初创公司,它获取数据的方式是通过用户授权与爬虫等技术手段。比如用户在向网贷或消费金融公司申请信贷时,需要授权自己的电商消费、社交网络等信息,而聚信立通过为前述公司提供数据服务,可以间接获取用户数据,并进一步作出信用分析。
聚信立已经与近600家公司有合作,主要客户偏新金融领域,包括消费金融,线上现金小微贷公司,及银行的直销银行等。
大数据风控 的竞争点在哪?
罗皓认为,做大数据风控无非是提供三种服务,一是数据收集;二是数据加工与数据建模;最后是提供分析与服务,如做数据方面类咨询项目。如何科学地管理整个风险决策系统,怎么样做日常的数据化的风险运营,这一块也很重要,不过国内能把这块做到专业的不多。
当然,不同公司对风控服务的需求也不一样。在银行等传统金融机构,需求更多是偏后端,因为前端 数据分析 、收集、整合与加工,对它们来说问题都不大。但对新金融公司来说,其在数据收集与加工上就有所欠缺,这反而会成为各风控服务公司的竞争点。
这与国内个人信用体系覆盖率低、评分系统和数据不健全有关,也就要求先有消费场景等方式获取数据,再进行信贷。
罗皓告诉雷锋网(搜索“雷锋网”公众号关注),聚信立的优势也是在此。一方面在数据来源渠道上,通过工具和用户授权的方式帮客户收集互联网信息,毕竟风控“无非是用信息判断借款人的风险”。另一方面对信贷行业的风险控制有较深的理解,在数据加工上有很多经验;因为每一种贷款或借款人是不一样的,不同的行业不同的区域,风险都不一样,需要针对行业做合适的数据加工,把原始数据经过分析变成互联网信用报告,帮助理解与甄别好坏客户。
不过在以分析工具作为切入点后,聚信立的策略也会不断调整。他认为这是个动态的过程:
起初会是一家工具型公司,竞争力更偏IT,比如数据后台,及数据获取的系统等。
但第二阶段会成为一家数据公司,处理过的借款人既有数据(包括查询数据)会带来先发优势,再结合现有数据的分析,会形成未来的优势。
第三阶段则会因为与客户的连接,产生新的竞争点。具体而言,未来还会在资产端给客户提供风控以外的应用层面产品,比如不完全是解决风控问题,还可能是资金、流量互换的问题。
罗皓也认为,未来做风控的公司竞争点更多是在数据源和数据加工这方面,因为分析和建模会越来越标准化及开源化。很多公司也会切入到交易里去,而不是只提供数据或风控的解决方案给客户,这应该会是最大的变化。
目前市面上聚信立的竞品公司还不多,更多是互补的关系,比如用设备指纹反欺诈,基于消费标签的风险数据、风险建模,这些领域都有对应的公司。在基于互联网账户类的风险控制中,各家专注的领域不太一样,没有直接竞争关系,很多用户会同时使用几家公司的数据和反欺诈方案。
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2016-09-22 14:40:00
如何画好统计图。 总的来说,我看统计图,有四个标准: 准确、有效、简洁、美观! 这次的分享,从这四个方面谈一谈如何让大家画的统计图成为 实力派(准确&有效)+偶像派(简洁&美观)。
大家好,我是水妈,在大学工作,主要教 统计学 。今天代表狗熊会,发起一个新的系列, 丑图百讲 。这个系列不讲炫酷的、高大上的统计图,而是给大家分享如何画好 最基础的统计图 。
读者可能会问,为什么要分享统计画图?熊大说了, 数据分析 的第一步,是梳理业务目标,接下来才是分析数据。水妈认为,在分析数据环节,第一步是做描述分析。这里的描述分析,包括三个内容:一、明确行业背景和变量含义;二、用统计图、统计表以及各种统计指标对数据进行描述;三、适当的解读描述的结果,发现问题,支撑后续的建模。其中,第二个环节尤为重要,因为 统计图是最容易给人留下深刻印象的 。做好了,能给你的报告或者展示加分,帮助你发现数据当中的问题。做不好,那就是一场灾难。
读者可能又要问,最基础的统计图有什么好讲的啊。我看过太多学生的报告,学生看自己画的图,就像是看自己家孩子,越看越喜欢,殊不知别人早就受不了你在朋友圈天天晒娃娃了。大家不要觉得画最最基础的统计图这件事情非常简单容易,可谓不画不知道,一画吓一跳。真的自己动手去画,才知道自己画出来的图有多丑。
今天是这个系列的第一期,我们先开个头,我要概括性的讲讲,如何画好统计图。 总的来说,我看统计图,有四个标准: 准确、有效、简洁、美观! 这次的分享,从这四个方面谈一谈如何让大家画的统计图成为 实力派(准确&有效)+偶像派(简洁&美观)。
成为实力派,至少要做到“准确”+“有效”。这事儿跟穿衣服挺像,为什么这么说呢?
首先说 “准确” 。这是对于初学者最基本的要求, 能够使用正确的统计图去描述不同类型的数据 。比如,对于离散型的变量(性别、职业等),可以画饼图或者柱状图;对于连续型的变量(年龄、工资等),可以画直方图或者箱线图;对于时间序列变量(GDP、CPI等),可以画折线图。 这就好比不同的季节,要穿不同的衣服 。春天穿风衣,冬天穿羽绒服。你非要冬天穿比基尼,这不是好不好看的问题,而是会被冻死。因此大家 在画图之前,要先弄清变量的类型,再去选择合适的统计图 。
然后说 “有效” 。什么叫做有效的描述,我举一个例子。现在我有两个变量,一个是性别,一个是年龄,我想比较男性和女性的年龄,选择什么样的统计图才好呢?大家可以先自己思考一下。我给大家展示一组我的学生画的图。
学生的选择是对男女性分别画了两个直方图。我的评语是:看出来区别了,男性是绿色,女性是粉色!这虽然是句玩笑话,但我真的看不出明显的对比。你可能要问,年龄不是连续型变量么,你刚才不是说画直方图么?分组画直方图,只能够满足刚才说的“准确”,但却达不到“有效”。大家看我下面画的分组箱线图,无论在平均水平,还是波动程度上,都比分组直方图更加有效的体现了不同性别的年龄对比。所以,画图的时候,在满足了“准确”的前提下,我们要多动脑筋,如何能让统计图更加有效的展示你的数据。说白了, “有效”这事儿,好比在不同场合穿不同的衣服。 上班时候穿职业装,毕业典礼的时候穿学士服。你非要在跑步的时候穿婚纱,虽然也能跑,但那能跑得快么!
“准确”和“有效”,不是那么容易达到的。你得平时多画图,各种数据都摸索着画。就跟演员演戏似的,各种角色都演演,才有可能成为实力派。 下面再讲讲,如何让大家画的统计图成为偶像派。这事儿跟化妆挺像,包括“简洁”和“美观”这两点。
先说说 “简洁” 。还是举一个例子。我想对年龄这个变量做统计图。下面还是这个学生画的图。你说这没什么问题啊,连续型变量,画直方图啊。然而我一下就被每个柱子底下的黑色线段吸引了注意力。学生告诉我,这叫轴须图。我心想这什么鬼啊。但是作为一个学了十几年统计的人,不能在学生面前露怯呀,我就淡定的说,你给我解释解释。结果学生就说不上来了。大家想象一下,如果这件事情发生在做展示的现场,就很悲剧,但凡有一个人提出这种问题,听众的注意力就集中在这个不必要的环节上面了。在画图阶段,过于技术的细节,如果一句话说不清,就不要展示。 这就好比你画了个妆,眼线唇膏都画的不错,最后你非得用马克笔把两条眉毛描的老粗,谁还能看到你的明媚双眸和樱桃小口啊,全都看你的眉毛了。
最后谈谈 “美观” 。说了半天,你要问,到底什么样的统计图在水妈心中是好看的啊。我展示三个在我心目中,非常美观的图。它们也同时满足准确、有效和简洁的标准。第一个是非常普通的饼图,统计的是电影《速度与激情7》里面,主演范迪塞尔开的车的品牌的分布,我从www.concavebt.cn这个网站上看到的。这个饼图干干净净,标注清楚,“饼”上还贴心的印了车的logo。第二个属于一种树图(tree map),来自谷歌的一份报告,我从一个时尚博主那里看到的。描述的是在谷歌上面搜索某种裙子的关键词当中,出现的各种质地的搜索频数的分布。这个图做的非常巧妙,每个格子直接用裙子的质地当作背景,格子的面积就代表搜索这种质地的占比,可以说是赏心悦目。第三个是我常玩的游戏里面出现的统计图,一个非常简单的柱状图。它的配色与游戏背景配合的天衣无缝,出现的恰到好处。 所以说,“美观”这事儿,考验的是你化妆的整体技术,以及对于细节的把握。浓妆淡抹总相宜,让人瞅着舒服就是你的本事。
总结一下今天的分享,想画好统计图,要做到四点。 头两点是准确+有效,先让你的统计图成为实力派。后面两点是简洁+美观,在实力派的基础上,做一个偶像派 。希望大家多去发现美的统计图,欣赏美的统计图,画出美的统计图。谢谢大家!
p.s. 水妈在教学过程中,精心积累了一个丑图库,我会在丑图百讲这个系列,不断跟大家分享丑图库中的精品。敬请期待! 作者:水妈 毕业于北京大学光华管理学院商务统计系,女博士一枚 师从王汉生教授,狗熊会熊孩子一只 现任职于中央财经大学统计与数学学院,年轻讲师一个 在理论研究方面,关注高维数据和社交网络数据,在JASA和Annals上均有发表 在业界实践方面,关注车联网行业的数据分析
来源:狗熊会 作者:水妈
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2016-05-29 14:16:00
我们生活在一个充满颠覆和变革的时代,而这并不是件坏事。产业将会转型,大企业面临衰亡。为了给消费者提供更好、更快、更低价的体验,企业家们逐步对低效的企业、产品及服务进行优化及重塑,旧有的系统将会瓦解。
华盛顿大学奥林商学院的研究表明,在未来十年内,当今世界 500 强企业中将有 40%不复存在。 在接下来的十年里,随着大数据 及人工智能 的崛起,颠覆医疗、金融及保险这三个行业的时机已经成熟。本文将就此进行简要分析。
当然, 大数据 和 人工智能 会对各行各业多多少少都造成冲击,而对这三个行业来说,情况尤甚。
1、医疗固有的医疗体系已经支离破碎,颠覆已如燎原之火,一触即发。已经有成百上千家创业公司介入这一领域,让人们可以成为 “自己健康的主人”,以此作为传统医疗的补充或索性取而代之。
新型人工智能医疗应当是免费或近乎免费的,且远远胜过传统医疗,以至于人们将果断放弃传统医疗,选择前者。这无疑会令现有的医疗体系分崩离析。
想想谷歌时代的图书馆——想想移动通讯时代的固定座机……想想优步时代的出租车……想想 Skype 时代的长途电话……我还可以说出很多很多这样的例子。
那么,我们该期待什么?奖金高达一千万美元的高通三录仪 XPRIZE 竞赛将孕育出像《星际迷航》中的三录仪那样的设备,使消费者能随时随地进行自我诊断。厌倦上医院了?沃尔格林(美国药店连锁机构——译者注)和 CVS(美国医药电商企业——译者注)正在为成为你的个人医疗中心而努力。
我的公司 Human Longevity Inc. (HLI) 将为你的基因组的所有 32 亿个碱基对进行测序,并检测你的肠道菌群,然后将你的数据与数据库中无数其他用户的资料进行比对。
这样的 数据挖掘 可以使你(你的 AI 或者你的医生)提前了解哪些疾病可能对你造成威胁,使你的个人医疗变得具有主动性和预见性。HLI 的目标是为客户度身打造定制服务,使你服的药针对你的病症。HLI 的目标还包括为你增加 30年 以上的健康寿命,让 100 岁成为新的花甲之年。
除了基因组学之外,干细胞科学领域也在酝酿一场变革,用我朋友也是 HLI 联合创始人鲍勃·哈里利的话说,将会 “让人类身体内的再生式发动机焕然一新。” 我们并不想跟慢性疾病做斗争,我们所做的近似于培育备用的肺、肝、心脏和肾来替换衰老患病的器官。
基因组学和干细胞固然强大,生物传感器领域中的革命也旗鼓相当。诸如谷歌、苹果和三星以及其他很多公司正争相对此投入大量资金。
这些传感器将持续对你的健康状况进行监测——心率、血压、血糖,甚至肿瘤或心脏损伤释放出的微小分子都难逃它们的法眼。与你的基因组相匹配,传感器监测到的数据将被无缝上传至你的健康管理 app,在疾病及伤害来临之前发出预警。
那么谁来支付这笔开销呢?很可能并不是你。也许是你的保险公司,因为当你不需要住院且寿命延长时,他们能多挣不少钱呢。
2、金融金融是另一个即将迎来巨变的亿万美元级产业。
作为中间商的财务顾问和经纪人将在未来十年中日渐式微。基于大数据的人工智能将使一切商品都变得更物美价廉,运转速度也更快。
举例而言,我在 IBM 沃森项目组工作的朋友们正致力于为沃森生态系统研发出色的各种应用。想象一下,有某种科技可以读遍你过去几年中所有社交媒体上的帖子,通过情绪分析判断出你喜欢的东西和价值观。比如你喜欢科技和时尚,讨厌喝酒和暴力;喜欢欧洲但不喜欢俄罗斯等等。
对千禧一代来说,个人观点就决定了一个人会从何获利。AI 可以轻易从上万家公司中筛选并在规避风险的前提下向你推荐合你胃口的投资项目。而且,AI 还可以监控你的社交媒体及全球市场,并以此为依据让你随心所欲调整投资组合。
另一对我们影响深远的是利用高级机器学习及数据挖掘技术在股票市场上执行算法交易的 AI 公司,这种算法交易是人类永远难以望其项背的。更厉害的是基于大数据的 AI 贸易。人类社会正逐渐变成一个充斥着传感器且万物互联的世界。
这将使你的 AI 变得 “神一般全知全能”,你(或你的 AI)会对世间任何地方发生的一切无所不知。我是什么意思呢?如今,已经有公司在利用卫星捕捉并计算大型超市外所停车辆的图像及数量了。利用这些数据,无需等到季度盈利报告,便可间接得知这家企业的收入如何。
现在,将这种泛在知识的概念延伸至万物,你就会明白金融产业将产生何等变化。
3、保险保险是与概率和不完全认知打交道的古老行业。然而在 “完全认知” 的新纪元中,很多事物都将不同于昨日。我举几个例子。
健康与人寿保险
今天,前进汽车保险公司为用户推出一项特别优惠,前提是你让他们在你的车里安装一个能够监测你的车速和加速度的传感器,其实也就是搜集数据来判断你是个好司机还是马路杀手。
那么,将车子想象成你的身体。想要上便宜的保险?那就让保险公司对你的健康情况进行监测,对你的基因组进行测序。
需要强调的是,这并不代表否定你的保险或是趁着你的基因不好就大敲竹杠——事实上 2008年 美国已经出台了名为《反基因歧视法案》的相关法规,明令禁止因为基因问题歧视个体。我说的创新是指在你允许的前提下,让保险公司以更为优惠的价格帮助你活得更健康长久。这完全是一种双赢。
保险业还面临着另一种致命一击。
比方说,我的基因组相对而言不受重大疾病困扰:我不抽烟,饮食健康,每天锻炼。经过传感器认证后,我将这些信息发布在我的社交网络上,同时写上:“嘿,有没有其他同样基因健康、饮食习惯良好且每天锻炼的人想和我一起自保险的?来吧,我们可以组成低风险合作伙伴!”如果真的发生这种事,占 10%份额的最好的保险阵营退出市场,整个保险业将完全垮掉。
目前为止,这种事和 “P2P 保险” 还不可能发生。我说的是目前。
“等等,” 你会说,“有相关规定来阻止你这么做啊。” 是的,当然,规定是有的,但也只是目前。正如 Uber 与出租车间的大战,规定也只能让旧秩序苟延残喘一阵罢了。
终究,随着汽车闪亮登场,马鞭制造商还是会退出历史舞台,你懂我的意思。
汽车保险
我在上文提及了前进汽车保险公司的优惠项目,但是再想象一下下一步……在无人驾驶车大行其道的时代,也许就不需要汽车保险了。无人车不(或者说几乎不)会出事,那还保什么险呢?或许对保险业来说更可怕的前景是,有朝一日人们连私家车都不买了。
虽然没有私家车,但是可以随时随地享受全天候的无人车服务。正如那些没有自己服务器的公司,他们用的是亚马逊和谷歌的云服务。要是连车都没有,保险也就无从谈起了。
农业保险
最后,来说说农业和农作物保险。我下面要说的也适用于其他很多我未提及的险种。
举个例子:当农作物上了冰雹险,评估损失的过程往往是昂贵而不准确的。农场主和保险评估员需要在田间地头奔波,拍下大量照片。
然而在泛在成像(例如近地轨道卫星和无人机)和泛在感应(现场传感器)的时代,这种评估轻轻松松便可完成。
众多创业公司准确且廉价搜集海量数据的行为会从各个角度重塑这一领域。事实上,整个保险业都将脱胎换骨。 来源:未来论坛(微信ID:futureforum)。文章来源:Singularity Hub,文章作者:Peter Diamandis,编译:未来论坛商白。
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2016-03-29 23:26:00
本文作者徐霞清,中国科学院计算技术研究所VIPL组硕士生,导师常虹副研究员。研究方向为 深度学习 与计算机视觉(目标跟踪等)。
开始本文之前,我们首先看上方给出的3张图片,它们分别是同一个视频的第1,40,80帧。在第1帧给出一个跑步者的边框(bounding-box)之后,后续的第40帧,80帧,bounding-box依然准确圈出了同一个跑步者。以上展示的其实就是目标跟踪(visual object tracking)的过程。目标跟踪(特指单目标跟踪)是指:给出目标在跟踪视频第一帧中的初始状态(如位置,尺寸),自动估计目标物体在后续帧中的状态。
人眼可以比较轻松的在一段时间内跟住某个特定目标。但是对机器而言,这一任务并不简单,尤其是跟踪过程中会出现目标发生剧烈形变、被其他目标遮挡或出现相似物体干扰等等各种复杂的情况。过去几十年以来,目标跟踪的研究取得了长足的发展,尤其是各种 机器学习 算法被引入以来,目标跟踪算法呈现百花齐放的态势。2013年以来,深度学习方法开始在目标跟踪领域展露头脚,并逐渐在性能上超越传统方法,取得巨大的突破。本文首先简要介绍主流的传统目标跟踪方法,之后对基于深度学习的目标跟踪算法进行介绍,最后对深度学习在目标跟踪领域的应用进行总结和展望。
经典目标跟踪方法
目前跟踪算法可以被分为 产生式 (generative model)和 判别式 (discriminative model)两大类别。
产生式方法 运用生成模型描述目标的表观特征,之后通过搜索候选目标来最小化重构误差 。比较有代表性的算法有稀疏编码(sparse coding),在线密度估计(online density estimation)和主成分分析(PCA)等。产生式方法着眼于对目标本身的刻画,忽略背景信息,在目标自身变化剧烈或者被遮挡时容易产生漂移。
与之相对的,判别式方法 通过训练分类器来区分目标和背景 。这种方法也常被称为tracking-by-detection。近年来,各种机器学习算法被应用在判别式方法上,其中比较有代表性的有多示例学习方法(multiple instance learning), boosting和结构SVM(structured SVM)等。
判别式方法因为显著区分背景和前景的信息,表现更为鲁棒,逐渐在目标跟踪领域占据主流地位。值得一提的是, 目前大部分深度学习目标跟踪方法也归属于判别式框架。
近年来,基于相关滤波(correlation filter)的跟踪方法因为速度快,效果好吸引了众多研究者的目光。相关滤波器 通过将输入特征回归为目标高斯分布来训练 filters 。并在后续跟踪中寻找预测分布中的响应峰值来定位目标的位置。
相关滤波器在运算中巧妙应用快速傅立叶变换获得了大幅度速度提升。目前基于相关滤波的拓展方法也有很多,包括核化相关滤波器(kernelized correlation filter, KCF), 加尺度估计的相关滤波器(DSST)等。
基于深度学习的目标跟踪方法
不同于检测、识别等视觉领域深度学习一统天下的趋势,深度学习在目标跟踪领域的应用并非一帆风顺。其 主要问题在于训练数据的缺失 :深度模型的魔力之一来自于对大量标注训练数据的有效学习,而目标跟踪仅仅提供第一帧的bounding-box作为训练数据。
这种情况下,在跟踪开始针对当前目标从头训练一个深度模型困难重重。目前基于深度学习的目标跟踪算法采用了几种思路来解决这个问题,下面将依据思路的不同展开介绍,并在最后介绍目前跟踪领域出现的运用递归神经网络(recurrent neural network)解决目标跟踪问题的新思路。
一、利用辅助图片数据预训练深度模型,在线跟踪时微调
在目标跟踪的训练数据非常有限的情况下,使用辅助的非跟踪训练数据进行预训练,获取对物体特征的通用表示(general representation ),在实际跟踪时,通过利用当前跟踪目标的有限样本信息对预训练模型微调(fine-tune), 使模型对当前跟踪目标有更强的分类性能,这种迁移学习的思路极大的减少了对跟踪目标训练样本的需求,也提高了跟踪算法的性能。
这个方面代表性的作品有DLT和SO-DLT,都出自香港科技大学王乃岩博士。
DLT(NIPS2013)
Learning a Deep Compact Image Representation for Visual Tracking
DLT是第一个把深度模型运用在单目标跟踪任务上的跟踪算法 。它的主体思路如上图所示: (1) 先使用栈式降噪自编码器(stacked denoising autoencoder,SDAE)在Tiny Images dataset这样的大规模自然图像数据集上进行无监督的离线预训练来获得通用的物体表征能力。预训练的网络结构如上图(b)所示,一共堆叠了4个降噪自编码器, 降噪自编码器对输入加入噪声,通过重构出无噪声的原图来获得更鲁棒的特征表达能力。SDAE1024-2560-1024-512-256这样的瓶颈式结构设计也使获得的特征更加compact。
(2) 之后的在线跟踪部分结构如上图(c)所示,取离线SDAE的encoding部分叠加sigmoid分类层组成了分类网络。此时的网络并没有获取对当前被跟踪物体的特定表达能力。此时利用第一帧获取正负样本,对分类网络进行fine-tune获得对当前跟踪目标和背景更有针对性的分类网络。在跟踪过程中,对当前帧采用粒子滤波(particle filter)的方式提取一批候选的patch(相当于detection中的proposal),这些patch输入分类网络中,置信度最高的成为最终的预测目标。
(3) 在目标跟踪非常重要的模型更新策略上,该论文采取限定阈值的方式,即当所有粒子中最高的confidence低于阈值时,认为目标已经发生了比较大的表观变化,当前的分类网络已经无法适应,需要进行更新。
小结 :DLT作为第一个将深度网络运用于单目标跟踪的跟踪算法,首先提出了“离线预训练+在线微调”的思路,很大程度的解决了跟踪中训练样本不足的问题,在CVPR2013提出的OTB50数据集上的29个跟踪器中排名第5。 但是DLT本身也存在一些 不足 :
(1) 离线预训练采用的数据集Tiny Images dataset只包含32*32大小的图片,分辨率明显低于主要的跟踪序列,因此SDAE很难学到足够强的特征表示。
(2) 离线阶段的训练目标为图片重构,这与在线跟踪需要区分目标和背景的目标相差甚大。
(3) SDAE全连接的网络结构使其对目标的特征刻画能力不够优秀,虽然使用了4层的深度模型,但效果仍低于一些使用人工特征的传统跟踪方法如Struck等。
SO-DLT(arXiv2015)
Transferring Rich Feature Hierarchies for Robust Visual Tracking
SO-DLT延续了DLT利用非跟踪数据预训练加在线微调的策略,来解决跟踪过程中训练数据不足的问题,同时也对DLT存在的问题做了很大的改进。
(1) 使用CNN作为获取特征和分类的网络模型。如上图所示,SO-DLT使用了的类似AlexNet的网络结构,但是有 几大特点 : 一、针对跟踪候选区域的大小将输入缩小为100*100,而不是一般分类或检测任务中的224*224。
二、网络的输出为50*50大小,值在0-1之间的概率图(probability map),每个输出像素对应原图2*2的区域,输出值越高则该点在目标bounding-box中的概率也越高。这样的做法利用了图片本身的结构化信息,方便直接从概率图确定最终的bounding-box,避免向网络输入数以百计的proposal,这也是SO-DLT structured output得名的由来。
三、在卷积层和全连接层中间采用SPP-NET中的空间金字塔采样(spatial pyramid pooling)来提高最终的定位准确度。
(2) 在离线训练中使用ImageNet 2014的detection数据集使CNN获得区分object和非object(背景)的能力。
SO-DLT在线跟踪的pipeline如上图所示: (1)处理第t帧时,首先以第t-1帧的的预测位置为中心,从小到大以不同尺度crop区域放入CNN当中,当CNN输出的probability map的总和高于一定阈值时,停止crop, 以当前尺度作为最佳的搜索区域大小。
(2) 选定第t帧的最佳搜索区域后,在该区域输出的probability map上采取一系列策略确定最终的bounding-box中心位置和大小。
(3) 在模型更新方面,为了解决使用不准确结果fine-tune导致的drift问题,使用了long-term 和short-term两个CNN,即CNNS和CNNL。CNNS更新频繁,使其对目标的表观变化及时响应。CNNL更新较少,使其对错误结果更加鲁棒。二者结合,取最confident的结果作为输出。从而在adaptation和drift之间达到一个均衡。
小结 :SO-DLT作为large-scale CNN网络在目标跟踪领域的一次成功应用,取得了非常优异的表现:在CVPR2013提出的OTB50数据集上OPE准确度绘图(precision plot)达到了0.819, OPE成功率绘图(success plot)达到了0.602。远超当时其它的state of the art。
SO-DLT有几点值得借鉴: (1) 针对tracking问题设计了有针对性的网络结构。
(2) 应用CNNS和CNNL用ensemble的思路解决update 的敏感性,特定参数取多值做平滑,解决参数取值的敏感性。这些措施目前已成为跟踪算法提高评分的杀手锏。
但是SO-DLT离线预训练依然使用的是大量无关联图片,作者认为使用更贴合跟踪实质的时序关联数据是一个更好的选择。
二、利用现有大规模分类数据集预训练的CNN分类网络提取特征
2015年以来,在目标跟踪领域应用深度学习兴起了一股新的潮流。即直接使用ImageNet这样的大规模分类数据库上训练出的CNN网络如VGG-Net获得目标的特征表示,之后再用观测模型(observation model)进行分类获得跟踪结果。
这种做法既避开了跟踪时直接训练large-scale CNN样本不足的困境,也充分利用了深度特征强大的表征能力。这样的工作在ICML15,ICCV15,CVPR16均有出现。下面介绍两篇发表于ICCV15的工作。
FCNT(ICCV15)
Visual Tracking with Fully Convolutional Networks
作为应用CNN特征于物体跟踪的代表作品,FCNT的 亮点之一在于对ImageNet上预训练得到的CNN特征在目标跟踪任务上的性能做了深入的分析,并根据分析结果设计了后续的网络结构。
FCNT主要对VGG-16的Conv4-3和Conv5-3层输出的特征图谱(feature map)做了分析,并得出以下结论: (1) CNN 的feature map可以用来做跟踪目标的定位。
(2) CNN 的许多feature map存在噪声或者和物体跟踪区分目标和背景的任务关联较小。
(3) CNN不同层的特征特点不一。高层(Conv5-3)特征擅长区分不同类别的物体,对目标的形变和遮挡非常鲁棒,但是对类内物体的区分能力非常差。低层(Conv4-3)特征更关注目标的局部细节,可以用来区分背景中相似的distractor,但是对目标的剧烈形变非常不鲁棒。
依据以上分析,FCNT最终形成了如上图所示的框架结构: (1) 对于Conv4-3和Conv5-3特征分别构建特征选择网络sel-CNN(1层dropout加1层卷积),选出和当前跟踪目标最相关的feature map channel。
(2) 对筛选出的Conv5-3和Conv4-3特征分别构建捕捉类别信息的GNet和区分distractor(背景相似物体)的SNet(都是两层卷积结构)。
(3) 在第一帧中使用给出的bounding-box生成热度图(heat map)回归训练sel-CNN, GNet和SNet。
(4) 对于每一帧,以上一帧预测结果为中心crop出一块区域,之后分别输入GNet和SNet,得到两个预测的heatmap,并根据是否有distractor决定使用哪个heatmap 生成最终的跟踪结果。
小结 :FCNT根据对CNN不同层特征的分析,构建特征筛选网络和两个互补的heat-map预测网络。达到有效抑制distractor防止跟踪器漂移,同时对目标本身的形变更加鲁棒的效果,也是ensemble思路的又一成功实现。
在CVPR2013提出的OTB50数据集上OPE准确度绘图(precision plot)达到了0.856,OPE成功率绘图(success plot)达到了0.599,准确度绘图有较大提高。实际测试中FCNT的对遮挡的表现不是很鲁棒,现有的更新策略还有提高空间。
Hierarchical Convolutional Features for Visual Tracking(ICCV15)
这篇是作者在2015年度看到的最简洁有效的利用深度特征做跟踪的论文。其主要思路是提取深度特征,之后利用相关滤波器确定最终的bounding-box。
这篇论文简要分析了VGG-19特征( Conv3_4, Conv4_4, Conv5_4 )在目标跟踪上的特性,得出的结论和FCNT有异曲同工之处,即: (1) 高层特征主要反映目标的语义特性,对目标的表观变化比较鲁棒。
(2) 低层特征保存了更多细粒度的空间特性,对跟踪目标的精确定位更有效。
基于以上结论,作者给出了一个粗粒度到细粒度(coarse-to-fine)的跟踪算法即: (1) 第一帧时,利用Conv3_4,Conv4_4,Conv5_4特征的插值分别训练得到3个相关滤波器。
(2) 之后的每帧,以上一帧的预测结果为中心crop出一块区域,获取三个卷积层的特征,做插值,并通过每层的相关滤波器预测二维的confidence score。
(3) 从Conv5_4开始算出confidence score上最大的响应点,作为预测的bounding-box的中心位置,之后以这个位置约束下一层的搜索范围,逐层向下做更细粒度的位置预测,以最低层的预测结果作为最后输出。具体公式如下:
(4) 利用当前跟踪结果对每一层的相关滤波器做更新。
小结 :这篇文章针对VGG-19各层特征的特点,由粗粒度到细粒度最终准确定位目标的中心点。在CVPR2013提出的OTB50数据集上OPE准确度绘图达到了0.891,OPE成功率绘图达到了0.605,相较于FCNT和SO-DLT都有提高,实际测试时性能也相当稳定,显示出深度特征结合相关滤波器的巨大优势。
但是这篇文章中的相关滤波器并没有对尺度进行处理,在整个跟踪序列中都假定目标尺度不变。在一些尺度变化非常剧烈的测试序列上如CarScale上最终预测出的bounding-box尺寸大小和目标本身大小相差较大。
以上两篇文章均是应用预训练的CNN网络提取特征提高跟踪性能的成功案例,说明利用这种思路解决训练数据缺失和提高性能具有很高的可行性。但是分类任务预训练的CNN网络本身更关注区分类间物体,忽略类内差别。
目标跟踪时只关注一个物体,重点区分该物体和背景信息,明显抑制背景中的同类物体,但是还需要对目标本身的变化鲁棒。分类任务以相似的一众物体为一类,跟踪任务以同一个物体的不同表观为一类,使得这两个任务存在很大差别,这也是两篇文章融合多层特征来做跟踪以达到较理想效果的动机所在。
三、利用跟踪序列预训练,在线跟踪时微调
1和2中介绍的解决训练数据不足的策略和目标跟踪的任务本身存在一定偏离。有没有更好的办法呢?
VOT2015冠军MDNet给出了一个示范。该方法在OTB50上也取得了OPE准确度绘图0.942,OPE成功率绘图0.702的惊人得分。
MDNet(CVPR2016)
Learning Multi-Domain Convolutional Neural Networks for Visual Tracking
意识到图像分类任务和跟踪之间存在巨大差别,MDNet提出直接用跟踪视频预训练CNN获得general的目标表示能力的方法。但是序列训练也存在问题,即不同跟踪序列跟踪目标完全不一样,某类物体在一个序列中是跟踪目标,在另外一个序列中可能只是背景。
不同序列中目标本身的表观和运动模式、环境中光照、遮挡等情形相差甚大。这种情况下,想要用同一个CNN完成所有训练序列中前景和背景区分的任务,困难重重。
最终MDNet提出Multi-Domain的训练思路和如上图所示的Multi-DomainNetwork。该网络分为共享层和domain-specific层两部分。
即: 将每个训练序列当成一个单独的domain,每个domain都有一个针对它的二分类层(fc6),用于区分当前序列的前景和背景,而网络之前的所有层都是序列共享的。这样共享层达到了学习跟踪序列中目标general的特征表达的目的,而domain-specific层又解决了不同训练序列分类目标不一致的问题。
具体训练时,MDNet的每个mini-batch只由一个特定序列的训练数据构成,只更新共享层和针对当前序列的特定fc6层。这样共享层中获得了对序列共有特征的表达能力,如对光照、形变等的鲁棒性。MDNet的训练数据也非常有意思,即测试OTB100数据集时,利用VOT2013-2015的不重合的58个序列来做预训练。测试VOT2014数据集时,利用OTB100上不重合的89个序列做预训练。这种交替利用的思路也是第一次在跟踪论文中出现。
在线跟踪阶段针对每个跟踪序列,MDNet主要有以下几步: (1) 随机初始化一个新的fc6层。
(2) 使用第一帧的数据来训练该序列的bounding box回归模型。
(3) 用第一帧提取正样本和负样本,更新fc4, fc5和fc6层的权重。
(4) 之后产生256个候选样本,并从中选择置信度最高的,之后做bounding-box regression得到最终结果。
(5) 当前帧最终结果置信度较高时,采样更新样本库,否则根据情况对模型做短期或者长期更新。
MDNet有两点值得借鉴之处: (1) MDNet应用了更为贴合跟踪实质的视频数据来做训练,并提出了创新的Multi-domain训练方法和训练数据交叉运用的思路。
(2) 此外MDNet从检测任务中借鉴了不少行之有效的策略,如难例挖掘(hard negative mining),bounding box回归等。尤其是难例回归通过重点关注背景中的难点样本(如相似物体等)显著减轻了跟踪器漂移的问题。这些策略也帮助MDNet在TPAMI2015 OTB100数据集上OPE准确度绘图从一开始的0.825提升到0.908, OPE成功率绘图从一开始的0.589提升到0.673。
但是也可以发现MDNet的总体思路和RCNN比较类似,需要前向传递上百个proposal,虽然网络结构较小,速度仍较慢。且boundingbox回归也需要单独训练,因此MDNet还有进一步提升的空间。
四、运用递归神经网络进行目标跟踪的新思路
近年来RNN尤其是带有门结构的LSTM,GRU等在时序任务上显示出了突出的性能。不少研究者开始探索如何应用RNN来做解决现有跟踪任务中存在的问题,以下简要介绍两篇在这方面比较有代表性的探索文章。
RTT(CVPR16)
Recurrently Target-Attending Tracking
这篇文章的出发点比较有意思,即利用多方向递归神经网络(multi-directional recurrent neural network)来建模和挖掘对整体跟踪有用的可靠目标部分(reliable part),实际上是二维平面上的RNN建模,最终解决预测误差累积和传播导致的跟踪漂移问题。其本身也是对part-based跟踪方法和相关滤波(correlation filter)方法的改进和探索。
RTT的整体框架如上图所示: (1) 首先对每一帧的候选区域进行网状分块,对每个分块提取HOG特征,最终相连获得基于块的特征。
(2) 得到分块特征以后,RTT利用前5帧训练多方向RNN来学习分块之间大范围的空间关联。
通过在4个方向上的前向推进,RNN计算出每个分块的置信度,最终每个块的预测值组成了整个候选区域的置信图(confidence map)。受益于RNN的recurrent结构,每个分块的输出值都受到其他关联分块的影响,相比于仅仅考虑当前块的准确度更高,避免单个方向上遮挡等的影响,增加可靠目标部分在整体置信图中的影响。
(3) 由RNN得出置信图之后,RTT执行了另外一条pipeline。即训练相关滤波器来获得最终的跟踪结果。值得注意的是,在训练过程中RNN的置信图对不同块的filter做了加权,达到抑制背景中的相似物体,增强可靠部分的效果。
(4) RTT提出了一个判断当前跟踪物体是否被遮挡的策略,用其判断是否更新。即计算目标区域的置信度和,并与历史置信度和的移动平均数(moving average)做一个对比,低于一定比例,则认为受到遮挡,停止模型更新,防止引入噪声。
小结 :RTT是第一个利用RNN来建模part-based跟踪任务中复杂的大范围关联关系的跟踪算法。在CVPR2013提出的OTB50数据集上OPE准确度绘图为0.827,OPE成功率绘图达到了0.588。相比于其他基于传统特征的相关滤波器算法有较大的提升,说明RNN对关联关系的挖掘和对滤波器的约束确实有效。RTT受制于参数数目的影响,只选用了参数较少的普通RNN结构(采用HOG特征其实也是降低参数的另外一种折中策略)。结合之前介绍的解决训练数据缺失的措施,RTT可以运用更好的特征和RNN结构,效果还有提升空间。
DeepTracking: Seeing Beyond Seeing Using Recurrent Neural Networks(AAAI16)
这篇文章的应用场景是机器人视觉,目标是将传感器获得的有遮挡的环境信息还原为真实的无遮挡的环境信息。严格来说这篇文章仅输出还原后的图片,没有明确预测目标的位置和尺寸等状态信息,和之前介绍的所有文章的做法都不一样,不妨称为一种新的跟踪任务。
在模型方面,不同于RTT用RNN建模二维平面关联,DeepTracking利用RNN来做序列关联的建模,并最终实现了端到端的跟踪算法。
传统的贝叶斯跟踪方法一般采用高斯分布(卡尔曼滤波Kalman filter)或者离散的采样点权重(粒子滤波particle filter)来近似需要求解的后验概率 P(y t |x 1 :t ) (yt为需要预测的机器人周围的真实场景,x t 为传感器直接获得的场景信息),其表达能力有限。DeepTracking拓展了传统的贝叶斯跟踪框架,并利用RNN强大的表征能力来建模后验概率。
具体而言DeepTracking引入了一个具有马尔可夫性质的隐变量h t ,认为其反映了真实环境的全部信息。最终需要预测的y t 包含了h t ,包含了h t 的部分信息,可由h t 得到。假设B t 为关于h t 的信念(belief),对应于后验概率:B el (h t ) =P(y t |h t ) 。之后经典贝叶斯跟踪框架中由P(y t-1 |x 1:t-1 ) 到P(y t |x 1:t )到的时序更新在这里转化为:B t =F(B t-1 ,x t )和P(t y |x 1:t ) =P(y t |B t )。
给出形式表达之后的关键是,如何将其对应到RNN的框架中去。DeepTracking的 核心思路 是用利用两个权重WF和WP来分别建模F(Bt-1, xt)和P(yt|Bt),将Bt定义为RNN时序之间传递的memory 信息。此时,如上图所示RNN的各个状态和推进流程就和跟踪任务完美的对接上了。
实验部分,DeepTracking采用模拟的2维传感器数据和如上图所示的3层RNN的网络结构,B t 对应于第三层的网络输出。通过无监督的预测x t+n 的任务来使网络获得预测y t 的潜在能力。
小结 :DeepTracking作为用RNN建模跟踪时序任务的作品,其亮点主要在对RNN和贝叶斯框架融合的理论建模上。实验展示了该方法在模拟场景下的不错效果,但是模拟数据和真实场景差距很大,能否在实际应用中有比较好的表现还有待商榷。
总结
本文介绍了深度学习在目标跟踪领域应用的几种不同思路。三种解决训练数据缺失的思路各有千秋,作者认为使用序列预训练的方法更贴合跟踪任务的本质因此值得关注(近期也有应用Siamese Network和视频数据训练的跟踪算法涌现,具体参见王乃岩博士在VLASE公众号上的介绍文章《Object Tracking新思路》)。
总的来说,基于RNN的目标跟踪算法还有很大提升空间。此外,目前已有的深度学习目标跟踪方法还很难满足实时性的要求,如何设计网络和跟踪流程达到速度和效果的提升,还有很大的研究空间。
致谢 :本文作者特此感谢匿名审稿人和图森科技首席科学家王乃岩博士对本文所提出的建设性意见。 作者简介:徐霞清,中国科学院计算技术研究所VIPL组硕士生,导师常虹副研究员。研究方向为深度学习与计算机视觉(目标跟踪等),个人邮箱:xiaqing.xu@vipl.ict.ac.cn
来源:深度学习大讲堂
版权归作者所有,转载此文请与作者联系。
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2016-09-06 22:48:00
作者:Jason Brownlee
在 自然语言处理 领域, 深度学习 的承诺是:给新模型带来更好的性能,这些新模型可能需要更多数据,但不再需要那么多的语言学专业知识。
在自然语言处理领域,深度学习的承诺是:给新模型带来更好的性能,这些新模型可能需要更多数据,但不再需要那么多的语言学专业知识。
关于深度学习方法有很多炒作和大话,但除了炒作之外,深度学习方法正在为挑战性问题取得最先进的结果,特别是在自然语言处理领域。
在这篇文章中,您将看到深度学习方法应对自然语言处理问题的具体前景。看完这篇文章后,你会知道: 自然语言处理深度学习的承诺。 深度学习从业人员和研究科学家对自然语言处理深度学习的承诺有什么说法。 自然语言处理的重要深度学习方法和应用。
让我们开始吧。
深度学习的承诺
深度学习的方法很受欢迎,主要是因为它们兑现了当初的承诺。
这并不是说在技术上没有任何炒作,而是说,这种炒作是基于非常真实的成果。这些成果正在从计算机视觉和自然语言处理的一系列极具挑战性的 人工智能 问题中得到证实。
深度学习力量的第一次大型展现,就是在自然语言处理领域,特别是在语音识别方面。 最近的进展则是在机器翻译方面。
在这篇文章中,我们将看到,自然语言处理领域的深度学习方法的五个具体承诺。这些承诺是这个领域的研究人员和从业人者最近所强调的,而这些人面对这些承诺的态度比一般的新闻报道要克制得多。
总而言之,这些承诺是:
深度学习插入替换现有模型 。深度学习方法可以插入现有的自然语言系统,由此产生的新模型可以实现同等或更好的性能。
新NLP模型 。 深度学习方法提供了新的建模方法以挑战自然语言问题(如序列-序列预测)。
特征学习 。 深度学习方法可以从模型所需的自然语言中学习特征,而不需要专家指定、提取特征。、
持续改进。 自然语言处理中的深度学习的表现是基于真实世界的结果,并且所带来的改进正在持续,还可能加速。
端对端模型 。 大型端对端深度学习模型可以适应自然语言问题,提供更一般和更好的方法。
我们现在将仔细看看这些承诺中的每一个。其实自然语言处理深度学习还有一些其他承诺;,这些只是我从中选择的最突出的五个。
深度学习插入替换现有模型
自然语言处理中的深度学习的第一个承诺是,能够用具有更好性能的模型替代现有的线性模型,能够学习和利用非线性关系。
Yoav Goldberg在他的《NLP研究人员神经网络入门》中强调,深度学习方法取得了令人印象深刻的成果,他说在此文中说:“最近,神经网络模型也开始应用于文本自然语言信号,并再次带来了非常有希望的结果。”
他还继续强调,这些方法易于使用,有时可用于批量地替代现有的线性方法。他说:“最近,该领域在从稀疏输入的线性模型切换到稠密数据的非线性神经网络模型方面取得了一些成功。大多数神经网络技术都很容易应用,有时候几乎可以替代旧的线性分类器;不过,在许多情况下仍存在着使用神经网络的障碍。”
新NLP模型
另一个承诺是,深度学习方法有助于开发全新的模型。
一个很好的例子是,使用能够学习和判断超长序列输出的循环神经网络。 这种方法与从前的完全不同,因为它们允许NLP从业者摆脱传统的建模假设,并实现最先进的结果。
Yoav Goldberg在其NLP深度学习的专著《自然语言处理的神经网络方法》第xvii页指出,像循环神经网络这样复杂神经网络模型可以带来全新的NLP建模机会。他说,“在2014年左右,该领域已经开始看到,在从稀疏输入的线性模型到稠密输入的非线性神经网络模型的转换方面,已取得了一些成功。 .……其他的变化更高级,需要研究者改变思维,并能带来新的建模机会。特别是,基于循环神经网络(RNNs)的一系列方法减轻了对序列模型中普遍存在的马尔可夫假设的依赖,允许以任意长序列为条件,并产生了有效的特征提取器。 这些进步导致了语言建模、自动机器翻译和其他应用的突破。”
特征学习
深度学习方法具有学习特征表示的能力,不必要求专家从自然语言中人工指定和提取特征。
NLP研究员Chris Manning在自然语言处理深度学习课程的第一次讲座中突出了这方面的观点。
他描述了人工定义输入特征的局限性:按照这种方法,在之前的应用中,机器学习只是在统计NLP中证明人类事先定义的特征,并且计算机几乎没有学习。
Chris 认为,深度学习方法带来的承诺是自动特征学习。 他强调,特征学习是自动的,而不是人工;它易于适应,不脆弱,并可以不断自动地改善。
Chris Mining 在2017年的《自然语言处理与深度学习》讲座第一讲幻灯片中说,“一般来说,我们人工设计的特征往往被过度地指定,它们不完整,需要很长时间才能设计和验证,会让你忙活一天后只能达到有限的性能水平。而深度学习到的特征易于适应,能快速训练,它们可以持续学习,以便达到以前未能实现的、更好的性能水平。
持续改进
NLP的深度学习的另一个承诺是,在挑战性问题上持续快速改进。
在《自然语言处理与深度学习》讲座第一讲中,Chris Manning表示,深度学习的方法很受欢迎,因为它们很管用。他说,“深度学习对大多数人来说如此令人兴奋的真正原因是,它确实管用。“
他强调,深度学习的初步结果令人印象深刻。深度学习在语音领域的表现比过去30年中任何其他方法的表现都更好。
Chris 提到,深度学习带来的不仅是最先进的成果,而且是不断改进的进步速度。他说,”……在过去的六七年中,非常令人惊叹的是,深度学习方法一直在不断改进,并以惊人的速度变得更好。 我其实想说,这是前所未有的,我看到这个领域飞速地进展,每个月都会推出更好的方法。“
端对端模型的承诺
深度学习的最终承诺是,开发和训练自然语言问题的端对端模型能力,而不是为专门模型开发流程。
端对端模型不仅能改进模型的性能,也能带来更好的开发速度和简洁性。
神经机器翻译(简称NMT)是指,尝试学习将一种语言翻译成另一种语言的大型神经网络。 传统上,这是由一系列手工调整的模型组成的流程来处理的,而流程中的每个模型都需要专业语言知识。
Chris Manning 在斯坦福大学NLP深度学习课程第十讲《神经机器翻译和注意模型》中描述了这一点。他说:”神经机器翻译是指,我们想要做的是构建一个大型神经网络,在这个网络中我们可以对训练整个端到端机器翻译过程并进行优化。……这种远离人工定制模型、朝向端到端、序列到序列预测模型的趋势,一直是语音识别的趋势。 这样做的系统被称为NMT (神经机器翻译)系统。
设计端到端模型,而非为专门系统设计流程,这也是语音识别的一个趋势。
在斯坦福NLP课程第十二讲《语音处理的端到端模型》中,目前就职于Nvidia的 NLP研究员Navdeep Jaitly强调,语音识别的每个组成部分都可以用神经网络来代替。自动语音识别流程中的几大组块是语音处理,声学模型,发音模型和语言模型。问题是,每个组块的属性和错误类型是不同的。这激发了开发一个神经网络来端到端地学习整个问题的需要。
他说,“随着时间的推移,人们开始注意到,如果我们使用神经网络,这些组件中的每一个都可以做得更好。 ……但是,仍然有一个问题。 每个组件都有各自的神经网络,但是每个组件中的错误都是不同的,所以它们可能无法很好地协同工作。 所以这让我们拥有动机,尝试去把整个语音识别当作一个大模型来训练。”
自然语言处理深度学习网络的类型
深度学习是一个很大的学习领域,并不是它的所有内容都与自然语言处理相关。
哪些类型的深度学习模型能提升性能?学习者在具体优化方法上很容易陷入泥沼。
从较高层次看,深度学习中有5种方法在自然语言处理中应用最为广泛。
他们是: 嵌入图层 多层感知器(MLP) 卷积神经网络(CNN) 循环神经网络(RNNs) 递归神经网络(ReNNs)
NLP中的问题类型
深度学习不会彻底解决自然语言处理问题或 人工智能 问题。
迄今为止,在自然语言处理的一系列广泛问题中,已经对深度学习方法进行了评估,并在其中一些问题上取得了成功。这些成功表明,使用深度学习能获得高于以往的表现或能力。
重要的是,深度学习方法取得最大成功的领域,恰恰是一些更加面对终端用户、更具挑战性也更有趣的问题。
深度学习取得成功的5个例子包括: 词表示和词含义 文本分类 语言建模 机器翻译 语音识别
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2019-09-19 11:48:00
熊辉教授是计算机系出身的博士,是美国罗格斯商学院的终身教授。在这场演讲中,他对机器学习和 数据挖掘 技术,以及这些技术在商业领域的应用,作了深入浅出又非常生动的讲解。 大数据 时代到来, 大数据 如何转化为商业利益,请听熊辉教授解读。
一. 大数据分析 究竟是什么?
今天主要是跟大家分享,我们在过去几年中研究工作的总结。
今年我们一共在 KDD 发布了 9 篇论文,题目非常的多样化,内容涵盖也非常广泛,包括房地产、通讯、市场营销、人力资源,还有一些好玩的方向,比如我们做了用大数据抓小偷,还有医药相关的,例如如何去做医疗流程的优化和诊断。
今天跟大家分享的也是一个非常好玩的方向。
我最喜欢用下面这张 slide 介绍什么叫做 “ 数据挖掘 ”,它能够很好的帮助大家,尤其是没有计算机基础的人来理解数据挖掘是做什么的:
数据挖掘其实很像是医生在诊断病人,当病人到达医院之后,医生先要收集病人的病症,将各项病症进行分析并产生关联,然后才能进行诊断。
所有的数据都不一样,例如做通讯的数据,从移动、联通、电信来的数据都不一样,因为大家的客户群不同,背后的数据特点不同。
病人也是一样,同样的病症,例如感冒,如果病人是老人、怀孕的妇女、小孩,他们呈现出来的病状都是不一样的。
数据分析 就像是根据这些完全不一样的病症,收集并进行分析,然后进行诊断的过程。
二. 为什么说大数据分析很难?
数据挖掘是一个很老的 topic,最早提出这个观点的是沃尔玛。当时叫 “海量数据”,也就是 “very large data”。
我经常用瞎子摸象来比喻数据分析。 大象就对应海量数据,每一个数据分析师就是这个瞎子,我们只能够摸一部分大象的部位,就像数据分析师只能够拿到部分数据,但我们通过部分的数据来感受整体。
现在的 big data 和以前相比有什么区别呢?——现在的象不仅大,还有翅膀,还会飞。我们的很多应用需求造成我们的数据在不断的移动变化:
例如出租车的 GPS 数据,是一直在移动和变化中的。又例如金融行业,金融行业的高频数据交易每秒钟都会有上万个交易。在这种每天会产生上百万个交易的前提下,我们运用的交易策略产生和风险评估机制都要适应这种快速变化的海量数据时代。
这种情况会加剧我们数据分析的复杂度和难度,这是目前 big data 所带来的挑战—— 我们在单位时间内所需要处理的数据量远远超过我们的计算能力和算法能力。
三. 最重要的不是算法好,而是算法快
大象在飞的时候,决定谁能够胜出的往往是谁的算法更快,而不是更好。目前市场上面临这么激烈的竞争,大家在竞争中,拼的往往是时间,是你的算法能够多快速地解决问题。
好的算法不是比别人好多少,而是比别人快多少。
我很喜欢用下面的这个公式来解释算法的本质:
我们经常在商业中做很多预测,a 是我们在长期的历史规律总结出来的规律,也是《易经》中的 “不变的理”,β是短期变化规律的一种耦合。好的预测是既能够把握长期不变的理,又能把握短期的变化规律,然后抓住他们的耦合。
就像一群鱼游过来,游得很快,水很浑浊,我们的算法比的就是谁能最快地观察到鱼群游过来,同时从鱼群中甄别出哪一条鱼是最有价值的,观察到之后马上捕获它。整个算法比拼的是这种快速运算,快速解决问题的能力。否则,差一个毫秒,别人就把鱼吃完了。
四. 大数据商业化的难点在提出问题
我作为一个计算机背景出身的人,最理解计算机领域的人的想法。
从计算机学科毕业的人,往往会觉得自己掌握的是科学,会轻视问题的提炼,因为他觉得自己掌握了算法。
但往往问题的关键不在于问题的本身,而是问题的提炼。 99% 的问题算法都能解决,但商业中真正的难点在于提炼出问题。
比如我现在如果给你一堆移动数据,非常多非常庞杂,你能从里面发现什么商业模式?提炼出来什么问题?
这不是大多数人可以做到的。但大多数计算机学科的人可以做到的是,如果我提炼了一个问题,希望你运用数据分析帮我找到解决途径,他们是很擅长的;但如果反向操作,我给你一组数据,希望你从中提炼出一些需要解决的问题,或者说好的商业模式,这样的能力就会有所欠缺。
而商学院出来的人又恰恰相反,往往擅长提炼问题,但缺乏解决问题的能力。这是学校的问题,学校往往培养专才,不培养通才。
西方的方法是擅长演绎,从上倒下推理出问题。
而我们现在常做的是从下往上,归纳法来解决问题。
未来的人才一定是两方面都擅长,既能用演绎法寻找出问题,又能用归纳法找出解决问题的办法。
这个世界上没有最好的算法,只有最合适的算法。
所以如果有人跟我说他有一个最好的算法,我就跟他说你 bullshit。
就像没有包治百病的药,只有针对不同症状,最合适的药。
我目前的团队就是由商学院的学生和计算机学科的学生构成,相互补充,形成优势互补。
我的团队有几个研究原则:
1、只做实际的问题;
2、所用的数据必须是一线的数据;
3、必须解决商业的问题。
下面会跟大家分享一些我们实际解决过的案例。
五. 要把商业问题转化成数学问题
我们跟一个美国 500 强的公司合作,如何将商业的问题转换为数据分析问题。我花了很长时间了解他们要解决的商业问题是什么问题,到最后提炼为 “如何提升 ROI”。
他们的痛点是他们想提高转换率,是 to B 的生意,需要做商业分析,帮助提高转换率和缩短转换周期。
我们先看他们有什么数据,一类属于静态数据:他们所对接的客户属于哪个部门,他的职级是多少,他们公司的地点在哪里,公司规模有多大,属于什么行业等。我们要判断他是属于决策者还是仅仅是信息搜集者?他们公司的收入可以让他们接受我们多少钱的产品。
一类是动态信息,他在了解我们的官网信息中,进行了哪些动作?例如他了解过哪些产品,浏览过什么资料?是不是下载某项产品的白皮书,或者观看了什么视频?这一类的动态产品能够形成一个知识树,从中了解出他对我们的认知到达了哪一步。
我们想找到所有客户结果之间的共性,就是他在每一个节点中的结果,比如 “成功签约” 的客户所共有的结果是什么。
就像让 5 万人去爬山,有一部分人登顶了,有一部分没有。我们坐在直升机上看成功攀登到山顶的人,他们在每一个节点作出了什么选择。然后分析成功登顶的共性,就能分析出影响他们最终到达山顶的节点数据,然后从中摸索出规律。
对 应到我们所说的例子,因为提升 ROI 的关键在于,我们必须 focus 在那些重要的,能最终成交的客户身上,所以我们通过分析,5 万个用户的节点数据,最终形成了购买的客户群,他们停留的节点,做的选择,大致就能归纳出一些规律。比如他如果到了一个节点,可能会往下做哪一步,我们可 以对其保持重点关注。
这样,商业问题回到数学问题。从数学上的描述成为一个简单问题。
这整个步骤从前到后看,第一步是最难的,就是抽象出问题,其后的每一步都不是难点,都是优化函数的问题。
我们用一套市场的数据,投射到低维空间后整理之后,根据用户的动作,推荐下一个动作,还能够做营销方式的筛选。我们发现有一些营销方式根本不能导致用户进入购买流程,就不需要浪费钱去购买这些营销方式了。
而且我们还发现,如果客户是被动的被引入市场计划中,最终一般都会放弃。往往是主动获取信息,才能够完成购买。这样能够帮助他迅速分析谁是真正来购买产品的,谁只是来套取信息的。
六. 数据挖掘在医疗领域的应用
介绍去年的另外一个例子,也是去年 KDD 发表的一篇文章。这个和刚才举例的市场营销是完全不同的,体现在特征上。
病人到医院之后要经过的流程:挂号-特征提取(验血等)-吃药-治疗-出院。我们聚焦的点是,通过信息的筛选,预测病人会不会得其它某些疾病。
我们做了什么事情,我们绘图。
每个病人都有一张图,上百万个病人,找他们共有的子图,然后形成一千张基准图。每一个病人,都是几个不同病症的组合。 一千张基准图排列组合,可以还原一百万个病人的病症。
同样的一种疾病,但表现出来的病症不同。根据你的不同病症,用几个基准图来对应,吃与病症相关的药。
每个人给予完全个人化的药物配置。这是这个问题真正的关键。
这就是智能吃药。
此外,我们还跟美国 200 多所医院合作,制作传感器,就是病人携带的手环和医生的胸牌之间设置一个传感器。这样病人到了哪个位置,哪个楼层,哪个地址,和医疗设备之间发生了什么交互,这些交互都会被记录。
比如护士需要给病人量体温,那么传感器会在两人距离很近的一个距离范围内,记录下来。这样就能有效避免护士实际没有测量却乱填体温记录现象的发生。或者,比如医生出入传染病房之后应该洗手,但如果他没有和消毒液发生交互,这个传感器就可以发出警报。
七. 大数据判断房商圈商业价值
去年,我们做了一个房地产评估。房地产评估其实做了很多年我们怎么作出不一样呢?
传统的方式考虑更多的是学区是否好,交通如何,静态指标怎么样,房型、开发商如何。
我们做的不同是,我们做动态的数据。如果这个地区过去 5 年里很高收入段的人在增加,这个地方的楼价就会涨,反之就会跌。
所以我们判断的标准是在这个楼盘有价值客户的活跃度有多高 , 我们根据谁在这里生活而判断房价的走势。
那么如何判断用户的价值呢?通过 POI 和地点轨迹,比如频繁进入高消费场所的人群,就判定为高价值用户;频繁出入低消费场所的人群,就判定为低价值用户。我们把商圈的概念进行量化,量化每一个商圈的完整性,帮助我们进一步提高评估的标准。
讲了这么多,我自己的经验是:
首先,了解商业的痛点。
其次,通常要先知道数据的体征。 从技术本身而言,一定要考虑数据的特征。
每个病人来源不同,他的病症是不一样的。移动通讯的数据,三月和二月就是不一样。周末和非周末,春天和夏天,数据都是不同的。
给你很多数据,用什么数据很讲究。不是所有的数据都要用。
任何的数据,都要转为矩阵, 每一行每一列, 都很讲究。
再次,不要受其他数据干扰。 我常和学生说,一开始,要把事情做大,就是要有发散性思维,但当真正开始后,要把事情做小,cut 掉所有不相关的数据。要做到 “大道至简”,不然会收到很大的干扰。
以上就是我的经验分享,谢谢大家。 来源:36Kr
链接:http://36kr.com/p/5048040.html
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2016-06-15 23:04:00
摘要:在之前的文章中,我们讨论了如何利用单变量和多变量分析的方法来检测异常值。接下来我们将介绍如何利用聚类方法识别多变量情形中的异常值。
推荐阅读: 检测异常值的参数和非参数方法
顾名思义,聚类方法就是将特征相似的样本聚集在同一个类别中,因此样本间的相似性是一个非常重要的概念,我们需要考虑如何量化样本间的相似情况。通常情况下,我们用样本之间的距离远近来衡量其相似度,不同的聚类方法采用不同的距离测度方式来实现聚类的目标。我们应该着重关注一个被广泛使用的聚类方法——K均值聚类算法。
K均值聚类算法主要是基于两两样本之间的欧式距离,欧式距离是两点之间的直线距离。我们还可以采用其他方法——比如马氏距离,闵式距离和切比雪夫距离——来度量样板间的相似性,但是这些方法的缺点是计算量大、收敛速度较慢。
给定一组样本x1,x2,…,xn,其中每个观测值都是一个d维的向量,K均值算法的目标是在最小化类内离差的前提下将这n个观测值分成 k(<=n) 组(S={S1,S2,…,Sk})。换句话说,该算法的目标函数如下所示:
其中μi表示第 i 组样本的均值。
借助上面这个目标函数,我们可以更加直观地介绍K均值算法的计算过程。
K均值算法的基本步骤
步骤一:聚类数目
选择类别数目k。这是一个循环迭代的过程,我们无法提前知道应该选择聚成几个类别。我们将用一个例子来说明如何选择类别数目。
步骤二:聚类中心
从样本中随机抽取出k个点,并将其定义为k个组的中心。
步骤三:计算距离
分别计算所有观测值到聚类中心的欧式距离,并将其归到距离最近的中心类别中。假设我们有一个包含100个观测值的数据集,我们的目标是将其聚成5类。首先我们需要计算每个观测值到5个中心点的距离,然后从5个距离中筛选出距离最小值,并将该样本归到对应的类别中。
步骤四:重新计算类中心
接下来我们需要重新计算各个类别的中心值。某个类的中心值等于该类别中所有样本点的均值。因此,如果某个类别中的样本点由于步骤三的计算导致了重分配,那么相应的类中心也会随之改变。
步骤五:迭代过程
重复步骤三和步骤四直到类别中心不再改变为止。
拟合K均值算法前需要记住一个要点——对变量进行标准化处理。比如,你的数据集中包含年龄、身高、体重、收入等无法直接比拟的变量,我们需要将其标准化到同一量纲中。如果数据集中的变量单位一致但方差不同,我们也需要事先将其标准化。数据集中的变量方差不相等,这相当于对方差小的变量赋予了一个更大的权重,因此该算法倾向于对方差大的变量进行划分。标准化处理可以保证K均值算法同等对待所有的变量。一个常用的标准化方法是——所有的观测值减去均值然后除以标准差。
接下来,让我们利用K均值聚类算法来识别数据集中的异常值。假设数据集中某一个类别的特征完全不同于其他类别,如下表所示:
上表是某个 app 的部分用户数据。表中有 5 个变量,其中 3 个数值变量,2 个分类变量。分析过程中,我们将忽略第一列变量。通常情况下,我们将 OS 变量中的 Android 赋值为 0,iOS 赋值为1。但是从理论上来说,我们并不建议这样做,因为拟合K均值模型需要计算样本之间的欧式距离,我们无法很好地量化 Android 用户和 iOS 用户之间的距离。
举个例子,如果点 A 和点 B 之间的欧式距离等于 30,点 A 和点 C 之间的欧式距离等于 8,那么我们可以推出点 A 和点 C 更相似。但分类变量不是由数值构成的,而是由枚举的方式展现出来,比如“香蕉”、“苹果”和“橙子”,我们无法计算这些水果之间的欧式距离,所以我们无法判断橙子和香蕉哪个与苹果更相近。基于这个原因,我们应该采用K众数算法来处理分类变量问题,而不是K均值算法。
获取聚类数目是一个反复迭代的过程。为了获取最佳类别数目,我们可以尝试对所有的样本分别拟合 2-20 个类别的模型,然后通过评估统计量的表现情况来选取最佳类别数目。作为一名分析师,拟合多少个类别的模型都是由你决定的。但需要注意的是,你必须在建模前标准化处理数据。
我们可以利用一些统计量来评估最佳类别数目,比如类内平方和,类间平方和,方差贡献比和统计差异值。本文中主要采用类内平方和来选择最佳类别数目。
类内平方和(wss)
类内平方和主要反映同一类别中样本的同质性,该统计量通过计算类中所有点与类中心之间的距离平方和来刻画聚类效果。加总所有类的类内平方和得到所有样本的总离差平方和(Total wss)。
上述指标是个相对指标而不是绝对指标,也就是说我们需要结合类别数目来进一步判断最佳类别数目。如果我们的最佳类别数目在 2 和 20 之间,那么我们倾向于选择具有最小 twss 的类别数目。
上图展现了 twss 随类别数目变化的趋势图,从图中可以看出:当类别数目大于4时,twss的下降率大大降低。理论上来说,你会倾向于选择最小twss所对应的类别数目,但在实际应用中这并不是一个好的方案;虽然将样本聚成 19 类时具有最小的 twss,但是分析这么多类的数据非常麻烦,我们无法达到聚类的基本要求——类内差异小,类间差异大。综合多方面信息,本例中我们应该选择的最佳类别数目为 4。你甚至可以比较不同类别数目模型之间的差异,然后再选取出最佳类别数目。
上图中不同颜色的点代表不同类别中的样本。其中第 4 类不同于其他三个类,它的标记颜色为蓝色。
聚类特征
上表给出了每个类别中观测值的数量,其中类别 4 占比最小,仅为 3.7%。
接下来让我们看看每个类别各自的一些特征:
上表不仅给出了每个类别中各个变量的均值以及样本的总体均值和标准差,同时还提供了一个用于衡量类均值与总体均值之间差异的统计量 Z-score:
其中μ代表总体均值,σ代表总体标准差。
对每个数值型变量来说,标准差越小,对应的 Z-score 越大。Z-score 的符号代表类均值高于或低于总体均值。
第 4 类的变量值与其他三个类别相差甚远,比如较低的样本个数,较高的访问量、交易值和 Z-score。
让我们也来看看不同类别中分类变量 OS 的差异情况:
从上表中可以看出,第 4 类中 iOS用户的比例远高于其他三组,因此我们可以认为第 4 类为异常值。作为一名分析师,我们需要进一步探索第 4 类的详细情况,以便于更好地了解异常值的情况。
总之,我们可以利用聚类方法来识别多变量情形中的异常值。除了K均值算法外还有许多聚类算法可以用于检测异常值,但这些已经超出了本文的讨论范围。 原文作者: Jacob Joseph 译者:Fibears
原文链接:https://blog.clevertap.com/how-to-detect-outliers-using-parametric-and-non-parametric-methods-part-ii/
本文为专栏文章,来自:数据工匠,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/12616.html 。
数据分析
2016-04-07 22:28:00
生成对抗网络的一篇实践文章,使用 PyTorch ,用很简单的代码搭建了一个GANs,非常通俗易懂。
我们创建了一个生成对抗网络,可以生成显示世界中没有的鸟。
在我们实际创建GAN之前,我们先看看GANs背后的思想。GANs是Ian Goodfellow发明的,他在斯坦福获得了本科和硕士学位,在蒙特利尔大学获得了博士学位。这是 深度学习 领域的一个新的大事。Yann LeCun说过: “生成对抗网络是近年来机器学习领域最有趣的想法”
什么是GANs?我们为什么要创造GANs?
神经网络很擅长分类和预测事情,但是AI的研究者想要让神经网络更加像人类,通过创造东西而不仅仅是看见东西。 Ian Goodfellow成功的发明了这样一类深度学习模型,可以用来创造东西。
GANs是怎么工作的?
GANs有两个独立的神经网络。一个叫做“G”,代表了生成器,另外一个叫做“D”,代表了判别器。生成器首先随机的产生图像,判别器通过观察这些图像告诉生成器这些图片有多真实。
让我们考虑一个生成器
在开始的时候,生成器用一个随机噪声信号作为输入,产生一个随机图像作为输出,通过判别器的帮助,开始产生越来越真实的图像。
判别器
判别器是生成器的一个对手,它的输入即有真实的图像,同时也有生成器生成的图像,判别器输出这个图像的真实程度。
到了某个点的时候,判别器无法判断出这个图像是否是真实图像了,这时我们可以发现某个由生成器输出的图像是之前从没有存在过的了。
GANs的应用 超分辨率 艺术辅助 元素抽取
开始写代码 !
注意:下面的代码并不适合深度学习的新手,我希望你有一些python深度学习的经验。
开始我们先导入一些GAN需要的包。首先需要确保PyTorch已安装。 #importing required libraries
from __future__ import print_function
import torch
import torch.nn as nn
import torch.nn.parallel
import torch.optim as optim
import torch.utils.data
import torchvision.datasets as dset
import torchvision.transforms as transforms
import torchvision.utils as vutils
from torch.autograd import Variable
设置一些超参数,batch-size和图像的尺寸: # Setting hyperparameters
batchSize = 64
imageSize = 64
第一行我们设置了batchsize为64,第二行设置了输出图像的尺寸为64×64。
然后我们创建一个图像的转换器的对象,如下: # Creating the transformations
transform = transforms.Compose([transforms.Scale(imageSize),transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)),])
上面的转化器是将图像作为判别器的输入所必须的。
注意:如果需要获取数据集,点击这里:https://github.com/venkateshtata/GAN_Medium.git>,clone这个仓库,然后替换 “dcgan.py” 文件为你需要写入的python文件, “data” 文件夹存储的是数据集。
现在我们加载数据集。这里我们使用的是 CIFAR-10的数据集。我们批量加载,确保你的python文件和你导入的数据集在同一个文件夹。 # Loading the dataset
dataset = dset.CIFAR10(root = './data', download = True, transform = transform)
dataloader = torch.utils.data.DataLoader(dataset, batch_size = batchSize, shuffle =True, num_workers = 2)
我们将数据集下载后放在./data目录下,应用我们之前定义的转化器。然后使用dataLoader 来获取训练图像。其中‘num_workers’ 表示的是读取数据用的线程的数量,其他的参数可以从字面意思理解。
由于这里我们需要处理两个神经网络,我们会定义一个全局的函数来初始化给定的神经网络,只要将神经网络模型通过参数传给这个函数即可。 def weights_init(m):
classname = m.__class__.__name__
if classname.find('Conv') != -1:
m.weight.data.normal_(0.0, 0.02)
elif classname.find('BatchNorm') != -1:
m.weight.data.normal_(1.0, 0.02)
m.bias.data.fill_(0)
上面的函数获取神经网络的模型作为参数,初始化所有的参数。这个函数在训练开始时在每个迭代都会调用。
第一步就是定义我们的生成器神经网络。我们创建一个生成器的类,里面包含了一系列的层。 class G(nn.Module):
def __init__(self):
super(G, self).__init__()
self.main = nn.Sequential(
nn.ConvTranspose2d(100, 512, 4, 1, 0, bias = False),
nn.BatchNorm2d(512),
nn.ReLU(True),
nn.ConvTranspose2d(512, 256, 4, 2, 1, bias = False),
nn.BatchNorm2d(256),
nn.ReLU(True),
nn.ConvTranspose2d(256, 128, 4, 2, 1, bias = False),
nn.BatchNorm2d(128),
nn.ReLU(True),
nn.ConvTranspose2d(128, 64, 4, 2, 1, bias = False),
nn.BatchNorm2d(64),
nn.ReLU(True),
nn.ConvTranspose2d(64, 3, 4, 2, 1, bias = False),
nn.Tanh()
)
分解上面的代码: 我们创建了一个类‘G’,继承了 ‘nn.module’,这个类里有构建模型所需要的各种功能,只要将各种应用和连接放到神经网络里即可。 然后我们创建了一个模型,包含了一系列的模块,如卷积,全连接等。 这里从图中可以看大,生成器和判别器是相互倒着的。生成器的输入时一个向量,所以这里我们使用了转置卷积 ‘ConvTranspose2d’。 然后我们在batch的维度上对所有的特征进行了归一化,然后使用ReLU进行了非线性变换。 我们重复上面的操作,输入的节点从100变到了512,特征数从512变到了256,bias保持为False。 在最后的 ‘ConvTranspose2d’ 中,我们输出了3个通道,因为输出的是‘RGB’的图像,使用了‘Tanh’作为激活函数。
现在我们创建一个forward函数来进行生成器信号的前向传播。 def forward(self, input):
output = self.main(input)
return output
上面的函数的输入时长度为100的随机向量。返回的是一个生成的图像。随机向量产生随机图像。
创建生成器: netG = G()
netG.apply(weights_init)
这里我们创建了一个生成器,然后进行了参数初始化。
现在我们再定义一个判别器类: class D(nn.Module):
def __init__(self):
super(D, self).__init__()
self.main = nn.Sequential(
nn.Conv2d(3, 64, 4, 2, 1, bias = False),
nn.LeakyReLU(0.2, inplace = True),
nn.Conv2d(64, 128, 4, 2, 1, bias = False),
nn.BatchNorm2d(128),
nn.LeakyReLU(0.2, inplace = True),
nn.Conv2d(128, 256, 4, 2, 1, bias = False),
nn.BatchNorm2d(256),
nn.LeakyReLU(0.2, inplace = True),
nn.Conv2d(256, 512, 4, 2, 1, bias = False),
nn.BatchNorm2d(512),
nn.LeakyReLU(0.2, inplace = True),
nn.Conv2d(512, 1, 4, 1, 0, bias = False),
nn.Sigmoid()
)
判别器分解: 和G类似,判别器也是继承了‘nn.module’,输入是生成器生成的图像,返回一个0~1之间的数字。 由于用生成器的输出作为输入,第一个操作时卷积,我们的激活函数使用了LeakyReLU。 可以看到,不同于生成器,我们这里使用了LeakyReLU,这个是经验得来的。 我们使用了‘BatchNorm2d’ 来进行特征归一化。 最后,我们使用了sigmoid函数,输入0~1之间的概率。
为了进行前向传播,我们定义一个forward函数,使用生成器的输出作为输入: def forward(self, input):
output = self.main(input)
return output.view(-1)
最后一行,我们的输出值在0~1之间,由于我们需要把向量铺平,确保向量有相同的维度。
创建判别器 : netD = D()
netD.apply(weights_init)
上面我们创建了判别器,初始化所有的参数:
现在,我们开始训练生成对抗网络。开始之前,我们需要得到一个损失函数,用来评价判别器的损失。我们使用 BCE Loss,非常适合对抗网络。然后生成器和判别器我们都需要一个优化器。 criterion = nn.BCELoss()
optimizerD = optim.Adam(netD.parameters(), lr = 0.0002, betas = (0.5, 0.999))
optimizerG = optim.Adam(netG.parameters(), lr = 0.0002, betas = (0.5, 0.999))
我们创建了一个评价函数用来度量预测和目标之间的差别。我们为判别器和生成器各创建了一个优化器。
我们使用了 ‘Adam’ 优化器,这是个SGD的升级版。
我们训练神经网络25个epochs: for epoch in range(25):
我们从数据集中循环读取图像 : for i, data in enumerate(dataloader, 0):
第一步需要更新判别器中的参数,我们把判别器中所有的梯度清零。 netD.zero_grad()
我们知道,判别器需要用真实和虚假的图像同时训练。这里我们先用一个真实图像来训练 real, _ = data
input = Variable(real)
target = Variable(torch.ones(input.size()[0]))
output = netD(input)
errD_real = criterion(output, target)
我们从数据集中获取一个真实图像训练判别器,然后包装成一个变量。然后前向传播,得到预测值,然后计算loss。
现在,使用生成器输出的虚假图像训练判别器: noise = Variable(torch.randn(input.size()[0], 100, 1, 1))
fake = netG(noise)
target = Variable(torch.zeros(input.size()[0]))
output = netD(fake.detach())
errD_fake = criterion(output, target)
这里,我们先让一个随机向量通过生成器,得到一个虚假的图像。然后将这个虚假图像通过判别器,得到预测,计算损失。
误差反向传播: errD = errD_real + errD_fake
errD.backward()
optimizerD.step()
这里我们计算判别器总的loss作为判别器的loss,更新判别器的时候,不更新生成器的权值。最后我们通过优化器来判别器更新权值。
下面我们更新生成器的权值: netG.zero_grad()
target = Variable(torch.ones(input.size()[0]))
output = netD(fake)
errG = criterion(output, target)
errG.backward()
optimizerG.step()
就像之前一样,我们先将所有的梯度清零。然后将loss是通过计算生成器的梯度来反向传播,然后通过生成器的优化器来更新生成器的权值。
现在,我们最后的步骤就是在每100个steps时打印loss,存储真实的图像和生成的图像,可以这么做: print('[%d/%d][%d/%d] Loss_D: %.4f Loss_G: %.4f' % (epoch, 25, i, len(dataloader),errD.data[0], errG.data[0]))
if i % 100 == 0:
vutils.save_image(real, '%s/real_samples.png' % "./results", normalize = True)
fake = netG(noise)
vutils.save_image(fake.data, '%s/fake_samples_epoch_%03d.png' %("./results", epoch), normalize = True)
完整代码 : from __future__ import print_function
import torch
import torch.nn as nn
import torch.nn.parallel
import torch.optim as optim
import torch.utils.data
import torchvision.datasets as dset
import torchvision.transforms as transforms
import torchvision.utils as vutils
from torch.autograd import Variable
batchSize = 64
imageSize = 64
transform = transforms.Compose([transforms.Scale(imageSize),transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)),]) # We create a list of transformations (scaling, tensor conversion, normalization) to apply to the input images.
dataset = dset.CIFAR10(root = './data', download = True, transform = transform)
dataloader = torch.utils.data.DataLoader(dataset, batch_size = batchSize, shuffle =True, num_workers = 2)
def weights_init(m):
classname = m.__class__.__name__
if classname.find('Conv') != -1:
m.weight.data.normal_(0.0, 0.02)
elif classname.find('BatchNorm') != -1:
m.weight.data.normal_(1.0, 0.02)
m.bias.data.fill_(0)
class G(nn.Module):
def __init__(self):
super(G, self).__init__()
self.main = nn.Sequential(
nn.ConvTranspose2d(100, 512, 4, 1, 0, bias = False),
nn.BatchNorm2d(512),
nn.ReLU(True),
nn.ConvTranspose2d(512, 256, 4, 2, 1, bias = False),
nn.BatchNorm2d(256),
nn.ReLU(True),
nn.ConvTranspose2d(256, 128, 4, 2, 1, bias = False),
nn.BatchNorm2d(128),
nn.ReLU(True),
nn.ConvTranspose2d(128, 64, 4, 2, 1, bias = False),
nn.BatchNorm2d(64),
nn.ReLU(True),
nn.ConvTranspose2d(64, 3, 4, 2, 1, bias = False),
nn.Tanh()
)
def forward(self, input):
output = self.main(input)
return output
netG = G()
netG.apply(weights_init)
class D(nn.Module):
def __init__(self):
super(D, self).__init__()
self.main = nn.Sequential(
nn.Conv2d(3, 64, 4, 2, 1, bias = False),
nn.LeakyReLU(0.2, inplace = True),
nn.Conv2d(64, 128, 4, 2, 1, bias = False),
nn.BatchNorm2d(128),
nn.LeakyReLU(0.2, inplace = True),
nn.Conv2d(128, 256, 4, 2, 1, bias = False),
nn.BatchNorm2d(256),
nn.LeakyReLU(0.2, inplace = True),
nn.Conv2d(256, 512, 4, 2, 1, bias = False),
nn.BatchNorm2d(512),
nn.LeakyReLU(0.2, inplace = True),
nn.Conv2d(512, 1, 4, 1, 0, bias = False),
nn.Sigmoid()
)
def forward(self, input):
output = self.main(input)
return output.view(-1)
netD = D()
netD.apply(weights_init)
criterion = nn.BCELoss()
optimizerD = optim.Adam(netD.parameters(), lr = 0.0002, betas = (0.5, 0.999))
optimizerG = optim.Adam(netG.parameters(), lr = 0.0002, betas = (0.5, 0.999))
for epoch in range(25):
for i, data in enumerate(dataloader, 0):
netD.zero_grad()
real, _ = data
input = Variable(real)
target = Variable(torch.ones(input.size()[0]))
output = netD(input)
errD_real = criterion(output, target)
noise = Variable(torch.randn(input.size()[0], 100, 1, 1))
fake = netG(noise)
target = Variable(torch.zeros(input.size()[0]))
output = netD(fake.detach())
errD_fake = criterion(output, target)
errD = errD_real + errD_fake
errD.backward()
optimizerD.step()
netG.zero_grad()
target = Variable(torch.ones(input.size()[0]))
output = netD(fake)
errG = criterion(output, target)
errG.backward()
optimizerG.step()
print('[%d/%d][%d/%d] Loss_D: %.4f Loss_G: %.4f' % (epoch, 25, i, len(dataloader),errD.data[0], errG.data[0]))
if i % 100 == 0:
vutils.save_image(real, '%s/real_samples.png' % "./results", normalize = True)
fake = netG(noise)
vutils.save_image(fake.data, '%s/fake_samples_epoch_%03d.png' %("./results", epoch), normalize = True)
你可以从我的GitHub仓库看到代码:
https://github.com/venkateshtata/GAN_Medium 作者:Venkatesh Tata编译:ronghuaiyang
本文为专栏文章,来自:AI公园,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/66243.html 。
数据分析
2019-09-27 09:05:00
摘要:4月20日,UBDC全域 大数据 峰会2016在北京举办。会议以“无数据不智能”为主题,除主论坛之外,分别设立了“数据化运营”、“数据营销”、“IOT和O2O 数据应用 ”、“数据开放与发展纵横谈”四个平行分论坛。
北京大学社会学博士、北京大学新媒体研究院教授刘德寰在“无数据不智能”的主论坛上,围绕“有效 大数据 运算的两个路径假说及意义”进行演讲。他直言:目前很多的标签推荐都是伪推荐,未来 数据分析 应该首先完善人的纬度,未来的 数据分析 就是分析人。
刘德寰提出了有效大数据运算的两个路径假说:第一个路径,未来数据分析就是分析人,完善人的纬度。第二个路径,对物的纬度探测,基于人的认知习惯。
他进一步介绍这两个假设:每个非人的事物都由一个确定的N维空间,而且N可以从人的认识能力角度定义。他特别以tesco作为案例,这家企业不仅针对每一个商品都会进行20纬度的打分,同时也会根据进店顾客进行全面的分析。
以下为刘德寰在UBDC全域大数据峰会·2016中分享的速记实录:
非常高兴跟大家分享,因为这个话题我考虑非常多的时间了。我今天要讲的实际上有效大数据运算的两个路径假说极其意义。因为现在大数据已经跟我们在一起,我们只有不读书才会谈那些,现在这个时候需要反思大数据的问题,这个题的起源于什么呢?
起源于几个问题,第一问题是人类行为93%是可以预测的?我讲的不好就低头看手机,我讲的好就照相,这些预测的东西有多少我们可以做的呢?我在用另外一个科学数据来说,人和人之间的差异,DNA上差异,原来说是0.1%,现在是0.3%,大家记住99.9%和99.7%是一致的,这个问题实际上是特别本质的问题,不要说我拿一个数就能够算出来说对人的差异,个性化能够算出来,因为这是一个数列问题。看第二个现象,两个数这两个人90%的相似度,但是人的行为有多少呢?按几十亿次来算,几十亿次几百万亿次的行为,当中如果有90%的相似度,会如何?
日常生活当中经常有现象,两个人的对话,这是前两天的对话,审美疲劳不喜欢了,原来特别喜欢,现在有点烦,另外一个人说我也是,真的有点烦人,我们的数据去推断人的时候我们考虑这些因素了吗?
再看一个,深度学习,确实名词都很炫,实际上集体学习分了层级,层次不同而已,深度学习面临本质问题,实际上主要做的原来集体学习当中,太随意,我不断优化这个模型,但是深度学习一直在用于图像、视频,这些包括文字学习当中,有谁说过对人的学习了吗?因为那些物是不变的。只要出来了就放在那儿不变的,人是变的。所以我今天要谈四个问题。
第一个问题是推荐算法及问题,第二个有效运算的原则,然后我提出两个假说。看一下现在推荐算法当中大数据运算什么东西比较容易,已经解决的问题都是比较容易的,抓取简单的运算,简单表格的运算, 数据可视化 这些都比较容易,只要把经典算法学过来,简单改进,现在多的不得了,改进一下应用到现实当中不难。但是难的问题是什么?效果,如何改进效果,这是一个天大的难题。
人们浏览行为那么快,我们一定要在这个基础问题上用MODElbased.我们现在习惯于打标签,以相似邻居推荐而且算法绝对不是基于人性和生活,而是基于商业,大量的过度泥和。
不要把一个变量理解为一个维度,一个变量是N个维度。这个时候我们在数据运算的时候,任何一个人的行为都是无规律的,但是人的生活方式是很有规律的,我们发现十年后看到人一点都没有变,生活方式、价值观、表现形式一点都没变,这是在常人的建立。但是人的态度、情绪、场景都不一样,怎么可能规律呢?人是能变的,群的行为的规律是稳定的,这个分群不是一个行为的迭加,它是一种生活方式的展现。在这个当中,群是可感知,可评判,一个人可以处于N个。我们在原来发现中有一个小群体,在移动互联网里中,技术红颜,35到45岁的女性,买手机,消费当中都有技术最前面的手机,追求技术,我们这拨人引领了什么?技术红颜的是从年轻果粉中出现的。大家可以看技术红颜引发的技术旋风。接下来他演化成了巨大的趋势和族群,形成了新的潮流,这个潮流叫熟女经济之微博移动化。他也引领了网购,他同时引领了整个产业潮流的变迁,他把整个安卓新的崛起,背后都跟这个小族群有非常大的联系关系。
群的稳定,一看苹果的客户一直是M型,它是稳定的,它在运算当中是可行的。所以第一个假说对象是人,第二个假说对象于物。有两个假说:每个非人的事物都由一个确定的N维空间,而且N可以从人的认识能力角度定义。每一个不同的物品,N维不一定一样,但是相似,只是一个数量的变化。TESCO把每一个产品都用20个维度打标签,这件事情有多简单,我在推送的时候,OK,新闻喜欢这个东西,这个东西在时尚上打分是39.2,同时他还喜欢这个东西,这个东西在技术产品当中打分是90分,再找一个产品,大家说这个效率要高于多少其它的事情。真正在预算当中,我自己认为这种方式可以融入社科的所有思想,所有搞计算机,便成的人,非常多的程序员整天说的话都不是人话,对其它的行业一点不了解,大家觉得这事靠谱吗?这让我想起了东方不败。大家可以看看亚马逊,亚马逊在这方面也在进行探索,这实际是运算逻辑本身要反归人性,我们要向社会学、经济学、法学、政治学、传播学,所有学科,我们要学习他们已有的知识,把已有的知识稳定到我们的计算当中,我相信那种运算规则不仅效率高,而且简单。所以我基本感觉在未来的运算当中,有两个东西,就是刚才说的这两条路径可能是未来。之所以是假说,是因为没有大规模实施,但是它在逻辑和实践上是有前提的。
第一个路径分析人,完善人的维度。第二个路径对物探测,他必须是基于人的认识和习惯,这两条路径不仅效率高,稳定性高,同时能带来未来的各自分析的可能性,同时可对可实现。
本文为专栏文章,来自:刘德寰,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/14806.html 。
数据分析
2016-04-22 12:00:00
人类文明进步的每个阶段都有一张最具代表性的历史标签:19世纪是煤炭和蒸汽机,20世纪是内燃机、石油和电力。进入21世纪,由信息技术和互联网所引发的新一轮科技革命和产业变革更加深刻地诠释着人类进步的征程。其中,最具时代标志性的标签非 大数据 莫属,它好比是21世纪的石油和金矿,是一个国家提升综合竞争力的又一关键资源。
大数据既是一类数据,也是一项技术。作为数据,它呈现容量大、增长速度快、类别多、价值密度低等特征;作为新一代信息系统架构和技术,它能够对数量巨大、来源分散、格式多样的数据进行采集、存储,并进行关联性分析。大数据通过数据整合分析和深度挖掘,发现规律、创造价值,进而建立起从物理世界到数字世界和网络世界的无缝链接。大数据时代,线上与线下、虚拟与现实、软件与硬件重叠交错、跨界融合,将重塑我们的认知和实践模式,开启一场新的产业突破与经济转型。
我们正处于大数据变革的时代。移动互联网、智能终端、新型传感器快速渗透到地球的每一个角落,人人有终端、物物可传感、处处可上网、时时在链接,数据增长速度用几何式增长甚至爆发式增长都很难形容得贴切。有机构预计,到2020年全球数据使用量将达到约44ZB(1ZB=10万亿亿字节),将涵盖经济社会发展各个领域。由此产生的革命性影响将重塑生产力发展模式,重构生产关系组织结构,提升产业效率和管理水平,提高政府治理的精准性、高效性和预见性。毋庸置疑,大数据将创造下一代互联网生态、下一代创新体系、下一代制造业形态以及下一代社会治理结构。
大数据还将改变国家间的竞争模式。世界各国对数据的依赖快速上升,国际竞争焦点将从对资本、土地、资源的争夺转向对大数据的争夺,重点体现为一国拥有数据的规模、活跃程度以及解析、处置、运用数据的能力,数字主权将成为继边防、海防、空防之后又一个大国博弈领域。各主要国家已认识到大数据对于国家的战略意义,谁掌握数据的主动权和主导权,谁就能赢得未来。新一轮大国竞争,在很大程度上是通过大数据增强对世界局势的影响力和主导权。
经过多年努力,我国已拥有全球最多的互联网用户和移动互联网用户、全球最大的电子信息产品生产基地、全球最具成长性的信息消费市场,培育了一批具有国际竞争力的企业。庞大的用户群体和完整的经济体系积累了丰富的数据资源,而工业互联网将进一步激发大数据发展的潜力,不断拓展信息产业新蓝海。
当前和今后一个时期,创新、变革、融合成为产业发展主旋律,蕴藏巨大发展机遇。随着我国经济发展进入新常态,无论保持经济中高速增长、促进产业迈向中高端水平,还是营造大众创业、万众创新的发展环境,大数据都将充当越来越重要的角色,在经济社会发展中的基础性、战略性、先导性地位也将越来越突出。
2015年是我国建设制造强国和网络强国的关键之年,国家制定发布了《中国制造2025》和“互联网+”行动计划,极大地激发了全民创新创业的热情,也明确了大数据发展的战略方向。日前,国务院常务会议通过了《关于促进大数据发展的行动纲要》,强调开发应用好大数据这一基础性战略资源。应按照建设制造强国和网络强国的战略部署,加强信息基础设施建设,提升信息产业支撑能力,构建完善以数据为核心的大数据产业链,推动公共数据资源开放共享,加快推动核心技术、应用模式、商业模式协同创新发展,将大数据打造成新常态下经济提质增效升级的新引擎,为经济发展和社会进步提供更加有力的支撑。
(本文根据作者为人民出版社出版的《大数据领导干部读本》一书所写序言摘编)
来源:《 人民日报 》( 2015年10月13日 07 版)
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2015-10-13 15:32:00
引言
近年来涌现出越来越多的 非结构化数据 ,我们很难直接利用传统的分析方法从这些数据中获得信息。但是新技术的出现使得我们可以从这些轻易地解析非结构化数据,并提取出重要信息。
主题模型是处理非结构化数据的一种常用方法,从名字中就可以看出,该模型的主要功能就是从文本数据中提取潜在的主题信息。主题模型不同于其他的基于规则或字典的搜索方法,它是一种无监督学习的方法。
主题可以由语料库中的共现词项所定义,一个好的主题模型的拟合结果应该如下所示——“health”、“doctor”、“patient”、“hospital”构成医疗保健主题,而“farm”、“crops”、“wheat”则构成农业主题。
主题模型的适用领域有:文档聚类、信息提取和特征选择。比如,纽约时报利用主题模型的结果来提升文章推荐引擎的功能。许多专家将主题模型应用到招聘领域中,利用主题模型来提取工作要求中的潜在信息,并用模型的拟合结果来匹配候选人。此外,主题模型还被用于处理大规模的非结构化数据,如邮件、顾客评论和用户社交数据。
如果你不熟悉主题模型的话,那么本文将告诉你主题模型的原理以及如何利用 Python 来构建主题模型。
目录
LDA(Latent Dirichlet Allocation) 模型
LDA 模型的参数
Python 实现过程
数据准备
数据清洗与预处理
计算文档词频矩阵
构建 LDA 模型
拟合结果
建议
频数过滤法
标记过滤法
Batch Wise LDA
特征选择
LDA 模型
我们可以用多种方法来处理文本数据,比如 TF 和 IDF 方法。LDA模型是最流行的主题模型,我们接下来将详细介绍 LDA 模型。
LDA 模型假设文档是由一系列主题构成的,然后再从这些主题中依据相应的概率分布生成词语。给定一个文档数据集,LDA 模型主要用于识别文档中的主题分布情况。
LDA 模型是一种矩阵分解技术,在向量空间模型中,任何语料都能被表示成一个文档词频矩阵。如下所示,矩阵中包含 N 篇文档,M 个词语,矩阵中的数值表示词语在文档中出现的频率。
LDA 模型将上述的文档词频矩阵转换成两个低维的矩阵—— M1 和 M2。其中 M1 表示文档主题矩阵,M2 表示主题词语矩阵,它们的维度分别是 N*K 和 K*M,K 表示文档中主题的个数,M 表示词语的数量。
需要注意的是,上述两个矩阵提供了文档主题和主题词语的初始分布情况,LDA 模型通过抽样的方法来更新这两个矩阵。该模型通过更新文档中每个词语的主题归属情况来调整模型的参数值 p1 和 p2,其中 p_1 = p(frac{topic_t}{document_d}),p_2 = p(frac{word_w}{topic_t})。经过一系列的迭代计算后,LDA 模型达到收敛状态,此时我们即可得到一组最佳参数值。
LDA 模型的参数
超参数 alpha 和 beta —— alpha 表示文档—主题密度,beta 则表示主题—词语密度,其中 alpha 值越大表示文档中包含更多的主题,而更大的 beta 值则表示主题中包含更多的词语。
主题个数——我们可以利用 KL 散度得分来计算最佳的主题个数,由于这部分内容过于学术,我将不详细介绍这些内容,有兴趣的读者可以参阅相关文献(http://link.springer.com/chapter/10.1007%2F978-3-642-13657-3_43)。
主题中的词数——这个参数取决于你的真实需求,如果你的目标是提取主题信息,那么你最好选择较多的词语。如果你的目标是提取特征,那么你应该选择较少的词项。
迭代次数—— LDA 算法的迭代次数
Python 实现
数据准备
以下是一些示例数据:
数据清洗与预处理
数据清洗是文本建模分析过程中的一个重要环节,在这个过程中我们将移除标点符号、停止词并规整数据集:
计算文档词频矩阵
构建 LDA 模型
拟合结果
建议
主题模型的拟合结果完全取决于语料库中的特征项,而语料是由一个稀疏的文档词频矩阵所构成的。降低该矩阵的维度可以提升主题模型的拟合结果,根据我的个人经验,主要有以下几个降维方法:
频数过滤法
我们可以按照词语的频数进行排序,然后保留频数较高的词语并将频数较低的词语剔除掉。此外我们还可以借助探索性分析的方法来决定如何设置阈值。
标记过滤法
通常情况下,标记过滤法的效果优于频数过滤法。主题模型通过词语的共现情况来反映主题信息,然而在每个主题中并不是所有的词语都是同等重要的。我们可以将这些无关紧要的词语剔除掉,提升模型的拟合效果。
Batch Wise LDA
为了提取出文档中最重要的主题信息,我们可以将语料库分割成一系列固定大小的子集。然后我们可以对每个子集数据构建多个 LDA 模型,出现次数最多的主题就是该文档中最重要的主题信息。
特征选择
有些时候,我们还可以利用 LDA 模型来选择特征。以文本分类问题为例,如果训练集中包含多个类别的文档,我们可以首先构建 LDA 模型,然后剔除掉不同类别文档中共同出现的主题信息,剩余的特征即为有助于提升文本分类模型的准确率。
结语
到此为止,我们已经介绍完主题模型了,我希望本文能够帮你了解如何处理文本数据。如果你想加深对主题模型的理解,那么我建议你最好亲自练习下本文的代码并检查模型的拟合结果。
本文为专栏文章,来自:数据工匠,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/39913.html 。
数据分析
2016-12-27 20:40:00
大数据 本身是个很宽泛的概念,Hadoop生态圈(或者泛生态圈)基本上都是为了处理超过单机尺度的数据处理而诞生的。你可以把它比作一个厨房所以需要的各种工具。锅碗瓢盆,各有各的用处,互相之间又有重合。你可以用汤锅直接当碗吃饭喝汤,你可以用小刀或者刨子去皮。但是每个工具有自己的特性,虽然奇怪的组合也能工作,但是未必是最佳选择。
大数据,首先你要能存的下大数据
传统的文件系统是单机的,不能横跨不同的机器。HDFS(Hadoop Distributed FileSystem)的设计本质上是为了大量的数据能横跨成百上千台机器,但是你看到的是一个文件系统而不是很多文件系统。比如你说我要获取/hdfs/tmp/file1的数据,你引用的是一个文件路径,但是实际的数据存放在很多不同的机器上。你作为用户,不需要知道这些,就好比在单机上你不关心文件分散在什么磁道什么扇区一样。HDFS为你管理这些数据。
存的下数据之后,你就开始考虑怎么处理数据。虽然HDFS可以为你整体管理不同机器上的数据,但是这些数据太大了。一台机器读取成T上P的数据(很大的数据哦,比如整个东京热有史以来所有高清电影的大小甚至更大),一台机器慢慢跑也许需要好几天甚至好几周。对于很多公司来说,单机处理是不可忍受的,比如微博要更新24小时热博,它必须在24小时之内跑完这些处理。那么我如果要用很多台机器处理,我就面临了如何分配工作,如果一台机器挂了如何重新启动相应的任务,机器之间如何互相通信交换数据以完成复杂的计算等等。这就是MapReduce / Tez / Spark的功能。MapReduce是第一代计算引擎,Tez和Spark是第二代。MapReduce的设计,采用了很简化的计算模型,只有Map和Reduce两个计算过程(中间用Shuffle串联),用这个模型,已经可以处理大数据领域很大一部分问题了。
那什么是Map,什么是Reduce
考虑如果你要统计一个巨大的文本文件存储在类似HDFS上,你想要知道这个文本里各个词的出现频率。你启动了一个MapReduce程序。Map阶段,几百台机器同时读取这个文件的各个部分,分别把各自读到的部分分别统计出词频,产生类似(hello, 12100次),(world,15214次)等等这样的Pair(我这里把Map和Combine放在一起说以便简化);这几百台机器各自都产生了如上的集合,然后又有几百台机器启动Reduce处理。Reducer机器A将从Mapper机器收到所有以A开头的统计结果,机器B将收到B开头的词汇统计结果(当然实际上不会真的以字母开头做依据,而是用函数产生Hash值以避免数据串化。因为类似X开头的词肯定比其他要少得多,而你不希望数据处理各个机器的工作量相差悬殊)。然后这些Reducer将再次汇总,(hello,12100)+(hello,12311)+(hello,345881)= (hello,370292)。每个Reducer都如上处理,你就得到了整个文件的词频结果。
这看似是个很简单的模型,但很多算法都可以用这个模型描述了。
Map+Reduce的简单模型很黄很暴力,虽然好用,但是很笨重。第二代的Tez和Spark除了内存Cache之类的新feature,本质上来说,是让Map/Reduce模型更通用,让Map和Reduce之间的界限更模糊,数据交换更灵活,更少的磁盘读写,以便更方便地描述复杂算法,取得更高的吞吐量。
有了MapReduce,Tez和Spark之后,程序员发现,MapReduce的程序写起来真麻烦。他们希望简化这个过程。这就好比你有了汇编语言,虽然你几乎什么都能干了,但是你还是觉得繁琐。你希望有个更高层更抽象的语言层来描述算法和数据处理流程。于是就有了Pig和Hive。Pig是接近脚本方式去描述MapReduce,Hive则用的是SQL。它们把脚本和SQL语言翻译成MapReduce程序,丢给计算引擎去计算,而你就从繁琐的MapReduce程序中解脱出来,用更简单更直观的语言去写程序了。
有了Hive之后,人们发现SQL对比Java有巨大的优势。一个是它太容易写了。刚才词频的东西,用SQL描述就只有一两行,MapReduce写起来大约要几十上百行。而更重要的是,非计算机背景的用户终于感受到了爱:我也会写SQL!于是 数据分析 人员终于从乞求工程师帮忙的窘境解脱出来,工程师也从写奇怪的一次性的处理程序中解脱出来。大家都开心了。Hive逐渐成长成了大数据仓库的核心组件。甚至很多公司的流水线作业集完全是用SQL描述,因为易写易改,一看就懂,容易维护。
自从数据分析人员开始用Hive分析数据之后,它们发现,Hive在MapReduce上跑,真鸡巴慢!流水线作业集也许没啥关系,比如24小时更新的推荐,反正24小时内跑完就算了。但是数据分析,人们总是希望能跑更快一些。比如我希望看过去一个小时内多少人在充气娃娃页面驻足,分别停留了多久,对于一个巨型网站海量数据下,这个处理过程也许要花几十分钟甚至很多小时。而这个分析也许只是你万里长征的第一步,你还要看多少人浏览了跳蛋多少人看了拉赫曼尼诺夫的CD,以便跟老板汇报,我们的用户是猥琐男闷骚女更多还是文艺青年/少女更多。你无法忍受等待的折磨,只能跟帅帅的工程师蝈蝈说,快,快,再快一点!
于是Impala,Presto,Drill诞生了(当然还有无数非著名的交互SQL引擎,就不一一列举了)。三个系统的核心理念是,MapReduce引擎太慢,因为它太通用,太强壮,太保守,我们SQL需要更轻量,更激进地获取资源,更专门地对SQL做优化,而且不需要那么多容错性保证(因为系统出错了大不了重新启动任务,如果整个处理时间更短的话,比如几分钟之内)。这些系统让用户更快速地处理SQL任务,牺牲了通用性稳定性等特性。如果说MapReduce是大砍刀,砍啥都不怕,那上面三个就是剔骨刀,灵巧锋利,但是不能搞太大太硬的东西。
这些系统,说实话,一直没有达到人们期望的流行度。因为这时候又两个异类被造出来了。他们是Hive on Tez / Spark和SparkSQL。它们的设计理念是,MapReduce慢,但是如果我用新一代通用计算引擎Tez或者Spark来跑SQL,那我就能跑的更快。而且用户不需要维护两套系统。这就好比如果你厨房小,人又懒,对吃的精细程度要求有限,那你可以买个电饭煲,能蒸能煲能烧,省了好多厨具。
上面的介绍,基本就是一个数据仓库的构架了。底层HDFS,上面跑MapReduce/Tez/Spark,在上面跑Hive,Pig。或者HDFS上直接跑Impala,Drill,Presto。这解决了中低速数据处理的要求。
那如果我要更高速的处理呢
如果我是一个类似微博的公司,我希望显示不是24小时热博,我想看一个不断变化的热播榜,更新延迟在一分钟之内,上面的手段都将无法胜任。于是又一种计算模型被开发出来,这就是Streaming(流)计算。Storm是最流行的流计算平台。流计算的思路是,如果要达到更实时的更新,我何不在数据流进来的时候就处理了比如还是词频统计的例子,我的数据流是一个一个的词,我就让他们一边流过我就一边开始统计了。流计算很牛逼,基本无延迟,但是它的短处是,不灵活,你想要统计的东西必须预先知道,毕竟数据流过就没了,你没算的东西就无法补算了。因此它是个很好的东西,但是无法替代上面数据仓库和批处理系统。
还有一个有些独立的模块是KV Store,比如Cassandra,HBase,MongoDB以及很多很多很多很多其他的(多到无法想象)。所以KV Store就是说,我有一堆键值,我能很快速滴获取与这个Key绑定的数据。比如我用身份证号,能取到你的身份数据。这个动作用MapReduce也能完成,但是很可能要扫描整个数据集。而KV Store专用来处理这个操作,所有存和取都专门为此优化了。从几个P的数据中查找一个身份证号,也许只要零点几秒。这让大数据公司的一些专门操作被大大优化了。比如我网页上有个根据订单号查找订单内容的页面,而整个网站的订单数量无法单机数据库存储,我就会考虑用KV Store来存。KV Store的理念是,基本无法处理复杂的计算,大多没法JOIN,也许没法聚合,没有强一致性保证(不同数据分布在不同机器上,你每次读取也许会读到不同的结果,也无法处理类似银行转账那样的强一致性要求的操作)。但是丫就是快。极快。
每个不同的KV Store设计都有不同取舍,有些更快,有些容量更高,有些可以支持更复杂的操作。必有一款适合你。
除此之外,还有一些更特制的系统/组件,比如Mahout是分布式机器学习库,Protobuf是数据交换的编码和库,ZooKeeper是高一致性的分布存取协同系统,等等。
有了这么多乱七八糟的工具,都在同一个集群上运转,大家需要互相尊重有序工作。所以另外一个重要组件是,调度系统。现在最流行的是Yarn。你可以把他看作中央管理,好比你妈在厨房监工,哎,你妹妹切菜切完了,你可以把刀拿去杀鸡了。只要大家都服从你妈分配,那大家都能愉快滴烧菜。
你可以认为,大数据生态圈就是一个厨房工具生态圈。为了做不同的菜,中国菜,日本菜,法国菜,你需要各种不同的工具。而且客人的需求正在复杂化,你的厨具不断被发明,也没有一个万用的厨具可以处理所有情况,因此它会变的越来越复杂。 来源:知乎 本文由作者Xiaoyu Ma授权数据分析网发布
链接:https://www.zhihu.com/question/27974418
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2015-02-07 17:38:00
本篇文章是python爬虫系列的第三篇,介绍如何抓取京东商城商品评论信息,并对这些评论信息进行分析和可视化。下面是要抓取的商品信息,一款女士文胸。这个商品共有红色,黑色和肤色三种颜色, 70B到90D共18个尺寸,以及超过700条的购买评论。
京东商品评论信息是由JS动态加载的,所以直接抓取商品详情页的URL并不能获得商品评论的信息。因此我们需要先找到存放商品评论信息的文件。这里我们使用Chrome浏览器里的开发者工具进行查找。
具体方法是在商品详情页点击鼠标右键,选择检查,在弹出的开发者工具界面中选择Network,设置为禁用缓存(Disable cache)和只查看JS文件。然后刷新页面。页面加载完成后向下滚动鼠标找到商品评价部分,等商品评价信息显示出来后,在下面Network界面的左侧筛选框中输入productPageComments,这时下面的加载记录中只有一条信息,这里包含的就是商品详情页的商品评论信息。点击这条信息,在右侧的Preview界面中可以看到其中包含了当前页面中的评论信息。(抓取价格信息输入prices)。
复制这条信息,并把URL地址放在浏览器中打开,里面包含了当前页的商品评论信息。这就是我们要抓取的URL地址。https://club.jd.com/comment/productPageComments.actioncallback=fetchJSON_comment98vv100&productId=10001234327&score=0&sortType=5&page=0&pageSize=10
仔细观察这条URL地址可以发现,其中productId=10001234327是当前商品的商品ID。与商品详情页URL中的ID一致。而page=0是页码。如果我们要获取这个商品的所有评论,只需要更改page后面的数字即可。
在获得了商品评论的真实地址以及URL地址的规律后,我们开始使用python抓取这件商品的700+条评论信息。并对这些信息进行处理和分析。
开始前的准备工作
在开始抓取之前先要导入各种库文件,这里我们分别介绍下需要导入的每个库文件的名称以及在数据抓取和分析中的作用。requests用于进行页面抓取,time用于设置抓取过程中的Sleep时间,random用于生产随机数,这里的作用是将抓取页面的顺序打乱,re用于在抓取后的页面代码中提取需要的信息,numpy用于常规的指标计算,pandas用于进行数据汇总和透视分析,matplotlib用于绘制各站图表,jieba用于对评论内容进行分词和关键词提取。 #导入requests库(请求和页面抓取)
import requests
#导入time库(设置抓取Sleep时间)
import time
#导入random库(生成乱序随机数)
import random
#导入正则库(从页面代码中提取信息)
import re
#导入数值计算库(常规计算)
import numpy as np
#导入科学计算库(拼表及各种分析汇总)
import pandas as pd
#导入绘制图表库( 数据可视化 )
import matplotlib.pyplot as plt
#导入结巴分词库(分词)
import jieba as jb
#导入结巴分词(关键词提取)
import jieba.analyse
将爬虫伪装成浏览器
导入完库文件后,还不能直接进行抓取,因为这样很容易被封。我们还需要对爬虫进行伪装,是爬虫看起来更像是来自浏览器的访问。这里主要的两个工作是设置请求中的头文件信息以及设置Cookie的内容。
头文件信息很容易找到,在Chrome的开发者工具中选择Network,刷新页面后选择Headers就可以看到本次访问的头文件信息,里面包含了一些浏览器的技术参数和引荐来源信息。将这些信息直接添加到代码中就可以,这里我们将头部信息保存在headers中。
#设置请求中头文件的信息 headers = {‘User-Agent’:’Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11′,
‘Accept’:’text/html;q=0.9,*/*;q=0.8′,
‘Accept-Charset’:’ISO-8859-1,utf-8;q=0.7,*;q=0.3′,
‘Connection’:’close’,
‘Referer’:’https://www.jd.com/’
}
在查看头文件信息的旁边还有一个Cookies标签,点击进去就是本次访问的Cookies信息。这里的Cookies信息与前面头文件中的Cookie信息一致,不过这里更加清晰。把Request Cookies信息复制到代码中即可,这里我们将Request Cookies信息保存在Cookie中。
#设置Cookie的内容 cookie={‘TrackID’:’1_VWwvLYiy1FUr7wSr6HHmHhadG8d1-Qv-TVaw8JwcFG4EksqyLyx1SO7O06_Y_XUCyQMksp3RVb2ezA’,
‘__jda’:’122270672.1507607632.1423495705.1479785414.1479794553.92′,
‘__jdb’:’122270672.1.1507607632|92.1479794553′,
‘__jdc’:’122270672′,
‘__jdu’:’1507607632′,
‘__jdv’:’122270672|direct|-|none|-|1478747025001′,
‘areaId’:’1′,
‘cn’:’0′,
‘ipLoc-djd’:’1-72-2799-0′,
‘ipLocation’:’%u5317%u4EAC’,
‘mx’:’0_X’,
‘rkv’:’V0800′,
‘user-key’:’216123d5-4ed3-47b0-9289-123456′,
‘xtest’:’4657.553.d9798cdf31c02d86b8b81cc119d94836.b7a782741f667201b54880c925faec4b’}
抓取商品评论信息
设置完请求的头文件和Cookie信息后,我们开始抓取京东商品评论的信息。前面分析URL的时候说过,URL中包含两个重要的信息,一个是商品ID,另一个是页码。这里我们只抓取一个商品的评论信息,因此商品ID不需要更改。但这个商品的评论有700+条,也就是有近80页需要抓取,因此页码不是一个固定值,需要在0-80之间变化。这里我们将URL分成两部分,通过随机生成页码然后拼接URL的方式进行抓取。 #设置URL的第一部分
url1=’https://sclub.jd.com/comment/productPageComments.actionproductId=10001234327&score=0&sortType=3&page=’
#设置URL的第二部分
url2=’&pageSize=10&callback=fetchJSON_comment98vv41127′
#乱序输出0-80的唯一随机数
ran_num=random.sample(range(80), 80)
为了使抓取过程看起来更加随机,我们没有从第1页一直抓取到第80页。而是使用random生成0-80的唯一随机数,也就是要抓取的页码编号。然后再将页码编号与两部分URL进行拼接。这里我们只知道商品有700+的评论,但并不知道具体数字,所以抓取范围定位从0-80页。
下面是具体的抓取过程,使用for循环每次从0-80的随机数中找一个生成页码编号,与两部分的URL进行拼接。生成要抓取的URL地址并与前面设置好的头文件信息和Cookie信息一起发送请求获取页面信息。将获取到的页面信息进行汇总。每次请求间休息5秒针,避免过于频繁的请求导致返回空值。 #拼接URL并乱序循环抓取页面
for i in ran_num:
a = ran_num[0]
if i == a:
i=str(i)
url=(url1+i+url2)
r=requests.get(url=url,headers=headers,cookies=cookie)
html=r.content
else:
i=str(i)
url=(url1+i+url2)
r=requests.get(url=url,headers=headers,cookies=cookie)
html2=r.content
html = html + html2
time.sleep(5)
print(“当前抓取页面:”,url,”状态:”,r)
在抓取的过程中输出每一步抓取的页面URL以及状态。通过下面的截图可以看到,在page参数后面的页码是随机生成的并不连续。
抓取完80个页面后,我们还需要对页面进行编码。完成编码后就可以看到其中所包含的中文评论信息了。后面大部分苦逼的工作就是要对这些评论信息进行不断提取和反复的清洗。 #对抓取的页面进行编码
html=str(html, encoding = “GBK”)
这里建议将抓取完的数据存储在本地,后续工作可以直接从本地打开文件进行清洗和分析工作。避免每次都要重新抓取数据。这里我们将数据保存在桌面的page.txt文件中。 #将编码后的页面输出为txt文本存储
file = open(“c:\
数据分析
2017-03-10 06:00:01
作为 数据分析师 ,需要花费大部分时间来处理数据和分析数据。
通过与数据的紧密合作:收集数据、分析数据、汇总数据、解释数据等等内容,很快就会发现在沟通能力有所提升,尤其体现在术语和与其他 数据分析 师之间的交流上。简而言之,学习了分析学的语言,它可以使与其他分析师的交流变得非常直观和高效。
但是在企业中很可能会遇到某些特定的人,尤其是相关利益关联者,可能不太喜欢如此深入地处理数据。虽然数据分析师可以流利使用分析语言,但利益关联者能够熟练掌握项目管理语言,或者使用企业业务营销语言,当你需要提交一份报告或做一个展示你工作成果的演示时,如果你分析的“语言”,与“那些”人不相同,那么这些“语言”将达不到预期的效果,且可能会被质疑甚至被反驳。
通过精通分析语言,分析师能够有效地完成他(她)的工作。但是,通过精通企业领域的语言,可以与不熟悉分析的团队成员进行有效沟通,从而允许数据转换为可用于业务决策的实现性建议。
成为双语者是分析师可以有效展现为企业带来的价值描述更有说服力:
1、每周花些时间阅读行业新闻,这样就能不断地了解公司的业务、面临的挑战和竞争对手。每周哪怕只有一个小时的阅读时间,都会对理解领域、理解分析背后的业务问题以及更有效地沟通产生重大影响;
2、每当到了工作成果展现的时候,重要的是能够将这些数字直接与对你的涉众很重要的业务问题联系起来。这些数字对于企业的战略计划意味着什么?解释可以采取什么行动?换句话说:企业利益相关者为什么要关心?
3、作为一名数据分析师,很容易迷失在数据的细节上。毕竟,这就是数据分析工作的迷人之处!但是,除非特定的数据点对准备提出的论点至关重要,否则最好是进行一下总结,以免失去关键利益相关者和赞助商的注意力。如果对细节充满热情,可以随时将其放在报告末尾的附录中;
4、如果任务是创建报告或为利益相关者提供演示文稿,那么让数据易于理解和消化非常重要。在可能的情况下,使用图形、图表和其他可视化表示,以便受众更容易理解数据。除了更容易引起其他人的注意之外,这还将使他们更容易将数据用于后续工作;
5、在向利益相关者提供数据之后,您应该问他们,是否有什么事情是他们希望数据分析师下次做得有所不同。有没有什么数据是他们希望数据分析人员少花点时间关注的这些内容对于告知您在下一个演示文稿或报告中如何呈现信息非常宝贵,同时关注企业的中心点是什么。
学习企业业务领域的语言是成为分析领域之外的高效沟通者的重要一步。但是分析人员不应该止步于此:通过学习项目管理的语言,分析人员可以真正地影响变更、并成为企业中不可或缺的一部分。
在我国,数据分析工作正在被逐渐的受到重视,越来越多的人们意识到此项工作环节的重要性。08年4月份,经我国国资委审批、民政部备案后,中国商业联合会数据分析专业委员会正式成立,这就是CPDA数据分析师,它的成立标志着我国数据分析行业在经济发展中的地位已经被得到充分的认可,数据分析工作也会因此走向更加规范的发展轨道。
全球已进入 大数据 时代,在我国,数据分析工作体现在多个领域,覆盖企业运营全过程。持有数据分析师专业技能证书的专业人员所开展的数据分析工作已经涉足到了很多领域,包括政府相关机构、企事业单位以及其他领域。目前,我国对于数据分析专业人员的需求数以万计,数据分析工作的重要性不言而喻。
本文由 CPDA数据分析师 投稿至 数据分析网 并经编辑发表,内容观点不代表本站立场,如转载请联系原作者,本文链接:https://www.afenxi.com/63389.html 。
数据分析
2019-01-15 23:07:00
概率分布就像3D眼镜。它们使熟练的数据科学家能够识别完全随机变量中的模式。
在某种程度上,大多数数据科学或机器学习技能都是基于对数据概率分布的某些假设。
这使得概率知识成为统计学家构建工具箱的基础。如果你正在思考如何成为一名数据科学家,那么这是第一步。
废话少说,让我们开门见山吧!
什么是概率分布
在概率论和统计学中,随机变量是一个可以随机取不同值的变量,比如“我看到的下一个人的身高”或“我下一个拉面碗里厨师头发的数量”。
给定一个随机变量X,我们想描述它取哪个值。更重要的是,我们想要描述变量取某个值x的可能性有多大。
例如,如果X是“我女朋友养了多少只猫”,那么这个数字可能是1,甚至可以是5或10。
当然,一个人不可能拥有负数的猫。
因此我们希望用一种明确的数学方法来表示变量X可以取的每一个可能的值,以及事件(X= x)的可能性。
为了做到这一点,我们定义了一个函数P,使得P(X = x)是变量X值为x的概率。
我们也可以用P(X < x)或者P(X > x)来代替离散值。这非常重要。
P是变量的密度函数,它表征变量的分布。
随着时间的推移,科学家们已经意识到,自然界和现实生活中的许多事物往往表现相似,变量共享一个分布,或具有相同的密度函数(或类似的函数)。
要使P成为一个实际的密度函数,需要一些条件。 P(X =x) <= 1 对于任意值X, P(X =x)必须小于等于1 P(X =x) >= 0 对于任意值X, P(X =x)必须大于等于0 对于任意值X,P(X =x) 所有值的和为1(X取任意值的概率,加起来等于1)
离散与连续随机变量分布
随机变量可以分为两组:离散随机变量和连续随机变量。
离散随机变量
离散变量有一组离散的可能值,每个值的概率都是非零的。
例如,当我们抛硬币时,如果我们说 X = ” 1如果硬币是正面,0如果是反面”
P(X = 1) = P(X = 0) = 0.5
但是请注意,离散集不一定是有限的。
几何分布,事件发生的概率为p,试验k次才得到第一次成功的概率:
k可以取任何非负的正整数。
注意所有可能值的概率之和仍然是1。
连续随机变量
如果说 X =“从我头上随机拔下的一根头发的长度,以毫米为单位(没有舍入)”
X可以取哪些值我们知道负数在这里没有任何意义。
但是,如果你说的是1毫米,而不是1.1853759……或者类似的东西,我要么怀疑你的测量技能,要么怀疑你的测量报告错误。
连续随机变量可以取给定(连续)区间内的任何值。
如果X为连续性随机变量,则用f(x)表示X的概率分布密度函数。
用P(a < X < b)表示X位于值a和b之间的概率。
为了得到X取任一指定实数a的概率,需要把X的密度函数从a积分到b。
现在您已经知道了概率分布是什么,让我们来学习一些最常见的分布!
一、伯努利概率分布
伯努利分布的随机变量是最简单的随机变量之一。
它表示一个二进制事件:“这件事发生”vs“这件事没有发生”,并以值p作为唯一的参数,表示事件发生的概率。
伯努利分布的随机变量B的密度函数为:
P(B = 1) = p, P(B =0)= (1- p)
这里B=1表示事件发生了,B=0表示事件没有发生。
注意这两个概率加起来是1,因此不可能有其他值。
二、均匀概率分布
均匀随机变量有两种:离散随机变量和连续随机变量。
离散均匀分布 将取(有限的)一组值S,并为每个值分配1/n的概率,其中n是S中的元素数量。
这样,如果变量Y在{1,2,3}中是均匀的,那么每一个值出现的概率都是33%。
骰子就是一个非常典型的离散均匀随机变量,典型骰子有一组值{1,2,3,4,5,6},元素数量为6,每个值出现的概率是1/6。
连续均匀分布 只取两个值a和b作为参数,并在它们之间的区间内为每个值分配相同的密度。
这意味着Y在一个区间(从c到d)取值的概率与它的大小相对整个区间(从b到a)的大小成正比。
因此,如果Y在a和b之间均匀分布,则
这样,如果Y是1和2之间的均匀随机变量,
P(1 < X < 2)=1, P(1 < X < 1.5) = 0.5
Python 的随机包的随机方法就采样了一个在0到1之间均匀分布的连续变量。
有趣的是,可以证明,在给定均匀随机值生成器和一些微积分的情况下,可以对任何其他分布进行采样。
三、正态概率分布
正态分布变量在自然界中很常见,它们是常态,这就是这个名字的由来。
如果你把你所有的同事召集起来,测量他们的身高,或者给他们称重,然后用结果绘制一个直方图,结果很可能接近正态分布。
如果你取任意一个随机变量的样本,对这些测量值取平均值,重复这个过程很多次,这个平均值也会有一个正态分布。这个事实很重要,它被称为统计学基本定理。
正态分布变量: 呈对称钟形曲线, 以均值为中心(通常称为μ)。 可以取实空间上的所有值,正态曲线由均数所在处开始,分别向左右两侧逐渐均匀下降。标准差σ决定了分布的幅度。 几乎无处不在
大多数情况下,如果你测量任何经验数据,并且它是对称的,一般可假设它是正态分布。
例如,掷K个骰子,然后把结果相加,就会得到正态分布。
四、对数正态分布概率分布
对数正态概率分布是正态概率分布中较少见的一类。
如果变量Y = log(X)遵循正态分布,则称变量X为对数正态分布。
在直方图中,对数正态分布是不对称的,标准差σ越大分布越不对称。
我认为对数正态分布值得一提,因为大多数以货币为基础的变量都是这样的。
如果你看与钱有关的任何变量的概率分布,比如 某银行最近一次转账的金额。 华尔街最新成交量。 公司特定季度收益。
它们通常不会是正态概率分布,更接近于对数正态随机变量。
(如果你能想到你在工作中遇到的任何其他对数正态变量,请在评论中发表你的看法!尤其是财务以外的事情)。
五、指数概率分布
指数概率分布也随处可见,与泊松分布概率概念紧密相连。
泊松分布直接从维基百科中剽窃而来,它是“一个事件以恒定的平均速率连续独立地发生的过程”。
这意味着,如果: 你有很多事情要做。 它们以一定的速度发生(不随时间改变)。 任何一个成功的事件都不应该影响另一个成功的事件。
泊松分布可能是发送到服务器的请求、发生在超市的交易、或者在某个湖中捕鱼的鸟。
想象一下频率为λ的泊松分布(比如,事件每秒发生一次)。
指数随机变量模拟事件发生后,下一个事件发生所需的时间。
有趣的是,在泊松分布中,事件可以发生在任何时间间隔内0到∞之间的任何地方(概率递减)。
这意味着无论你等待多久,事件发生的可能性都不是零。这也意味着它可能在很短的时间内发生很多次。
在课堂上,我们常开玩笑说公交车到站是泊松分布。我认为,当你给一些人发送WhatsApp消息时的响应时间也符合这个标准。
λ参数调节活动的频率。它将使事件实际发生所需的预期时间以某个值为中心。
这意味着,如果我们知道每15分钟就有一辆出租车经过我们的街区,即使理论上我们可以永远等下去,我们极有可能等不到30分钟。
数据科学中的指数概率分布
这是指数分布随机变量的密度函数:
假设你有一个变量的样本,想看看它是否可以用指数分布变量来建模。
最佳λ参数可以很容易地估计为采样值平均值的倒数。
指数变量非常适合建模任何罕见但巨大的离群值。
这是因为它们可以取任何非负的值,但以较小的值为中心,随着值的增长频率降低。
在特别是异常繁重的样本中,你可能想要估计λ中位数而不是平均值, 因为中位数对异常值更为稳健。在这一点上,你的利益可能会有所不同,所以对它持保留态度。
结论
总而言之,作为数据科学家,我认为学习基础知识非常重要。
概率和统计可能不像深度学习或无监督机器学习那么浮华,但它们是数据科学的基石,更是机器学习的基石。
根据我的经验,提供具有特性的机器学习模型,而不知道他们遵循哪种分布是一个糟糕的选择。
记住指数分布和正态分布的普遍性,以及较罕见的对数正态分布也是很好的。
在训练机器学习模型时,了解它们的特性、用途和表现将扭转格局。在进行任何类型的 数据分析 时,将它们牢记于心通常也是有好处的!
来源:AI中国
链接:https://www.toutiao.com/i6711910731773641223/
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2019-07-30 21:36:00
本文来自陆奇的演讲,我们选取了其中的精要。
一、什么是知识
可以用来解决问题的特征表达(feature representation)。人类语言或图谱只是知识的一种表达方式。 AI模型 学到的特征表达也是知识,只要它能解决问题。获取知识的能力是AI技术的核心。
二、什么是 智能系统
无论是生物还是非生物智能系统,都必须含有三要素:观察系统、智力系统、活动系统。观察系统收集数据。智力系统用数据产生知识。活动系统用习得的知识达成目标。
三、智能的本质
是获取知识、运用知识达到目标的通用能力。
四、AI的历史意义
1.首次出现人类之外的能够创造知识的系统;
2.因此知识的创造会加速,导致科技、社会、经济领域全部重写。
五、AI的发展方向
1.更自然的人机交互方式。历史上的人机交互革命包括鼠标、触摸屏手机。
2.更强大的后端,这是由于AI对算力和数据的饥渴推动的。
3.能够定义新时代的体验。这将会基于前两点来完成。历史上的例子包括iphone、win95、浏览器。
4.物理世界的全面数字化。历史上的局部数字化包括IBM对桌面、微软对企业信息系统、苹果对人类社交和交易的数字化。AI将数字化整个物理世界,所有物件、工具、车船、场所都将智能化、数字化。
六、AI带来的创新机会
历史上人类发明了局部通用能力,比如家畜、文字、蒸汽机、火车、计算机、飞机等。现在AI是新发明的最通用的能力,因为AI是创造知识解决问题的能力。知识就是力量,所以这种最通用的能力会带来前所未有的机会。
AI驱动的创新必须遵循如下模式:
1.找到不够完美的应用场景。
2.提出问题:需要什么知识才能改善这个应用场景?机会:传感器。
3.抽取这种知识。机会:软件、硬件、算法。
4.应用习得的知识改善场景。机会:商业模式。
5.从改造后的场景继续收集数据,重复1-4,形成闭环。
七、AI可能带来的革命
1.全新信息工业:AI需要带计算能力的传感器和冯纽曼体系无法胜任的高维平行处理。这些需求将驱动整个信息工业从软到硬全部重写。
2.诞生新产业(智能物件、 机器人 、自动车船、智能场所),改造所有旧产业。
八、如何推进AI领域的创新
1.要占据金融资本、人才资本、数据资本。其中数据资本是不同以往革命的新要素。
2.需要友好的政策环境和基建配套。3.必须以市场为导向。
九、AI创业挑战
数据!以前创业需要的软件都是开源的。AI创业需要的数据几乎是不可逾越的门槛。 本文转载自 机器人网 ,内容版权归原作者所有,链接: https://www.roboticschina.com/news/2779.html
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2019-08-21 09:38:00
大数据 时代,最了解你的人不是你的亲人和朋友,而是BAT巨头们。你的行动轨迹、消费记录、购物偏好、人脉关系等数据都被巨头们收藏着。从理论上讲,你的工作家庭地址,你的社会关系,身材尺码喜好什么颜色或事物,有没有第三者等等都可以通过收集的 数据分析 出来。当然大数据对隐私的边界是可以挖掘群体特征,不挖掘个体细节,可以贴标签但不场景化。
大家其实也不用太担心,法律会站在我们一边。企业如果过度使用我们的隐私数据无异于搬起石头砸自己的脚,疼的是企业,当然受伤的是消费者。今天就分享两个知名企业砸自己脚的案例。 1、 亚马逊 利用数据杀熟
从理论上来说你越喜欢某件商品我卖你更贵并不会影响成交,但是企业获利更多,这就是为什么很多企业被传出利用 大数据杀熟 的出发点。互联网上,大数据杀熟这种事的鼻祖可能要算亚马逊了。早在2000年亚马逊就开始测试大数据杀熟了。
这一年马云的阿里巴巴和李彦宏的百度都刚创立才1年时间,马化腾的腾讯遇到了困难计划把自己开发的ICQ以60万的价格卖给别人,刘强东还在中关村卖光磁产品。
亚马逊于1995年成立,最初计划是4-5年实现盈利。此时的亚马逊为提高在主营产品上的赢利,亚马逊在2000年9月中旬开始了著名的差别定价实验。他们选择了68种DVD碟片进行动态定价试验。试验当中,亚马逊根据潜在客户的人口统计资料、在亚马逊的购物历史、上网行为以及上网使用的软件系统确定对这68种碟片的报价水平。
例如,名为《泰特斯》(Titus)的碟片对新顾客的报价为22.74美元,而对那些对该碟片表现出兴趣的老顾客的报价则为26.24美元。你曾经买个某个歌手的碟片或外围产品,经常点击他的主页等信息都会被后台视为你是忠诚度高的老顾客。通过这一定价策略,部分顾客付出了比其他顾客更高的价格,亚马逊因此提高了销售的毛利率。(当时亚马逊的技术已经可以做到千人千面,每个人看到的页面不一样,价格也可以不一样)
但是好景不长,这一差别定价策略实施不到一个月,就有细心的消费者发现了这一秘密,他们通过在名为DVDTalk 的音乐爱好者社区的交流,成百上千的DVD消费者知道了此事,那些付出高价的顾客情绪激动不太淡定了,纷纷在网上以激烈的言辞对亚马逊的做法进行讨伐。还好当时还没有twitter和facebook,不然亚马逊早被口水淹没了。
更悲催的是,亚马逊事件前不久才公布了它对消费者在网站上的购物习惯和行为进行了跟踪和记录。因此这次事件曝光后,消费者和媒体开始怀疑亚马逊是否利用其收集的消费者资料作为其价格调整的依据,这样的猜测让亚马逊的价格事件与敏感的网络隐私问题联系在了一起。这事儿搞大了,玩现了!
最后的结局是亚马逊道歉,然后将差价退给了那些买贵了的顾客。这件事虽然以失败告终,但是这种差异化定价的思路却被各大营销机构借鉴了。 2、优步(Uber)的一夜情事件
你的一夜情谁知道?
答案是优步!优步知道你的家在哪儿,公司在哪儿,你最喜欢去哪儿吃饭,你是否经常出差,以及你日常的活动半径和范围。
优步曾经在官网上发布一篇题为“荣耀之旅(Rides of Glory,RoG)”的博客(现在已经被删除了)。文中写道“我知道,我们不是你们生命中唯一的爱人,我们也知道,你们会在别的什么地方寻找爱情”。荣耀之旅其实就是一夜情的描述。
荣耀之旅是优步的一次大 数据挖掘 的分析报告,优步的 数据分析 师觉得挖掘的结果数据很有意思,于是就在自己的官网分享出来了(现在估计后悔死了)。
优步的分析师从系统中根据两个条件筛选出他们认为的“荣耀之旅”的客户数据。条件一晚上10:00-4:00间有过叫车服务的顾客数据;条件二这些客户会在4-6小时后在距上次下车地点约0.1英里内的地方再次叫车(你想想大晚上叫车出去停留数小时后又回来的人会是干什么?加班肯定说不过去,那只是喝夜啤酒吗?)。
根据这些顾客的时间和地点数据,优步找到了美国一夜情高频地区:波士顿位于美国一夜情之首,而纽约人显得比较保守。一夜情时间高频在周五周六晚上。
这样的数据公布后,媒体当然不会放过优步,例如《纽约时报》就说《我们不能信任优步》,电视杂志《Panorama》的标题是“美丽新世界:分享的代价”。
后来优步人士说这个报告只是一个数据分析小游戏,目的是为了改善服务。估计优步的分析师后悔把这个报告公开发布了,但他们绝对不会认为这个分析有问题。
涉及用户隐私数据的分析一直为大家诟病(其实很多企业在内部都在做只是不分享而已),如果再上升到利用用户的隐私数据来榨取用户的价值大家肯定不干,如果这些数据在落到不法商贩手中后果就不好评估了。
例如外卖的数据,如果拿到某个用户连续的外卖数据,其实就可以分析出他家中人口数,家庭住址,饮食习惯,甚至推测出是否有某些慢性疾病……最关键是部分外卖小票上还会有电话号码,可以轻松形成精准营销闭环。如果这些数据被莆田系获取了不可想象啊。
数据分析是很有意思的工作,可以用来改善服务,也可以用来“作恶”。错不在数据,在于使用数据的人。
本文为专栏文章,来自:数据化管理,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/58025.html 。
数据分析
2018-07-22 00:42:02
为你的业务使用 大数据技术 是一个非常有吸引力的事情,现在Apache Hadoop使得它更加吸引人了。
Hadoop是一个大规模可伸缩的数据存储平台,被用作许多 大数据 项目的基础。
Hadoop很强大,但是它有一个很陡峭的学习曲线,需要公司在时间和其他资源上作大量的投资。
如果正确地应用它,对你的公司来说,Hadoop可以成为一个真正的游戏规则改变者,但它存在很多被错误使用的可能。
另一方面,许多企业(不像是谷歌、Facebook或Twitter)都没有真正的“大数据”来需要用一个巨大的 hadoop 集群分析事物,然而 hadoop 这个流行语却吸引着他们。
如大卫惠勒所说的:“所有计算机科学的问题都可以用另一个间接的中间层来解决”。 Hadoop提供了这样一种间接层;作为一个软件架构师,当你的最高管理层对一些流行语有很不专业的偏颇认识时,也许真的很难采取正确的决定。
在本文中,我想要建议 “应在投资到Hadoop之前尝试一些替代品”。
了解你的数据
总体数据的大小
Hadoop被设计用来在大型数据集上能进行有效的工作。简单给点提示: Hadoop有一个专为大尺寸文件(如几G)设计的文件系统(HDFS)。因此,如果你的数据文件尺寸只是几M的话,建议你合并(通过zip或tar)多个文件到一个文件中,使其尺寸在几百M到几G范围内。 HDFS把大文件们拆分存储到以64MB或128MB或更大的块单元中。
如果你的数据集相对较小,那它就不会是hadoop的巨型生态系统的最佳使用之地。这需要你去对你的数据比以往理解更多一些,分析需要什么类型的查询,看看你的数据是否真得“大”。
另一方面,只是通过 数据库 的大小来测量数据可能是骗人的,因为你的计算量可能会更大。 有时你可能会做更多的数学计算或分析小数据集的排列,这些可以远远大于实际的数据。所以关键是要“了解你的数据,并且很清楚它”。
数据增长数度(增长速率)
你的数据仓库或是其它数据源中可能拥有数个TB的数据。然而,在建立 Hadoop 集群前,你必须考虑到数据的增长。
向 数据分析 师问几个简单的问题:
数据增长的有多快这个数据增长的步伐很快么
数月或数年之后,这个数据将会达到什么样的尺寸
许多公司的数据增长是以数年而非数月或数日计算的。如果你的数据增长数度非常快,我见建议你考虑一下归档及清理技术(将在本文后面的内容中详述),而非立即上马 Hadoop 集群。
如何减少你的数据量
如果你觉得你的数据实在是太大了,你可以考虑使用下面的方法将数据减少到相对可控的规模上。下面的几个选项都已经被业内成功使用多年。
归档
数据归档是将陈旧数据移动到一个独立数据储存器以长期保留(如果需要)的过程。
这需要对数据、对应用使用情况的充分了解。处理大数据的电子商务公司在现场数据库中保存近期3个月的订单细节数据,而早期订单则保存在一个独立的数据存储器中。
这个方法也可以使用到你的数据仓库中。你可以保存近期的数据以便更快的查询和报告,而将访问频率较低的数据保存在一个其它不同的存储设备中。
考虑清除数据
我们忙于收集数据时经常并不真正确定我们应该保留多少。如果你存储大量可能不是很有用的数据,它就会拖慢你近期数据的处理。弄清你的业务需求,看看是否可以删除旧的数据,把从那些 数据分析 的趋势存储起来以供后用。这不仅会节省你的空间,而且还可以在分析近期数据时帮助你加快速度。
对这种情况的一个常见的最佳实践是在您的数据仓库中有一些标准列,像创建日期,创建者,更新日期,更新者。现在根据这些列创建一个每日/每月的cron作业,用它清除你不想在你的数据仓库中看到的时段的数据。清除数据的逻辑基于你的领域可能不同,因此在实施它之前应作一些考虑。
如果您正在使用一个归档工具,它也可能是通过很轻松地配置就能清除无用的存档数据。
所有的数据都不重要
你可能受不了为你的业务保留所有数据的诱惑。你的数据有各种各样的来源,比如日志文件、现场交易、供应商整合、ETL工作、营销活动数据等等。但你应该知道,不是所有的数据都是关键业务,把它们都保存在一个数据仓库中可能不是很有帮助反而有害。在它们被存储到你的数据仓库之前,应从源头上过滤不需要的数据。如果你真需要在你的数据库的表里每一列存储和分析那些数据,就准备好发疯吧。
想好你想收集哪些作为数据
假设你进入一个在线视频编辑的业务。你想保存你的用户在每个视频上做的全部更改吗这会产生巨大的体积。当你感觉到你的数据仓库可能无法处理它的情况下,你可能需要考虑只存储元数据。视频编辑是一个很可能的例子,不过它可能适用于许多其他与你存储数据相关的信息。
一般来说,如果你有一些有关系的数据,你就有机会从多个来源得到它们,而且不是所有的都需要存储在你的数据仓库中。
更智能的分析
聘请理解业务的分析师
现在,你可能已经明白“了解数据”对于有效地管理它们来说是非常重要的。相信我,当你觉得我已经试了所有这些东西时,这一步会帮到你。是时候让我们进入一个如Hadoop这样的大数据解决方案中了。
如果你的数据分析师不懂应从中提取什么出来,Hadoop就将几乎无用。应寄希望于那些理解业务的人。鼓励他们做实验和学习新的方法来看待相同的数据。找出哪些可以与现有基础设施取得唾手可得的收益。
为制订决策使用统计抽样
统计抽样是研究人员和数学家为了对大型数据推断合理结论而使用的一种非常古老的技术。
通过执行一个统计的样本,我们的体积可以极大地减少。不用跟踪数百万或数十亿的数据点,我们只需要随机挑选几千或几百个即可。
该技术不能提供准确的结果,但是它可以被用于对一个大型数据集获得高水平的理解。
定标技术
你真地把关系数据库的处理发挥到极致了吗
在你真去探索其他技术之前,我希望你去看看关系型数据库是否能够处理它。人们使用关系数据库已经很久了,已经托管了一些几T字节大小的数据仓库。在你决定进入hadoop之前,你可以对关系数据库尝试以下方法。
数据分区
数据分区就是逻辑上和/或物理上把数据划分成一些更容易维护或访问的部分的过程。分区支持最流行的开放源代码关系数据库( MySQL 分区 和 Postgres 分区 )。
对关系数据库尝试数据库分片的方法
数据库分片可以作为对关系数据库的处理速度发挥到极限的最后一个手段。这种方法可以应用于你可以逻辑上分离数据到不同的节点,并在你的分析中有更少的交叉节点连接的时候。在web应用程序中,一个常见的分片方法是基于把用户和所有与一个用户相关的信息存储在一个节点上来确保最佳的速度。
分片并不容易,如果你有很多复杂的关系,并且没有简单的方法来分离数据到不同的节点上,这个方案可能不适合你。如果你的应用需要有很多交叉节点连接,分片的打算可能会失败。
结论
我曾在不同的公司被高层管理人员要求把Hadoop作为一个可选项去做某些事。要说服他们总是很难,但是当我把这个信息告诉他们后,他们不得不三思而后行。我很幸运,能为我工作的这些公司节省一些钱。
如果你发现为了扩大你的关系数据库,你已经尝试了所有可能的选项,这才是你应该开始考虑建立一个Hadoop集群的时候。
首先,您可能应该使用cloudera提供的虚拟机镜像。它们对于在你现有的基础设施上使用hadoop做快速的概念证明真的是很方便。 英文原文: 10 Reasons You Don’t Need Hadoop For Your Data Analysis – Alternatives Must Try Before Using It
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2016-05-10 11:00:00
数据查询业务中,有时会碰到数据量很大的清单报表。由于用户输入的查询条件可能很宽泛,因此会从数据库中查出几百上千万甚至过亿行的记录,常见的包括银行流水记录,物流明细等。呈现时如果等着把这些记录全部检索出来再生成报表,那会需要很长时间,用户体验自然会非常恶劣。而且,报表一般采用内存运算机制,大多数情况下内存里也装不下这么多数据。所以,我们一般都会使用分页呈现的方式,尽量快速地呈现出第一页,然后用户可以随意翻页显示,每次只显示一页,也不会造成内存溢出。
传统分页呈现的实现,一般都会使用数据库的分页机制来做,利用数据库提供的返回指定行号范围内记录的语法。界面端根据当前页号计算出行号范围(每页显示固定行数)作为参数拼入 SQL 中,数据库就会只返回当前页的记录,从而实现分页呈现的效果。
不过,这样做会有两个问题:
1. 翻页时效率较差
用这种办法呈现第一页一般都会比较快,但向后翻页时,所使用的取数 SQL 会被再次执行,并且将前面页涉及的记录跳过。对于有些没有 OFFSET 关键字的数据库,就只能由界面端自行跳过这些数据(取出后丢弃),而像 ORACLE 还需要用子查询产生一个序号才能再用序号做过滤。这些动作都会降低效率,浪费时间,前几页还感觉不明显,但如果页号比较大时,翻页就会有等待感了。
2. 可能出现数据不一致
用这种办法翻页,每次按页取数时都需要独立地发出 SQL。这样,如果在两页取数之间又有了插入、删除动作,那么取的数反映的是最新的数据情况,很可能和原来的页号匹配不上。例如,每页 20 行,在第 1 页取出后,用户还没有翻第 2 页前,第 1 页包含的 20 行记录中被删除了 1 行,那么用户翻页时取出的第 2 页的第 1 行实际上是删除操作前的第 22 行记录,而原来的第 21 行实际上落到第 1 页去了,如果要看,还要翻回第 1 页才能看到。如果还要基于取出的数据做汇总统计,那就会出现错误、不一致的结果。
为了克服这两个问题,有时候我们还会用另一种方法,用 SQL 游标从数据库中取数,在取出一页呈现后,但并不终止这个游标,在翻下一页的时候再继续取数。这种方法能有效地克服上述两个问题,翻页效率较高,而且不会发生不一致的情况。不过,绝大多数的数据库游标只能单向从前往后取数,表现在界面上就只能向后翻页了,这一点很难向业务用户交代,所以很少用这种办法。
当然,我们也可以结合这两种办法,向后翻页时用游标,一旦需要向前翻页,就重新执行取数 SQL。这样会比每次分页都重新取数的体验好一些,但并没有在根本上解决问题。
润乾报表方案
下面介绍的润乾报表方案,提供的大报表功能可以支持海量清单报表的秒级查询。在这个方案中,取数和呈现采用两个异步线程,取数线程发出 SQL 后不断取出数据缓存到本地,由呈现线程从本地缓存中获取数据进行显示。这样,已经取出并缓存的数据就能快速呈现,不再有等待感;而取数线程所涉及的 SQL,在数据库中保持同一个事务,也不会有不一致的问题,前面提到的两个问题全部得以完美解决。
同时,借助集文件存储格式,报表还可以按行号随机访问记录,而不用每次通过遍历查找数据。也就是说,这种存储格式支持跳转到任意页访问,从而极大地改善了用户体验。不过,由于采用了异步机制,页面端显示的总页数和总记录数会随着取数过程不断变化。
大清单报表运行原理:
需要注意的是,大清单报表中用到的异步机制和集文件存储都是在集算器的基础上实现的,因此该功能需要“集成集算器”功能支持,并不包含在润乾报表基础版中。
下面通过举例来说明润乾海量大清单报表(以下简称:大报表)的开发使用过程。
SQL 源大报表
首先来看一种最基础的大报表,即报表数据来源于数据库的情况。例子中我们需要根据日期范围查询订单表的交易信息,由于数据规模较大,因此需要使用大清单报表呈现。
制作报表模板
与普通报表开发一样,设置参数、准备数据集、绘制报表模板。
报表参数为查询日期起止:
数据集根据参数查询订单表 SQL:
报表模板:
设置 大数据 集
与普通报表不同,需要在润乾报表属性(报表 – 报表属性)中设置“大数据集名称”,指向数据集 ds1,直接利用 SQL 完成异步取数。
设置完成后,在报表设计器 IDE 中即可浏览报表:
发布到 WEB
与普通报表发布类似,大清单报表也通过 JSP 以 tag-lib 的方式发布。
< report:big name = "report1" reportFileName = "<%=report%>" needScroll = "<%=scroll%>" params = "<%=param.toString()%>" exceptionPage = "/reportJsp/myError2.jsp" scrollWidth = "100%" scrollHeight = "100%" rowNumPerPage = "20" fetchSize = "1000" needImportEasyui = "no" />
其中 rowNumPerPage 属性为每页显示记录数;fetchSize 为每次从数据源读取的数据量。完整发布的 JSP 可以参考报表安装目录下的样例文件:[reportwebwebappsdemoreportJsp showBigReport.jsp]。
WEB 端呈现效果:
可以注意到,右上角的页码和总记录条数随着异步线程不断读取数据而不断变化。
除了展现,在润乾报表中还支持对大清单报表导出 Excel 和打印。
导出
打印
非 SQL 源大报表
当海量数据来源非 RDB 时,由于无法利用数据库分页,因此无法通过 SQL 实现异步大报表。针对这一问题,润乾报表的大报表方案中,采用了两阶段异步线程,其中由集算器定义取数线程负责从非 RDB 数据源取数并缓存数据,再由呈现线程负责读取缓存并分页展现。
下面以文件数据为例,说明非 RDB 数据源的大报表开发过程。例子中的卫星数据以文件(CSV)方式存储,数据规模较大,是典型的非 RDB 数据源。现在我们要按照日期查询某日风速、温度等明细信息。
报表数据准备
首先,我们借助润乾报表的集算器数据集读取文件数据,并为报表返回游标。集算器 SPL 脚本如下:
A
1 =file(“source.csv”).cursor@t(;,”,”)
2
3
=A1.select(时间 ==   d_time)
return A2
A1 建立文件游标;
A2 在游标执行时对数据进行过滤(此时游标尚未执行,数据并未取出);
A3 返回游标过滤结果,为报表提供数据。
将 SPL 脚本存储为 bigReport-file.dfx,并在报表中作为数据集引入:
设计报表模板
接下来,我们根据所准备的数据制作报表模板:
同时设置大数据集:
发布到 WEB
然后,将做好的报表发布到 WEB 端:
是不是很简单? 这个例子显示了在开发报表时如果涉及海量非 RDB 数据,润乾报表可以借助集算器对多种数据源类型的支持能力,实现大报表开发与呈现。
使用大报表注意事项
上面介绍了开发大报表该有的正确姿势,但任何功能都不是万能的,使用大报表也有需要注意的地方:
1、不排序
大报表的数据集都比较大,如果在意响应时间(谁会不在意呢),那么应该尽量不对数据集进行全表排序(注意我说的是全表排序),毕竟,等排完序再呈现,时间已经过去很久了……
2、不适合高并发场景
大报表采用异步机制,将数据分批加载到内存再交给前端呈现,减少了内存占用,但同时增加了 CPU 和磁盘 I/O 负载,并发高时 CPU 和硬盘可能成为瓶颈从而影响呈现效果,因此大报表不适合高并发的场景。
本文主要介绍了 RDB 和非 RDB 数据源情况下大清单报表的开发方法,在下一篇《百万级分组大报表开发与呈现》中,我们将进一步介绍带有汇总值的大报表和分组大报表的实现过程。
本文由 raqsoft 投稿至 数据分析网 并经编辑发表,内容观点不代表本站立场,如转载请联系原作者,本文链接:https://www.afenxi.com/60887.html 。
数据分析
2018-09-16 23:23:00
互联网时代是一个不缺流量的时代,但是也是一个缺少流量的时代,为什么这么说呢?互联网平台拥有大量的流量,可是再细分下去的话,绝大多数商家能够得到的就很少,流量都给到了头部,而站在身后的只能分得一碗汤,过去网络广告得形式都是海量投放,曝光很高,但是实际转化却很差,而在新媒体广告中,一直再强调 大数据 精准营销 ,那什么是精准营销呢?
精准营销就是把你的产品通过合适得时间、地点,以合适得方式推送给合适的人,在一般媒体上,广告找人看,但是网络媒体中,则变成了人找广告看。举个例子:网络上曾经有个很火的段子:我想要一个苹果,你却给了我一车梨。哪怕你的梨个大水分多又甜,再好对方都不会感兴趣,因为他想吃的只是一个苹果啊。精准营销就是要帮你找到那个真正想吃梨的人,把你的梨送到他面前。
如何把你的梨准确的推送到需要梨的用户手上呢?这就需要通过大数据精准营销平台将多方数据纳入,通过算法对这些数据进行细分,标签化管理,,并将这些结果应用到营销当中去。
对于单个企业来说,由于用户体量有限,加上技术上的欠缺,只有少量的用户数据,而大数据平台则是通过多领域多方面获取数据,建立起一个强大的数据系统,再通过成熟的标签系统和算法体系,通过和企业的合作,帮助企业进行网络广告精准投放,将大数据的作用发挥到互动营销环境中。
在网络广告中,如何做到精准投放呢?我们就需要做到知己知彼,才能百战不殆,首先我们需要知道用户的两方面数据:静态信息数据和动态信息数据。 静态数据指用户相对稳定的信息,比如地域、年龄、性别、消费能力等。 动态数据指用户不断变化的行为信息,比如网页浏览记录、线上购买行为等,通过动态数据可以帮助了解用户最近的行为动向,预测其可能感兴趣的产品内容。
有了这些数据,就可以通过 广告投放 系统分析出用户的兴趣、爱好和需求等信息,甚至可以预测用户的一些需求,购买能力、感兴趣程度等等,再通过标签系统将用户细分开做精准投放。

本文由 Mob说数据 投稿至 数据分析网 并经编辑发表,内容观点不代表本站立场,如转载请联系原作者,本文链接:https://www.afenxi.com/60788.html 。
数据分析
2018-09-08 23:16:00
我们即将完成2019年第一季度的工作,而 深度学习 技术的研究正以非常快的速度向前推进。我经常会查看一下 人工智能 研究人员的工作,以便了解这项技术的发展方向。这样使我能够更好地优化我的时间,以确保我知道我所不知道的。
在本文中,我将帮助你节省一些时间,方法是将2019年迄今为止发表的研究成果整理成以下可管理的短列表。我做了一些过滤,这样就只包括具有相关GitHub repo的论文了。
Fast Graph Representation Learning with PyTorch Geometric
论文:https://arxiv.org/abs/1903.02428v2
代码:https://github.com/rusty1s/pytorch_geometry
本研究介绍了 PyTorch Geometric ,这是一个基于PyTorch的用于对不规则结构的输入数据(如图、点云和流形)进行深度学习的库。除了一般的图形 数据结构 和处理方法外,它还包含了关系学习和三维数据处理领域中最近发表的各种方法。PyTorch几何通过使用稀疏的GPU加速、提供专用的CUDA内核以及为不同大小的输入示例引入高效的小型批处理来实现高数据吞吐量。
Mask Scoring R-CNN
论文:https://arxiv.org/abs/1903.00241v1
代码:https://github.com/zjhuang22/maskscoring_rcnn
在实例分割任务中,大多数实例分割框架都使用实例分类的置信度作为掩码分数。本文研究了这一问题,提出了包含网络块的 Mask score R-CNN 来学习预测实例掩码的分数。掩码评分策略校准了 掩码质量 和 掩码评分 之间的不匹配,并通过在COCO AP评估期间优先考虑更准确的掩码预测来提高实例分割性能。
High-Fidelity Image Generation with Fewer Labels
论文:https://arxiv.org/abs/1903.02271v1
代码:https://github.com/google/compare_gan
深度生成模型正在成为现代机器学习的基石。最近关于条件生成对抗网络(GANs)的研究表明,在自然图像上学习复杂的高维分布是可以实现的。虽然最新的模型能够在高分辨率下生成高保真度、多样化的自然图像,但它们依赖于大量的标记数据。这篇论文展示了一个人如何从最近的研究中受益于自我和半监督学习,从而在无监督的图像集合成和条件设置方面都优于业界最优(SOTA)。
GCNv2: Efficient Correspondence Prediction for Real-Time SLAM
论文:https://arxiv.org/abs/1902.11046v1
代码:https://github.com/jiexiong2016/GCNv2_SLAM
这篇文章提出了一种基于深度学习的关键字和描述符的生成网络GCNv2。GCNv2是在之前的方法GCN的基础上建立起来的,GCN是一个为三维投影几何而训练的网络。GCNv2设计了一个二进制描述符向量作为ORB特征,以便在诸如ORB- slam之类的系统中轻松替换ORB。
ALiPy: Active Learning in Python
论文:https://arxiv.org/abs/1901.03802v1
代码:https://github.com/NUAA-AL/ALiPy
有监督的机器学习方法通常需要大量带标签的例子来进行模型训练。然而,在许多实际应用中,有大量的未标注数据,但标注数据有限,而且获取标注的成本很高。 主动学习 (AL)通过迭代地选择最有价值的数据来从标注器中查询它们的标签,从而降低了标注成本。本文介绍了一个用于主动学习的Python toobox ALiPy。
DeepFashion2: A Versatile Benchmark for Detection, Pose Estimation, Segmentation and Re-Identification of Clothing Images
论文:https://arxiv.org/abs/1901.07973v1
代码:https://github.com/switchablenorms/DeepFashion2
通过带有丰富标注的基准测试如DeepFashion,其标签包括服装类别、特征点和消费-商业图像对,可以提高对时尚图像的理解。然而,DeepFashion有一些不可忽视的问题,比如每张图片只有一件衣服,稀疏的特征点(只有4~8个),没有每个像素的掩模,这与现实场景有很大的差距。本文通过提出 DeepFashion2 来解决这些问题,从而填补了这一空白。它是一个通用的基准测试,包括四个任务,包括服装检测,姿态估计,分割和检索。
The StarCraft Multi-Agent Challenge
论文:https://arxiv.org/abs/1902.04043v2
代码:https://github.com/oxwhirl/smac
近年来,深度多智能体强化学习(RL)已成为一个非常活跃的研究领域。在这一领域,一个特别具有挑战性的问题类别是部分可观察到的、合作的、多智能体学习,在这种学习中,智能体团队必须学会协调他们的行为,同时只以他们的私人观察为条件。这是一个有吸引力的研究领域,因为这类问题涉及大量的实际系统,而且比一般问题更易于评估。ALE和MuJoCo等标准化环境允许单代理RL超越网格世界等玩具领域。然而,对于协作多代理RL,没有可比的基准。因此,这一领域的大多数论文都使用一次性的玩具问题,很难衡量真正的进展。本文将星际争霸多智能体挑战(SMAC)作为一个基准问题来填补这一空白。
Dropout is a special case of the stochastic delta rule: faster and more accurate deep learning
论文:https://arxiv.org/abs/1808.03578v2
代码:https://github.com/noahfl/sdr-densenet-pytorch
多层神经网络在文本、语音和图像处理等多种基准测试任务中取得了显著的成功。在分层模型中,非线性参数估计容易出现过拟合和误差。一种解决这些估计和相关问题(局部极小值、共线性、特征发现等)的方法称为 Dropout 。Dropout算法根据每次更新前概率为 p 的伯努利随机变量,删除隐藏的单元,从而对网络产生随机“冲击”,并在每次更新时对其进行平均。这篇论文表明,Dropout是一个更普遍的模型的特例,该模型最初发表于1990年,被称为“Stochastic Delta Rule”,或SDR。
Lingvo: a Modular and Scalable Framework for Sequence-to-Sequence Modeling
论文:https://arxiv.org/abs/1902.08295v1
代码:https://github.com/tensorflow/lingvo
Lingvo 是一个Tensorflow框架,为协作深度学习研究提供了一个完整的解决方案,特别关注于序列到序列模型。Lingvo模型由灵活且易于扩展的模块化构建块组成,实验配置是集中式的,可高度定制。该框架直接支持分布式训练和量化推理,它包含大量实用程序、辅助函数和最新研究思想的现有实现。在过去的两年里,Lingvo已经被数十名研究人员在20多篇论文中合作使用。本文概述了Lingvo的底层设计,并作为对框架各个部分的介绍,同时还提供了展示框架功能的高级特性的示例。
Adaptive Gradient Methods with Dynamic Bound of Learning Rate
论文:https://openreview.net/forumid=Bkg3g2R9FX
代码:https://github.com/Luolc/AdaBound
自适应优化方法,如 AdaGrad , RMSProp 和 Adam 已被提出,对每一个学习率使用单独的缩放来实现一个快速的训练过程。虽然这些方法很流行,但与SGD相比,它们的泛化能力较差,甚至由于不稳定和极端的学习速度而无法收敛。本文论证了极端的学习率会导致较差的表现。Adam和AMSGrad的新变种分别被称为 AdaBound 和 AMSBound ,它们利用学习率的动态边界实现了从自适应方法到SGD的渐进平稳过渡,并给出了收敛性的理论证明。对各种流行的任务和模型进行了进一步的实验。实验结果表明,新的变种能够消除自适应方法与SGD之间的泛化差距,同时在训练初期保持较高的学习速度。
作者:ODSC编译:ronghuaiyang
英文原文:https://medium.com/@ODSC/best-deep-learning-research-of-2019-so-far-7bea0ed22e38
本文为专栏文章,来自:AI公园,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/66296.html 。
数据分析
2019-09-18 11:20:00
一个 人工智能 项目中,最重要的究竟是数据、 算法 还是处理过程?
有人认为,数据就宛如 人工智能 的汽油,重点应该是干净的数据、数据科学和对数据含义的深刻理解。
有些人说,没有来龙去脉的数据是没有意义的,这些数据的来龙去脉可以是其他数据、模型/算法或处理流程。
让我们以一种简洁的方式探究这些人工智能的要素,以发现每种视角的优点。
数据
数据是起点,因为它是非常有用的资产。
不管真假,人们都认为数据承载着知识,而利用这些知识将有利于那些善于研究数据的人。
对人工智能来说,从数据开始,并通过从中学习来利用优势,是有意义的。在数据量大、速度快的时代,使用数据来训练人工智能十分便捷。
企业在 商业智能 方面有着悠久的历史,很多工作都围绕着数据展开。对于人工智能来说也没什么不同。
原始数据一般通过数据采集获得,随后的数据清洗、数据标注相当于对数据进行加工,然后输送到人工智能算法和模型里进行调用。
人工智能训练所用的数据如果没有保证足够的多样化和无偏性,就有可能产生人为的”AI偏见”等问题。
国内的京东众智、百度众包、阿里众包等都是专注于AI数据的智能众包平台。
算法
理解算法相对于自然环境下的静态数据的优势是很重要的。
事实上,组织可以通过优化其业务的算法获得优势。找到合适的公式、统计模型或预测是真正的商业艺术。
这些算法受到组织的保护,通常被认为是成功的秘密武器。
虽然它们依赖于干净的数据,但数学或逻辑中隐含的规则才是许多行业的真正区别所在。
如果没有精算师和他们宝贵的算法,保险业将何去何从?人工智能也不例外。
机器学习的常用算法包括决策树、随机森林算法、逻辑回归、SVM、朴素贝叶斯、K最近邻算法、K均值算法、Adaboost算法、神经网络、马尔可夫。
人工智能的算法按照模型训练方式和解决任务的不同可以分为好几类,其中需要考虑的因素包括数据本身的数量、质量和特点,具体业务场景中的问题,计算时间及精度要求等。
处理过程
正确的步骤或任务、适当的方式对于取得的结果质量是至关重要的。
无论处理过程(process)是静态的、可重复的,还是动态的、紧急的,都没有区别。
知道下一步的最佳行动是获得最佳业务结果的关键。
好的处理过程就是在正确的时间使用正确的数据和算法。
由于流程的精确性,业务结果肯定是准确的,并且可以通过使用各种形式的监督的透明反馈周期进行适当的调整。
三者缺一不可?
真正的结论是,要想获得长期的成功,你需要这三者。人们可以先从其中一个要素开始,接着添加其他要素。
随着机器学习逐渐展现出其威力,许多人工智能项目都是从数据开始的。
但随着人工智能的发展,算法和处理过程也将成为不可忽视的要素。
基于数据的人工智能目前运行良好,随着问题的复杂性和范围的扩大,算法和处理流程的重要性将会凸显。
如同三角形需要三条边来稳定形状,人工智能也将需要全部的三要素来完善自身。
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2019-09-17 22:39:00
作者:floodsun
编译:ronghuaiyang
这是作者一年前整理的东西,有些最新的论文没有包含进去,但是对于新手来说,入门足够了! 如果你是 深度学习 领域的新人,你的第一个问题可能是“我该从哪些论文开始读起呢?”这就是深度学习论文的阅读路线图!
这个路线图是根据下面几个规则构建的: 从概要到细节 从老的到最新的业界领先 从通用的到细分领域的 聚焦业界领先的
你会发现很多论文很新,但是确实值得一读。
我会继续在这个路线图上添加论文。
1 深度学习历史和基础
1.0 书
[0] Bengio, Yoshua, Ian J. Goodfellow, and Aaron Courville. “ Deep learning .” An MIT Press book. (2015). [html] (深度学习的圣经,你读这本书的同时可以读下面的论文.) ⭐️⭐️⭐️⭐️⭐️
1.1 综述
[1] LeCun, Yann, Yoshua Bengio, and Geoffrey Hinton. “ Deep learning .” Nature 521.7553 (2015): 436-444. [pdf] (三巨头的综述) ⭐️⭐️⭐️⭐️⭐️
1.2 深度置信网络(DBN)(深度学习黎明之前的里程碑)
[2] Hinton, Geoffrey E., Simon Osindero, and Yee-Whye Teh. “ A fast learning algorithm for deep belief nets .” Neural computation 18.7 (2006): 1527-1554. [pdf] (深度学习黎明之前) ⭐️⭐️⭐️
[3] Hinton, Geoffrey E., and Ruslan R. Salakhutdinov. “ Reducing the dimensionality of data with neural networks .” Science 313.5786 (2006): 504-507. [pdf] (里程碑, 展示了深度学习的前途) ⭐️⭐️⭐️
1.3 ImageNet的演进(深度学习从这里突破)
[4] Krizhevsky, Alex, Ilya Sutskever, and Geoffrey E. Hinton. “ Imagenet classification with deep convolutional neural networks .” Advances in neural information processing systems. 2012. [pdf] (AlexNet, 深度学习的突破) ⭐️⭐️⭐️⭐️⭐️
[5] Simonyan, Karen, and Andrew Zisserman. “ Very deep convolutional networks for large-scale image recognition .” arXiv preprint arXiv:1409.1556 (2014). [pdf] (VGGNet,神经网络开始变得很深!) ⭐️⭐️⭐️
[6] Szegedy, Christian, et al. “ Going deeper with convolutions .” Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2015. [pdf] (GoogLeNet) ⭐️⭐️⭐️
[7] He, Kaiming, et al. “ Deep residual learning for image recognition .” arXiv preprint arXiv:1512.03385 (2015). [pdf] (ResNet,非常非常深的神经网络, CVPR最佳论文) ⭐️⭐️⭐️⭐️⭐️
1.4 语音识别的演进
[8] Hinton, Geoffrey, et al. “ Deep neural networks for acoustic modeling in speech recognition: The shared views of four research groups .” IEEE Signal Processing Magazine 29.6 (2012): 82-97. [pdf] (语音识别的突破) ⭐️⭐️⭐️⭐️
[9] Graves, Alex, Abdel-rahman Mohamed, and Geoffrey Hinton. “ Speech recognition with deep recurrent neural networks .” 2013 IEEE international conference on acoustics, speech and signal processing. IEEE, 2013. [pdf] (RNN,循环神经网络) ⭐️⭐️⭐️
[10] Graves, Alex, and Navdeep Jaitly. “ Towards End-To-End Speech Recognition with Recurrent Neural Networks .” ICML. Vol. 14. 2014. [pdf]⭐️⭐️⭐️
[11] Sak, Haşim, et al. “ Fast and accurate recurrent neural network acoustic models for speech recognition .” arXiv preprint arXiv:1507.06947 (2015). [pdf] (Google的语音识别系统) ⭐️⭐️⭐️
[12] Amodei, Dario, et al. “ Deep speech 2: End-to-end speech recognition in english and mandarin .” arXiv preprint arXiv:1512.02595 (2015). [pdf] (Baidu的语音识别系统) ⭐️⭐️⭐️⭐️
[13] W. Xiong, J. Droppo, X. Huang, F. Seide, M. Seltzer, A. Stolcke, D. Yu, G. Zweig “ Achieving Human Parity in Conversational Speech Recognition .” arXiv preprint arXiv:1610.05256 (2016). [pdf] (state-of-the-art的语音识别, Microsoft) ⭐️⭐️⭐️⭐️ 读过了上面的论文之后,你应该对深度学习的历史,基本的深度学习模型的结构(包括CNN,RNN,LSTM)有了个基本的理解,包括深度学习是如何应用到图像和语音的识别的问题中的。下面的论文将带你更加深入的理解深度学习方法,深度学习在不同领域的应用和前沿研究。我建议你可以根据你的兴趣和研究方向选择性的阅读下面的论文。
2 深度学习方法
2.1 模型
[14] Hinton, Geoffrey E., et al. “ Improving neural networks by preventing co-adaptation of feature detectors .” arXiv preprint arXiv:1207.0580 (2012). [pdf] (Dropout) ⭐️⭐️⭐️
[15] Srivastava, Nitish, et al. “ Dropout: a simple way to prevent neural networks from overfitting .” Journal of Machine Learning Research 15.1 (2014): 1929-1958. [pdf] ⭐️⭐️⭐️
[16] Ioffe, Sergey, and Christian Szegedy. “ Batch normalization: Accelerating deep network training by reducing internal covariate shift .” arXiv preprint arXiv:1502.03167 (2015). [pdf] (2015年的杰出工作) ⭐️⭐️⭐️⭐️
[17] Ba, Jimmy Lei, Jamie Ryan Kiros, and Geoffrey E. Hinton. “ Layer normalization .” arXiv preprint arXiv:1607.06450 (2016). [pdf] (Batch Normalization的升级版) ⭐️⭐️⭐️⭐️
[18] Courbariaux, Matthieu, et al. “ Binarized Neural Networks: Training Neural Networks with Weights and Activations Constrained to+ 1 or−1 .” [pdf] (新模型,速度快) ⭐️⭐️⭐️
[19] Jaderberg, Max, et al. “ Decoupled neural interfaces using synthetic gradients .” arXiv preprint arXiv:1608.05343 (2016). [pdf] (训练方法的创新,了不起的工作) ⭐️⭐️⭐️⭐️⭐️
[20] Chen, Tianqi, Ian Goodfellow, and Jonathon Shlens. “Net2net: Accelerating learning via knowledge transfer.” arXiv preprint arXiv:1511.05641 (2015). [pdf] (通过修改之前的训练过的网络来减少训练的epoch数量) ⭐️⭐️⭐️
[21] Wei, Tao, et al. “Network Morphism.” arXiv preprint arXiv:1603.01670 (2016). [pdf] (通过修改之前的训练过的网络来减少训练的epoch数量) ⭐️⭐️⭐️
2.2 优化方法
[22] Sutskever, Ilya, et al. “ On the importance of initialization and momentum in deep learning .” ICML (3) 28 (2013): 1139-1147. [pdf] (动量优化器) ⭐️⭐️
[23] Kingma, Diederik, and Jimmy Ba. “ Adam: A method for stochastic optimization .” arXiv preprint arXiv:1412.6980 (2014). [pdf] (可能是最常用的优化器) ⭐️⭐️⭐️
[24] Andrychowicz, Marcin, et al. “ Learning to learn by gradient descent by gradient descent .” arXiv preprint arXiv:1606.04474 (2016). [pdf] (神经元优化器,杰出的工作) ⭐️⭐️⭐️⭐️⭐️
[25] Han, Song, Huizi Mao, and William J. Dally. “ Deep compression: Compressing deep neural network with pruning, trained quantization and huffman coding .” CoRR, abs/1510.00149 2 (2015). [pdf] (ICLR 最佳论文, 是神经网络运行更快的新方向) ⭐️⭐️⭐️⭐️⭐️
[26] Iandola, Forrest N., et al. “ SqueezeNet: AlexNet-level accuracy with 50x fewer parameters and< 1MB model size .” arXiv preprint arXiv:1602.07360 (2016). [pdf] (也是一个优化神经网络的新方向) ⭐️⭐️⭐️⭐️
2.3 非监督学习/深度生成模型
谷歌 [27] Le, Quoc V. “ Building high-level features using large scale unsupervised learning .” 2013 IEEE international conference on acoustics, speech and signal processing. IEEE, 2013. [pdf] (里程碑, 吴恩达, 谷歌大脑项目, 认猫) ⭐️⭐️⭐️⭐️
[28] Kingma, Diederik P., and Max Welling. “ Auto-encoding variational bayes .” arXiv preprint arXiv:1312.6114 (2013). [pdf] (VAE) ⭐️⭐️⭐️⭐️
[29] Goodfellow, Ian, et al. “ Generative adversarial nets .” Advances in Neural Information Processing Systems. 2014. [pdf] (生成对抗网络,超酷的点子) ⭐️⭐️⭐️⭐️⭐️
[30] Radford, Alec, Luke Metz, and Soumith Chintala. “ Unsupervised representation learning with deep convolutional generative adversarial networks .” arXiv preprint arXiv:1511.06434 (2015). [pdf] (DCGAN) ⭐️⭐️⭐️⭐️
[31] Gregor, Karol, et al. “ DRAW: A recurrent neural network for image generation .” arXiv preprint arXiv:1502.04623 (2015). [pdf] (带注意力机制的VAE, 出色的工作) ⭐️⭐️⭐️⭐️⭐️
[32] Oord, Aaron van den, Nal Kalchbrenner, and Koray Kavukcuoglu. “ Pixel recurrent neural networks .” arXiv preprint arXiv:1601.06759 (2016). [pdf] (PixelRNN) ⭐️⭐️⭐️⭐️
[33] Oord, Aaron van den, et al. “Conditional image generation with PixelCNN decoders.” arXiv preprint arXiv:1606.05328 (2016). [pdf] (PixelCNN) ⭐️⭐️⭐️⭐️
2.4 循环神经网络(RNN)/ 序列到序列(Seq-to-Seq)的模型
[34] Graves, Alex. “ Generating sequences with recurrent neural networks .” arXiv preprint arXiv:1308.0850 (2013). [pdf] (LSTM, 非常好的生成结果, 展示了RNN的威力) ⭐️⭐️⭐️⭐️
[35] Cho, Kyunghyun, et al. “ Learning phrase representations using RNN encoder-decoder for statistical machine translation .” arXiv preprint arXiv:1406.1078 (2014). [pdf] (第一个Seq-to-Seq 的论文) ⭐️⭐️⭐️⭐️
[36] Sutskever, Ilya, Oriol Vinyals, and Quoc V. Le. “ Sequence to sequence learning with neural networks .” Advances in neural information processing systems. 2014. [pdf] (杰出的工作) ⭐️⭐️⭐️⭐️⭐️
[37] Bahdanau, Dzmitry, KyungHyun Cho, and Yoshua Bengio. “ Neural Machine Translation by Jointly Learning to Align and Translate .” arXiv preprint arXiv:1409.0473 (2014). [pdf] ⭐️⭐️⭐️⭐️
[38] Vinyals, Oriol, and Quoc Le. “ A neural conversational model .” arXiv preprint arXiv:1506.05869 (2015). [pdf] (Seq-to-Seq在聊天机器人上应用) ⭐️⭐️⭐️
2.5 神经元图灵机
[39] Graves, Alex, Greg Wayne, and Ivo Danihelka. “ Neural turing machines .” arXiv preprint arXiv:1410.5401 (2014). [pdf] (未来计算机的基本原型) ⭐️⭐️⭐️⭐️⭐️
[40] Zaremba, Wojciech, and Ilya Sutskever. “ Reinforcement learning neural Turing machines .” arXiv preprint arXiv:1505.00521 362 (2015). [pdf] ⭐️⭐️⭐️
[41] Weston, Jason, Sumit Chopra, and Antoine Bordes. “ Memory networks .” arXiv preprint arXiv:1410.3916 (2014). [pdf]⭐️⭐️⭐️
[42] Sukhbaatar, Sainbayar, Jason Weston, and Rob Fergus. “ End-to-end memory networks .” Advances in neural information processing systems. 2015. [pdf] ⭐️⭐️⭐️⭐️
[43] Vinyals, Oriol, Meire Fortunato, and Navdeep Jaitly. “ Pointer networks .” Advances in Neural Information Processing Systems. 2015. [pdf] ⭐️⭐️⭐️⭐️
[44] Graves, Alex, et al. “ Hybrid computing using a neural network with dynamic external memory .” Nature (2016). [pdf] (里程碑,综合了上面这些论文的思想) ⭐️⭐️⭐️⭐️⭐️
2.6 深度强化学习
[45] Mnih, Volodymyr, et al. “ Playing atari with deep reinforcement learning .” arXiv preprint arXiv:1312.5602 (2013). [pdf]) (第一篇命名为深度强化学习的论文) ⭐️⭐️⭐️⭐️
[46] Mnih, Volodymyr, et al. “ Human-level control through deep reinforcement learning .” Nature 518.7540 (2015): 529-533. [pdf] (里程碑) ⭐️⭐️⭐️⭐️⭐️
[47] Wang, Ziyu, Nando de Freitas, and Marc Lanctot. “ Dueling network architectures for deep reinforcement learning .” arXiv preprint arXiv:1511.06581 (2015). [pdf] (ICLR最佳论文,非常好的点子) ⭐️⭐️⭐️⭐️
[48] Mnih, Volodymyr, et al. “ Asynchronous methods for deep reinforcement learning .” arXiv preprint arXiv:1602.01783 (2016). [pdf] (业界领先的方法) ⭐️⭐️⭐️⭐️⭐️
[49] Lillicrap, Timothy P., et al. “ Continuous control with deep reinforcement learning .” arXiv preprint arXiv:1509.02971 (2015). [pdf] (DDPG) ⭐️⭐️⭐️⭐️
[50] Gu, Shixiang, et al. “ Continuous Deep Q-Learning with Model-based Acceleration .” arXiv preprint arXiv:1603.00748 (2016). [pdf] (NAF) ⭐️⭐️⭐️⭐️
[51] Schulman, John, et al. “ Trust region policy optimization .” CoRR, abs/1502.05477 (2015). [pdf] (TRPO) ⭐️⭐️⭐️⭐️
[52] Silver, David, et al. “ Mastering the game of Go with deep neural networks and tree search .” Nature 529.7587 (2016): 484-489. [pdf] (阿尔法狗) ⭐️⭐️⭐️⭐️⭐️
2.7 深度迁移学习 / 终身学习 / 特别针对是强化学习
[53] Bengio, Yoshua. “ Deep Learning of Representations for Unsupervised and Transfer Learning .” ICML Unsupervised and Transfer Learning 27 (2012): 17-36. [pdf] (一个教程) ⭐️⭐️⭐️
[54] Silver, Daniel L., Qiang Yang, and Lianghao Li. “ Lifelong Machine Learning Systems: Beyond Learning Algorithms .” AAAI Spring Symposium: Lifelong Machine Learning. 2013. [pdf] (一个关于终身学习的简单的探讨) ⭐️⭐️⭐️
[55] Hinton, Geoffrey, Oriol Vinyals, and Jeff Dean. “ Distilling the knowledge in a neural network .” arXiv preprint arXiv:1503.02531 (2015). [pdf] (深度学习教父的工作) ⭐️⭐️⭐️⭐️
[56] Rusu, Andrei A., et al. “ Policy distillation .” arXiv preprint arXiv:1511.06295 (2015). [pdf] (强化学习的领域) ⭐️⭐️⭐️
[57] Parisotto, Emilio, Jimmy Lei Ba, and Ruslan Salakhutdinov. “ Actor-mimic: Deep multitask and transfer reinforcement learning .” arXiv preprint arXiv:1511.06342 (2015). [pdf] (强化学习的领域) ⭐️⭐️⭐️
[58] Rusu, Andrei A., et al. “ Progressive neural networks .” arXiv preprint arXiv:1606.04671 (2016). [pdf] (了不起的工作, 新的想法) ⭐️⭐️⭐️⭐️⭐️
2.8 单样本学习
[59] Lake, Brenden M., Ruslan Salakhutdinov, and Joshua B. Tenenbaum. “ Human-level concept learning through probabilistic program induction .” Science 350.6266 (2015): 1332-1338. [pdf] (不是深度学习,但是值得一读) ⭐️⭐️⭐️⭐️⭐️
[60] Koch, Gregory, Richard Zemel, and Ruslan Salakhutdinov. “ Siamese Neural Networks for One-shot Image Recognition .”(2015) [pdf] ⭐️⭐️⭐️
[61] Santoro, Adam, et al. “ One-shot Learning with Memory-Augmented Neural Networks .” arXiv preprint arXiv:1605.06065 (2016). [pdf] (一个单样本学习的基本步骤) ⭐️⭐️⭐️⭐️
[62] Vinyals, Oriol, et al. “ Matching Networks for One Shot Learning .” arXiv preprint arXiv:1606.04080 (2016). [pdf]⭐️⭐️⭐️
[63] Hariharan, Bharath, and Ross Girshick. “ Low-shot visual object recognition .” arXiv preprint arXiv:1606.02819 (2016). [pdf] ⭐️⭐️⭐️⭐️
3 应用
3.1 自然语言处理(NLP)
[1] Antoine Bordes, et al. “ Joint Learning of Words and Meaning Representations for Open-Text Semantic Parsing .” AISTATS(2012) [pdf] ⭐️⭐️⭐️⭐️
[2] Mikolov, et al. “ Distributed representations of words and phrases and their compositionality .” ANIPS(2013): 3111-3119 [pdf] (词向量) ⭐️⭐️⭐️
[3] Sutskever, et al. “ “Sequence to sequence learning with neural networks .” ANIPS(2014) [pdf] ⭐️⭐️⭐️
[4] Ankit Kumar, et al. “ “Ask Me Anything: Dynamic Memory Networks for Natural Language Processing .” arXiv preprint arXiv:1506.07285(2015) [pdf] ⭐️⭐️⭐️⭐️
[5] Yoon Kim, et al. “ Character-Aware Neural Language Models .” NIPS(2015) arXiv preprint arXiv:1508.06615(2015) [pdf]⭐️⭐️⭐️⭐️
[6] Jason Weston, et al. “ Towards AI-Complete Question Answering: A Set of Prerequisite Toy Tasks .” arXiv preprint arXiv:1502.05698(2015) [pdf] (问答任务) ⭐️⭐️⭐️
[7] Karl Moritz Hermann, et al. “ Teaching Machines to Read and Comprehend .” arXiv preprint arXiv:1506.03340(2015) [pdf] (CNN/DailyMail cloze style questions) ⭐️⭐️
[8] Alexis Conneau, et al. “ Very Deep Convolutional Networks for Natural Language Processing .” arXiv preprint arXiv:1606.01781(2016) [pdf] (文本分类的state-of-the-art的工作) ⭐️⭐️⭐️
[9] Armand Joulin, et al. “ Bag of Tricks for Efficient Text Classification .” arXiv preprint arXiv:1607.01759(2016) [pdf] (比state-of-the-art差点, 但是快很多) ⭐️⭐️⭐️
3.2 物体检测
[1] Szegedy, Christian, Alexander Toshev, and Dumitru Erhan. “ Deep neural networks for object detection .” Advances in Neural Information Processing Systems. 2013. [pdf] ⭐️⭐️⭐️
[2] Girshick, Ross, et al. “ Rich feature hierarchies for accurate object detection and semantic segmentation .” Proceedings of the IEEE conference on computer vision and pattern recognition. 2014. [pdf] (RCNN) ⭐️⭐️⭐️⭐️⭐️
[3] He, Kaiming, et al. “ Spatial pyramid pooling in deep convolutional networks for visual recognition .” European Conference on Computer Vision. Springer International Publishing, 2014. [pdf] (SPPNet) ⭐️⭐️⭐️⭐️
[4] Girshick, Ross. “ Fast r-cnn .” Proceedings of the IEEE International Conference on Computer Vision. 2015. [pdf]⭐️⭐️⭐️⭐️
[5] Ren, Shaoqing, et al. “ Faster R-CNN: Towards real-time object detection with region proposal networks .” Advances in neural information processing systems. 2015. [pdf] ⭐️⭐️⭐️⭐️
[6] Redmon, Joseph, et al. “ You only look once: Unified, real-time object detection .” arXiv preprint arXiv:1506.02640 (2015). [pdf] (YOLO,实用) ⭐️⭐️⭐️⭐️⭐️
[7] Liu, Wei, et al. “ SSD: Single Shot MultiBox Detector .” arXiv preprint arXiv:1512.02325 (2015). [pdf] ⭐️⭐️⭐️
[8] Dai, Jifeng, et al. “ R-FCN: Object Detection via Region-based Fully Convolutional Networks .” arXiv preprint arXiv:1605.06409 (2016). [pdf] ⭐️⭐️⭐️⭐️
[9] He, Gkioxari, et al. “ Mask R-CNN ” arXiv preprint arXiv:1703.06870 (2017). [pdf] ⭐️⭐️⭐️⭐️
3.3 视觉跟踪
[1] Wang, Naiyan, and Dit-Yan Yeung. “ Learning a deep compact image representation for visual tracking .” Advances in neural information processing systems. 2013. [pdf] (第一篇使用深度学习来进行视觉跟踪的论文,DLT Tracker) ⭐️⭐️⭐️
[2] Wang, Naiyan, et al. “ Transferring rich feature hierarchies for robust visual tracking .” arXiv preprint arXiv:1501.04587 (2015). [pdf] (SO-DLT) ⭐️⭐️⭐️⭐️
[3] Wang, Lijun, et al. “ Visual tracking with fully convolutional networks .” Proceedings of the IEEE International Conference on Computer Vision. 2015. [pdf] (FCNT) ⭐️⭐️⭐️⭐️
[4] Held, David, Sebastian Thrun, and Silvio Savarese. “ Learning to Track at 100 FPS with Deep Regression Networks .” arXiv preprint arXiv:1604.01802 (2016). [pdf] (GOTURN,作为深度学习的方法已经是很快的了,但是还是落后于非深度学习的方法) ⭐️⭐️⭐️⭐️
[5] Bertinetto, Luca, et al. “ Fully-Convolutional Siamese Networks for Object Tracking .” arXiv preprint arXiv:1606.09549 (2016). [pdf] (SiameseFC,新的实时物体跟踪方面的state-of-the-art ) ⭐️⭐️⭐️⭐️
[6] Martin Danelljan, Andreas Robinson, Fahad Khan, Michael Felsberg. “ Beyond Correlation Filters: Learning Continuous Convolution Operators for Visual Tracking .” ECCV (2016) [pdf] (C-COT) ⭐️⭐️⭐️⭐️
[7] Nam, Hyeonseob, Mooyeol Baek, and Bohyung Han. “ Modeling and Propagating CNNs in a Tree Structure for Visual Tracking .” arXiv preprint arXiv:1608.07242 (2016). [pdf] (VOT2016 Winner,TCNN) ⭐️⭐️⭐️⭐️
3.4 图像描述
[1] Farhadi,Ali,etal. “ Every picture tells a story: Generating sentences from images “. In Computer VisionECCV 2010. Springer Berlin Heidelberg:15-29, 2010. [pdf] ⭐️⭐️⭐️
[2] Kulkarni, Girish, et al. “ Baby talk: Understanding and generating image descriptions “. In Proceedings of the 24th CVPR, 2011. [pdf]⭐️⭐️⭐️⭐️
[3] Vinyals, Oriol, et al. “ Show and tell: A neural image caption generator “. In arXiv preprint arXiv:1411.4555, 2014. [pdf]⭐️⭐️⭐️
[4] Donahue, Jeff, et al. “ Long-term recurrent convolutional networks for visual recognition and description “. In arXiv preprint arXiv:1411.4389 ,2014. [pdf]
[5] Karpathy, Andrej, and Li Fei-Fei. “ Deep visual-semantic alignments for generating image descriptions “. In arXiv preprint arXiv:1412.2306, 2014. [pdf]⭐️⭐️⭐️⭐️⭐️
[6] Karpathy, Andrej, Armand Joulin, and Fei Fei F. Li. “ Deep fragment embeddings for bidirectional image sentence mapping “. In Advances in neural information processing systems, 2014. [pdf]⭐️⭐️⭐️⭐️
[7] Fang, Hao, et al. “ From captions to visual concepts and back “. In arXiv preprint arXiv:1411.4952, 2014. [pdf]⭐️⭐️⭐️⭐️⭐️
[8] Chen, Xinlei, and C. Lawrence Zitnick. “ Learning a recurrent visual representation for image caption generation “. In arXiv preprint arXiv:1411.5654, 2014. [pdf]⭐️⭐️⭐️⭐️
[9] Mao, Junhua, et al. “ Deep captioning with multimodal recurrent neural networks (m-rnn) “. In arXiv preprint arXiv:1412.6632, 2014. [pdf]⭐️⭐️⭐️
[10] Xu, Kelvin, et al. “ Show, attend and tell: Neural image caption generation with visual attention “. In arXiv preprint arXiv:1502.03044, 2015. [pdf]⭐️⭐️⭐️⭐️⭐️
3.5 机器翻译 一些里程碑的论文列在RNN / Seq-to-Seq 主题下面。
[1] Luong, Minh-Thang, et al. “ Addressing the rare word problem in neural machine translation .” arXiv preprint arXiv:1410.8206 (2014). [pdf] ⭐️⭐️⭐️⭐️
[2] Sennrich, et al. “ Neural Machine Translation of Rare Words with Subword Units “. In arXiv preprint arXiv:1508.07909, 2015. [pdf]⭐️⭐️⭐️
[3] Luong, Minh-Thang, Hieu Pham, and Christopher D. Manning. “ Effective approaches to attention-based neural machine translation .” arXiv preprint arXiv:1508.04025 (2015). [pdf] ⭐️⭐️⭐️⭐️
[4] Chung, et al. “ A Character-Level Decoder without Explicit Segmentation for Neural Machine Translation “. In arXiv preprint arXiv:1603.06147, 2016. [pdf]⭐️⭐️
[5] Lee, et al. “ Fully Character-Level Neural Machine Translation without Explicit Segmentation “. In arXiv preprint arXiv:1610.03017, 2016. [pdf]⭐️⭐️⭐️⭐️⭐️
[6] Wu, Schuster, Chen, Le, et al. “ Google’s Neural Machine Translation System: Bridging the Gap between Human and Machine Translation “. In arXiv preprint arXiv:1609.08144v2, 2016. [pdf] (里程碑) ⭐️⭐️⭐️⭐️
3.6 机器人
[1] Koutník, Jan, et al. “ Evolving large-scale neural networks for vision-based reinforcement learning .” Proceedings of the 15th annual conference on Genetic and evolutionary computation. ACM, 2013. [pdf] ⭐️⭐️⭐️
[2] Levine, Sergey, et al. “ End-to-end training of deep visuomotor policies .” Journal of Machine Learning Research 17.39 (2016): 1-40. [pdf] ⭐️⭐️⭐️⭐️⭐️
[3] Pinto, Lerrel, and Abhinav Gupta. “ Supersizing self-supervision: Learning to grasp from 50k tries and 700 robot hours .” arXiv preprint arXiv:1509.06825 (2015). [pdf] ⭐️⭐️⭐️
[4] Levine, Sergey, et al. “ Learning Hand-Eye Coordination for Robotic Grasping with Deep Learning and Large-Scale Data Collection .” arXiv preprint arXiv:1603.02199 (2016). [pdf] ⭐️⭐️⭐️⭐️
[5] Zhu, Yuke, et al. “ Target-driven Visual Navigation in Indoor Scenes using Deep Reinforcement Learning .” arXiv preprint arXiv:1609.05143 (2016). [pdf] ⭐️⭐️⭐️⭐️
[6] Yahya, Ali, et al. “ Collective Robot Reinforcement Learning with Distributed Asynchronous Guided Policy Search .” arXiv preprint arXiv:1610.00673 (2016). [pdf] ⭐️⭐️⭐️⭐️
[7] Gu, Shixiang, et al. “ Deep Reinforcement Learning for Robotic Manipulation .” arXiv preprint arXiv:1610.00633 (2016). [pdf] ⭐️⭐️⭐️⭐️
[8] A Rusu, M Vecerik, Thomas Rothörl, N Heess, R Pascanu, R Hadsell.” Sim-to-Real Robot Learning from Pixels with Progressive Nets .” arXiv preprint arXiv:1610.04286 (2016). [pdf] ⭐️⭐️⭐️⭐️
[9] Mirowski, Piotr, et al. “ Learning to navigate in complex environments .” arXiv preprint arXiv:1611.03673 (2016). [pdf]⭐️⭐️⭐️⭐️
3.7 艺术风格
[1] Mordvintsev, Alexander; Olah, Christopher; Tyka, Mike (2015). “ Inceptionism: Going Deeper into Neural Networks “. Google Research. [html] (Deep Dream) ⭐️⭐️⭐️⭐️
[2] Gatys, Leon A., Alexander S. Ecker, and Matthias Bethge. “ A neural algorithm of artistic style .” arXiv preprint arXiv:1508.06576 (2015). [pdf] (杰出的工作, 目前最成功的工作) ⭐️⭐️⭐️⭐️⭐️
[3] Zhu, Jun-Yan, et al. “ Generative Visual Manipulation on the Natural Image Manifold .” European Conference on Computer Vision. Springer International Publishing, 2016. [pdf] (iGAN) ⭐️⭐️⭐️⭐️
[4] Champandard, Alex J. “ Semantic Style Transfer and Turning Two-Bit Doodles into Fine Artworks .” arXiv preprint arXiv:1603.01768 (2016). [pdf] (Neural Doodle) ⭐️⭐️⭐️⭐️
[5] Zhang, Richard, Phillip Isola, and Alexei A. Efros. “ Colorful Image Colorization .” arXiv preprint arXiv:1603.08511 (2016). [pdf] ⭐️⭐️⭐️⭐️
[6] Johnson, Justin, Alexandre Alahi, and Li Fei-Fei. “ Perceptual losses for real-time style transfer and super-resolution .” arXiv preprint arXiv:1603.08155 (2016). [pdf] ⭐️⭐️⭐️⭐️
[7] Vincent Dumoulin, Jonathon Shlens and Manjunath Kudlur. “ A learned representation for artistic style .” arXiv preprint arXiv:1610.07629 (2016). [pdf] ⭐️⭐️⭐️⭐️
[8] Gatys, Leon and Ecker, et al.” Controlling Perceptual Factors in Neural Style Transfer .” arXiv preprint arXiv:1611.07865 (2016). [pdf] (控制空间上的风格转换,颜色信息以及空间尺度) ⭐️⭐️⭐️⭐️
[9] Ulyanov, Dmitry and Lebedev, Vadim, et al. “ Texture Networks: Feed-forward Synthesis of Textures and Stylized Images .” arXiv preprint arXiv:1603.03417(2016). [pdf] (纹理生成和风格转换) ⭐️⭐️⭐️⭐️
3.8 物体分割
[1] J. Long, E. Shelhamer, and T. Darrell, “ Fully convolutional networks for semantic segmentation .” in CVPR, 2015. [pdf]⭐️⭐️⭐️⭐️⭐️
[2] L.-C. Chen, G. Papandreou, I. Kokkinos, K. Murphy, and A. L. Yuille. “ Semantic image segmentation with deep convolutional nets and fully connected crfs .” In ICLR, 2015. [pdf] ⭐️⭐️⭐️⭐️⭐️
[3] Pinheiro, P.O., Collobert, R., Dollar, P. “ Learning to segment object candidates. ” In: NIPS. 2015. [pdf] ⭐️⭐️⭐️⭐️
[4] Dai, J., He, K., Sun, J. “ Instance-aware semantic segmentation via multi-task network cascades .” in CVPR. 2016 [pdf]⭐️⭐️⭐️
[5] Dai, J., He, K., Sun, J. “ Instance-sensitive Fully Convolutional Networks .” arXiv preprint arXiv:1603.08678 (2016). [pdf]⭐️⭐️⭐️
原文链接:https://github.com/floodsung/Deep-Learning-Papers-Reading-Roadmap/blob/master/README.md
本文为专栏文章,来自:AI公园,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/66245.html 。
数据分析
2019-09-17 21:35:00
作者:Marcel Kurovski
编译:ronghuaiyang
导读 用一个完整的例子告诉你,推荐系统是什么样的一个东西, 深度学习 该怎么用在里面。

找到一辆符合你喜好的车是一项非常耗时的任务,可能会让你发疯。另一方面,在我们的平台上大约有150万辆汽车,不断变化的车辆描述和仍在探索的用户可能也会让我们成为疯狂的解决方案提供商。在这种情况下,根据用户的偏好来匹配汽车是很有挑战性的,当你找到匹配的汽车时,你的完美汽车可能已经不见了。

来自Amazon, Netflix 和 Spotify 的推荐样本
即使你还没有搜索过汽车,你也可能在其他领域遇到过类似的问题,比如新闻、消费产品或娱乐。在Spotify上,在你开始享受音乐之前,你不喜欢明确地列出你的音乐品味。你也不想搜索整个IMDB来在Netflix上找到你下一部最喜欢的电视剧。可能性的绝对数量造成了选择的负担。我们不能在做决定之前手工收集所有的信息。我们希望决策支持是顺畅的、个性化的,特别是我们希望它是自动的。
人们倾向于归咎于“信息超载”,即大量信息侵入我们的大脑,需要快速准确的处理。但还有另一种观点。2008年,纽约大学教授Clay Shirky说:“这不是信息过载,而是筛选失败。“在mobile.de,这就突现出我们试图达到的目标:提高我们的筛选水平来帮助你从信息过载中逃离,帮助你迅速找到合适的车,不需要任何的麻烦。
为了做到这一点,我们使用了一个“推荐系统”,从数十亿的互动和数百个特征中推断出用户的偏好,从而得出个性化的推荐。下图显示了这一推理:我们使用通过数字化变得强大的技术来解决作为数字化副产品的感知信息过载问题。
一点背景知识
在我们深入讨论细节之前,我们需要先做好准备,澄清一些基本词汇:
推荐系统的三个基本数据源是 users 、 items 和它们之间的 interaction ,交互可以是“隐式”的,也可以是“显式”的。隐式交互在没有表达偏好或忽略意图的情况下发生,而显式交互则有意地反映偏好。例如,点击特定的汽车广告或为它们做书签,主要是一种隐含的信号,因为用户的主要意图不是对它们进行评级,例如在亚马逊(Amazon)购买的产品上加星。不过,我们可以放心地假设,你对你联系的经销商的汽车有强烈的偏好。我们将一组用户 U 和一组条目 I 之间的交互存储在 评级矩阵R 中,如下所示 。 这个矩阵有 m 行表示用户, n 列表示项目。每个条目 (i, j) 包含特定的交互。这里我们区分视图、书签和邮件。
根据反馈的类型,这些矩阵是 一元的 ,这意味着我们只有一个表示反馈的正值,比如“1”。所有未观察到的反馈都会使条目为空。我们曾经将已知的矩阵项表示为 额定值 。此外,这些矩阵通常非常稀疏,这意味着很大一部分(通常为> 95%)的矩阵是空的。猜猜亚马逊提供了多少产品,而你点击或购买的产品又有多少。
除了关于交互的信息,我们还有关于交互实体(用户和物品)的数据。物品带有某些特征,分析用户-物品交互可以让我们根据用户对这些特征的偏好得出结论。例如,我们可以推断出用户最喜欢的汽车制造商。还可能有一些特定于用户的特征,比如用户的设备或年龄。我们可以利用这些信息来改进我们的建议。
但是推荐的真正目的是什么呢?推荐系统的基本目标是根据之前的交互和特征来预测未来的用户—物品交互。参考上面的图片,我们想量化问号,看看用户接下来最有可能看到哪辆车。这个目标被表示为建议的“相关性”,只是许多类似于可信度、多样性或健壮性的目标之一。 可扩展性 是另一个重要的面向生产的目标,它迫使我们快速(在几十或几百毫秒内)向许多用户提供建议。如果你需要在等待的时候喝杯咖啡,完美的推荐并不重要。
在推荐系统中实现这些目标的标准技术是 协同过滤(CF) 。CF使用物品或用户之间的相似性来找到合适的物品进行推荐。在基于模型的CF中,我们使用 矩阵分解 来寻找表示用户和物品的密集矩阵,然后这些用这些用户和物品重新构造原始的评级矩阵。因此,我们为用户和物品提供了低维度的表示,我们可以利用这些表示进行预测。因子分解增加了稀疏矩阵的信息密度。在车辆推荐实验中,我们分析了10万用户和近170万辆车之间的大约800万个评分。这相当于10万次互动中有5次。从这些稀疏的信息中获得深刻的见解是相当具有挑战性的。
但“稀疏性”只是一个问题,另一个问题是,我们通常不知道该向初次访问的用户推荐什么。例如,请参见上图中的第四个用户,他没有与我们的任何汽车进行交互。这就是所谓的“冷启动”问题。为了应对这一挑战, 基于内容的过滤 (CBF)技术得到了发展,它利用了用户和物品的特征。这使得推荐系统对缺失的交互信号不那么敏感。但是推断用户对物品特征的偏好仍然需要它们,我们稍后将对此进行探讨。一般来说,关于用户和物品的上下文信息给了我们一些线索,但仍然有一些依赖关系。
然而,将交互和基于内容的信息结合起来可能会更加强大。我们称结合不同技术的推荐: 混合推荐 。
我们知道了推荐系统的基本词汇,但由于这是关于深度学习的,我们需要更深入。
深度学习来做车辆推荐
使用深度学习来改进车辆推荐,我们有两个基本目标: 提高推荐的 相关性 以 可扩展的 方式提供推荐
我们必须根据观察到的交互和用户/物品特征来估计偏好。让我们提炼任务:
给定一个用户 u 和一个条目 i ,我们计算一个作为首选项的 代理 的分数。这意味着高分反映了高偏好,反之亦然。这个分数允许我们根据给定用户的相关性对一组物品进行排序。分数可以是用户与某项交互的概率。因此,我们的目标是预测用户—物品交互的概率。为了计算这个概率,我们使用一个只有一个输出单元的深度神经网络。该单元使用sigmoid函数进行激活,生成区间(0,1)的输出值,因此我们可以将网络输出解释为概率,并将其用于排序。然后,该网络被训练来区分偏好和忽视。因此,我们用1标记所有正的user-item组合,用0标记负的user-item组合。因此,学习任务表现为二分类任务。出色地完成这项任务可以提升我们各项推荐的相关性。
使用一种简单的方法,我们计算所有可能的用户—项目组合的这些概率。基于此,我们将选择 k 个最高概率的物品,并将它们作为个性化推荐呈现给用户。由于推荐场景中有大量的用户和物品,这实际上是不可行的。我们需要找到一种计算成本低、速度快的方法,将物品的搜索库缩小到每个用户的候选集,这些候选集仍然包含可能相关的项目。因此,我们使用近似最近邻搜索来提升我们的深度学习方法。我们在用户和物品的密集表示上执行搜索,这要求我们在第一步中创建它们。在此基础上,利用近似近邻搜索可以快速地找到合适的候选对象,从而使系统具有良好的可扩展性。
传统的技术,如CF或CBF,使用线性技术计算这些分数,而这些线性技术无法预测潜在的非线性模式。为了捕捉这些非线性,我们建立了更复杂的学习模型。最终,我们希望实现相同的目标,但是“只是”更改底层模型。该模型将近似最近邻搜索生成的候选与二值分类相结合进行排序。
用户和物品表示(特征值的集合)提供了实值、高维和高度稀疏的向量。首先,我们需要解决以下任务: 嵌入 候选物品的生成 排序
我们在整个模型中解决所有这些任务。但这只是我们方法的一部分,另一部分是我们如何处理数据。因此,在继续使用模型之前,我们需要先将数据对齐。
数据和一个关于用户偏好挖掘的小故事
在第一步中,我们选择用户和物品共同的特征。我们将这些特性分为连续特征(如车辆价格或里程)和类别特性(如颜色和车辆类型)。我们进一步定义了训练和测试模型的时间段。现在,我们获取在这些时间内发生的所有事件,以及当时有效的相应物品特征。
通过这样做,我们可以专注于每个用户的事件和相关物品。这允许我们将用户首选项确定为关联物品特征的组合。通过计算用户查看的所有车辆的均值和标准差,我们可以了解用户喜欢的价格范围,以及用户如何在价格和里程之间进行权衡。我们可以使用贝叶斯方法来构建这些用户表示,从而为用户设计出与汽车相同的特征。尽管它们涉及相同的概念,但用户表示是随机的,而车辆表示是确定的。例如,下图显示了一个概要文件,其中用户查看了五辆车。其中两个是黑色的,两个是灰色的,一个是红色的。这显示了对颜色的偏好,这反映在概率分布上。对于像价格这样的连续特征,我们也可以这样做。取与用户交互的车辆的平均值和方差,我们就可以估计出用户喜欢的价格范围。汽车可以是黑色、白色或灰色,而且只有一个价格。
我们现在可以基于用户过去的交互创建一个表示。
由于设置了用户和物品集合,我们需要针对交互本身。我们选择了一种二分类方法来简化这个问题。因此,我们将所有观察到的交互作用都标记为1来表示偏好。由于我们缺乏负反馈信号,我们用一种称为“负采样”的技术,从正样本中人为地生成它们。结果,我们观察到的带正号的相互作用和带负号的相互作用是一样多的。现在,我们准备做得更深入一点。
偏好预测模型
整个网络由三个子网组成,如下图所示: UserNet 、 ItemNet 和 RankNet 。这些网络被联合起来共同训练。然后,我们将它们分割为能够在生产中提供建议的整体架构。

1. 嵌入
UserNet 和 ItemNet 将稀疏的用户和物品表示为密集的嵌入 e ᵤ 和 e ᵢ。因此,它们通过压缩信息来极大地降低了维度。虽然嵌入式失去了人类的可读性,但是我们从后一个过程中受益,因为它们的内存效率更高。由于表示形式不同(随机用户和确定的物品),但涉及相同的特征,所以我们使用单独的网络。
通过这些方便的用户和物品表示,我们开始为给定用户分配好的物品(嵌入)。这个过程分为两部分,包括从整个语料库生成一个物品子集,并对这些候选物品进行排序.
2. 候选物品生成
为了快速找到可能与用户相关的候选物品,我们使用近似最近邻搜索。从用户嵌入查询开始,我们可以有效地获取特定距离度量的 T 个最近的物品,例如余弦或欧式距离。这些几何上相似的候选物品为我们提供了一个很好的选择。我们使用此技术是因为对所有可用物品进行排序在计算上过于复杂。近似最近邻搜索成为可扩展性的关键。
有很多实现,包括Yahoo提供的Locally Optimized Product Quantizations(LOPQ)或Spotify提供的Approximate Nearest Neighbor Oh Yeah (ANNOY)。
3. 排序
由于我们现在为用户提供了 T 个候选物品,所以我们可以使用 RankNet 为每个候选项打分。最后,我们只是按分数递减的方式对候选项进行排序,然后选出最有希望的候选物品。然后将这些物品作为推荐,并取得了显著的成功。
上面的步骤描述了推理过程。训练模型非常类似,只是没有额外的候选项的生成。
结果
大量的数据预处理、高强度的建模和一些花哨的TensorFlow调试最终取得了成功,并取得了显著的效果。为了比较我们的方法,我们使用不同的传统方法作为基准,并用网格搜索确定正确的参数。我们推荐LightFM作为不同传统 推荐技术 的轻量级实现。这让我们能够专注于深度学习部分。
我们选择了纯CF和混合推荐器,结合CF和CBF作为基线。我们使用mean average precision @k ( MAP@k )来测量相关性。
我们使用不同的k查看评估,而 k=5 最接近我们在mobile.de中的用例。在这种情况下,深度学习推荐器的性能比传统CF高出近143%。我们还将强大的混合推荐器提高了73%。查看下图中的总体结果,有人可能会说,MAP@5的约1.05%看起来不是很好,但有两点值得注意。首先,考虑到数据的巨大稀疏性、我们对小时间跨度和有限用户子集的限制,绝对值的范围被人为地保持在较低的水平。其次,重要的一点是相对增长,这相当于推荐相关性翻倍了。
但相关性只是硬币的一面。尽管还有许多其他目标,但是这里特别关注的是“可扩展性”。由于有了候选项集合,我们能够在几十毫秒内生成相关的推荐,并扩展到数百万用户和物品—尽管不断更新的车辆特征使这一点变得困难。
结论
我们看到,深度学习是实现更好的个性化服务的伟大工具。在mobile.de,我们目前正在将我们的方法投入生产,以帮助我们的客户快速找到他们理想的汽车。使用TensorFlow service,可以方便地为生产中的模型提供服务,并顺利地修改它们。我们还考虑将该模型用于其他目的,比如改进搜索结果,利用用户信息提高搜索结果的相关性。用阿兰·图灵的话来说:“我们只能看到前方很短的距离,但我们可以看到很多需要做的事情。“
英文原文:https://ebaytech.berlin/deep-learning-for-recommender-systems-48c786a20e1a
本文为专栏文章,来自:AI公园,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/66256.html 。
数据分析
2019-09-17 21:30:00
作者:Nityesh Agarwal
编译:ronghuaiyang
导读 很多同学在读研,读博,也有很多已经工作了,读研读博的不用说了,看论文就和吃饭一样,工作了的呢?在AI这个领域,不看论文就意味着落后,有人说,可以等别人看了以后,解读出来我再看啊,一来已经迟了,二来别人的理解始终是别人的,自己悟出来的东西,才真正是自己的。所以说,还是自己看论文吧,不过看之前,先看看这篇文章,说不定有点收获。
当你上完了在线课程看完了书之后,怎么继续你的 深度学习 的学习之路呢?你怎样才能变得自我满足呢,这样你可以不用依赖其他人在这个领域进行的解读。
——读论文
我不是一个深度学习专家。我也是刚开始读论文,本文中,我会把我读论文时发现有用的东西全都写下来。
为什么要读论文
Quora上对这个问题的答案,问看看一个人是否具有机器学习职业能力的资质, 吴恩达 说,所有人都有这个资质。他说,你学完了几个机器学习相关的课程,“为了更进一步,读一些论文,再进一步,复现论文中的结果。”
Dario Amodei (OpenAI的研究员)说,“看看你是否适合做AI或者机器学习,试着去快速的实现大量的模型,找一个最近论文中的机器学习模型,实现它,尽快让这个模型能工作。”
这些建议说明读论文领域里对未来的理解是非常重要的。
每个月都有几百篇论文发布,如果你真的想在这个领域里认真学习的话,只是读一些指南性质的论文,或者依赖其他人对于最新的研究做出的解读,是远远不够的。最新的,突破新的研究在你读这些文章的时候,以及发生了。研究的步伐从未如此之快,只有一个方法可以跟上这个步伐,那就是文章一发布出来,就去读它。
在这篇文章中,我会试着给你一些具有可行性的建议,如何开始自己读论文。最后,我会尝试解读一篇实际的论文,这样你会明白我在说什么。
如何读论文
重要的事情说在前面,读研究论文很难。实际上—
“没什么事能让你感觉自己是个白痴,除非你在读科学期刊的论文。”
我只是事先打个预防针,这样你看不懂论文的时候,也不会感觉太差劲。你刚开始读的几遍是不太可能理解的,所以说,要有耐心,再读一遍。
现在,我们来说说几个重要的资源,可以帮助你开始阅读生涯…
arXiv.org
这就像是网络中的一个地方,研究人员在将论文正式发表在科学杂志或者会议之前,先发布出来放着。
为什么要这么做呢?
做研究的时候,写论文并不是结束。论文从投递到发表到某个期刊上是一个非常长的过程。一篇论文投到一个期刊上,审核的过程是非常慢的,现在,对于机器学习这种快速发展的领域,是非常不合适的。
这就是为什么,arXiv。
研究人员将论文发布在arXiv之类的预印本仓库上,进行快速的传播,获取快速的反馈。
Arxiv Sanity Preserver
好,允许研究人员方便的预发布他们的研究论文是很好。但是读这些论文的人呢?如果你上arXiv的网站,你会被吓到的。这绝对不是一个给新人准备的好地方(只是个人建议,很欢迎你去试试)。
进入,Arxiv Sanity Preserver。
由Andrej Karpathy创立
Arxiv Sanity对于arXiv,就像是头条中的内容推送,从海量的内容中,让你看到最有趣的内容,个人喜欢的内容。就像 Arxiv Sanity推送给你机器学习领域发布在arXiv上的内容。可以让你基于趋势,基于你过去喜欢的,以及你关注的人喜欢的进行排序。(就像是社交媒体中个人推荐用到的特征,你懂得)。
Machine Learning- WAYR在Reddit上的帖子
WAYR是What Are You Reading的缩写,这是一个在subreddit Machine Learning上的帖子,人们在上面发布当前这周的机器学习的论文,讨论他们感兴趣的地方。
就像我说过的,机器学习领域论文每周发布的数量是非常大的。这意味着不可能靠一个人完全读完,你还要去工作,去上学。同时,也不是所有的论文都值的一读。
因此,你需要把你的精力投入到读那些最有价值的论文上面,我上面提到的帖子就是干这个的。
Newsletters,Newsletters,Newsletters,重要的事情说三遍!(国内估计就是公众号了吧)
Newsletters是我个人最好的保持AI领域最新进展的来源。你可以简单的订阅一下,然后每周一免费的发送到你的邮箱。这样一来,你可以知道和AI相关的最有趣的信息,文章和研究论文。
下面是我订阅的一些Newsletters(不知道国内能不能订阅,我先列一下吧): Import AI by Jack Clark 这个是我最喜欢的,除了提供所有的AI信息之外,还有一项功能叫做“技术故事”,这部分包含了最新的AI相关基于上周的简短的科幻故事。 Machine Learnings by Sam DeBrule 他也维护了一个同名的medium的发布,包含了一些真正有趣的文章,也可以看看。 Nathan.ai by Nathan Benaich 上面两个newsletters是每周的,这是一个季刊,所以,你会每三个月拿到一个很长的email,总结了过去三个月的最有趣的发展。 The Wild Week in AI by Denny Britz 我非常喜欢这个,因为这个非常简洁,看起来就像过去两个月都没有更新过一样,不管怎样,我还是提一下,以防Denny重新开始推送邮件了。
Twitter上的AI人(对应国内的微博)
反正国内也上不了Twitter,我就不列了,总之就是几个大牛的Twitter,随便说几个名字吧:Yann LeCun,Michael Nielsen,Andrej Karpathy,Ian Goodfellow,Jeff Dean。
“有这么多好东西,我怎么开始呢”
对的,这才是最需要关心的。
好了,首先确定一下,你理解了最基础的机器学习,比如线性回归之类的算法,还有基础的深度学习,神经网络,反向传播,正则化和一点比基础稍微高一点的,比如CNN,RNN和LSTM。我真的不认为最好的了解基础的方法是读科研论文,有大量的其他的资源可以参考。
一旦你完成了这个,你可以开始读论文了,最早介绍这些概念的论文。这样的话,你可以聚焦于养成看科研论文的习惯。你不用太关心你是不是真正理解了你看的第一篇论文,因为你已经了解这些概念了。
我推荐你从AlexNet论文开始。
为什么选这篇论文?
看看这个图:
看到了吗,计算机视觉和模式识别的曲线,在2012年一下子就崛起了,很大程度上就因为这篇论文!!!
这篇论文重新燃起了深度学习的热潮。
作者是Alex Krizhevsky,Ilya Sutskever,和 Geoffrey Hinton,标题是 ImageNet Classification with Deep Convolutional Networks ,这篇文章被认为是这个领域最有影响力的文章之一,它描述了作者是如何使用CNN来做ImageNet的竞赛( ILSVRC)的。
如果你不知道的话,我可以告诉你,识别物体是计算机视觉领域的最早期的目标, ILSVRC就像是计算机视觉领域的奥林匹克,在这个竞赛中,你需要确认1000个类别的物体,在2012年,AlexNet以很大的优势赢得了比赛。
它在top错误率是15.3%,对比第二名26.2%。
需要说一下,真个计算机视觉领域都被这个结果震动了。人们开始意识到深度神经网络的威力,现在,你需要试着看看你能不能也分一杯羹。
也就是说,如果你通过其他的材料对CNN有个基础的了解的话,会很容易抓住这篇文章的内容,给你更多的力量。
当你读完了论文,你也许会看看其他的CNN领域的开创性论文,或者是其他的结构,如RNN,LSTM,GANs。
现在有很多Github上的仓库,收集了很多这样的开创性的论文,这里有个很好的,在开始之前,可以先看看,可以帮助你创建自己的阅读列表。
原文链接:https://towardsdatascience.com/getting-started-with-reading-deep-learning-research-papers-the-why-and-the-how-dfd1ac15dbc0
本文为专栏文章,来自:AI公园,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/66974.html 。
数据分析
2019-09-16 21:07:00
作者:Hafidz Zulkifli
编译:ronghuaiyang
导读
把学习率用好,也能提升 深度学习 模型的性能,一起来看看吧!
这篇文章试图记录我对以下主题的理解: 学习率是什么?它的意义是什么? 如何系统地达到一个良好的学习率? 为什么我们在训练过程中要改变学习率? 在使用预训练的模型时,我们如何处理学习速率?
这篇文章大部分是基于过去fast.ai研究员写的东西。这是它的一个简洁版本,以一种让人快速接触到材料的实质的方式排列。请仔细阅读参考资料以了解更多细节。
首先,什么是学习率?
学习率是一个超参数,它控制着我们根据损失梯度调整网络权重的程度。值越低,我们沿着向下的斜率走得越慢。虽然这可能是一个好主意(使用低学习率),以确保我们不会错过任何局部最小值,但这也可能意味着我们将花费很长时间来收敛—特别是当我们陷入平稳地区。
下面的公式显示了这种关系。 new_weight = existing_weight — learning_rate * gradient
学习速率小(上)、大(下)的梯度下降法。
通常情况下,学习速率是由用户随机设置的。最好的情况是,用户可以利用过去的经验(或其他类型的学习材料)来获得关于在设置学习速率时使用什么是最佳价值的直觉。
因此,通常很难把它做好。下图演示了在设置学习率时可能遇到的不同场景。
不同学习速率对收敛性的影响
此外,学习率影响我们的模型收敛到局部最小值的速度(也就是达到最佳精度的速度)。因此,从一开始就把它做好,意味着我们训练模型的时间会更少。 训练时间越少,花在GPU 云计算 上的钱就越少。:)
有没有更好的方法来决定学习率?
在“ Cyclical Learning Rates for Training Neural Networks .”章节3.3中。Leslie N. Smith提出,你可以用一个非常低的学习率来训练模型,并在每次迭代中以线性或指数的方式增加它,从而估计出一个好的学习率。
每个mini-batch之后,学习率提升
如果我们记录每次迭代的学习情况,并绘制学习速率(log)与损失的关系图,我们会看到随着学习率的增加,会有一个点损失停止减少并开始增加。在实践中,理想情况下,我们的学习速率应该位于图的最左边(如下图所示)。这里是0.001到0.01。
上面那些东西看起来很有用,我们怎么用呢?
目前它作为函数在fast.ai包中支持,由Jeremy Howard开发的用于抽象pytorch的一个包(很像Keras是Tensorflow的抽象)。
在训练神经网络之前,只需要输入以下命令就可以开始寻找最优的学习速率。 # learn is an instance of Learner class or one of derived classes like ConvLearner learn.lr_find() learn.sched.plot_lr()
变得更好
在这一点上,我们已经讨论了学习率的意义,它的重要性,以及当我们开始训练我们的模型时,我们如何系统地得出一个最优值。
接下来,我们将讨论如何使用学习率来改进模型的性能。
传统的思想
通常,当一个人设定他的学习率并训练模型时,他只会等待学习率随着时间的推移而降低,并等待模型最终收敛。
然而,当梯度达到一个平稳区域,训练损失变得更加难以改善。Dauphin等人认为,损失最小化的困难来自鞍点,而不是糟糕的局部极小值。
误差曲面上的鞍点,鞍点是函数的导数为零的点,但不是所有轴上的局部极值点
我们如何从这里逃脱?
我们可以考虑几个选择。一般来说, 如果训练不再改善我们的损失,我们将根据循环函数 f 来改变每次迭代的学习率。根据迭代次数,每个周期都有一个固定的长度。该方法使学习速率在合理的边界值之间循环变化。 这是有帮助的,因为如果我们被卡在鞍点上,增加学习率可以更快地遍历鞍点平缓区 。
Leslie提出了一种“三角形”方法,每隔几次迭代就重新启动一次学习速率。

Leslie N. Smith提出的循环学习率的“三角”和“三角2”方法。在左边的图中,min和max lr保持不变。在右边,在每个周期之后,差值减半。
另一种同样流行的方法是由Loshchilov & Hutter提出的带有热重启的随机梯度下降法。该方法基本采用余弦函数作为循环函数,在每个循环中以最大的速度重新开始学习。“热启动”来自这样一个事实:当重新启动学习率时,它不是从头开始,而是从模型在最后一步中收敛到的参数开始。
虽然有一些变化,下面的图展示了它的一个实现,其中每个周期被设置为相同的时间间隔。
SGDR图,学习率vs迭代。
因此,我们现在有一种减少训练时间的方法,基本上是周期性地在“ 山脉 ”周围跳跃(见下图)。
固定LR与循环LR的比较
除了节省时间,研究还表明,使用这些方法可以在不需要调整和更少迭代的情况下提高分类精度。
迁移学习中的学习率
在fast.ai课程中,在解决 人工智能 问题时强调利用预训练的模型。例如,在解决图像分类问题时,教授学生如何使用预训练的模型,如VGG或Resnet50,并将其连接到你希望预测的任何图像数据集。
在fast.ai中总结模型构建是如何快速完成的。以下是我们通常会采取的几个步骤: 使用数据增强,并且precompute=True 使用 lr_find() 来查找最高的学习率,在这个学习率下,损失仍在明显改善 在最后一层上使用预先计算的激活训练1-2个epoch 使用数据增强(即precompute=False)对最后一层进行训练,使用cycle_len=1进行2-3个epoch的训练 解冻所有层 将较早的层的学习率设置为比后面的层的学习率低3~10倍 再使用一次 lr_find() 使用cycle_mult=2训练整个网络直到过拟合
从上面的步骤中,我们注意到步骤2、5和7与学习率有关。在本文前面的部分中,我们基本上已经讨论了上面提到的2个步骤—我们在这里讨论了如何在训练模型之前获得最佳的学习率。
在下一节中,我们将介绍如何通过使用SGDR来减少训练时间,并通过不时重新启动学习率来提高准确度,从而避免梯度接近于为零的区域。
在最后一节中,我们将讨论微分学习,以及如何使用它来确定带有预训练模型的训练模型的学习率。
什么是可微分学习?
这是一种方法,你可以在训练过程中为网络的不同层次设置不同的学习速率。这与人们通常配置学习速率的方式相反,人们通常在训练期间在整个网络中使用相同的速率。
我喜欢Twitter的一个原因是—他自己的直接回答
在写这篇文章的时候,Jeremy和Sebastian Ruder一起发表了一篇论文,深入探讨了这个话题。所以我想微分学习率现在有了一个新名字— 可分性微调 。:)
为了更清楚地说明这个概念,我们可以参考下面的图,其中将一个预训练的模型分成3个组,其中每个组将配置一个递增的学习率值。
使用微分学习率的CNN例子
这种配置方法背后的直觉是,前几层通常包含非常细粒度的数据细节,比如线条和边缘—我们通常不希望对它们做太多更改,希望保留它们的信息。因此,不需要太多地改变它们的权重。
相比之下,在后面的层中,比如上面绿色的图层,我们可以得到详细的数据特征,比如眼球、嘴巴或鼻子,我们不一定要保留它们。
这与其他finetune方法相比如何?
在 Fine-tuned Language Models for Text Classification 中有人认为对整个模型进行finetune的成本太高,因为有些模型可能有超过100层。因此,人们通常做的是一次只对模型进行一层finetune。 然而,这引入了顺序需求,阻碍了并行性,并且需要多次遍历数据集,从而导致对小型数据集的过拟合。
同时也证明了 Fine-tuned Language Models for Text Classification 中引入的方法能够提高各种NLP分类任务的准确率和降低错误率(下图)。
英文原文:https://towardsdatascience.com/understanding-learning-rates-and-how-it-improves-performance-in-deep-learning-d0d4059c1c10
本文为专栏文章,来自:AI公园,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/66213.html 。
数据分析
2019-09-11 12:29:00
作者:Christopher Dossman
编译:ronghuaiyang
简单和复杂的技巧,帮助你提升 深度学习 的模型准确率
我从新入行和有经验的 机器学习 工程师中那里得到的最多的问题就是”我如何得到更高的准确率?“
既然机器学习在商业领域最有价值的地方就是在于它的预测能力,那么从现有的系统中压榨更高的准确率是一个简单的获取更多价值的方法。
这个指南会分4个不同的部分,每个部分介绍一些不同的策略。 数据优化 算法 调试 超参数优化 集成,集成,集成
不是所有的这些都能提高性能,你会发现,当你对同样的问题使用更多的这些方法的时候,会有一个性能的极限。尝试了这些之后仍然没什么进展?那么你需要重新思考一下你的具体的使用场景的核心解决方案。这篇文章只是一个速查表,我会给你每个部分的具体的信息的链接。
数据优化
均衡你的数据集
如果你的问题是分类的话,一个最简单的方法来提升模型的能力就是将你的数据集变的均衡。通常情况下,现实世界中的数据集是不均衡的,如果你需要你的深度学习系统学到的是如何基于特征来分辨不同的类别,而不是基于分布来分辨不同的类别的话,你需要将你的数据集变的均衡。
常用的方法包括: 将采用多数的类 :你可以通过对多数类进行降采样来平衡数据集的分布。 过采样少数的类 :重复采样可以用来增加你的少数类的比例。
关于这个问题,这里有个很好的文章:http://amsantac.co/blog/en/2016/09/20/balanced-image-classification-r.html
更多数据
我们应该很熟悉这个图。这个图显示了数据量和深度学习以及传统机器学习在能力上的关系。如果你想你的模型具有更好的能力,你需要更多的数据。这取决于你的预算,你可以构造更多的具有标签的数据,或者收集更多的没有标注的数据,然后训练你的特征提取子模型。
开源的标注软件 图像:https://github.com/Labelbox/Labelbox 音频:http://www.fon.hum.uva.nl/praat/ 视频:http://www.anvil-software.org/
生成更多的数据
一个往往被忽视的提高准确率的方法是从你已有的数据中生成新的数据。以照片为例,工程师们常常会对照片进行旋转,平移等操作。这些操作同样也减少了过拟合的风险。
关于造更多的数据的问题:https://medium.com/nanonets/how-to-use-deep-learning-when-you-have-limited-data-part-2-data-augmentation-c26971dc8ced
算法调试
使用论文的原始的代码
你正在做的工作是不是有许多人正在研究呢?你很走运,因为上百个工程师可能已经考虑过如何来得到这个问题的最佳准确率了。读一读相关主题的论文,注意一下他们所使用的不同的方法和得到的结果。他们甚至有github的代码给你总到嘴边。
Google Scholar是一个很好的 搜索引擎 ,他们有很多的工具来帮助你找到相关的研究。
算法抽查
不要太自以为是,不可能知道哪一个机器学习的算法在你的问题上是最佳的。每次我遇到新的问题,而且没有经过长时间的研究的话,我会看看目前能用的方法,一个一个的试,深度学习和传统机器学习的方法都会试。
做完实验后,对所有的结果排个序,得到最佳的那个算法。
数据驱动的机器学习算法选择:https://machinelearningmastery.com/a-data-driven-approach-to-machine-learning/
超参数的优化
学习率
Adam优化器算法久经考验。在深度学习上常常能得到很好的结果。即使是这样好的性能,也不免让你陷入到局部最下的问题中。那么有一个算法既能有Adam的优点,又能避免陷入局部最小,这个方法是热重启SGD:https://medium.com/38th-street-studios/exploring-stochastic-gradient-descent-with-restarts-sgdr-fa206c38a74e。
关于学习率的文章:https://towardsdatascience.com/estimating-optimal-learning-rate-for-a-deep-neural-network-ce32f2556ce0
Batch size和epochs的数量
标准的程序时使用大的batch size和大的epochs数量,但是平常的策略给你的也是平常的结果。需要对你的batch size和训练epochs数量做一点实验。
提前停止
这是一个减少泛化误差的非常好的方法。继续训练也许会提升你的训练集的准确率,但是到了某个点之后,验证集上的准确率开始下降。为了提升对真实数据的能力,试试提前停止的策略。
提前停止:https://stats.stackexchange.com/questions/231061/how-to-use-early-stopping-properly-for-training-deep-neural-network
网络结构
如果你想尝试点好玩的,你可以试试https://github.com/carpedm20/ENAS-pytorch,这算法构建了一个通用的网络设计,在你的数据集上最大化准确率,比标准的神经网络搜索方法如cloud ML用的那种更加有效。
正则化
防止过拟合的一个鲁棒的方法是使用正则化。使用正则化有好几个不同的方法,如果你还没有试过的话,建议你在你的项目中试试。 Dropout:随机的让一定比例的神经元在训练的时候关闭。Dropout可以帮助防止过拟合。 L1和L2的权值惩罚:权值出现尺度爆炸的话,会影响准确率。其中一个对抗的方法是对所有的权值加上衰减。权值衰减让所有的权值越小越好,除非是遇到大的梯度。使用权值衰减常常可以提高性能,也对让模型变得容易解释。
集成, 集成, 集成
选择最好的模型来用是不是很难?你可以组合来自不同模型的输出,得到更好的准确率。对于每个算法,有两个步骤: 在原始的数据的子集上产生一个简单的机器学习的分布。 将这些分布组合成一个“集成”模型
模型组合(bagging)
在这个方法中,你训练几个不同的模型,在某些地方有些差别,使用同样的数据,对最终的结果取平均值作为输出。Bagging是减少模型偏差的很好的方法。你可认为是不同的人,具有不同的背景,对通用的问题提出了不同角度的看法。就像一个团队一样,是一个得到正确答案的有效的方法。
级联(stacking)
和bagging很类似,区别在于并没有一个经验的公式来组合最终的结果。你创建的是基于输入数据的元素级别的学习器,你自己选择如何为不同的模型的答案设置不同的权重来得到最终的结果。
还有问题
重新考虑你的问题
休息一会儿,喝杯茶。这个方案是重新重头思考你的问题。坐下来进行一些头脑风暴,可以帮助你解决一些问题。可以问问自己一些简单的问题: 我的分类问题可以变成一个回归问题吗?或者反过来? 可以将你的问题分解成更小的问题吗? 你的二值输出可以变成一个softmax吗?或者反过来? 你看待问题的方式是最有效的吗?
重新思考你的问题是最困难的一个方法,也常常是最能得到最好的结果的。可以和一些有经验的人聊聊,也许会给你一些新的思路。
英文原文:https://towardsdatascience.com/deep-learning-performance-cheat-sheet-21374b9c4f45
本文为专栏文章,来自:AI公园,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/66227.html 。
数据分析
2019-09-11 05:29:00
传统企业很多在转型做 大数据 ,在技术层面上从互联网公司学到不少,改革也可谓大刀阔斧,就几年时间,很多传统企业的数据仓库全部从小型机转到了X86,现在做数据处理和分析如果不提 hadoop 甚至有点落伍了。
应该来说,现在搞一套 大数据平台 其实已经不是难事,但如果企业希望能基于新的大数据平台快速的进行创新,事情就并不像想象的那么简单,你会发现,换了平台以后,虽然数据增加了,创新的可能性增加了,但很多数据工作效率却比以前降低了,从采集、开发、分析、挖掘、运维不一而足,我们在看得见的成本上的确降低了,但看不见的成本却在大幅提升。
从平台的角度讲 ,由于技术组件的多样化,开源化,技术的复杂性大幅提升,企业能得到的标准化服务能力肯定是下降了,为了保障服务的连续性,企业必然要花更多的其它成本去做补偿,比如不少技术组件甚至业界也没多少人用过,企业只能硬着头皮自己去抗,难度可想而知。
从工具的角度看 ,当前各种技术组件的配套设施并不完备,我们不再拥有像PL/DEV这种完美的ORACLE第三方客户端软件,得自己重新开发一套客户端工具来跑脚本,比如针对HIVE的运行工具,但这些客户端工具的开发也是摸着石头过河,体验显然也是没法跟以前相比的。
互联网公司对于新产品的竞争力有个公式:竞争力=(新产品体验-老产品体验)-替换成本,因此,要推广一个体验还不如老工具的东西对于大数据平台运营人员来讲也是非常艰难,当然不仅是开发工具,还包括监控工具、优化工具等等。
从管理的角度看 ,更是要建立一套适应新的大数据平台运营的组织、机制和流程,比如建立小快灵的团队来适应大数据的创新,新的平台工具需要新的培训,比如 hive 脚本跑不动得自己有能力去解析yarn的日志,看看是否有数据倾斜的问题……。
无论如何,我们都将与BI时代的稳定再见,面对的将是一个全新的环境,这是当前任何一支 大数据团队 都会面临的问题,在如此不确定的环境中,一支大数据团队如何才能变得更高效是摆在每个大数据管理者面前的课题。
这个时候,我们首先要拥有对新事物勇敢提出问题的能力,而能否创造开放透明的环境是最重要的一个,这也是笔者最近的感悟,因此特别来说一说。
这里先举三个案例。
团队组织了一次工作研讨会,特意邀请了刚入职的新员工谈谈工作中的问题和建议,哪知道原来引以为豪的数据开发管理平台被一顿臭骂,从资源占用模式,开发界面,调试方式……但为什么老员工就能泰然自若,不愿意升级问题呢?也许是习惯了吧。
不少新人在日报中抱怨,一个脚本HIVE跑了很多个小时没跑出来,因此只能凌晨起来乘着人少跑,运维说一些不规范的脚本也帮助查杀了,性能也就这样了。
接到客户投诉,说一个标签质量有问题,核查发现原来标签开发人员为了万无一失,将正确的标签命名为sex_new,老的标签sex还留着,说是担心梳理不出对老应用的影响,就想了这个两全其美的方法。
这些看似不经意的问题,其实对于大数据的效率影响很大,一旦习惯了就会积重难返,大家都懂的,但关键是这些其实并不是团队不能解决的问题,但为什么会习惯于迁就呢?
笔者分析下来,大致有以下的原因;
1、认知格局问题 :员工之间,员工与管理者之间信息非常不对称,拥有的视野和资源不同,对于事物的轻重缓急认知不同,比如管理者认为租户性能是全局问题,不及时解决后果很严重,而员工认为自己忍忍就算了,员工经常听到领导的教诲说要站得高一点就是这个理,对冲基金公司桥水将所有公司的资料开放给员工是提升员工格局的一种手段。有时候,不知道这个问题是大问题是最大的问题。
2、趋利避害问题 :员工的工作边界有限,对于可提可不提的问题,从降低风险的角度讲一般会选择回避,毕竟提出问题是需要付出代价的,你得分析清楚原因吧,得找到利益相关方讨论清楚吧,一般还得求助上级协调解决,每一样工作都让你脱离原有的工作舒适区,这个违背人性,多一事不如少一事。
从更自私的角度来讲,比如碰到的是工具不好用的全局问题,我慢你也慢,那就不会由于这个问题导致自己的成果比别人差,那就无所谓了,其实很多KPI做到了极端就这样了,问题能否解决、饼能不能做大无关紧要,只要你不比我过得好。
3、沟通环境问题 :要打造开放透明的沟通环境非常不易,互联网公司相对比较扁平化,也还在不停的琢磨如何提升企业的透明程度,比如Google,大多企业层级式的汇报体系的确抑制了问题的暴露,从大了讲涉及到企业的文化,从小了讲涉及团建能力,很多问题其实早就有人提了,要么没人理,要么草草应付。
4、小白兔问题 :如果说趋利避害还带有一点选择性作为的话,小白兔就是不作为了,不作为不是不做事,如果你的工作都是领导安排的,比如说一下动一下,就要考虑自己是不是已经成为小白兔了。
有人说我的工作性质就是稳定啊,只需要执行就成,没有需要主动推进的事情,姑且不说这种被动心态,其实任何事情有深有浅之分,没有简单的事,只有简单的人,比如按部就班的处理工单算做事,想着如何提高工单效率也是做事,把处理工单的方法编撰成手册是做事,最后实现了一套自动化工单处理系统更是做事,其实没有人为你过设定边界,前者相对后者就是小白兔,而小白兔对于大数据这种创新团队影响更大。
大家会笑国王的新装,但自己不小心就会成为主角,管理者则被过顶传球了,这对于团队的伤害很大,大数据这类新事物特别需要问题的暴露和反馈,从而推进各类问题的快速解决,刻意练习提到重复单调的10000小时努力不会让你成为专家,这个道理同样适用于团队,卓越的团队无法靠无脑的扩张和机械的重复打造。
互联网公司值得我们学习的,不仅仅是技术,透明化、扁平化绝对是重要的一条,Google在《重新定义团队》提了很多了,对冲基金公司桥水创始人瑞·达利欧在《原则》一书中提到了“极度求真和极度透明”,李开复在微软亚洲研究院提倡的“白板文化”激荡和迸发了多少创意,也许只有经历过才能知道开放透明的价值。
毫无疑问,大数据将带来平台,工具,管理的巨大变革,有太多的问题需要解决,而能否勇敢、坦诚的提出问题是适应新变化的前提,同样起点的团队,会由于开放透明程度的不同形成巨大差距,大数据不能容忍鸵鸟政策,比如前面的三个问题通过团队的群策群力,我们给出了以下举措:
措施1:将开发管理平台的体验改善提升到团队工作的高级别,落实相关开发资源,在年底前逐步解决,同时反思项目化的建设模式是否符合新时期的要求。
措施2:新申请租户资源或者调整各个租户资源配额,削峰填谷;将开发人员按业务拆分成多个团队租户;明确开发规范,在年底前将开发规则内嵌在开发管理平台。
措施3:标签上线增加审核,比如区分变更还是新增,规范命名,对于存量标签相似名称进行核查,下线造成歧义的雷同标签。
现在有个热词叫做涌现,凯文.凯利在他的《失控》这本书中专门讲过蚁群,一只蚂蚁可能什么都做不了,但是一群蚂蚁通过一种协同的机制,可以做出很多精巧的事情。人的大脑是由神经元构成的,但是单个的神经元独立的看只是一个部件,但是通过不断的刺激,让神经元之间产生联系之后,我们就可以创造人类文明。这些就是涌现。我们熟悉的市场是涌现,区块链技术也是涌现。
这个道理似乎也能应用于团队,如果每个成员都能做到知无不言,团队将涌现出一种高效解决问题的能力,这也是我们梦寐以求的吧。
当然,笔者这里只是提出了问题,但却无法告诉解决问题的办法,比如打造开放、透明的团队环境的具体方法,因为自己也不知道,只知道照搬别人是很难的,因为每个企业有自己独特的环境,头脑风暴在一些企业很好使,但在很多地方完全不行,为了加大沟通让新人写日报能成,但对于其他人就不一定适用,因为不一定能对这个事达成共识,强扭的瓜也不会甜,“白板文化”说说容易,但真功夫不是看看李开复的书就能学会的,还是要自己实践和体会。
但在这个特殊的时期,理解“开放、透明的环境对于大数据团队是如此重要”这句话是非常有益的,因为认识到这个问题的重要性才有行动的可能。
你看赫拉利又出了本新书《今日简史》,他只是提出了21个问题,啥回答都没有,但也引发了大家的思考,最近正好读托马斯.弗里德曼的《世界是平的》一书,也发现了类似的话,分享于你。
一位朋友曾向诺贝尔物理学奖获得者伊西多.拉比询问他的成才之道。拉比回答说,小时候每天放学后母亲都会问他当天的学习情况。她对儿子一天所学的内容并不感兴趣,但她总是会问:“今天你是否提出了一个好问题?”,拉比说:“提出好问题让我成为了科学家。”
作者:傅一平    微信号:fuyipingmnb  欢迎交流!
本文为专栏文章,来自:傅一平,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/60170.html 。
数据分析
2018-09-03 23:47:00
本文针对异常访问现状及问题进行简要描述,在此基础上提出基于一元线性回归的 最小二乘法 异常访问分析模型,通过该模型解决了异常访问中时间与访问间相关性问题。
异常访问是指网络行为偏离正常范围的访问情况。异常访问包含多种场景,如Web访问、数据库访问、操作系统访问、终端交互等。
异常访问一直是网络信息安全中备受困扰的。困扰主要体现在以下几个方面,通过某一个模型满足所有场景,模型缺少明确使用条件致使结果不明确,模型计算量大计算耗时长等方面。
基于以上的现状,本文仅针对系统登录异常访问进行分析,通过对系统登录事件与时间进行回归统计筛选出异常访问时间段。
下图为异常登录事件检测的时序图:
异常登录时序图
异常登录事件模型的活动图流程如下:
1)用户进行登录,输入相应的用户名及口令。
2)系统进行登录验证,判断是否为合法用户登录。
3)登录成功或失败均会将本次登录行为记录下来。
4)日志自动发送至分析系统。
5)分析系统对收到的日志进行分析,分析采用最小二乘法。
6)如果发现异常登录事件则触发告警事件。
7)最后工作人员可收到告警提示,并查看到相应的告警。
当触发告警后,工作人员需要在量化分析中进行进一步分系工作。通过日志的登录事件能够找到何人何时登录哪个系统。详细记录下这些信息后方可以进行后续的时间处置工作。
异常登录模型是分析系统的一个重要分析模型。这个分析模型中采用最小二乘法对登录事件进行异常判断。异常判断包括成功登录的异常判断,以及未成功登录的异常判断两类。
以下面的成功登录事件为例进行详细说明:
登录统计列表
上面的表格中描述的是以5分钟为单位时间内,系统登录成功的事件统计。
此时我们无法看出哪个时间单位内存在异常登录的情况。
如下图所示:
登陆次数散点图
首先采用“最小二乘法”对其求解。
最小二乘法
求解出直线与散点图叠加,如下所示:
登录次数最小二乘法拟合图
回归模型
经过逐一计算每个点的残差如下:
登陆次数残差结果表
通过上面的表格可以看到,序号为5、9、10的三个点残差值偏离相对比较大。同时,根据经验判断,正常的登录事件残差值通常在-10~+10之间。而这3个点的残差值偏离区间明显。残差值分别为“15.23967”,”-16.4549”,“15.098”。
针对此登录事件我们采用的置信区间为-10~+10,置信区间可根据不同的场景进行调整。
通过采用最小二乘法的方式进行异常登录事件查询,能够很好的解决传统统计表格中难以发现的问题。传统的方式都是采用TopN的方式对登录成功、登录失败的事件进行简单罗列。但在众多的登录事件中,哪些是值得工作人员关注的却难以得到体现。
最小二乘法的引用可以从众多的登录事件中分离出最为明显的异常行为,通过系统的初筛能够给工作人员提供可供量化分析能力。 工作人员通过量化分析模块能够对相应的事件进行分析工作。同时残差值的可定义为灵活应对分析需求提供便利条件。
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2016-04-15 12:58:00
摘要: 大数据 的概念可能不同的人会有不同的理解,我自己从08年开始从事 大数据 相关的工作,那个时候我们是觉得自己搞的是 云计算 和 数据仓库 ,而到了2011、2012年的时候,国内大数据的概念才兴起来,之后就是炒了三年的概念。
因为从事这一方向,这几年不断会有人问我什么是大数据我一直都回答不好。在最近的几个月,我对这一概念思考的更多一些,结合看过的一些资料(如《大数据时代》、《数学之美》第二版、《硅谷之谜》、吴军的演讲材料等)和实际的经历,算是有了一些认识。与其说认识,还不如说是总结,换个角度看待这个问题,分为大数据概念和大数据思维。
我把大数据的概念总结为四个字:大、全、细、时。
大数据之大
我们先来看一组数据: 百度每天采集的用户行为数据有1.5PB以上 全国各地级市今天的苹果价格数据有2MB 1998年Google抓取的互联网页面共有47GB(压缩后) 一台风力发电机每天产生的振动数据有50GB
百度每天的行为数据1.5个PB够大吧我们毫无怀疑这是大数据。但全国各个地级市今天的苹果价格只有2MB大小,是典型的小数据吧但如果我们基于这个数据,做一个苹果分销的智能调度系统,这就是个牛逼的大数据应用了。Google在刚成立的时候,佩奇和布林下载了整个互联网的页面,在压缩后也就47GB大小,现在一个U盘都能装的下,但Google搜索显然是个大数据的应用。如果再来看一台风机每天的振动数据可能都有50GB,但这个数据只是针对这一台风机的,并不能从覆盖面上,起到多大的作用,这我认为不能叫大数据。
这里就是在强调大,是Big不是Large,我们强调的是抽象意义的大。
大数据之全
我们再来看关于美国大选的三次事件: 1936年《文学文摘》收集了240万份调查问卷,预测错误 新闻学教授盖洛普只收集了5万人的意见,预测罗斯福连任正确 2012年Nate Silver通过互联网采集社交、新闻数据,预测大选结果
《文学文摘》所收集的问卷有240万,绝对是够大的,但为什么预测错误了呢当时《文学文摘》是通过电话调查的,能够装电话的就是一类富人,这类人本身就有不同的政治倾向,调查的结果本身就是偏的。而盖洛普只收集了5万人的意见,但是他采用按照社会人群按照比例抽样,然后汇集总体结果,反而预测正确了。因为这次预测,盖洛普一炮而红,现在成了一个著名的调研公司。当然,后来盖洛普也有预测失败的时候。到了2012年,一个名不见经传的人物Nate Silver通过采集网上的社交、新闻数据,这是他预测的情况和真实的情况:
(图1 Nate Silver做的竞选预测)
两者是惊人的接近的。
从这点我是想强调要全量而不是抽样,大数据时代有了更好的数据采集手段,让获取全量数据成为可能。
大数据之细
在2013年9月,百度知道发布了一份《中国十大吃货省市排行榜》,在关于“××能吃吗”的问题中,宁夏网友最关心“螃蟹能吃吗”内蒙古、新疆和西藏的人最关心“蘑菇能吃吗”浙江、广东、福建、四川等地网友问得最多的是“××虫能吃吗”而江苏以及上海、北京等地则最爱问“××的皮能不能吃”。下图是全国各地关心的食物:
(图2 各省市最喜欢吃的东西)
用户在问什么能吃吗的时候,并不会说“我来自宁夏,我想知道螃蟹能吃吗”,而是会问“螃蟹能吃吗”,但是服务器采集到了用户的IP地址,而通过IP地址就能知道他所在的省份。这就是数据多维度的威力,如果没有IP这个维度,这个分析就不好办了。而现有的采集手段,能够让我们从多个维度获取数据,再进行后续分析的时候,就能对这些维度加以利用,就是“细”。
大数据之时
我们现在对CPI已经不再陌生,是居民消费价格指数(consumer price index)的简称。我们努力工作,起码要跑过CPI。
(图3 CPI)
那你有了解过CPI是怎么统计的吗这里包括两个阶段,一个是收集商品价格数据,一个是分析并发布数据。我从百度百科上了解到,中国CPI采样500多个市县,采价调查点6.3万个,近4000名采价员,次月中旬发布报告。我还曾找国家统计局的朋友确认了这个事情。
而在美国有一家创业公司叫Premise Data。它通过众包方式,25000个采价员(学生、收银员、司机等),使用手机APP采集数据,每条6~40美分,比美国政府数据提前4~6周发布。
这就是“时”,强调实时收集数据和实时分析数据。当然,在CPI的例子中,我们可以让价格上报更智能一些,不需要人工的方式。
从上面的大、全、细、时四个字,我们就可以对大数据的概念有个较为清晰的认识。这四点主要强调的数据的获取和规模上,和以往传统数据时代的差异。有了这个基础,我们还要看怎么对大数据加以利用。这里就要看看大数据思维。我们也来看两个例子。
大数据思维
(图4 输入法)
85前应该都用过智能ABC,一种古老的输入法,打起来特别慢。到了2002年左右,出了一个叫紫光的输入法,当时我就震惊了。真的输入很快,仿佛你的按键还没按下去,字就已经跳出来了。但渐渐的发现紫光拼音有个问题是许多新的词汇它没有。后来有了搜狗输入法,直接基于搜索的用户搜索记录,去抽取新的词库,准实时的更新用户本地的词库数据,因为有了大量的输入数据,就能直接识别出最可能的组合。
(图5 地图)
我们以前都用纸质的地图,每年还要买新的,旧的地址可能会过时,看着地图你绝对不知道哪里堵车。但有了百度地图就不一样了,我们上面搜索的地址都是及时更新的,虽然偶尔也会有被带到沟里的情况,但毕竟是少数。可以实时的看到路面堵车情况,并且可以规划防拥堵路线。
我们想想这种做事方式和以前有何不同
我们发现不是在拍脑袋做决定了,不是通过因果关系或者规则来决定该怎么办了,而是直接通过数据要答案。我们获取的数据越全面,越能消除更多的不确定性。也就是用数据说话, 数据驱动 。
本文为专栏文章,来自:桑文锋,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/16714.html 。
数据分析
2016-05-15 06:00:00
作者:Steve Jones
如今,数据量越来越大。近年来,企业已经意识到 数据分析 可以带来的价值,并且已经开始采用。企业现在的设备几乎都在监测和测量,并创造了大量的数据,通常比企业处理的更快。其问题是,而正因为 大数据 定义为“ 大数据 ”,所以数据收集的小差异或错误可能会导致出现重大问题,错误信息和不准确的推论。
有了大量数据,就能够以业务为中心的方式来分析它的挑战,实现这一目标的唯一方法就是确保企业制定数据管理策略。
然而,有一些技术可以优化企业大数据分析,并最大限度地减少可能渗透这些大数据集的“噪点”。这里有五个技术措施:
(1)优化数据收集
数据收集是最终导致业务决策的事件链中的第一步,确保收集的数据和业务感兴趣的指标的相关性非常重要。
定义对企业有影响的数据类型,以及分析如何增加价值。基本上,考虑客户行为,以及这将对企业的业务有何适用性,然后使用此数据进行分析。
存储和管理数据是数据分析中的重要一步。因此,必须保持数据质量和分析效率。
(2)清除垃圾数据
垃圾数据是大数据分析的祸患。这包括不准确,冗余或不完整的客户信息,可能会对 算法 造成严重破坏,并导致分析结果不佳。根据垃圾数据做出的决策可能会带来麻烦。
清洁数据至关重要,涉及丢弃不相关的数据,只保留高品质的数据,当前,为了获得完整和相关的数据,人工干预不是理想的模式,不可持续并且受主观影响,因此 数据库 本身需要被清理。这种类型的数据以各种方式渗透到系统中,其中包括随时间推移而变化,如更改客户信息或数据仓库中存储可能会损坏数据集。垃圾数据可能会对营销和潜在客户生产等行业产生明显的影响,但通过基于故障信息的业务决策,财务和客户关系也会受到不利影响。其后果也是广泛的,包括挪用资源,浪费时间和精力。
解决垃圾数据难题的方法是确保数据进入系统得到干净的控制。具体来说,重复免费,完整和准确的信息。如今,那些具有专门从事反调试技术和清理数据的应用程序和企业,可以对任何对大数据分析感兴趣的公司进行调查。数据清洁是 市场营销 人员的首要任务,因为数据质量差的连锁效应可能会大大提高企业成本。
为了获得最大的数据量,企业必须花时间确保质量足以准确地查看业务决策和营销策略。
(3)标准化数据集
在大多数商业情况下,数据来自各种来源和各种格式。这些不一致可能转化为错误的分析结果,这将会大大扭曲统计推断结果。为了避免这种可能性,必须决定数据的标准化框架或格式,并严格遵守。
(4)数据整合
大多数企业如今组成不同的自治部门,因此许多企业都有隔离的数据存储库或数据“孤岛”。这是具有挑战性的,因为来自一个部门的客户信息的更改将不会转移到另一个部门,因此他们将根据不准确的源数据进行决策。
为了解决这个问题,采用中央数据管理平台是必要的,整合所有部门,从而确保数据分析的准确性更高,所有部门的任何变化都可以立即访问。
(5)数据隔离
即使数据干净,将其组织和集成在一起,也可能是分析问题。在这种情况下,将数据分成几组是有帮助的,同时牢记分析正在尝试实现什么。这样,可以分析子群体内的趋势,这些趋势可能更有意义并具有更大的价值。当查看可能与整个数据集可能无关的高度具体的趋势和行为时尤其如此。
数据质量对大数据分析至关重要。许多公司试图采用分析软件,但却没有考虑到进入系统做什么。这将导致不准确的推断和解释,可能代价昂贵,并且对企业造成损害。一个定义明确,管理良好的数据库管理平台是使用大数据分析的企业不可或缺的工具。
End.
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2019-08-08 09:35:00
如果有 A、B、C 三位同学,他们各自手上有 10、15、20 块钱,这时需要在相互不知道对方有多少钱的情况下,不借助力第三方来计算三个人一共有多少钱。请问这时候,我们如何实现呢?——这,就是最经典的秘密共享场景。在看完这篇文章后,答案就出来了~
背景
互联网时代,一切基于数据。
随着 人工智能 的兴起,数据的质量和数量,已经成为影响 机器学习 模型效果最重要的因素之一,因此通过数据共享的模式来「扩展」数据量、从而提升模型效果的诉求也变得越发强烈。但在数据共享过程中,不可避免会涉及到两个问题:隐私泄露和数据滥用。提到这两个关键词,大家一定都对其背后的缘由有所耳闻: 第一则:2018 年 3 月,剑桥咨询公司通过 FaceBook 的数据共享漏洞,收集了 5000 万用户信息,据说有可能利用这些信息操控美国总统竞选,造成恶劣社会影响;事件曝光后,FB 公司股票大跌 7%,引发一系列后续问题。 第二则:2018 年 5 月,欧盟通过 General Data Protection Regulation(GDPR)法案,法案指出:所有与个人相关的信息都是个人数据,对数据的使用行为必须要有用户的明确授权。把对隐私保护的要求提到了一个新的高度。
随着对 数据安全 的重视和隐私保护法案的出台,以前粗放式的数据共享受到挑战,各个数据拥有者重新回到 数据孤岛 的状态,同时,互联网公司也更难以收集和利用用户的隐私数据。数据孤岛现象不仅不会消失,反而会成为新的常态,甚至它不仅存在于不同公司和组织之间,在大型集团内部也存在。未来,我们必须面对这样的现状:如果我们想更好的利用数据,用 大数据 和 AI 做更多有意义的事情,就必须在不同组织之间、公司与用户之间进行数据共享,但这个共享需要满足隐私保护和数据安全的前提。隐私泄漏和数据滥用如同达摩克利斯之剑悬在各个公司和组织头上,因此解决数据孤岛,成为 AI 行业需要解决的首要问题之一。
如何解决数据孤岛问题?
当前,业界解决隐私泄露和数据滥用的数据共享技术路线主要有两条。一条是基于硬件可信执行环境(TEE:Trusted Execution Environment)技术的可信计算,另一条是基于密码学的多方安全计算(MPC:Multi-party Computation)。TEE 字面意思是可信执行环境,核心概念为以第三方硬件为载体,数据在由硬件创建的可信执行环境中进行共享。这方面以 Intel 的 SGX 技术,AMD 的 SEV 技术,ARM 的 Trust Zone 技术等为代表。TEE 方案的大致原理如下图所示:
目前在生产环境可用的 TEE 技术,比较成熟的基本只有 Intel 的 SGX 技术,基于 SGX 技术的各种应用也是目前业界的热门方向,微软、谷歌等公司在这个方向上都有所投入。SGX(Software Guard Extensions)是 Intel 提供的一套软件保护方案。SGX 通过提供一系列 CPU 指令码,允许用户代码创建具有高访问权限的私有内存区域(Enclave – 飞地),包括 OS,VMM,BIOS,SMM 均无法私自访问 Enclave,Enclave 中的数据只有在 CPU 计算时,通过 CPU 上的硬件进行解密。同时,Intel 还提供了一套远程认证机制(Remote Attestation),通过这套机制,用户可以在远程确认跑在 Enclave 中的代码是否符合预期。MPC(Multi-party Computation,多方安全计算)一直是学术界比较火的话题,但在工业界的存在感较弱,之前都是一些创业小公司在这个方向上有一些探索,例如 Sharemind,Privitar,直到谷歌提出了基于 MPC 的在个人终端设备的「联邦学习」(Federated Learning)的概念,使得 MPC 技术一夜之间在工业界火了起来。MPC 方案的大致原理如下图所示:
目前,在 MPC 领域,主要用到的是技术是混淆电路(Garbled Circuit)、秘密分享(Secret Sharing)和同态加密(Homomorphic Encryption)。
混淆电路 是图灵奖得主姚期智教授在 80 年代提出的一个方法。其原理是,任意函数最后在计算机语言内部都是由加法器、乘法器、移位器、选择器等电路表示,而这些电路最后都可以仅由 AND 和 XOR 两种逻辑门组成。一个门电路其实就是一个真值表,假设我们把门电路的输入输出都使用不同的密钥加密,设计一个加密后的真值表,这个门从控制流的角度来看还是一样的,但是输入输出信息都获得了保护。
秘密分享 的基本原理是将每个数字随机拆散成多个数并分发到多个参与方那里。然后每个参与方拿到的都是原始数据的一部分,一个或少数几个参与方无法还原出原始数据,只有大家把各自的数据凑在一起时才能还原真实数据。
同态加密 是一种特殊的加密方法,允许对密文进行处理得到仍然是加密的结果,即对密文直接进行处理,跟对明文进行处理后再对处理结果加密,得到的结果相同。同态性来自抽象代数领域的概念,同态加密则是它的一个应用。当前,业界针对数据共享场景,利用上面的技术路线推出了一些解决方案,包括隐私保护机器学习 PPML、联邦学习、竞合学习、可信机器学习等,但这些方案只利用了其中的一部分技术,从而只适合部分场景,同时基本处于学术研究阶段,没有在生产环境落地。
共享机器学习:蚂蚁金服数据孤岛解决方案
为了更好的应对形势变化,解决数据共享需求与隐私泄露和数据滥用之间的矛盾,蚂蚁金服提出了希望通过技术手段,确保多方在使用数据共享学习的同时,能做到:用户隐私不会被泄露,数据使用行为可控,我们称之为共享机器学习(Shared Machine Learning)。
共享机器学习的定义:在多方参与且各数据提供方与平台方互不信任的场景下,能够聚合多方信息并保护参与方 数据隐私 的学习范式。 从 17 年开始,蚂蚁金服就一直在共享机器学习方向进行探索和研究,在结合了 TEE 与 MPC 两条路线的同时,结合蚂蚁的自身业务场景特性,聚焦于在金融行业的应用。蚂蚁金服共享机器学习方案拥有如下特性: 多种安全计算引擎整合,可基于不同业务场景来选择合适的安全技术。既有基于 TEE 的集中式解决方案,也有基于 MPC 的分布式解决方案;既可满足数据水平切分的场景,也能解决数据垂直切分的诉求;既可以做模型训练,也可以做模型预测。 支持多种机器学习算法以及各种数据预处理算子。支持的算法包括但不限于 LR,GBDT,Xgboost,DNN,CNN,RNN,GNN 等。 大规模集群化。支持大规模集群化,提供金融级的高效、稳定、系统化的支撑。
基于数年沉淀与积累,目前共享机器学习技术已在银行、保险、商户等行业成功落地诸多场景业务。通过在业务中打磨出的金融级共享机器学习能力,沉淀下来一套数据共享场景的通用解决方案,未来会逐步对外开放。在几年的艰苦研发中,共享学习累积专利 50 余项。在 2019 中国人工智能峰会上,共享机器学习获得「紫金产品创新奖」,在 8 月 16 日的全球人工智能创业者大会上,共享智能获得「应用案例示范奖」。下面,我们将分享基于上面两种路线的共享机器学习实践细节。
基于 TEE 的共享学习
蚂蚁共享学习底层使用 Intel 的 SGX 技术,并可兼容其它 TEE 实现。目前,基于 SGX 的共享学习已支持集群化的模型在线预测和离线训练。
1. 模型在线预测
预测通常是在线服务。相对于离线训练,在线预测在算法复杂度上面会相对简单,但是对稳定性的要求会更高。提升在线服务稳定性的关健技术之一就是集群化的实现——通过集群化解决负载均衡,故障转移,动态扩容等稳定性问题。但由于 SGX 技术本身的特殊性,传统的集群化方案在 SGX 上无法工作。为此,我们设计了如下分布式在线服务基本框架:
该框架与传统分布式框架不同的地方在于,每个服务启动时会到集群管理中心(ClusterManager,简称 CM)进行注册,并维持心跳,CM 发现有多个代码相同的 Enclave 进行了注册后,会通知这些 Enclave 进行密钥同步,Enclave 收到通知后,会通过远程认证相互确认身份。当确认彼此的 Enclave 签名完全相同时,会通过安全通道协商并同步密钥。该框架具备如下特性: 通过集群化方案解决了在线服务的负载均衡,故障转移,动态扩缩容,机房灾备等问题; 通过多集群管理和 SDK 心跳机制,解决代码升级,灰度发布,发布回滚等问题; 通过 ServiceProvider 内置技术配合 SDK,降低了用户的接入成本; 通过提供易用性的开发框架,使得用户在开发业务逻辑时,完全不需要关心分布式化的逻辑; 通过提供 Provision 代理机制,确保 SGX 机器不需要连接外网,提升了系统安全性。
目前在这套框架之上已经支持包括 LR、GBDT、Xgboost 等多种常用的预测算法,支持单方或多方数据加密融合后的预测。基于已有框架,也可以很容易的扩展到其它算法。
2. 模型离线训练
模型训练阶段,除了基于自研的训练框架支持了 LR 和 GBDT 的训练外,我们还借助于 LibOsOcclum 和自研的分布式组网系统,成功将原生 Xgboost 移植到 SGX 内,并支持多方数据融合和分布式训练。通过上述方案,不仅可以减少大量的重复性开发工作,并且在 Xgboost 社区有了新的功能更新后,可以在 SGX 内直接复用新功能,无需额外开发。目前我们正在利用这套方案进行 TensorFlow 框架的迁移。此外,针对 SGX 当下诟病的 128M 内存限制问题(超过 128M 会触发换页操作,导致性能大幅下降),我们通过算法优化和分布式化等技术,大大降低内存限制对性能的影响。基于 TEE 的多方数据共享学习训练流程如下: 机构用户从 Data Lab 下载加密工具 使用加密工具对数据进行加密,加密工具内嵌了 RA 流程,确保加密信息只会在指定的 Enclave 中被解密 用户把加密数据上传到云端存储 用户在 Data Lab 的训练平台进行训练任务的构建 训练平台将训练任务下发到训练引擎 训练引擎启动训练相关的 Enclave,并从云端存储读取加密数据完成指定的训练任务。
采用该方式进行数据共享和机器学习,参与方可以保证上传的数据都经过加密,并通过形式化验证保证加密的安全性。
基于 MPC 的共享学习
蚂蚁基于 MPC 的共享学习框架分为三层: 安全技术层:安全技术层提供基础的安全技术实现,比如在前面提到的秘密分享、同态加密、混淆电路,另外还有一些跟安全密切相关的,例如差分隐私技术、DH 算法等等; 基础算子层:在安全技术层基础上,我们会做一些基础算子的封装,包括多方数据安全求交、矩阵加法、矩阵乘法,以及在多方场景下,计算 sigmoid 函数、ReLU 函数等等;同一个算子可能会有多种实现方案,用以适应不同的场景需求,同时保持接口一致; 安全机器学习算法:有了基础算子,就可以很方便的进行安全机器学习算法的开发,这里的技术难点在于,如何尽量复用已有算法和已有框架,我们在这里做了一些有益的尝试,但也遇到了很大的挑战。
目前我们这套基于 MPC 的共享学习框架已支持了包括 LR、GBDT、GNN 等头部算法,后续一方面会继续根据业务需求补充更多的算法,同时也会为各种算子提供更多的技术实现方案,以应对不同的业务场景。基于 MPC 的多方数据共享学习训练流程如下:
如图所示,训练步骤为: 机构用户从 Data Lab 下载训练服务并本地部署 用户在 Data Lab 的训练平台上进行训练任务的构建 训练平台将训练任务下发给训练引擎 训练引擎将任务下发给机构端的训练服务器 Worker Worker 加载本地数据 Worker 之间根据下发的训练任务,通过多方安全协议交互完成训练任务
训练引擎的具体架构如下:
其中 Coordinator 部署于蚂蚁平台,用于任务的控制和协调,本身并不参与实际运算。Worker 部署在参与多方安全计算的机构,基于安全多方协议进行实际的交互计算。用户在建模平台构建好的训练任务流会下发给 Coordinator 的 Task Flow Manager,Task Flow Manager 会把任务进行拆解,通过 Task Manager 把具体算法下发给 Worker 端的 Task Executor,Task Executor 根据算法图调用 Worker 上的安全算子完成实际的运算。利用这套方法,可以做到数据不出域就可以完成数据共享,训练工具可以部署在本地的服务器。
共享学习 VS. 联邦学习
目前,国内对于数据共享场景的机器学习解决方案,比较熟悉的可能是由谷歌提出,又由微众传播的联邦学习概念。经过我们的了解,其实联邦学习目前涉及两个不同的概念: 第一种联邦学习,旨在解决云 + 端的训练过程中,端上的隐私不要被暴露的问题,是一个 To C + 数据水平切分的场景。除了保护端上的数据隐私外,其重点还在于如何解决训练过程中,端自身可能掉线等问题。 第二种联邦学习则主要用于解决 To B 场景中各方隐私不泄露的问题,即可以应用于数据的水平切分场景,也可以应用于数据垂直切分的场景。
它们侧重于不同的数据共享场景,采用不同的技术,相比之下,蚂蚁金服的共享学习兼容多种安全计算技术,并且支持多种机器学习算法和使用场景。
除此之外,共享学习和联邦学习的差异在于: 联邦学习只解决数据不出域的情况,这就限制了其可以使用的技术(只有严格的 MPC 算法才符合这个要求),而共享学习目前基于 TEE 的集中式共享学习技术,是联邦学习没有涉及的; 联邦学习讲究的是参与各方的「身份和地位」的相同,所以叫联邦;而共享学习则不强调各共享方的地位对等,在很多场景下,不同的参与方是拥有不同的角色的。
因此无论从技术范围还是应用场景上,联邦学习都比共享学习的范围要小。 
未来展望
让数据孤岛在安全环境下进行连接、合作、共创、赋能,是蚂蚁金服共享机器学习的核心使命。共享机器学习作为一个安全与 AI 的交叉学科,正在越来越受到关注,尤其是在金融行业,有着广阔的应用空间。但是,这个领域的各项技术,也远未到成熟的阶段。我们团队经过两年的摸索,也只是取得了阶段性的一些成果,在算法的计算性能以及支持算法的多样性等各个方面,还有一段路要走。9 月 27 日杭州云栖大会,蚂蚁金服将向外界首次分享共享学习的理念和实践,欢迎届时关注。后续我们也会分享更多共享学习方面的研究进展及实践经验,欢迎业界同仁交流探讨,共同探索更多更强的数据孤岛解决方案,推进数据共享下的机器学习在更多场景下落地。
王磊,蚂蚁金服高级技术专家
王力,蚂蚁金服高级算法专家
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2019-08-18 22:15:00
用 Excel 进行数据收集,做好一个数据录入文件给用户使用,结果收回来的数据让你令人抓狂: 手机号不是11位 面积单位有人写平方米,有人写m2 张冠李戴,明明写姓名的地方,写了性别 说好写保留一位小数,却提交了整数 说好50字以内,却写了500字……
对于以上这些问题,如果你是用Excel收集数据的话,应该用Excel里的【 数据有效性 】(2013以后叫【 数据验证 】),提前针对指定单元格进行限制,让使用者按你的要求去录入正确的数据,这样收集效果会好一些。
但还有复杂一些的情况,可能需要逐级限制,例如你在一些网页,看到可以先选第一级菜单,然后第二级的内容是仅对应第一级出现的选项,这样才会能满足更复杂的录入需求~
所以只会做简单的数据有效性还不够,还要懂制作 多级联动 下拉菜单 了:
可惜的是,Excel并没有自带这样一种功能,还是只能建立在现有的【数据验证】功能基础上去想办法。
一级菜单好办,直接设置对应的序列数据源就行了:
那二级、三级的数据验证的数据源怎么解决呢?
二级、三级的下拉列表是要根据一级的内容变化而变化的,也就是说二三级的数据验证数据源必须是一个动态变化的区域。
这里就有两种解决办法:
1、indirect引用名称法
2、offset动态区域法
以下介绍方法1的操作:
Step1: 给二级的内容定义名称,名称为它对应的一级内容。如给广州市定义名称为广东省,给南京市定义名称为江苏省。
Step2: 设置数据验证,选择用indirect函数动态引用一级单元格内容,即实现当一级为广东省时,二级的菜单数据源就是indirect(“广东省”),当一级是江苏省时,二级的下拉数据源就是indirect(“江苏省”)。我们在上一步已定义好名称,名称“广东省”=“广州市”,“江苏省”=“南京市”,通过此法实现了二级的下拉菜单动态变化,是依赖一级的选择结果变化而变化。
Step3: 做好二级菜单后,三级的问题也是同理可得。先给三级的内容设置名称,名称是对应的二级,然后也是通过indirect函数引用二级内容的单元格,实现当二级选择广州市时,三级的下拉数据源就是indirect(“广州市”)。
就这样,三级下拉菜单就做完了!其实也不难对吧,做出这种多级联动的下拉菜单,会让数据录入更方便快捷~
但是要注意的是,这也并不是绝对的限制,具体要注意的问题请见下方:
注意事项&总结
1、 用indirect动态引用名称的办法,操作是简单,但若下级数据有更改时并不能自动扩展,后续维护麻烦。
解决扩展问题,可以在方法1基础上结合表去操作,或直接把二三级的序列数据源设置为offset动态引用区域即可。
2、 因为二三级联动的下拉菜单,并不是Excel原生的功能,只是一个数据验证的功能;所以当你填写好了各级内容后,反过来再更改一级的选项时,二三级的内容并不会被清除或提示错误。
要解决这个问题,可以用条件格式根据判断下级内容是否属于上级进行提示,如改变填充色或字体色等;再高阶的办法是用VBA去判断上级单元格是否有变化,一旦变化,则清空下级单元格的内容。
3、 Excel的【数据验证】功能比较脆弱,若别人在你设置了数据验证的区域进行粘贴的操作,就会被破坏掉了!这里又有3个解决方法:
技术法: 用VBA限制不让用户粘贴。
管理法: 搞清楚用户为什么要粘贴,因为是不懂使用么?还是要填写的重复内容太多?通过培训教用户去好好使用即可。
换工具: 若培训不便操作,VBA又不懂的话,那你也就不适合用Excel来收集数据了。下方推荐几个在线收集数据的工具,在这方面会有提升,收集好数据可以直接导出到Excel,也很方便!甚至也有多级下拉菜单的,请自行探索~~ 麦客CRM
http://www.mikecrm.com/ 金数据
https://jinshuju.net/ 问卷星
https://www.wjx.cn/ 腾讯文档
https://docs.qq.com/
要做好一项工作,那就想办法去推进好,方法不行就换方法,工具不行就换工具,自己不行就多学习~~~ 作者:刘振雄
来自:数据化管理(微信ID:sjhglwx)
本文为专栏文章,来自:数据化管理,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/64336.html 。
数据分析
2019-05-25 08:50:00
之前,征信公司 Equifax宣布其系统中 1.43 亿人的个人信息已经被黑客恶意泄露。这当然是令人担忧的,但是事实上,如果一个黑客想要通过直接破解你密码的方式访问你的在线数据,恐怕不到一小时你的账号就被盗。
而现在,更坏的消息来了:科学家们已经利用AI的力量创建了一个程序,结合现有的工具, 从一组超过 4300 万个领英的个人资料中推算出四分之一以上账户的密码 。研究人员说,这项技术也可能被用来击败密码保卫战中的“大反派”——黑客。
“ 这项新技术也可能用于生成诱饵密码以帮助检测违规 。”Thomas Ristenpart说。也就是说人们可以利用这项技术帮助用户和公司衡量密码的强度。他是康涅狄格州纽约市研究计算机安全的计算机科学家,但并没有参与这项研究。
最强大的密码猜测程序John Ripper和hashCat使用了许多种技术。其中一种就是直接暴力破解,即随机尝试许多字符的组合,直到得到正确的答案。其他方法则包括基于先前泄露的密码和利用概率方法推断密码中的每个字符。在一些网站上,这些程序已经破解了 90% 以上的密码。 但是他们需要花耗费多年的时间来手工编写代码,构建攻击计划。
新的研究旨通过应用 深度学习 来加快这一进程。研究人员们试图从生成式对抗网络,即生成式对抗网络着手。这其中包含两个人工神经网络:一个为 “发生器” ,负责产生类似于实际例子(实际照片)的人工输出(如图像),另一个为 “鉴别器” ,试图从假冒的例子中检测出真实的例子。 它们彼此互助完善,直到发生器变成娴熟的造假机器。研究人员之一 Giuseppe Ateniese 将发生器和鉴别器相应地比作警方的犯罪侧写师和目击者。
该团队创建了一个名为PassGAN的生成对抗网络,并将其与两个版本的hashCat 和一个版本的 John the Ripper 进行了比较。科学家向每个工具提供数千万个从一个称为RockYou的游戏网站泄露的密码,并要求他们自己生成数亿个新密码。然后,他们计算了这些新密码中有多少与领英中的一组泄露密码相匹配,以衡量他们如何成功地破解他们。
最后,PassGAN 自行生成了领英集合中 12% 的密码,而其三个竞争对手则分别是 6% 至 23%。 但是性能最好的是PassGAN 和 hashCat 的组合 。正如研究人员在本月份在 arXiv 上发布的一份论文草稿中报告的,二者结合后能够在领英集中破解 27% 的密码。有意思的是,PassGAN 破解失败的密码似乎都很有现实意义:saddracula,santazone,coolarse18。
纽约大学计算机科学家Martin Arjovsky说,使用GANs来帮助猜测密码是“新奇的”。他说:“这证明了一个明显而重要的问题,那就是应用简单的 机器学习 解决方案可以带来关键性的的优势。”
同时,Ristenpart说:“我不清楚是否真的需要GANs的繁重机制才能得到这样的效果。”也许更简单的机器学习技术和hashCat结合就可以达到同样的效果(Arjovsky也赞同这一点)。
事实上,最近宾夕法尼亚州匹兹堡卡内基梅隆大学制作的一个高效神经网络在这方面的表现颇具前景,并且Ateniese计划在提交他的同行评审论文之前直接将其与PassGAN的效果进行比较。
Ateniese说,虽然在这次试点示范中PassGAN协助了hashCat,但他确信在未来的迭代中会超过 hashCat。 其中一部分原因是因为hashCat使用固定规则,并且无法自行生成超过 6.5 亿个密码。 而发明自己的规则的PassGAN则可以无限制地创造密码。“当我们说话的时候就会产生数以百万计的密码,”他说。
Ateniese还表示,PassGAN将改进神经网络中的更多层级,并根据更多泄露的密码进行训练。他将PassGAN比做AlphaGo,就是最近在围棋比赛中使用深度学习 算法 击败人类冠军的谷歌DeepMind的项目。“AlphaGo设计出专家们从未见过的新策略,”Ateniese说。 “ 所以我个人相信,如果你给PassGAN提供足够的数据,它就能设计出人类无法想到的规则。 ”
最后,如果您担心自己账号的安全问题,专家建议使用高强度的密码,例如使其长度更长(但仍易于记住),并使用两步验证。
本文采用「CC BY-SA 4.0 CN」协议转载自互联网、仅供学习交流,内容版权归原作者所有,如涉作品、版权和其他问题请给「 我们 」留言处理。
数据分析
2019-09-23 20:55:00
导读 人工智能 ,机器学习,深度学习, 大数据 是最近最热门的工作,很多人都想转行,问题是,你如何才能在这么多人之中脱颖而出呢?看看下面的内容,说不定能让你少走很多弯路!
我依然记得当我的兄弟决定卖掉比特币的那个时刻。那是在2017年,我在星巴克,我们遇到一个中年妇女,在发小册子,封面上用黑体写着:“比特币:早点退休的捷径”。
我很好奇,所以我问她,加密货币市场是怎么样的,但是结果她除了比特币之外一无所知,以太坊?“从来没听过”,莱特币?“是不是便宜版本的比特币?”。
当你发现家附近星巴克的中年妇女都在让你了解最新的科技,你可能正在接近炒作的顶峰,或者说,“泡沫”。
这并不是什么新的发现,人人都知道,当涉及到投资的时候,如果你做的事情,其他人也在做,你是不太可能有回报的。奇怪的是,当投资自己的时候,人们并没有运用同样的推理。
比如说,你要找个数据科学家的工作,如果你在做标准的“我要当一个数据科学家”的事情,这意味着你可能得不到你理想的工作。市场上充满了青年才俊,大多数有抱负的普通数据科学家不太可能获得太大的吸引力。所以,如果你想要避免一个大多数人的结果,为什么做大多数人做的事情?
问题是,人们开始数据科学之旅的时候,大多数人并不是这么想的。我和上百个有抱负的数据科学家聊过,80%的人基本上讲的是同样的故事: 首先,先学入门 (Python + sklearn + Pandas + 或者一些 SQL 或者其他的) 然后,学一些千篇一律的网上课程 看一些职位的描述,发现其中要求的自己一点都不会,开始慌了 或者看点别的网课,或者开始申请一些职位 没什么反馈(最多有几个面试) 开始郁闷,想读个硕士,申请更多的职位 到了决定的时候了:重复2到7,看看是不是会发生点别的?
如果这个在你身上发生过,可能你也在自我提升的泡沫里:你在做其他人做过的同样的事情,但是期待不同的结果。第一件事你要做的就是停下来。
如果你想要高于平均水平的结果,你就不能做平均水平的事情,为了避免做平均水平的事情,你需要知道哪些是平均水平的事情。
这里有几个例子:如果你需要通过网课来入门,可以,但不要陷入MOOC的恶性循环中:MOOC基本上是为普通人设计的,所以你不可能通过多做它们而成为出色的候选人。同样的,如果你的GitHub上有4到5本同样无聊的sklearn/ panda /seaborn/Keras的Jupyter notebook, 不要再做另一个了 。
总的来说,规则是:如果某件事看起来是显而易见的下一步,因为其他人都在做这件事,那么“不做”是件好事。相反,你需要找到别人没有做的事情,并尽快去做。
那么别人没做过的那些事情是什么呢?根据我的发现,我想到了5个: 复现论文 。如果你是一个深度学习爱好者,这一点尤其正确。人们之所以不这样做,因为这比获取数据集并使用简单的ANN或XGBoost进行千篇一律的分类要困难。在arXiv上找到与您的领域相关的最有趣的论文(最好是最近的一篇),并阅读它,理解它,然后,复现它,可能在一个新的数据集上,写一篇关于它的博客。 不要呆在你的舒适区里 。如果你开始一个新项目,最好是学习一些新的框架/库/工具。如果您正在构建第6个以 df = pd.read_csv(文件名) 开头、以 f1 = f1_score(y_true, y_pred) 结尾的 Jupyter notebook,那么是时候更改策略了。 学习点无聊的事情 。其他人不这样做是因为没有人喜欢无聊的事情。但是,学习正确的Git流、如何使用Docker、如何使用Flask构建应用程序、以及如何在AWS或谷歌云上部署模型,这些都是企业迫切希望申请者具备的技能,但大多数申请者都没有充分认识到这些技能。 做点令人讨厌的事情。 1)在本地的数据科学会议上提交一篇论文。或者,至少参加一下当地的数据科学聚会。2)在LinkedIn上给别人发冷信息。试着提前提供有价值的信息(“我刚注意到你的网站出现了一个错字”)。不要马上向他们要工作。让你的问题尽可能的具体(“我想在我的博客上得到你的反馈”)。你试图建立一种关系,扩大你的关系网,这需要耐心。3)参加会议和社交活动。4)组建学习小组。 做一些看起来疯狂的事情。 每个人都去UCI仓库,或者使用一些库存数据集(哈欠)来构建他们的项目,不要这么干了。了解如何使用web抓取库或一些不受重视的API来构建自己的自定义数据集。数据很难获得,公司通常需要依靠他们的工程师来获取数据。你的目标应该是让别人觉得你是那种痴迷于数据科学的疯子,只要能把工作做好,会自己构建数据集。
这些策略会让你避免成为招聘人员每天要面对的噪音。它们不是什么灵丹妙药,但能让你在数据科学的就业市场上获得更大的吸引力,成为更有能力的数据科学家。
在一天结束的时候,记住当你在培养你的技能时,你是在为自己投资。这意味着同样适用于投资的经济原则也适用于你自己:如果你想要一个杰出的结果,你就必须做杰出的事情。
作者:Jeremie Harris 编译:ronghuaiyang
原文链接:https://www.kdnuggets.com/2018/11/get-hired-as-data-scientist.html
本文为专栏文章,来自:AI公园,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/76057.html 。
数据分析
2019-10-10 14:00:00
前谷歌工程师被控窃取 自动驾驶 机密,并将其出售给Uber
美国司法部对前谷歌工程师安东尼·莱万多夫斯基提起刑事起诉,公布了对其的33项与窃取商业机密有关的指控,称被告将谷歌的商业机密信息用于在Uber的工作。莱万多夫斯基否认了对其所有指控。根据美国法律,莱万多夫斯基可能面临每项指控至多10年有期徒刑和罚款的刑罚。
莱万多夫斯基曾在谷歌自动驾驶汽车部门工作,2016年离职成立自己的自动驾驶卡车公司——后被Uber收购。在星期二被传讯时,莱万多夫斯基否认了对其所有指控。根据美国法律,莱万多夫斯基可能面临每项指控至多10年有期徒刑和罚款的刑罚。 (凤凰科技)
马桶MT后,王欣上线了新App“ 灵鸽AI ”
继马桶MT之后,出狱后的快播创始人王欣又开发上线了一款App灵鸽AI。业界人士将灵鸽比喻为灵活用工领域的“淘宝”,号称用了 人工智能 、区块链等诸多新技术。通过内测码登录体验后发现,灵鸽定位于C2C的灵活用工技能共享和协作平台。
业界人士将灵鸽比喻为灵活用工领域的“淘宝”,号称用了人工智能、区块链等诸多新技术。这次,王欣能成功吗?(Tech星球)
BBC计划为其应用和服务推出 语音助手 ,正在内部进行测试
据外媒报道,BBC(英国广播公司)正在开发自己的语音助手Beeb,并准备将它与该公司的网站和智能电视上的iPlayer应用程序进行整合。
据报道,该公司目前暂无计划推出自己的配置Beeb语音助手的智能音箱。但是,它将向其他希望在其智能音箱内整合Beeb语音助手的制造商提供该软件。Beeb语音助手计划明年推出。(腾讯科技)
Gartner :二季度智能手机销量再次下滑
8月27日消息,据外媒报道,智能手机销量再一次出现下降。分析集团Gartner的数据显示,在经过了多年的增长之后,2019年第二季度智能手机的销量再次出现下降。
当季度智能手机的销量与去年同期相比下降了1.7%,具体销量从从3.74亿部下降到3.68亿部。虽然下降幅度不大,但是足以说明设备制造商遇到了问题。受到最大打击的依然是高端设备,原因是较高的售价,加上消费者更新周期变长,以及手机引人注目的创新变少。
在排名前五的市场中,只有中国和巴西实现了增长。然而,中国市场的小幅增长(0.5%)不足以扭转整个局面。有趣的是,Gartner指出,中国市场的增长原因可能是由于制造商想要对旧款旗舰设备进行清仓,从而为5G设备让路。在未来几个季度内,更多5G设备的发布,以及更多的运营商开始支持5G网络, 可能会给智能手机的销售带来提振。(腾讯科技) 
陌陌公布2019年第二季度未经审计财务业绩:第二季度营收41.526亿元,同比增长32%
陌陌(Nasdaq: MOMO)公布了2019年第二季度未经审计的财务业绩。财报显示,2019年第二季度,陌陌公司净营收达41.526亿元(约6.049亿美元),同比增长32%。不按照美国通用会计准则计量,2019年二季度归属于陌陌母公司的净利润为12.425亿元(约1.810亿美元),持续18个季度盈利。(腾讯科技)
本文由 数据分析网 编辑发布,内容观点不代表本站立场,转载或内容合作请联系我们,本文链接:https://www.afenxi.com/73413.html 。
数据分析
2019-08-28 08:47:00
国防创新委员会公布五角大楼AI伦理原则
为五角大楼提供建议的 16 名著名技术专家组成的国防创新委员会今天投票批准了国防部的 AI 伦理原则。该报告包括 12 条建议,说明美军将来如何在战斗和非战斗 AI 系统中应用道德规范。这些原则分为五个主要原则:负责任,公平,可追溯,可靠和可支配。(VentureBeat)
美国ACLU起诉并迫使FBI揭露其面部识别的使用
美国公民自由协会(ACLU)担心联邦调查局 FBI 对面部识别的使用,并希望迫使该机构公布其做法。该协会今日对联邦调查局,美国司法部和美国缉毒局 DEA 提起诉讼,命令他们交出记录,显示「何时,何地,如何」使用面部识别技术。ACLU 担心这些系统可能「从根本上改变」社会并导致持续监视,并强调联邦调查局的历史和公众立场都是值得关注的理由。(Engadget)
亚马逊基于语音的Alexa技能个性化现已普遍可用
未来为Alexa构建的语音技能可能会对您的语音产生独特的响应。这要归功于Alexa技能套件的一项功能Alexa技能个性化功能,该功能使开发人员能够为公认的用户提供个性化的体验,问候和提示。亚马逊于9月在预览版中推出了技能个性化功能,今天,它宣布已普遍可用。(venturebeat)
微软的AI项目使印度的驾驶执照考试变得更加智能
一家美国巨头可能已经想出一种简化发放驾驶执照的繁琐程序的方法。现在,该解决方案在印度的部分地区已初露头角。
最近几周,成百上千的人在印度州Uttarakhand的首府喜马拉雅山麓附近的德拉敦(Dehradun)参加了驾驶执照考试,而不必坐在教员旁边。
取而代之的是,他们的汽车上装有运行HAMS的智能手机,这是由Microsoft Research团队开发的AI项目。HAMS使用智能手机的前后摄像头和其他传感器来监视驾驶员(他们的视线)以及前方的道路。在微软 研究团队说,对于驾驶员测试,他们定制了HAMS,以便在诸如平行停车或通过环形交叉路口等测试操作期间能够精确跟踪车辆的轨迹。(techcrunch)
哥伦比亚大学,剑桥大学以及DeepMind新研究:规定的生成对抗网络
近日,来自哥伦比亚大学,剑桥大学以及 DeepMind 的研究人员发表了一篇名为「规定的生成对抗网络」的新研究,并在社交媒体收到了广泛关注。以下是该研究的完整摘要分享:生成对抗网络(GAN)是一种无监督学习的强大方法。该方法在图像领域取得了最先进的性能。但是,GAN 在两方面受限:它们通常在低支持下学习分布(一种称为模式崩溃的现象),并且不保证概率密度的存在,这使得无法使用预测对数似然来评估一般性。在该研究中,研究人员开发了规定的 GAN(PresGAN)来解决这些缺点。PresGAN 将噪声添加到密度网络的输出中,并优化了熵调节的对抗损失。增加的噪声使预测的对数似然性易于处理,并稳定了训练过程。熵正则化器鼓励 PresGAN 捕获数据分发的所有模式。拟合 PresGAN 涉及计算熵正则项的难解梯度;PresGAN 使用无偏随机估计值来避免这种难处理性。研究团队几个数据集上评估了 PresGAN,发现它们减轻了模式崩溃并生成了具有高感知质量的样本。他们还发现,就传统 GAN 与变分自动编码器(VAE)之间的预测对数似然性而言,PresGAN 缩小了性能差距。(arxiv)
本文由 数据分析网 编辑发布,内容观点不代表本站立场,转载或内容合作请联系我们,本文链接:https://www.afenxi.com/77926.html 。
数据分析
2019-11-01 09:02:00
QuestMobile数据显示,国内移动互联网在社交、视频、电商、理财、出行等几个领域,行业用户规模均已突破5亿;不过,总体的用户、时长也都到了顶峰,2019年至今,活跃用户仅增长了200万,人均单日时长仅增加了18分钟,是不是感觉听君一席话、低头垂泪到天明啊
别着急低头,皇冠会掉,还有更大的雷劈下来你就接不住了:总体看,BAT三系用户都已经突破10亿,BATT四系占据了全网70%用户时长,存量争夺已经成了新常态,用户端,下沉市场成了唯一高增长突破口,应用端,短视频时长增长占比60%以上,成了唯一赢家!
具体到玩儿法上,围绕下沉市场的用户争夺,短视频、电商已经强势结盟了,中老年人和00后炙手可热,突破圈层的玩儿法+延展价值的挖掘,正在巨头平台生态中发生化学反应,球鞋经济、盲盒经济就是其中典型案例。这也导致广告投放模式和媒介选择发生巨变,泛电商直达模式异军突起。
具体怎么搞?不妨看报告吧。
本报告核心观点
一、 2019年Q3 中国移动互联网发展盘点
1、互联网整体经济的新常态
1.1 中国消费市场增速放缓: 9月份社会消费品零售总额增长7.8%,增速较6月有所下滑
1.2 城乡市场的二元经济结构正在转型,乡村社会消费品零售总额同比增速高于城镇地区
1.3 在居民消费的品类中,化妆品、日用品等快消品类增幅超过10%以上; 同时网上渠道销售占比继续扩大
1.4 2019Q3互联网广告市场规模同比增速继续下降,移动端广告份额逐步增长并稳定在90%以上
1.5 BAT三家用户规模均超10亿; 下沉和扩大内需战略的落地,为阿里带来11.6%的活跃用户规模增长,在短视频等内容型产品的拉动下,头条月活用户规模同比增长18.6%
1.6 BATT占据全网70%的时长,值得我们注意的是,腰部及更多中长尾企业对用户时间的争夺力正在逐渐增强,主要体现在生活服务、金融服务和移动购物等领域时长的增长
2、中国移动互联网2019年Q3季度增长盘点
2.1 中国移动互联网用户规模增速持续下降,规模见顶
2.2 用户平均每天花在移动互联网的时间已接近6小时,相比2018年年末,时长增长大幅下跌
2.3 政务信息化持续带动电子政务行业高速增长;同时,伴随着开学季的来临,在线教育作为刚需场景增速表现亮眼
2.4 从时长增长来看,短视频、手机游戏、音乐等泛娱乐行业更多的吸引了用户注意力,人均使用时长增长显著
2.5 时长大户短视频行业仍在吸引用户注意力,领跑全网时长增长
2.6 用户注意力进一步分散: 月人均使用APP类型数量已达18类,仍保持稳定增长,细分赛道间的用户注意力争夺战将愈演愈烈
二、 2019年Q3 中国移动互联网新赛点
1、 新的人群的争夺
1.1 下沉市场的争夺
1.11 下沉市场用户规模达到6.14亿,增长基本停滞,但是用户的时长红利仍在
1.12 短视频收获到最多的下沉流量红利,电商在下沉市场也越发普及;同时教育、游戏、社群电商等领域随着下沉市场的拓展而大幅增长
1.13 下沉市场消费潜力已被激发,下沉年轻人群是下沉市场消费能力提升的主要动力
1.14 下沉市场年轻人群在泛娱乐行业的付费习惯已初步养成,互动性强的直播类娱乐方式更容易让下沉年轻人群付费打赏
1.2 00后和中老年群体的争夺
1.21 00后人群规模过亿,中老年空闲时间多,00后和中老年人群成为移动互联网争夺的重要人群
1.22 互联网原住民00后购物需求旺盛,且在泛娱乐、金融行业用户规模有显著提升
1.23 年轻化成为典型产品的又一大发展策略,电商、社交、娱乐和出行等领域最能获得00后的青睐,其中手机淘宝、高德地图的00后同比增长过100%
1.24 中老年人群移动互联网体验日渐立体丰富,金融支付、电商、教育工具、地图导航等便捷应用更深渗透到中老年人群
1.25 中老年人更爱在抖音、快手观看短视频内容消磨时间,在微博、微信中参与日常社交和通讯活动,在手机淘宝、拼多多上购物
2、全景生态流量布局已经成为必然
2.1 移动互联网巨头们已经从流量的竞争升级到平台的竞争,全景流量布局已经成为必然
2.2 生活服务、移动购物、旅游服务等行业多选择全平台布局,微信小程序中手机游戏行业表现突出; 依靠百度搜索精准推荐,移动视频行业在百度智能小程序占比最高;而支付宝小程序则把支付和消费场景叠加,重点布局购物和生活服务行业
2.3 微信月活用户规模已经接近9.5亿,渗透率已经高达83.6%; 用户使用小程序的习惯已经养成,月人均使用微信小程序接近1小时,行业类型也增加至5个
2.4 今日头条APP布局全景流量,利用小程序生态触达不同渠道不同结构的用户群
3、 围绕效率和价值提升的突围战
3.1 加速变现效率: 私域流量+社群的闭环运营
3.11 私域流量池的闭环打法,业内已经探索出行之有效的方法,并不断在内容、产品、裂变中进行优化,从而获得最适合本企业的高转化、高口碑、高复购的正向循环路径
3.12 西贝莜面村通过公众号、小程序、社群等手段构建自己的私域流量客群,7月以来多波次主打家庭和亲子场景的营销活动拉动其小程序用户快速增长
3.2 提升价值: 圈层社交+粉丝经济
3.21 垂直型应用以深度内容为纽带,吸引特定兴趣人群消费内容并深度交流,形成社交关系链,孕育出各种圈层文化
3.22 社区内容定位直接影响用户活跃度和粘性,二次元创作分享平台LOFTER、直男社区虎扑、精神社交平台Soul等平台通过差异化的内容吸引到一批属性、兴趣接近的重度用户
3.23 垂直社区用户属性非常突出、兴趣集中,如LOFTER以24岁以下年轻女性为主,二次元创作分享行为活跃;虎扑是典型的男性社区,对于生活服务、运动等领域兴趣突出
3.24 综合型平台的大V的粉丝,受大V定位和内容影响明显,属性特征明显,也具有很高的价值
3.3 价值的新定义: 新生代用户的兴趣经济
3.31 新生代用户消费理念升级,“盲盒经济”盛行,为兴趣买单,物品价值和付费意愿与商品使用价值关联度越发减弱,泡泡玛特小程序用户增长迅猛
3.32 球鞋经济和盲盒经济中用户性别区隔明显,在上线购买功能后毒APP用户留存有明显提升
4、互联网广告的投放趋势变化
4.1 广告主投放趋势1: 与泛电商平台联合投放广告占比持续增加 电商类广告主要包括三种投放形式:1、品牌直投广告;2、品牌广告投放直接导向下单购买;3、与泛电商平台通过联合营销方式,整合品牌方做传播推广。广告主投放趋势更贴近下单环节,注重泛电商平台的效果的转化。
以快消品为例,2019年前三季度,快消广告主联合泛电商平台投放趋势比较稳定,落地页在电商平台的在下半年涨幅较快,尤其在京东618前后投放达到了最高值。
4.2 广告主投放趋势2:媒介组合投放,与KOL活动整合 投放天次与媒介组合主要反映广告主的产品策略和营销策略,更具个性化。
从广告投放追求贴近或无缝对接销售的趋势看,与KOL活动整合,提升精准触达和转化,也是营销发展必然趋势。
4.3 以阿玛尼粉底广告为例,选取媒介组合+KOL直播方式进行广告投放
4.4 媒介组合与KOL触达人群接近,组合提升广告覆盖范围,精准触达目标人群
从“阿玛尼粉底广告”两种营销方式上来看,触达TA的受众画像比较接近,男性用户关注美妆品类不亚于女性,KOL触达的人群更为年轻,30岁以下占比超过了50%。
4.5 投放媒介趋势: 视频类媒介优质广告主资源丰富,暑期投放较集中 从媒介行业来看,视频类媒介是广告主比较青睐的投放渠道,以碎片化,娱乐内容为主流的短视频平台在暑期吸引了更多广告主的曝光。而实力较强,创意质量高的广告主会把更多资源投放到长视频媒介中。
4.6 视频媒介相对转化效果较好,以抖音短视频为例,引流效果较突出
5、 品牌零售商的互联网进程和营销新玩法 5.1 线下商超、便利店及食品酒水品牌纷纷搭上“新零售”的高速列车,搭建并持续运营移动端平台,以实现高效的消费者运营,与同行业及服务形式日益丰富的电商平台展开竞争
5.2 酒水食品类品牌小程序也采用“优惠券+拼团“的增长模式,成功吸引大批新用户
5.3 酒水食品类品牌微信小程序用户年龄特征显著: 零食品牌小程序拥有近40%的24岁及以下的年轻用户;相比受众年龄较高的白酒品牌江小白,鸡尾酒品牌RIO更受年轻消费者的喜爱
5.4 线下优质零售资源早已成为互联网巨头布局”新零售”的重点,将迪亚中国与万达百货都收入囊中的苏宁,在入主家乐福中国后,进一步推动了苏宁云店的发展
5.5 苏宁云店与家乐福微信小程序的用户结构体现其互补作用: 家乐福微信小程序的用户相对更年轻、且主要分布于发达地区;苏宁云店则拥有更多40岁以上的用户、对于下沉地区更具优势
三、 2019年Q3细分行业观察1、移动互联网已经全面渗透到社交、视频、电商、理财、出行等生活刚需场景,这几大行业渗透率均已超过50%
2、短视频继续拉动移动视频行业整体时长占比的增加,被挤占的是用户在社交、新闻资讯和手机游戏的注意力
3、泛娱乐行业 3.1 短视频 3.11 短视频行业渗透率超70%,已完成前期流量积累,正在加速商业化变现步伐
3.12 短视频行业格局稳定,头条系短视频产品用户规模占行业7成,而快手则迎来用户规模和时长的双增长
3.13 用户使用短视频平台多元化,优质的短视频内容是平台核心竞争力
3.14 约四成用户因观看短视频内容产生过消费行为,其中女性、下沉市场更容易受短视频内容影响产生购买行为
3.2 手机游戏 3.21 行业自去年利好提振以来,持续向好,随着暑期来临,近来行业用户规模突破7.8亿达到历史新高
3.22 行业巨头游戏精品化先行,腾讯网易两家凭借不及15%的游戏总量份额,获得近6成行业用户,而腾讯、乐元素、网易等头部玩家则抢占到85%的用户时间
3.23 巨头不仅通过爆款游戏占领玩家大量时间,还通过IP联动、端游改编等玩法,唤起玩家情怀,上市之初便获得大批死忠粉簇拥,随着粉丝对于游戏的讨论,带动热度二次发酵,拉高留存
3.24 短视频一定程度上分散了部分玩家的注意力,但短视频用户往往也是中重度的游戏爱好者,叠加短视频强大的“内容带货”能力,行业进一步成为宣传游戏产品的最佳推广渠道之一
3.3 在线阅读 3.31 免费+广告的阅读模式继续跑马圈地,推动在线阅读行业整体迎来新一轮增长红利,用户规模一年以来大涨过亿
3.32 行业新增用户基本来自免费阅读,增量TOP10 APP规模中,主打广告+免费阅读模式的占据7席,腾讯、百度等行业巨头也纷纷加入免费阵营布局相关产品
3.33 免费阅读模式借无成本的阅读休闲方式,撬动低线城市增量用户需求,激发拥有大量空闲时间、但没看过网文小说的小镇青年和中老年用户进入
4、金融支付
4.1 金融支付行业继续下沉,新增下沉用户占比高于全体,由于下沉市场用户占比仍偏低,仍有很大的拓展空间
4.2 金融支付行业呈现支付宝一家独大竞争格局,云闪付凭借银联优势以及各种补贴活动高速增长; 各银行继续加大力度培养用户使用APP,头部网上银行APP用户增速也远高于行业
4.3 支付宝凭借高频支付功能,不断扩充衣食住行等金融服务场景,活跃率继续提升,对银行机构造成竞争压力
4.4 为提升用户数和活跃度,各银行纷纷在移动端产品中加强对日常生活场景金融支持,尤其加强对支付场景的运营,希望提高用户的使用频次
5、移动购物
5.1 随着电商下沉、物流提速等拉动,移动购物行业的用户规模一路走高,成为又一个十亿级行业
5.2 市场进入到存量竞争阶段,行业玩家之间竞争加剧,用户在多平台完成不同品类和目的的购物,用户使用APP的个数明显增加,在下沉市场的用户时长也增长到6.2个小时
5.3 社交电商继续保持强势增长态势,增长黑马产品中一半产品通过社交方式获得发展,其中毒和识货凭借球鞋鉴定核心优势,解决用户求购正品无门的窘境
5.4 手机淘宝下沉战略得到很好地落地,67%的小镇青年均在使用淘宝,而拼多多则更多地获取到有娃用户的青睐,同时也占领3成的泛中老年市场
6、新闻资讯
6.1 新闻资讯行业基本达到饱和,整体行业增速1.3%; 综合资讯依旧占据主要用户,体育、财经、娱乐类垂直资讯用户规模快速增长
6.2 行业马太效应明显;更轻更简洁的极速版受到用户的喜爱,腾讯新闻极速版1月上线以来用户规模迅速涨至4千万;而想看、有料看看以短视频、娱乐搞笑内容为载体的产品叠加激励返现等运营模式,也跻身增量前十
6.3 新闻资讯行业广告收入持续下降,以广告为主要的变现方式承压明显; 各家纷纷尝试新的模式:内容付费、直播付费、开放平台等,但仍处于探索阶段
6.4 生态效应愈加明显: 全景生态愈加重要,APP不是新闻资讯应用唯一获取用户的途径,UC、PP体育等应用超一般的流量均来自小程序和独有流量
7、生活服务
7.1 移动互联网有效地提高生活效率、让人们更加轻松地享受到服务,他们在生活领域的各个方面的行为均在加深
7.2 小程序成为生活服务重要入口,对于线下门店引流效果尤为突出,肯德基、麦当劳等餐饮品牌微信小程序活跃用户规模远高于APP
7.3 小程序已经成为生活服务平台获取增量用户的重要来源,微信小程序对于美团点评系贡献突出
7.4 外卖服务行业双巨头重合用户规模并没有大幅增加,说明仍以拓展新用户为主,二者在高线城市的用户争夺较为激烈
7.5 下沉市场是美团外卖和饿了么新增用户主要来源,预计未来二者对下沉用户的争夺将日益激烈
8、移动社交
8.1 社交行业用户规模达到天花板,目前用户规模已达到11亿,行业渗透率达97%,用户规模增长速度明显下降,下降到2.3%
8.2 2019年以来多巨头推出社交产品,意图在更加垂直细分的领域争夺到用户,但是目前典型创新产品的用户规模仍较小
8.3 社交产品积极寻求转型:传统社交产品正在向新的社交形式转变,微信寻求平台化、QQ和陌陌开启直播娱乐化;同时新型社交产品也在不断涌现,深耕精细人群
本文为专栏文章,来自:QuestMobile,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/77416.html 。
数据分析
2019-10-29 10:17:00