Quantcast
Channel: PayMoon贝明实验室
Viewing all 130 articles
Browse latest View live

使用Spring BeanUtils.copyProperties ignoreProperties复制指定字段或者忽略字段

$
0
0

一、Spring API 解读

Api里面,有三个方法进行了重载

方法一:

本文地址:http://www.paymoon.com:8001/index.php/2016/08/31/copy-specific-fields-by-using-beanutils-copyproperties/ [crayon-57c9245c1dfd5972533010/]

方法二:

本文地址:http://www.paymoon.com:8001/index.php/2016/08/31/copy-specific-fields-by-using-beanutils-copyproperties/ [crayon-57c9245c1dfdf692539572/]

方法三:

本文地址:http://www.paymoon.com:8001/index.php/2016/08/31/copy-specific-fields-by-using-beanutils-copyproperties/ [crayon-57c9245c1dfe5493824695/] 这三个方法,第一个方法最常用,也最容易理解,直接两个po,vo使用即可。 第二个没怎么用过,第三个的参数 [crayon-57c9245c1dfeb358489444/] 不易理解,下边就说下这个参数的两种常用场景。

二、使用

场景一:使用ignore参数,copy字段忽略掉某值

本文地址:http://www.paymoon.com:8001/index.php/2016/08/31/copy-specific-fields-by-using-beanutils-copyproperties/ [crayon-57c9245c1dff0050624026/] 场景二:使用此字段,指定copy某值 本文地址:http://www.paymoon.com:8001/index.php/2016/08/31/copy-specific-fields-by-using-beanutils-copyproperties/ [crayon-57c9245c1dff7301360778/] 针对场景二,有更好的方式,是使用BeanWrapper 本文地址:http://www.paymoon.com:8001/index.php/2016/08/31/copy-specific-fields-by-using-beanutils-copyproperties/ [crayon-57c9245c1dffd455502231/] 本文地址:http://www.paymoon.com:8001/index.php/2016/08/31/copy-specific-fields-by-using-beanutils-copyproperties/    

InvalidDataAccessResourceUsageException/MySQLSyntaxErrorException

$
0
0
一个奇怪的错,mysql日志和eclipse里没有任何提示 日志信息也没涉及任何代码,一看原来是用了关键字了 err log below [crayon-57c9245c1da24235210461/]          

java反射动态获取字段名并设置字段值

$
0
0
第一种方式: [crayon-57c9245c1ccf6152806609/] 第二种方式: [crayon-57c9245c1cd06726308909/]  

The prefix “p” for attribute “p:sessionFactory-ref” associated with an element type “beans:bean” is not bound

$
0
0
The prefix “p” for attribute “p:sessionFactory-ref” associated with an element type “beans:bean” is not bound 错误原因,在spring schema中少了一些标签定义 [crayon-57d26755728b2713112062/] 注意加上以下 本文:http://www.paymoon.com:8001/index.php/2016/09/07/the-prefix-p-for-attribute-psessionfactory-ref-associated-with-an-element-type-beansbean-is-not-bound/ [crayon-57d26755728c0012166766/]  

机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 1)

$
0
0

机器学习框架Tensorflow中文社区群:513704292

机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 1)

注:机器学习资料篇目一共500条,篇目二开始更新

希望转载的朋友,你可以不用联系我.但是一定要保留原文链接,因为这个项目还在继续也在不定期更新.希望看到文章的朋友能够学到更多.此外:某些资料在中国访问需要梯子.

www.paymoon.com:8001/index.php/2016/09/12/machine-learning-deep-learning/

介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机、神经网络、决策树、SVM、Adaboost到随机森林、Deep Learning.

介绍:这是瑞士人工智能实验室Jurgen Schmidhuber写的最新版本《神经网络与深度学习综述》本综述的特点是以时间排序,从1940年开始讲起,到60-80年代,80-90年代,一直讲到2000年后及最近几年的进展。涵盖了deep learning里各种tricks,引用非常全面.

介绍:这是一份python机器学习库,如果您是一位python工程师而且想深入的学习机器学习.那么这篇文章或许能够帮助到你.

介绍:这一篇介绍如果设计和管理属于你自己的机器学习项目的文章,里面提供了管理模版、数据管理与实践方法.

介绍:如果你还不知道什么是机器学习,或则是刚刚学习感觉到很枯燥乏味。那么推荐一读。这篇文章已经被翻译成中文,如果有兴趣可以移步http://blog.jobbole.com/67616/

介绍:R语言是机器学习的主要语言,有很多的朋友想学习R语言,但是总是忘记一些函数与关键字的含义。那么这篇文章或许能够帮助到你

介绍:我该如何选择机器学习算法,这篇文章比较直观的比较了Naive Bayes,Logistic Regression,SVM,决策树等方法的优劣,另外讨论了样本大小、Feature与Model权衡等问题。此外还有已经翻译了的版本:http://www.52ml.net/15063.html

介绍:深度学习概述:从感知机到深度网络,作者对于例子的选择、理论的介绍都很到位,由浅入深。翻译版本:http://www.cnblogs.com/xiaowanyer/p/3701944.html

介绍:<机器学习与优化>这是一本机器学习的小册子, 短短300多页道尽机器学习的方方面面. 图文并茂, 生动易懂, 没有一坨坨公式的烦恼. 适合新手入门打基础, 也适合老手温故而知新. 比起MLAPP/PRML等大部头, 也许这本你更需要!具体内容推荐阅读:http://intelligent-optimization.org/LIONbook/

介绍:作者是来自百度,不过他本人已经在2014年4月份申请离职了。但是这篇文章很不错如果你不知道深度学习与支持向量机/统计学习理论有什么联系?那么应该立即看看这篇文章.

介绍:这本书是由谷歌公司和MIT共同出品的计算机科学中的数学:Mathematics for Computer Science,Eric Lehman et al 2013 。分为5大部分:1)证明,归纳。2)结构,数论,图。3)计数,求和,生成函数。4)概率,随机行走。5)递归。等等

介绍:信息时代的计算机科学理论,目前国内有纸质书购买,iTunes购买

介绍:这是一本由雪城大学新编的第二版《数据科学入门》教材:偏实用型,浅显易懂,适合想学习R语言的同学选读。

介绍:这并不是一篇文档或书籍。这是篇向图灵奖得主Donald Knuth提问记录稿: 近日, Charles Leiserson, Al Aho, Jon Bentley等大神向Knuth提出了20个问题,内容包括TAOCP,P/NP问题,图灵机,逻辑,以及为什么大神不用电邮等等。

介绍:不会统计怎么办?不知道如何选择合适的统计模型怎么办?那这篇文章你的好好读一读了麻省理工Joshua B. Tenenbaum和剑桥Zoubin Ghahramani合作,写了一篇关于automatic statistician的文章。可以自动选择回归模型类别,还能自动写报告...

介绍:对深度学习和representation learning最新进展有兴趣的同学可以了解一下

介绍:这是一本信息检索相关的书籍,是由斯坦福Manning与谷歌副总裁Raghavan等合著的Introduction to Information Retrieval一直是北美最受欢迎的信息检索教材之一。最近作者增加了该课程的幻灯片和作业。IR相关资源:http://www-nlp.stanford.edu/IR-book/information-retrieval.html

介绍:Deniz Yuret用10张漂亮的图来解释机器学习重要概念:1. Bias/Variance Tradeoff 2. Overfitting 3. Bayesian / Occam's razor 4. Feature combination 5. Irrelevant feature 6. Basis function 7. Discriminative / Generative 8. Loss function 9. Least squares 10. Sparsity.很清晰

介绍:雅虎研究院的数据集汇总: 包括语言类数据,图与社交类数据,评分与分类数据,计算广告学数据,图像数据,竞赛数据,以及系统类的数据。

介绍:这是一本斯坦福统计学著名教授Trevor Hastie和Robert Tibshirani的新书,并且在2014年一月已经开课:https://class.stanford.edu/courses/HumanitiesScience/StatLearning/Winter2014/about

介绍:机器学习最佳入门学习资料汇总是专为机器学习初学者推荐的优质学习资源,帮助初学者快速入门。而且这篇文章的介绍已经被翻译成中文版。如果你不怎么熟悉,那么我建议你先看一看中文的介绍。

介绍:主要是顺着Bengio的PAMI review的文章找出来的。包括几本综述文章,将近100篇论文,各位山头们的Presentation。全部都可以在google上找到。

介绍:这是一本书籍,主要介绍的是跨语言信息检索方面的知识。理论很多

介绍:本文共有三个系列,作者是来自IBM的工程师。它主要介绍了推荐引擎相关算法,并帮助读者高效的实现这些算法。 探索推荐引擎内部的秘密,第 2 部分: 深度推荐引擎相关算法 - 协同过滤,探索推荐引擎内部的秘密,第 3 部分: 深度推荐引擎相关算法 - 聚类

介绍:康奈尔大学信息科学系助理教授David Mimno写的《对机器学习初学者的一点建议》, 写的挺实际,强调实践与理论结合,最后还引用了冯 • 诺依曼的名言: "Young man, in mathematics you don't understand things. You just get used to them."

介绍:这是一本关于分布式并行处理的数据《Explorations in Parallel Distributed Processing: A Handbook of Models, Programs, and Exercises》,作者是斯坦福的James L. McClelland。着重介绍了各种神级网络算法的分布式实现,做Distributed Deep Learning 的童鞋可以参考下

介绍:【“机器学习”是什么?】John Platt是微软研究院杰出科学家,17年来他一直在机器学习领域耕耘。近年来机器学习变得炙手可热,Platt和同事们遂决定开设博客,向公众介绍机器学习的研究进展。机器学习是什么,被应用在哪里?来看Platt的这篇博文

介绍:2014年国际机器学习大会(ICML)已经于6月21-26日在国家会议中心隆重举办。本次大会由微软亚洲研究院和清华大学联手主办,是这个有着30多年历史并享誉世界的机器学习领域的盛会首次来到中国,已成功吸引海内外1200多位学者的报名参与。干货很多,值得深入学习下

介绍:这篇文章主要是以Learning to Rank为例说明企业界机器学习的具体应用,RankNet对NDCG之类不敏感,加入NDCG因素后变成了LambdaRank,同样的思想从神经网络改为应用到Boosted Tree模型就成就了LambdaMART。Chirs Burges,微软的机器学习大神,Yahoo 2010 Learning to Rank Challenge第一名得主,排序模型方面有RankNet,LambdaRank,LambdaMART,尤其以LambdaMART最为突出,代表论文为: From RankNet to LambdaRank to LambdaMART: An Overview 此外,Burges还有很多有名的代表作,比如:A Tutorial on Support Vector Machines for Pattern Recognition

Some Notes on Applied Mathematics for Machine Learning

介绍:100 Best GitHub: Deep Learning

介绍:本教程将阐述无监督特征学习和深度学习的主要观点。通过学习,你也将实现多个功能学习/深度学习算法,能看到它们为你工作,并学习如何应用/适应这些想法到新问题上。本教程假定机器学习的基本知识(特别是熟悉的监督学习,逻辑回归,梯度下降的想法),如果你不熟悉这些想法,我们建议你去这里机器学习课程,并先完成第II,III,IV章(到逻辑回归)。此外这关于这套教程的源代码在github上面已经有python版本了 UFLDL Tutorial Code

*《Deep Learning for Natural Language Processing and Related Applications》

介绍:这份文档来自微软研究院,精髓很多。如果需要完全理解,需要一定的机器学习基础。不过有些地方会让人眼前一亮,毛塞顿开。

介绍:这是一篇介绍图像卷积运算的文章,讲的已经算比较详细的了

介绍:每天请一个大牛来讲座,主要涉及机器学习,大数据分析,并行计算以及人脑研究。https://www.youtube.com/user/smolix (需翻墙)

介绍:一个超级完整的机器学习开源库总结,如果你认为这个碉堡了,那后面这个列表会更让你惊讶:【Awesome Awesomeness】,国内已经有热心的朋友进行了翻译中文介绍机器学习数据挖掘免费电子书

介绍:ACL候任主席、斯坦福大学计算机系Chris Manning教授的《自然语言处理》课程所有视频已经可以在斯坦福公开课网站上观看了(如Chrome不行,可用IE观看) 作业与测验也可以下载。

介绍:对比 Deep Learning 和 Shallow Learning 的好文,来着浙大毕业、MIT 读博的 Chiyuan Zhang 的博客。

介绍:利用卷积神经网络做音乐推荐。

介绍:神经网络的免费在线书,已经写了三章了,还有对应的开源代码:https://github.com/mnielsen/neural-networks-and-deep-learning 爱好者的福音。

介绍:Java机器学习相关平台和开源的机器学习库,按照大数据、NLP、计算机视觉和Deep Learning分类进行了整理。看起来挺全的,Java爱好者值得收藏。

介绍:机器学习最基本的入门文章,适合零基础者

介绍:机器学习的算法很多。很多时候困惑人们都是,很多算法是一类算法,而有些算法又是从其他算法中延伸出来的。这里,我们从两个方面来给大家介绍,第一个方面是学习的方式,第二个方面是算法的类似性。

介绍:看题目你已经知道了是什么内容,没错。里面有很多经典的机器学习论文值得仔细与反复的阅读。

介绍:视频由加州理工学院(Caltech)出品。需要英语底子。

介绍:总结了机器学习的经典书籍,包括数学基础和算法理论的书籍,可做为入门参考书单。

介绍:16本机器学习的电子书,可以下载下来在pad,手机上面任意时刻去阅读。不多我建议你看完一本再下载一本。

介绍:标题很大,从新手到专家。不过看完上面所有资料。肯定是专家了

介绍:入门的书真的很多,而且我已经帮你找齐了。

介绍:Sibyl 是一个监督式机器学习系统,用来解决预测方面的问题,比如 YouTube 的视频推荐。

介绍:关于(Deep) Neural Networks在 NLP 和 Text Mining 方面一些paper的总结

介绍:计算机视觉入门之前景目标检测1(总结)

介绍:计算机视觉入门之行人检测

介绍:Important resources for learning and understanding . Is awesome

介绍:这又是一篇机器学习初学者的入门文章。值得一读

介绍:在线Neural Networks and Deep Learning电子书

介绍:python的17个关于机器学习的工具

介绍:下集在这里神奇的伽玛函数(下)

介绍:作者王益目前是腾讯广告算法总监,王益博士毕业后在google任研究。这篇文章王益博士7年来从谷歌到腾讯对于分布机器学习的所见所闻。值得细读

介绍:把机器学习提升的级别分为0~4级,每级需要学习的教材和掌握的知识。这样,给机器学习者提供一个上进的路线图,以免走弯路。另外,整个网站都是关于机器学习的,资源很丰富。

介绍:机器学习各个方向综述的网站

介绍:深度学习阅资源列表

介绍:这是一本来自微的研究员 li Peng和Dong Yu所著的关于深度学习的方法和应用的电子书

介绍:2014年七月CMU举办的机器学习夏季课刚刚结束 有近50小时的视频、十多个PDF版幻灯片,覆盖 深度学习,贝叶斯,分布式机器学习,伸缩性 等热点话题。所有13名讲师都是牛人:包括大牛Tom Mitchell (他的[机器学习]是名校的常用教材),还有CMU李沐 .(1080P高清哟)

介绍:在今年的IEEE/IFIP可靠系统和网络(DSN)国际会议上,Google软件工程师Tushar Chandra做了一个关于Sibyl系统的主题演讲。 Sibyl是一个监督式机器学习系统,用来解决预测方面的问题,比如YouTube的视频推荐。详情请阅读google sibyl

介绍:谷歌研究院的Christian Szegedy在谷歌研究院的博客上简要地介绍了他们今年参加ImageNet取得好成绩的GoogLeNet系统.是关于图像处理的。

介绍:贝叶斯学习。如果不是很清可看看概率编程语言与贝叶斯方法实践

介绍:网友问伯克利机器学习大牛、美国双料院士Michael I. Jordan:"如果你有10亿美金,你怎么花?Jordan: "我会用这10亿美金建造一个NASA级别的自然语言处理研究项目。"

介绍:常见面试之机器学习算法思想简单梳理,此外作者还有一些其他的机器学习与数据挖掘文章深度学习文章,不仅是理论还有源码。

介绍:Videolectures上最受欢迎的25个文本与数据挖掘视频汇总

介绍:在Kaggle上经常取得不错成绩的Tim Dettmers介绍了他自己是怎么选择深度学习的GPUs, 以及个人如何构建深度学习的GPU集群: http://t.cn/RhpuD1G

介绍:对话机器学习大神Michael Jordan

介绍:还有2,3部分。http://blog.sina.com.cn/s/blog_46d0a3930101gs5h.html

介绍:是Stanford 教授 Andrew Ng 的 Deep Learning 教程,国内的机器学习爱好者很热心的把这个教程翻译成了中文。如果你英语不好,可以看看这个

介绍:因为近两年来,深度学习在媒体界被炒作很厉害(就像大数据)。其实很多人都还不知道什么是深度学习。这篇文章由浅入深。告诉你深度学究竟是什么!

介绍:这是斯坦福大学做的一免费课程(很勉强),这个可以给你在深度学习的路上给你一个学习的思路。里面提到了一些基本的算法。而且告诉你如何去应用到实际环境中。中文版

介绍:这是多伦多大学做的一个深度学习用来识别图片标签/图转文字的demo。是一个实际应用案例。有源码

介绍:机器学习模型,阅读这个内容需要有一定的基础。

介绍: (CRAN Task Views, 34种常见任务,每个任务又各自分类列举若干常用相关工具包) 例如: 机器学习,自然语言处理,时间序列分析,空间信息分析,多重变量分析,计量经济学,心理统计学,社会学统计,化学计量学,环境科学,药物代谢动力学 等

介绍: 机器学习无疑是当前数据分析领域的一个热点内容。很多人在平时的工作中都或多或少会用到机器学习的算法。本文为您总结一下常见的机器学习算法,以供您在工作和学习中参考.

介绍: 很多干货,而且作者还总结了好几个系列。另外还作者还了一个文章导航.非常的感谢作者总结。

Deep Learning(深度学习)学习笔记整理系列之(二)

Deep Learning(深度学习)学习笔记整理系列之(三)

Deep Learning(深度学习)学习笔记整理系列之(四)

Deep Learning(深度学习)学习笔记整理系列之(五)

Deep Learning(深度学习)学习笔记整理系列之(六)

Deep Learning(深度学习)学习笔记整理系列之(七)

DeepLearning(深度学习)学习笔记整理系列之(八)

介绍:传送理由:Rob Fergus的用深度学习做计算机是觉的NIPS 2013教程。有mp4, mp3, pdf各种下载 他是纽约大学教授,目前也在Facebook工作,他2014年的8篇论文

介绍:FudanNLP,这是一个复旦大学计算机学院开发的开源中文自然语言处理(NLP)工具包 Fudan NLP里包含中文分词、关键词抽取、命名实体识别、词性标注、时间词抽取、语法分析等功能,对搜索引擎 文本分析等极为有价值。

介绍:LinkedIn 开源的机器学习工具包,支持单机, Hadoop cluster,和 Spark cluster 重点是 logistic regression 算法

介绍:对于英语不好,但又很想学习机器学习的朋友。是一个大的福利。机器学习周刊目前主要提供中文版,还是面向广大国内爱好者,内容涉及机器学习、数据挖掘、并行系统、图像识别、人工智能、机器人等等。谢谢作者

介绍:《线性代数》是《机器学习》的重要数学先导课程。其实《线代》这门课讲得浅显易懂特别不容易,如果一上来就讲逆序数及罗列行列式性质,很容易让学生失去学习的兴趣。我个人推荐的最佳《线性代数》课程是麻省理工Gilbert Strang教授的课程。 课程主页

介绍:大数据数据处理资源、工具不完备列表,从框架、分布式编程、分布式文件系统、键值数据模型、图数据模型、数据可视化、列存储、机器学习等。很赞的资源汇总。

介绍:雅虎邀请了一名来自本古里安大学的访问学者,制作了一套关于机器学习的系列视频课程。本课程共分为7期,详细讲解了有关SVM, boosting, nearest neighbors, decision trees 等常规机器学习算法的理论基础知识。

介绍:应对大数据时代,量子机器学习的第一个实验 paper 下载

介绍:Wired杂志报道了UCLA数学博士Chris McKinlay (图1)通过大数据手段+机器学习方法破解婚恋网站配对算法找到真爱的故事,通过Python脚本控制着12个账号,下载了婚恋网站2万女用户的600万问题答案,对他们进行了统计抽样及聚类分析(图2,3),最后终于收获了真爱。科技改变命运!

介绍:MIT的Underactuated Robotics于 2014年10月1日开课,该课属于MIT研究生级别的课程,对机器人和非线性动力系统感兴趣的朋友不妨可以挑战一下这门课程!

介绍:mllib实践经验分享

介绍:Google用Deep Learning做的antispam(反垃圾邮件)

介绍:NLP常用信息资源* 《NLP常用信息资源》

介绍:机器学习速查表

介绍:从1996年开始在计算机科学的论文中被引用次数最多的论文

介绍:把今年的一个ACM Trans. on Graphics (TOG)论文中的代码整理为一个开源的算法框架,共享出来了。欢迎大家使用。可以实时的采集3D数据、重建出三维模型。Online learning,GPU Random forest,GPU CRF也会后续公开。

介绍:【神经网络黑客指南】现在,最火莫过于深度学习(Deep Learning),怎样更好学习它?可以让你在浏览器中,跑起深度学习效果的超酷开源项目ConvNetJS作者karpathy告诉你,最佳技巧是,当你开始写代码,一切将变得清晰。他刚发布了一本图书,不断在线更新

介绍:前Google广告系统工程师Josh Wills 讲述工业界和学术界机器学习的异同,大实话

介绍:使用Neo4j 做电影评论的情感分析。

介绍:不仅是资料,而且还对有些资料做了注释。

介绍:深度学习入门的初级读本

介绍:机器学习教会了我们什么?

介绍:scikit-learn是在SciPy基础上构建的用于机器学习的Python模块。

介绍:乔丹教授(Michael I. Jordan)教授是机器学习领域神经网络的大牛,他对深度学习、神经网络有着很浓厚的兴趣。因此,很多提问的问题中包含了机器学习领域的各类模型,乔丹教授对此一一做了解释和展望。

介绍:A*搜索是人工智能基本算法,用于高效地搜索图中两点的最佳路径, 核心是 g(n)+h(n): g(n)是从起点到顶点n的实际代价,h(n)是顶点n到目标顶点的估算代价。合集

介绍:本项目利用了Microsoft Azure,可以在几分种内完成NLP on Azure Website的部署,立即开始对FNLP各种特性的试用,或者以REST API的形式调用FNLP的语言分析功能

介绍:现任复旦大学首席教授、计算机软件博士生导师。计算机科学研究所副所长.内部课程

介绍:好东西的干货真的很多

介绍:从硬件、图像到健康、生物、大数据、生物信息再到量子计算等,Amund Tveit等维护了一个DeepLearning.University小项目:收集从2014年开始深度学习文献,相信可以作为深度学习的起点,github

介绍:EMNLP上两篇关于stock trend 用到了deep model组织特征; Exploiting Social Relations and Sentiment for Stock Prediction用到了stock network。

介绍:作者是深度学习一线大牛Bengio组写的教程,算法深入显出,还有实现代码,一步步展开。

介绍:许多传统的机器学习任务都是在学习function,不过谷歌目前有开始学习算法的趋势。谷歌另外的这篇学习Python程序的Learning to Execute也有相似之处

介绍:作者是华为技术有限公司,诺亚方舟实验室,首席科学家的李航博士写的关于信息检索与自然语言处理的文章

介绍:利用机用器学习在谣言的判别上的应用,此外还有两个。一个是识别垃圾与虚假信息的paper.还有一个是网络舆情及其分析技术

介绍:该课程是网易公开课的收费课程,不贵,超级便宜。主要适合于对利用R语言进行机器学习,数据挖掘感兴趣的人。

介绍:本章中作者总结了三代机器学习算法实现的演化:第一代非分布式的, 第二代工具如Mahout和Rapidminer实现基于Hadoop的扩展,第三代如Spark和Storm实现了实时和迭代数据处理。BIG DATA ANALYTICS BEYOND HADOOP

介绍:讲计算机视觉的四部奇书(应该叫经典吧)之一,另外三本是Hartley的《多图几何》、Gonzalez的《数字图像处理》、Rafael C.Gonzalez / Richard E.Woods 的《数字图像处理》

介绍:里面基本没涉及到具体算法,但作者介绍了CF在LinkedIn的很多应用,以及他们在做推荐过程中获得的一些经验。最后一条经验是应该监控log数据的质量,因为推荐的质量很依赖数据的质量!

介绍:初学者如何查阅自然语言处理(NLP)领域学术资料

介绍:用树莓派和相机模块进行人脸识别

介绍:如何利用深度学习与大数据构建对话系统

介绍:Francis Bach合作的有关稀疏建模的新综述(书):Sparse Modeling for Image and Vision Processing,内容涉及Sparsity, Dictionary Learning, PCA, Matrix Factorization等理论,以及在图像和视觉上的应用,而且第一部分关于Why does the l1-norm induce sparsity的解释也很不错。

介绍:RKHS是机器学习中重要的概念,其在large margin分类器上的应用也是广为熟知的。如果没有较好的数学基础,直接理解RKHS可能会不易。本文从基本运算空间讲到Banach和Hilbert空间,深入浅出,一共才12页。

介绍:许多同学对于机器学习及深度学习的困惑在于,数学方面已经大致理解了,但是动起手来却不知道如何下手写代码。斯坦福深度学习博士Andrej Karpathy写了一篇实战版本的深度学习及机器学习教程,手把手教你用Javascript写神经网络和SVM.

介绍:【语料库】语料库资源汇总

介绍:本文会过一遍最流行的机器学习算法,大致了解哪些方法可用,很有帮助。

介绍:这个里面有很多关于机器学习、信号处理、计算机视觉、深入学习、神经网络等领域的大量源代码(或可执行代码)及相关论文。科研写论文的好资源

介绍:NYU 2014年的深度学习课程资料,有视频

介绍:计算机视觉数据集不完全汇总

介绍:机器学习开源软件

介绍:A Library for Support Vector Machines

介绍:数据挖掘十大经典算法之一

介绍:github上面100个非常棒的项目

介绍:当前加州大学欧文分校为机器学习社区维护着306个数据集。查询数据集

介绍:Andrej Karpathy 是斯坦福大学Li Fei-Fei的博士生,使用机器学习在图像、视频语义分析领域取得了科研和工程上的突破,发的文章不多,但每个都很扎实,在每一个问题上都做到了state-of-art.

介绍:Andrej Karpathy的深度强化学习演示,论文在这里

介绍:CIKM Cup(或者称为CIKM Competition)是ACM CIKM举办的国际数据挖掘竞赛的名称。

介绍:杰弗里·埃弗里斯特·辛顿 FRS是一位英国出生的计算机学家和心理学家,以其在神经网络方面的贡献闻名。辛顿是反向传播算法和对比散度算法的发明人之一,也是深度学习的积极推动者.

介绍:微软研究院深度学习技术中心在CIKM2014 上关于《自然语言处理的深度学习理论与实际》教学讲座的幻灯片

介绍: 本文基于<支持向量机的高频限价订单的动态建模>采用了 Apache Spark和Spark MLLib从纽约股票交易所的订单日志数据构建价格运动预测模型。(股票有风险,投资谨慎)GitHub源代码托管地址.

介绍:徐宗本 院士将于热爱机器学习的小伙伴一起探讨有关于机器学习的几个理论性问题,并给出一些有意义的结论。最后通过一些实例来说明这些理论问题的物理意义和实际应用价值。

介绍:作者还著有《这就是搜索引擎:核心技术详解》一书,主要是介绍应用层的东西

介绍:机器学习课程

介绍:人脸识别必读文章推荐

介绍:推荐系统经典论文文献

介绍:人脸识别必读文章推荐

介绍:第十二届中国"机器学习及其应用"研讨会PPT

介绍:统计学习是关于计算机基于数据构建的概率统计模型并运用模型对数据进行预测和分析的一门科学,统计学习也成为统计机器学习。课程来自上海交通大学

介绍:机器学习的目标是对计算机编程,以便使用样本数据或以往的经验来解决给定的问题.

介绍:CIKM 2014 Jeff Dean、Qi Lu、Gerhard Weikum的主题报告的幻灯片, Alex Smola、Limsoon Wong、Tong Zhang、Chih-Jen Lin的Industry Track报告的幻灯片

介绍:部分中文列表

介绍:此外作者还有一篇元算法、AdaBoost python实现文章

介绍:加州伯克利大学博士Aria Haghighi写了一篇超赞的数值优化博文,从牛顿法讲到拟牛顿法,再讲到BFGS以及L-BFGS, 图文并茂,还有伪代码。强烈推荐。

介绍:还有续集简明深度学习方法概述(二)

介绍:R语言程序员私人定制版

介绍:谷歌地图解密

介绍:空间数据挖掘常用方法

介绍:Kaggle新比赛 ”When bag of words meets bags of popcorn“ aka ”边学边用word2vec和deep learning做NLP“ 里面全套教程教一步一步用python和gensim包的word2vec模型,并在实际比赛里面比调参数和清数据。 如果已装过gensim不要忘升级

介绍:PyNLPIR提供了NLPIR/ICTCLAS汉语分词的Python接口,此外Zhon提供了常用汉字常量,如CJK字符和偏旁,中文标点,拼音,和汉字正则表达式(如找到文本中的繁体字)

介绍:这文章说把最近模型识别上的突破应用到围棋软件上,打16万张职业棋谱训练模型识别功能。想法不错。训练后目前能做到不用计算,只看棋盘就给出下一步,大约10级棋力。但这篇文章太过乐观,说什么人类的最后一块堡垒马上就要跨掉了。话说得太早。不过,如果与别的软件结合应该还有潜力可挖。@万精油墨绿

介绍:UT Austin教授Eric Price关于今年NIPS审稿实验的详细分析,他表示,根据这次实验的结果,如果今年NIPS重新审稿的话,会有一半的论文被拒。

介绍:KDNuggets分别总结了2014年14个阅读最多以及分享最多的文章。我们从中可以看到多个主题——深度学习,数据科学家职业,教育和薪酬,学习数据科学的工具比如R和Python以及大众投票的最受欢迎的数据科学和数据挖掘语言

介绍:Python实现线性回归,作者还有其他很棒的文章推荐可以看看

介绍:2014中国大数据技术大会33位核心专家演讲PDF下载

介绍:这是T. Mikolov & Y. Bengio最新论文Ensemble of Generative and Discriminative Techniques for Sentiment Analysis of Movie Reviews ,使用RNN和PV在情感分析效果不错,[项目代码](https://github.com/mesnilgr/iclr15)公布在github(目前是空的)。这意味着Paragraph Vector终于揭开面纱了嘛。

介绍:NLPIR/ICTCLAS2015分词系统发布与用户交流大会上的演讲,请更多朋友检阅新版分词吧。 我们实验室同学的演讲包括:孙梦姝-基于评论观点挖掘的商品搜索技术研究 李然-主题模型

介绍:Convex Neural Networks 解决维数灾难

介绍:介绍CNN参数在使用bp算法时该怎么训练,毕竟CNN中有卷积层和下采样层,虽然和MLP的bp算法本质上相同,但形式上还是有些区别的,很显然在完成CNN反向传播前了解bp算法是必须的。此外作者也做了一个资源集:机器学习,深度学习,视觉,数学等

介绍:如果要在一篇文章中匹配十万个关键词怎么办?Aho-Corasick 算法利用添加了返回边的Trie树,能够在线性时间内完成匹配。 但如果匹配十万个正则表达式呢 ? 这时候可以用到把多个正则优化成Trie树的方法,如日本人写的 Regexp::Trie

介绍:深度学习阅读清单

介绍:Caffe是一个开源的深度学习框架,作者目前在google工作,作者主页Yangqing Jia (贾扬清)

介绍:2014 ImageNet冠军GoogLeNet深度学习模型的Caffe复现模型,GoogleNet论文.

介绍:LambdaNetLambdaNet是由Haskell实现的一个开源的人工神经网络库,它抽象了网络创建、训练并使用了高阶函数。该库还提供了一组预定义函数,用户可以采取多种方式组合这些函数来操作现实世界数据。

介绍:如果你从事互联网搜索,在线广告,用户行为分析,图像识别,自然语言理解,或者生物信息学,智能机器人,金融预测,那么这门核心课程你必须深入了解。

介绍:"人工智能研究分许多流派。其中之一以IBM为代表,认为只要有高性能计算就可得到智能,他们的‘深蓝’击败了世界象棋冠军;另一流派认为智能来自动物本能;还有个很强的流派认为只要找来专家,把他们的思维用逻辑一条条写下,放到计算机里就行……" 杨强在TEDxNanjing谈智能的起源

介绍:1)机器翻译Sequence to Sequence NIPS14 2)成分句法GRAMMAR AS FOREIGN LANGUAGE

介绍:网易有道的三位工程师写的word2vec的解析文档,从基本的词向量/统计语言模型->NNLM->Log-Linear/Log-Bilinear->层次化Log-Bilinear,到CBOW和Skip-gram模型,再到word2vec的各种tricks,公式推导与代码,基本上是网上关于word2vec资料的大合集,对word2vec感兴趣的朋友可以看看

介绍:机器学习开源软件,收录了各种机器学习的各种编程语言学术与商业的开源软件.与此类似的还有很多例如:DMOZ - Computers: Artificial Intelligence: Machine Learning: Software, LIBSVM -- A Library for Support Vector Machines, Weka 3: Data Mining Software in Java, scikit-learn:Machine Learning in Python, Natural Language Toolkit:NLTK, MAchine Learning for LanguagE Toolkit, Data Mining - Fruitful and Fun, Open Source Computer Vision Library

介绍:作者是计算机研二(写文章的时候,现在是2015年了应该快要毕业了),专业方向自然语言处理.这是一点他的经验之谈.对于入门的朋友或许会有帮助

介绍:这是一篇关于机器学习算法分类的文章,非常好

介绍:机器学习日报里面推荐很多内容,在这里有一部分的优秀内容就是来自机器学习日报.

介绍:这是一篇关于图像分类在深度学习中的文章

介绍:作者与Bengio的兄弟Samy 09年合编《自动语音识别:核方法》 3)李开复1989年《自动语音识别》专著,其博导、94年图灵奖得主Raj Reddy作序

介绍: 作者是360电商技术组成员,这是一篇NLP在中文分词中的应用

介绍: 使用deep learning的人脸关键点检测,此外还有一篇AWS部署教程

介绍: 由Sebastian Nowozin等人编纂MIT出版的新书《Advanced Structured Prediction》http://t.cn/RZxipKG ,汇集了结构化预测领域诸多牛文,涉及CV、NLP等领域,值得一读。网上公开的几章草稿:,,,,

介绍: Tropp把数学家用高深装逼的数学语言写的矩阵概率不等式用初等的方法写出来,是非常好的手册,领域内的paper各种证明都在用里面的结果。虽说是初等的,但还是非常的难

介绍: 不容错过的免费大数据集,有些已经是耳熟能详,有些可能还是第一次听说,内容跨越文本、数据、多媒体等,让他们伴你开始数据科学之旅吧,具体包括:Data.gov、US Census Bureau、European Union Open Data Portal、Data.gov.uk等

介绍: 谷歌科学家、Hinton亲传弟子Ilya Sutskever的深度学习综述及实际建议

介绍: 非常好的讨论递归神经网络的文章,覆盖了RNN的概念、原理、训练及优化等各个方面内容,强烈推荐!本文作者Nikhil Buduma还有一篇Deep Learning in a Nutshell值得推荐

介绍:里面融合了很多的资源,例如竞赛,在线课程,demo,数据整合等。有分类

介绍:《机器学习的统计基础》在线版,该手册希望在理论与实践之间找到平衡点,各主要内容都伴有实际例子及数据,书中的例子程序都是用R语言编写的。

介绍:IVAN VASILEV写的深度学习导引:从浅层感知机到深度网络。高可读

介绍:鲁棒及有益的人工智能优先研究计划:一封公开信,目前已经有Stuart Russell, Tom Dietterich, Eric Horvitz, Yann LeCun, Peter Norvig, Tom Mitchell, Geoffrey Hinton, Elon Musk等人签署The Future of Life Institute (FLI).这封信的背景是最近霍金和Elon Musk提醒人们注意AI的潜在威胁。公开信的内容是AI科学家们站在造福社会的角度,展望人工智能的未来发展方向,提出开发AI系统的Verification,Validity, Security, Control四点要求,以及需要注意的社会问题。毕竟当前AI在经济领域,法律,以及道德领域相关研究较少。其实还有一部美剧《疑犯追踪》,介绍了AI的演进从一开始的自我学习,过滤,图像识别,语音识别等判断危险,到第四季的时候出现了机器通过学习成长之后想控制世界的状态。说到这里推荐收看。

介绍:里面根据词条提供了许多资源,还有相关知识结构,路线图,用时长短等。号称是”机器学习“搜索引擎

介绍:Facebook人工智能研究院(FAIR)开源了一系列软件库,以帮助开发者建立更大、更快的深度学习模型。开放的软件库在 Facebook 被称作模块。用它们替代机器学习领域常用的开发环境 Torch 中的默认模块,可以在更短的时间内训练更大规模的神经网络模型。

介绍:本文虽然是写于2012年,但是这篇文章完全是作者的经验之作。

介绍:本文是对《机器学习实战》作者Peter Harrington做的一个访谈。包含了书中部分的疑问解答和一点个人学习建议

介绍:非常好的深度学习概述,对几种流行的深度学习模型都进行了介绍和讨论

介绍:主要是讲述了利用R语言进行数据挖掘

介绍:帮你理解卷积神经网络,讲解很清晰,此外还有两篇Conv Nets: A Modular PerspectiveGroups & Group Convolutions. 作者的其他的关于神经网络文章也很棒

介绍:Deep Learning算法介绍,里面介绍了06年3篇让deep learning崛起的论文

介绍:一本学习人工智能的书籍,作者是Yoshua Bengio,相关国内报道

介绍:Geoffrey Hinton是Deep Learning的大牛,他的主页放了一些介绍性文章和课件值得学习

介绍:概率论:数理逻辑书籍

介绍:一个用来快速的统计,机器学习并且对于数据量大的数学库

介绍:在这里你可以看到最近深度学习有什么新动向。

介绍:此书在信息检索领域家喻户晓, 除提供该书的免费电子版外,还提供一个IR资源列表 ,收录了信息检索、网络信息检索、搜索引擎实现等方面相关的图书、研究中心、相关课程、子领域、会议、期刊等等,堪称全集,值得收藏

介绍:信息几何学及其在机器学习中的应用

介绍:课程《法律分析》介绍幻灯片。用机器学习解决法律相关分析和预测问题,相关的法律应用包括预测编码、早期案例评估、案件整体情况的预测,定价和工作人员预测,司法行为预测等。法律领域大家可能都比较陌生,不妨了解下。

介绍: 文中提到了最优,模型,最大熵等等理论,此外还有应用篇。推荐系统可以说是一本不错的阅读稿,关于模型还推荐一篇Generative Model 与 Discriminative Model

介绍: NeuralTalk is a Python+numpy project for learning Multimodal Recurrent Neural Networks that describe images with sentences.NeuralTalk是一个Python的从图像生成自然语言描述的工具。它实现了Google (Vinyals等,卷积神经网络CNN + 长短期记忆LSTM) 和斯坦福 (Karpathy and Fei-Fei, CNN + 递归神经网络RNN)的算法。NeuralTalk自带了一个训练好的动物模型,你可以拿狮子大象的照片来试试看

介绍:本文主要介绍了在Hadoop2.0上使用深度学习,文章来自paypal

介绍:用基于梯度下降的方法训练深度框架的实践推荐指导,作者是Yoshua Bengio .感谢@xuewei4d 推荐

介绍: 用统计和因果方法做机器学习(视频报告)

介绍: 一个讲机器学习的Youtube视频教程。160集。系统程度跟书可比拟。

介绍: 机器学习中的数学,作者的研究方向是机器学习,并行计算如果你还想了解一点其他的可以看看他博客的其他文章

介绍: 美团推荐算法实践,从框架,应用,策略,查询等分析

介绍: 深度学习用于问答系统答案句的选取

介绍: CNN用于WEB搜索,深度学习在文本计算中的应用

介绍: Awesome系列中的公开数据集

介绍: 一个学术搜索引擎

介绍: 用Python和Cython写的工业级自然语言处理库,号称是速度最快的NLP库,快的原因一是用Cython写的,二是用了个很巧妙的hash技术,加速系统的瓶颈,NLP中稀松特征的存取

介绍: Fields是个数学研究中心,上面的这份ppt是来自Fields举办的活动中Russ Salakhutdinov带来的《大规模机器学习》分享

介绍: Topic modeling 的经典论文,标注了关键点

介绍: 多伦多大学与Google合作的新论文,深度学习也可以用来下围棋,据说能达到六段水平

介绍: 新闻,paper,课程,book,system,CES,Roboot,此外还推荐一个深度学习入门与综述资料

介绍: 18 free eBooks on Machine Learning

介绍:Chief scientist of Noah's Ark Lab of Huawei Technologies.He worked at the Research Laboratories of NEC Corporation during 1990 and 2001 and Microsoft Research Asia during 2001 and 2012.Paper

介绍: DEEPLEARNING.UNIVERSITY的论文库已经收录了963篇经过分类的深度学习论文了,很多经典论文都已经收录

介绍: Radim Řehůřek(Gensim开发者)在一次机器学习聚会上的报告,关于word2vec及其优化、应用和扩展,很实用.国内网盘

介绍:很多公司都用机器学习来解决问题,提高用户体验。那么怎么可以让机器学习更实时和有效呢?Spark MLlib 1.2里面的Streaming K-means,由斑马鱼脑神经研究的Jeremy Freeman脑神经科学家编写,最初是为了实时处理他们每半小时1TB的研究数据,现在发布给大家用了。

介绍: 这是一篇面向工程师的LDA入门笔记,并且提供一份开箱即用Java实现。本文只记录基本概念与原理,并不涉及公式推导。文中的LDA实现核心部分采用了arbylon的LdaGibbsSampler并力所能及地注解了,在搜狗分类语料库上测试良好,开源在GitHub上。

介绍: AMiner是一个学术搜索引擎,从学术网络中挖掘深度知识、面向科技大数据的挖掘。收集近4000万作者信息、8000万论文信息、1亿多引用关系、链接近8百万知识点;支持专家搜索、机构排名、科研成果评价、会议排名。

介绍: Quora上的主题,讨论Word2Vec的有趣应用,Omer Levy提到了他在CoNLL2014最佳论文里的分析结果和新方法,Daniel Hammack给出了找特异词的小应用并提供了(Python)代码

介绍: 机器学习公开课汇总,虽然里面的有些课程已经归档过了,但是还有个别的信息没有。感谢课程图谱的小编

介绍: 【A First Course in Linear Algebra】Robert Beezer 有答案 有移动版、打印版 使用GNU自由文档协议 引用了杰弗逊1813年的信

介绍:libfacedetection是深圳大学开源的一个人脸图像识别库。包含正面和多视角人脸检测两个算法.优点:速度快(OpenCV haar+adaboost的2-3倍), 准确度高 (FDDB非公开类评测排名第二),能估计人脸角度。

介绍:WSDM2015最佳论文 把马尔可夫链理论用在了图分析上面,比一般的propagation model更加深刻一些。通过全局的平稳分布去求解每个节点影响系数模型。假设合理(转移受到相邻的影响系数影响)。可以用来反求每个节点的影响系数

介绍:机器学习入门书籍,具体介绍

介绍: 非常棒的强调特征选择对分类器重要性的文章。情感分类中,根据互信息对复杂高维特征降维再使用朴素贝叶斯分类器,取得了比SVM更理想的效果,训练和分类时间也大大降低——更重要的是,不必花大量时间在学习和优化SVM上——特征也一样no free lunch

介绍:CMU的统计系和计算机系知名教授Larry Wasserman 在《机器崛起》,对比了统计和机器学习的差异

介绍:随着大数据时代的到来,机器学习成为解决问题的一种重要且关键的工具。不管是工业界还是学术界,机器学习都是一个炙手可热的方向,但是学术界和工业界对机器学习的研究各有侧重,学术界侧重于对机器学习理论的研究,工业界侧重于如何用机器学习来解决实际问题。这篇文章是美团的实际环境中的实战篇

介绍:面向机器学习的高斯过程,章节概要:回归、分类、协方差函数、模型选择与超参优化、高斯模型与其他模型关系、大数据集的逼近方法等,微盘下载

介绍:Python下的文本模糊匹配库,老库新推,可计算串间ratio(简单相似系数)、partial_ratio(局部相似系数)、token_sort_ratio(词排序相似系数)、token_set_ratio(词集合相似系数)等 github

介绍:Blocks是基于Theano的神经网络搭建框架,集成相关函数、管道和算法,帮你更快地创建和管理NN模块.

介绍:机器学习大神Alex Smola在CMU新一期的机器学习入门课程”Introduction to Machine Learning“近期刚刚开课,课程4K高清视频同步到Youtube上,目前刚刚更新到 2.4 Exponential Families,课程视频playlist, 感兴趣的同学可以关注,非常适合入门.

介绍:用社交用户行为学习图片的协同特征,可更好地表达图片内容相似性。由于不依赖于人工标签(标注),可用于大规模图片处理,难在用户行为数据的获取和清洗;利用社会化特征的思路值得借鉴.

介绍:Twitter技术团队对前段时间开源的时间序列异常检测算法(S-H-ESD)R包的介绍,其中对异常的定义和分析很值得参考,文中也提到——异常是强针对性的,某个领域开发的异常检测在其他领域直接用可不行.

介绍:聚焦数据质量问题的应对,数据质量对各种规模企业的性能和效率都至关重要,文中总结出(不限于)22种典型数据质量问题显现的信号,以及典型的数据质量解决方案(清洗、去重、统一、匹配、权限清理等)

介绍:中文分词入门之资源.

介绍:15年旧金山深度学习峰会视频集萃,国内云盘

介绍:很好的条件随机场(CRF)介绍文章,作者的学习笔记

介绍: 来自Stanford,用神经网络实现快速准确的依存关系解析器

介绍:做深度学习如何选择GPU的建议

介绍: Stanford的Trevor Hastie教授在H2O.ai Meet-Up上的报告,讲稀疏线性模型——面向“宽数据”(特征维数超过样本数)的线性模型,13年同主题报告讲义.

介绍: 分类整理的机器视觉相关资源列表,秉承Awesome系列风格,有质有量!作者的更新频率也很频繁

介绍: social networks course

介绍: 大规模机器学习流程的构建与部署.

介绍: 人脸识别二次开发包,免费,可商用,有演示、范例、说明书.

介绍: 采用Torch用深度学习网络理解NLP,来自Facebook 人工智能的文章.

介绍: 来自CMU的Ed Hovy和Stanford的Jiwei Li一篇有意思的Arxiv文章,作者用Shannon Entropy来刻画NLP中各项任务的难度.

介绍: 信息检索排序模型BM25(Besting Matching)。1)从经典概率模型演变而来 2)捕捉了向量空间模型中三个影响索引项权重的因子:IDF逆文档频率;TF索引项频率;文档长度归一化。3)并且含有集成学习的思想:组合了BM11和BM15两个模型。4)作者是BM25的提出者和Okapi实现者Robertson.

介绍: 自回归滑动平均(ARMA)时间序列的简单介绍,ARMA是研究时间序列的重要方法,由自回归模型(AR模型)与滑动平均模型(MA模型)为基础“混合”构成.

介绍: 把来自target的attention signal加入source encoding CNN的输入,得到了比BBN的模型好的多neural network joint model

介绍: 揭开印度菜的美味秘诀——通过对大量食谱原料关系的挖掘,发现印度菜美味的原因之一是其中的味道互相冲突,很有趣的文本挖掘研究

介绍: HMM相关文章,此外推荐中文分词之HMM模型详解

介绍: 1)词频与其降序排序的关系,最著名的是语言学家齐夫(Zipf,1902-1950)1949年提出的Zipf‘s law,即二者成反比关系. 曼德勃罗(Mandelbrot,1924- 2010)引入参数修正了对甚高频和甚低频词的刻画 2)Heaps' law: 词汇表与语料规模的平方根(这是一个参数,英语0.4-0.6)成正比

介绍: Jürgen Schmidhuber在Reddit上的AMA(Ask Me Anything)主题,有不少RNN和AI、ML的干货内容,关于开源&思想&方法&建议……耐心阅读,相信你也会受益匪浅.

介绍: 成G上T的学术数据,HN近期热议话题,主题涉及机器学习、NLP、SNA等。下载最简单的方法,通过BT软件,RSS订阅各集合即可

介绍: Scikit-Learn官网提供,在原有的Cheat Sheet基础上加上了Scikit-Learn相关文档的链接,方便浏览

介绍: 深度学习的全面硬件指南,从GPU到RAM、CPU、SSD、PCIe

介绍:Pedestrian Detection paper & data

介绍: 【神经科学碰撞人工智能】在脸部识别上你我都是专家,即使细微的差别也能辨认。研究已证明人类和灵长类动物在面部加工上不同于其他物种,人类使用梭状回面孔区(FFA)。Khaligh-Razavi等通过计算机模拟出人脸识别的FFA活动,堪称神经科学与人工智能的完美结合。

介绍: 神经网络C++教程,本文介绍了用可调节梯度下降和可调节动量法设计和编码经典BP神经网络,网络经过训练可以做出惊人和美妙的东西出来。此外作者博客的其他文章也很不错。

介绍:deeplearning4j官网提供的实际应用场景NN选择参考表,列举了一些典型问题建议使用的神经网络

介绍:一个深度学习项目,提供了Python, C/C++, Java, Scala, Go多个版本的代码

介绍:深度学习教程,github

介绍:自然语言处理的发展趋势——访卡内基梅隆大学爱德华·霍威教授.

介绍:Google对Facebook DeepFace的有力回击—— FaceNet,在LFW(Labeled Faces in the Wild)上达到99.63%准确率(新纪录),FaceNet embeddings可用于人脸识别、鉴别和聚类.

介绍:本文来自Databricks公司网站的一篇博客文章,由Joseph Bradley和Manish Amde撰写,文章主要介绍了Random Forests和Gradient-Boosted Trees(GBTs)算法和他们在MLlib中的分布式实现,以及展示一些简单的例子并建议该从何处上手.中文版.

介绍:华盛顿大学Pedro Domingos团队的DNN,提供论文和实现代码.

介绍:基于神经网络的自然语言依存关系解析器(已集成至Stanford CoreNLP),特点是超快、准确,目前可处理中英文语料,基于《A Fast and Accurate Dependency Parser Using Neural Networks》 思路实现.

介绍:本文根据神经网络的发展历程,详细讲解神经网络语言模型在各个阶段的形式,其中的模型包含NNLM[Bengio,2003]、Hierarchical NNLM[Bengio, 2005], Log-Bilinear[Hinton, 2007],SENNA等重要变形,总结的特别好.

介绍:经典问题的新研究:利用文本和可读性特征分类垃圾邮件。

介绍:Kaggle脑控计算机交互(BCI)竞赛优胜方案源码及文档,包括完整的数据处理流程,是学习Python数据处理和Kaggle经典参赛框架的绝佳实例

介绍:IPOL(在线图像处理)是图像处理和图像分析的研究期刊,每篇文章都包含一个算法及相应的代码、Demo和实验文档。文本和源码是经过了同行评审的。IPOL是开放的科学和可重复的研究期刊。我一直想做点类似的工作,拉近产品和技术之间的距离.

介绍:出自MIT,研究加密数据高效分类问题.

介绍:新加坡LV实验室的神经网络并行框架Purine: A bi-graph based deep learning framework,支持构建各种并行的架构,在多机多卡,同步更新参数的情况下基本达到线性加速。12块Titan 20小时可以完成Googlenet的训练。

介绍:这是一个机器学习资源库,虽然比较少.但蚊子再小也是肉.有突出部分.此外还有一个由zheng Rui整理的机器学习资源.

介绍:Chase Davis在NICAR15上的主题报告材料,用Scikit-Learn做监督学习的入门例子.

介绍:这是一本自然语言处理的词典,从1998年开始到目前积累了成千上万的专业词语解释,如果你是一位刚入门的朋友.可以借这本词典让自己成长更快.

介绍:通过分析1930年至今的比赛数据,用PageRank计算世界杯参赛球队排行榜.

介绍:R语言教程,此外还推荐一个R语言教程An Introduction to R.

介绍:经典老文,复杂网络社区发现的高效算法,Gephi中的Community detection即基于此.

介绍: 一个面向 .net 的开源机器学习库,github地址

介绍: 支持node.js的JS神经网络库,可在客户端浏览器中运行,支持LSTM等 github地址

介绍: 决策树

介绍: 讨论深度学习自动编码器如何有效应对维数灾难,国内翻译

介绍: CMU的优化与随机方法课程,由A. Smola和S. Sra主讲,优化理论是机器学习的基石,值得深入学习 国内云(视频)

介绍: "面向视觉识别的CNN"课程设计报告集锦.近百篇,内容涉及图像识别应用的各个方面

介绍:用Spark的MLlib+GraphX做大规模LDA主题抽取.

介绍: 基于深度学习的多标签分类,用基于RBM的DBN解决多标签分类(特征)问题

介绍: DeepMind论文集锦

介绍: 一个开源语音识别工具包,它目前托管在sourceforge上面

介绍: 免费电子书《数据新闻手册》, 国内有热心的朋友翻译了中文版,大家也可以在线阅读

介绍: 零售领域的数据挖掘文章.

介绍: 深度学习卷积概念详解,深入浅出.

介绍: 非常强大的Python的数据分析工具包.

介绍: 2015文本分析(商业)应用综述.

介绍: 深度学习框架、库调研及Theano的初步测试体会报告.

介绍: MIT的Yoshua Bengio, Ian Goodfellow, Aaron Courville著等人讲深度学习的新书,还未定稿,线上提供Draft chapters收集反馈,超赞!强烈推荐.

介绍: Python下开源可持久化朴素贝叶斯分类库.

介绍:Paracel is a distributed computational framework designed for machine learning problems, graph algorithms and scientific computing in C++.

介绍: 开源汉语言处理包.

介绍: 使用Ruby实现简单的神经网络例子.

介绍:神经网络黑客入门.

介绍:好多数据科学家名人推荐,还有资料.

介绍:实现项目已经开源在github上面Crepe

介绍:作者发现,经过调参,传统的方法也能和word2vec取得差不多的效果。另外,无论作者怎么试,GloVe都比不过word2vec.

介绍:Stanford深度学习与自然语言处理课程,Richard Socher主讲.

介绍:机器学习中的重要数学概念.

介绍:用于改进语义表示的树型LSTM递归神经网络,句子级相关性判断和情感分类效果很好.实现代码.

介绍:卡耐基梅隆Ryan Tibshirani和Larry Wasserman开设的机器学习课程,先修课程为机器学习(10-715)和中级统计学(36-705),聚焦统计理论和方法在机器学习领域应用.

介绍:《哈佛大学蒙特卡洛方法与随机优化课程》是哈佛应用数学研究生课程,由V Kaynig-Fittkau、P Protopapas主讲,Python程序示例,对贝叶斯推理感兴趣的朋友一定要看看,提供授课视频及课上IPN讲义.

介绍:生物医学的SPARK大数据应用.并且伯克利开源了他们的big data genomics系统ADAM,其他的内容可以关注一下官方主页.

介绍:对自然语言处理技术或者机器翻译技术感兴趣的亲们,请在提出自己牛逼到无以伦比的idea(自动归纳翻译规律、自动理解语境、自动识别语义等等)之前,请通过谷歌学术简单搜一下,如果谷歌不可用,这个网址有这个领域几大顶会的论文列表,切不可断章取义,胡乱假设.

介绍:论文+代码:基于集成方法的Twitter情感分类,实现代码.

介绍:NIPS CiML 2014的PPT,NIPS是神经信息处理系统进展大会的英文简称.

介绍:斯坦福的深度学习课程的Projects 每个人都要写一个论文级别的报告 里面有一些很有意思的应用 大家可以看看 .

介绍:R语言线性回归多方案速度比较具体方案包括lm()、nls()、glm()、bayesglm()、nls()、mle2()、optim()和Stan’s optimizing()等.

介绍:文中提到的三篇论文(机器学习那些事、无监督聚类综述、监督分类综述)都很经典,Domnigos的机器学习课也很精彩

介绍:莱斯大学(Rice University)的深度学习的概率理论.

介绍:基于马尔可夫链自动生成啤酒评论的开源Twitter机器人,github地址.

介绍:视频+讲义:深度学习用于自然语言处理教程(NAACL13).

介绍:用机器学习做数据分析,David Taylor最近在McGill University研讨会上的报告,还提供了一系列讲机器学习方法的ipn,很有价值 GitHub.国内

介绍:基于CNN+LSTM的视频分类,google演示.

介绍:Quora怎么用机器学习.

介绍:亚马逊在机器学习上面的一些应用,代码示例.

介绍:并行机器学习指南(基于scikit-learn和IPython).notebook

介绍:DataSchool的机器学习基本概念教学.

介绍:一个基于OpenGL实现的卷积神经网络,支持Linux及Windows系.

介绍:基于Mahout和Elasticsearch的推荐系统.

介绍:Francis X. Diebold的《(经济|商业|金融等领域)预测方法.

介绍:Francis X. Diebold的《时序计量经济学》.

介绍:基于Yelp数据集的开源情感分析工具比较,评测覆盖Naive Bayes、SentiWordNet、CoreNLP等 .

介绍:国内Pattern Recognition And Machine Learning读书会资源汇总,各章pdf讲稿,博客.

介绍:用于Web分析和数据挖掘的概率数据结构.

介绍:机器学习在导航上面的应用.

介绍:Neural Networks Demystified系列视频,Stephen Welch制作,纯手绘风格,浅显易懂,国内云.

介绍:{swirl}数据训练营:R&数据科学在线交互教程.

介绍:关于深度学习和RNN的讨论 Sequence to Sequence Learning with Neural Networks.

介绍:Deep Reinforcement Learning.

介绍:(PyCon2015)Scikit-Learn机器学习教程,Parallel Machine Learning with scikit-learn and IPython.

介绍:PDNN: A Python Toolkit for Deep Learning.

介绍:15年春季学期CMU的机器学习课程,由Alex Smola主讲,提供讲义及授课视频,很不错.国内镜像.

介绍:大数据处理课.内容覆盖流处理、MapReduce、图算法等.

介绍:用Spark MLlib实现易用可扩展的机器学习,国内镜像.

介绍:以往上千行代码概率编程(语言)实现只需50行.

介绍:ggplot2速查小册子,另外一个,此外还推荐《A new data processing workflow for R: dplyr, magrittr, tidyr, ggplot2》.

介绍:用结构化模型来预测实时股票行情.

介绍:国际人工智能联合会议录取论文列表,大部分论文可使用Google找到.

介绍:一般矩阵乘法(GEMM)对深度学习的重要性.

介绍:A Community of awesome Distributed Machine Learning C++ projects.

介绍:免费电子书<强化学习介绍>,第一版(1998),第二版(2015草稿),相关课程资料,Reinforcement Learning.

介绍:免费书:Azure ML使用精要.

介绍:A Deep Learning Tutorial: From Perceptrons to Deep Networks.

介绍:有趣的机器学习:最简明入门指南,中文版.

介绍:深度学习简明介绍,中文版.

介绍:Portable, scalable and reliable distributed machine learning.

介绍:CNN开源实现横向评测,参评框架包括Caffe 、Torch-7、CuDNN 、cudaconvnet2 、fbfft、Nervana Systems等,NervanaSys表现突出.

介绍:卡耐基梅隆大学计算机学院语言技术系的资源大全,包括大量的NLP开源软件工具包,基础数据集,论文集,数据挖掘教程,机器学习资源.

介绍:Twitter情感分析工具SentiTweet,视频+讲义.

介绍:华盛顿大学的Machine Learning Paper Repository.

介绍:机器学习速查表.

介绍:最新的Spark summit会议资料.

介绍:最新的Spark summit会议资料.

介绍:Ebook Learning Spark.

介绍:Ebook Advanced Analytics with Spark, Early Release Edition.

介绍:清华大学副教授,是图挖掘方面的专家。他主持设计和实现的Arnetminer是国内领先的图挖掘系统,该系统也是多个会议的支持商.

介绍:迁移学习的国际领军人物.

介绍:在半监督学习,multi-label学习和集成学习方面在国际上有一定的影响力.

介绍:信息检索,自然语言处理,机器翻译方面的专家.

介绍:吴军博士是当前Google中日韩文搜索算法的主要设计者。在Google其间,他领导了许多研发项目,包括许多与中文相关的产品和自然语言处理的项目,他的新个人主页.

介绍:喵星人相关论文集.

介绍:如何评价机器学习模型系列文章,How to Evaluate Machine Learning Models, Part 2a: Classification Metrics,How to Evaluate Machine Learning Models, Part 2b: Ranking and Regression Metrics.

介绍:Twitter新trends的基本实现框架.

介绍:Storm手册,国内有中文翻译版本,谢谢作者.

介绍:Java机器学习算法库SmileMiner.

介绍:机器翻译学术论文写作方法和技巧,Simon Peyton Jones的How to write a good research paper同类视频How to Write a Great Research Paper,how to paper talk.

介绍:神经网络训练中的Tricks之高效BP,博主的其他博客也挺精彩的.

介绍:作者是NLP方向的硕士,短短几年内研究成果颇丰,推荐新入门的朋友阅读.

介绍:UCLA的Jens Palsberg根据Google Scholar建立了一个计算机领域的H-index牛人列表,我们熟悉的各个领域的大牛绝大多数都在榜上,包括1位诺贝尔奖得主,35位图灵奖得主,近百位美国工程院/科学院院士,300多位ACM Fellow,在这里推荐的原因是大家可以在google通过搜索牛人的名字来获取更多的资源,这份资料很宝贵.

介绍:用大型语料库学习概念的层次关系,如鸟是鹦鹉的上级,鹦鹉是虎皮鹦鹉的上级。创新性在于模型构造,用因子图刻画概念之间依存关系,因引入兄弟关系,图有环,所以用有环扩散(loopy propagation)迭代计算边际概率(marginal probability).

介绍: 这是一款贝叶斯分析的商业软件,官方写的贝叶斯分析的手册有250多页,虽然R语言 已经有类似的项目,但毕竟可以增加一个可选项.

介绍:deep net highlights from 2014.

介绍:This paper proposes Fast R-CNN, a clean and fast framework for object detection.

介绍:图像指纹的重复识别,作者源码,国内翻译版本.

介绍:提供计算机视觉、机器视觉应用的公司信息汇总.应用领域包括:自动辅助驾驶和交通管理、眼球和头部跟踪、影视运动分析、影视业、手势识别、通用视觉系统、各种工业自动化和检验、医药和生物、移动设备目标识别和AR、人群跟踪、摄像、安全监控、生物监控、三维建模、web和云应用.

介绍:Python版可视化数据统计开源库.

介绍:麻省理工Gilbert Strang线性代数课程笔记,Gilbert Strang《Linear Algebra》课程主页视频+讲义.

介绍:面向机器学习/深度学习的数据向量化工具Canova,github, 支持CSV文件、MNIST数据、TF-IDF/Bag of Words/word2vec文本向量化.

介绍:快速入门:基于Apache Mahout的分布式机器学习.

介绍:基于scikit-learn讲解了一些机器学习技术,如SVM,NB,PCA,DT,以及特征工程、特征选择和模型选择问题.

介绍:基于Spark的高效机器学习,视频地址.

介绍:WePay用机器学习对抗信用卡"shell selling"诈骗.

介绍:16位数据科学家语录精选.

介绍:深度学习在大数据分析领域的应用和挑战.

介绍:免费的机器学习与数学书籍,除此之外还有其他的免费编程书籍,编程语言,设计,操作系统等.

介绍:一篇关于CNN模型对象识别Paper.

介绍:深度学习的统计分析V:泛化和正则化.

介绍:用SGD能高效完成训练的大规模(多层)深度网络HN.

介绍:深度学习解读文章.

介绍:Coursera上的推荐系统导论(Introduction to Recommender Systems)公开课.

介绍:Andrew Ng经典机器学习课程笔记.

介绍:ICLR 2015见闻录,博客的其他机器学习文章也不错.

介绍:推荐系统"个性化语义排序"模型.

介绍:激情时分更惜字——MIT的最新Twitter研究结果.

介绍:苏州大学人类语言技术研究相关论文.

介绍:实现神经图灵机(NTM),项目地址,此外推荐相关神经图灵机算法.

介绍:华盛顿大学的机器视觉(2015),参考资料Computer Vision: Algorithms and Applications.

介绍:"Mining of Massive Datasets"发布第二版,Jure Leskovec, Anand Rajaraman, Jeff Ullman 新版增加Jure Leskovec作为合作作者,新增社交网络图数据挖掘、降维和大规模机器学习三章,电子版依旧免费.

介绍:一个深度学习资源页,资料很丰富.

介绍:免费电子书"Learning Deep Learning".

介绍:Machine Learning for Astronomy with scikit-learn.

介绍:免费电子书"随机森林入门指南".

介绍:白话数据挖掘十大算法.

介绍:基于Mahout和Elasticsearch的推荐系统,国内译版.

介绍:博士学位论文:ELM研究进展.

介绍:Pandas十分钟速览,ipn.

介绍:面向数据新闻的文本挖掘.

介绍:用网络图片合成延时视频(SIGGRAPH 2015).

介绍:分类系统的维数灾难.

介绍:深度学习vs.大数据——从数据到知识:版权的思考,[翻译版](http://www.csdn.net/article/2015-05-19/2824707

介绍:预测模型入门.

介绍:深入浅出LSTM.

介绍:2015年ICLR会议视频讲义.

介绍:Ben Jones的数据可视化建议.

介绍:解读数据降维/PCA/SVD.

介绍:IPN:监督学习方法示例/对比参考表,覆盖logistic回归, 决策树, SVM, KNN, Naive Bayes等方法.

介绍:基于RankSVM和DNN自动(重组)生成Rap歌词.

介绍:随机索引RI词空间模型专题.

介绍:基于机器学习的漏洞检测工具VDiscover.

介绍:深度学习系统minerva。拥有python编程接口。多GPU几乎达到线性加速。在4块GPU上能在4天内将GoogLeNet训练到68.7%的top-1以及89.0%的top-5准确率。和同为dmlc项目的cxxnet相比,采用动态数据流引擎,提供更多灵活性。未来将和cxxnet一起整合为mxnet项目,互取优势.

介绍:2015年国际计算机视觉与模式识别会议paper.

介绍:Netflix工程总监眼中的分类算法:深度学习优先级最低,中文版.

介绍:Codalab图像标注竞赛排行+各家论文,Reddit上flukeskywalker整理了各家技术相关论文.

介绍:基于Caffe的加速深度学习系统CcT.

介绍:深度学习(模型)低精度(训练与)存储.

介绍:新书预览:模型机器学习.

介绍:免费电子书多臂老虎机,此外推荐Introduction to Bandits: Algorithms and Theory.

介绍:基于Kaggle's Titanic Competition的交互式R机器学习教程,介绍《Interactive R Tutorial: Machine Learning for the Titanic Competition》.

介绍:Deep Learning(深度学习)学习笔记整理系列.

介绍:神经(感知)机器翻译介绍.

介绍:Andrew Ng关于深度学习/自学习/无监督特征学习的报告,国内云.

介绍:论文:通过潜在知识迁移训练RNN.

介绍:面向金融数据的情感分析工具.

介绍:(Python)主题模型交互可视化库pyLDAvis.

介绍:Logistic回归与优化实例教程.

介绍:贾扬清(谷歌大脑科学家、caffe缔造者)微信讲座记录.

介绍:Theano/Blocks实现RNN手写字符串生成sketch.

介绍:基于TopSig的海量(7亿+)网页聚类.

介绍:NAACL 2015 论文papers.

介绍:机器学习预测股市的七个问题.

介绍:神经网络学习资料推荐.

介绍:面向序列学习的RNN综述.

介绍:R文本处理手册.

介绍:“必看”的Python视频集锦.

介绍:Google(基础结构)栈.

介绍:矩阵和数据的随机算法(UC Berkeley 2013).

介绍:DataCamp中级R语言教程.

介绍:免费电子书:轻松掌握拓扑学,中文版.

介绍:Book,video.

介绍:Scikit-learn 是基于Scipy为机器学习建造的的一个Python模块,他的特色就是多样化的分类,回归和聚类的算法包括支持向量机,逻辑回归,朴素贝叶斯分类器,随机森林,Gradient Boosting,聚类算法和DBSCAN。而且也设计出了Python numerical和scientific libraries Numpy and Scipy

介绍:Pylearn是一个让机器学习研究简单化的基于Theano的库程序。

介绍:NuPIC是一个以HTM学习算法为工具的机器智能平台。HTM是皮层的精确计算方法。HTM的核心是基于时间的持续学习算法和储存和撤销的时空模式。NuPIC适合于各种各样的问题,尤其是检测异常和预测的流数据来源。

介绍:Nilearn 是一个能够快速统计学习神经影像数据的Python模块。它利用Python语言中的scikit-learn 工具箱和一些进行预测建模,分类,解码,连通性分析的应用程序来进行多元的统计。

介绍:Pybrain是基于Python语言强化学习,人工智能,神经网络库的简称。 它的目标是提供灵活、容易使用并且强大的机器学习算法和进行各种各样的预定义的环境中测试来比较你的算法。

介绍:Pattern 是Python语言下的一个网络挖掘模块。它为数据挖掘,自然语言处理,网络分析和机器学习提供工具。它支持向量空间模型、聚类、支持向量机和感知机并且用KNN分类法进行分类。

介绍:Fuel为你的机器学习模型提供数据。他有一个共享如MNIST, CIFAR-10 (图片数据集), Google’s One Billion Words (文字)这类数据集的接口。你使用他来通过很多种的方式来替代自己的数据。

介绍:Bob是一个免费的信号处理和机器学习的工具。它的工具箱是用Python和C++语言共同编写的,它的设计目的是变得更加高效并且减少开发时间,它是由处理图像工具,音频和视频处理、机器学习和模式识别的大量软件包构成的。

介绍:Skdata是机器学习和统计的数据集的库程序。这个模块对于玩具问题,流行的计算机视觉和自然语言的数据集提供标准的Python语言的使用。

介绍:MILK是Python语言下的机器学习工具包。它主要是在很多可得到的分类比如SVMS,K-NN,随机森林,决策树中使用监督分类法。 它还执行特征选择。 这些分类器在许多方面相结合,可以形成不同的例如无监督学习、密切关系金传播和由MILK支持的K-means聚类等分类系统。

介绍:IEPY是一个专注于关系抽取的开源性信息抽取工具。它主要针对的是需要对大型数据集进行信息提取的用户和想要尝试新的算法的科学家。

介绍:Quepy是通过改变自然语言问题从而在数据库查询语言中进行查询的一个Python框架。他可以简单的被定义为在自然语言和数据库查询中不同类型的问题。所以,你不用编码就可以建立你自己的一个用自然语言进入你的数据库的系统。现在Quepy提供对于Sparql和MQL查询语言的支持。并且计划将它延伸到其他的数据库查询语言。

介绍:Hebel是在Python语言中对于神经网络的深度学习的一个库程序,它使用的是通过PyCUDA来进行GPU和CUDA的加速。它是最重要的神经网络模型的类型的工具而且能提供一些不同的活动函数的激活功能,例如动力,涅斯捷罗夫动力,信号丢失和停止法。

介绍:它是一个由有用的工具和日常数据科学任务的扩展组成的一个库程序。

介绍:这个程序包容纳了大量能对你完成机器学习任务有帮助的实用程序模块。其中大量的模块和scikit-learn一起工作,其它的通常更有用。

介绍:Ramp是一个在Python语言下制定机器学习中加快原型设计的解决方案的库程序。他是一个轻型的pandas-based机器学习中可插入的框架,它现存的Python语言下的机器学习和统计工具(比如scikit-learn,rpy2等)Ramp提供了一个简单的声明性语法探索功能从而能够快速有效地实施算法和转换。

介绍:这一系列工具通过与scikit-learn兼容的API,来创建和测试机器学习功能。这个库程序提供了一组工具,它会让你在许多机器学习程序使用中很受用。当你使用scikit-learn这个工具时,你会感觉到受到了很大的帮助。(虽然这只能在你有不同的算法时起作用。)

介绍:REP是以一种和谐、可再生的方式为指挥数据移动驱动所提供的一种环境。它有一个统一的分类器包装来提供各种各样的操作,例如TMVA, Sklearn, XGBoost, uBoost等等。并且它可以在一个群体以平行的方式训练分类器。同时它也提供了一个交互式的情节。

介绍:用亚马逊的机器学习建造的简单软件收集。

介绍:这是一个在Python语言下基于scikit-learn的极端学习机器的实现。

介绍:电子书降维方法,此外还推荐Dimensionality Reduction A Short TutorialMatlab Toolbox for Dimensionality ReductionUnsupervised Kernel Dimension Reduction

介绍:deeplearning.net整理的深度学习数据集列表.

介绍:Go语言编写的自然语言处理工具.

介绍:词频模型对词向量的反击,参考Improving Distributional Similarity with Lessons Learned from Word Embeddings

介绍:预测模型的三个方面.

介绍:斯坦福大学深度学习与自然语言处理课程,部分课程笔记词向量引言

介绍:CVPR2015上Google的CV研究列表.

介绍:利用(Metamind)深度学习自动发现篮球赛精彩片段.

介绍:对本土化特征学习的分析

机器学习(Machine Learning)&深度学习(Deep Learning)资料(Chapter 2)

注:机器学习资料篇目一共500条,篇目二开始更新

希望转载的朋友,你可以不用联系我.但是一定要保留原文链接,因为这个项目还在继续也在不定期更新.希望看到文章的朋友能够学到更多.此外:某些资料在中国访问需要梯子.

介绍:使用卷积神经网络的图像缩放.

介绍:ICML2015 论文集,优化4个+稀疏优化1个;强化学习4个,深度学习3个+深度学习计算1个;贝叶斯非参、高斯过程和学习理论3个;还有计算广告和社会选择.ICML2015 Sessions.

介绍:使用卷积神经网络的图像缩放.

介绍:,第28届IEEE计算机视觉与模式识别(CVPR)大会在美国波士顿举行。微软研究员们在大会上展示了比以往更快更准的计算机视觉图像分类新模型,并介绍了如何使用Kinect等传感器实现在动态或低光环境的快速大规模3D扫描技术.

介绍:(文本)机器学习可视化分析工具.

介绍:机器学习工具包/库的综述/比较.

介绍:数据可视化最佳实践指南.

介绍:Day 1Day 2Day 3Day 4Day 5.

介绍:深度学习之“深”——DNN的隐喻分析.

介绍:混合密度网络.

介绍:数据科学家职位面试题.

介绍:准确评估模型预测误差.

介绍:Continually updated Data Science Python Notebooks.

介绍:How to share data with a statistician.

介绍:来自Facebook的图像自动生成.

介绍:How to share data with a statistician.

介绍:(Google)神经(感知)会话模型.

介绍:The 50 Best Masters in Data Science.

介绍:NLP常用信息资源.

介绍:语义图像分割的实况演示,通过深度学习技术和概率图模型的语义图像分割.

介绍:Caffe模型/代码:面向图像语义分割的全卷积网络,模型代码.

介绍:深度学习——成长的烦恼.

介绍:基于三元树方法的文本流聚类.

介绍:Free Ebook:数据挖掘基础及最新进展.

介绍:深度学习革命.

介绍:数据科学(实践)权威指南.

介绍:37G的微软学术图谱数据集.

介绍:生产环境(产品级)机器学习的机遇与挑战.

介绍:神经网络入门.

介绍:来自麻省理工的结构化稀疏论文.

介绍:来自雅虎的机器学习小组关于在线Boosting的论文 .

介绍:20个最热门的开源(Python)机器学习项目.

介绍:C++并行贝叶斯推理统计库QUESO,github code.

介绍:Nature:LeCun/Bengio/Hinton的最新文章《深度学习》,Jürgen Schmidhuber的最新评论文章《Critique of Paper by "Deep Learning Conspiracy" (Nature 521 p 436)》.

介绍:基于Scikit-Learn的预测分析服务框架Palladium.

介绍:John Langford和Hal Daume III在ICML2015上关于Learning to Search的教学讲座幻灯片.

介绍:读完这100篇论文 就能成大数据高手,国内翻译.

介绍:NLP课程《社交媒体与文本分析》精选阅读列表.

介绍:写给开发者的机器学习指南.

介绍:基于维基百科的热点新闻发现.

介绍:(Harvard)HIPS将发布可扩展/自动调参贝叶斯推理神经网络.

介绍:面向上下文感知查询建议的层次递归编解码器.

介绍:GPU上基于Mean-for-Mode估计的高效LDA训练.

介绍:从实验室到工厂——构建机器学习生产架构.

介绍:适合做数据挖掘的6个经典数据集(及另外100个列表).

介绍:Google面向机器视觉的深度学习.

介绍:构建预测类应用时如何选择机器学习API.

介绍:Python+情感分析API实现故事情节(曲线)分析.

介绍:(R)基于Twitter/情感分析的口碑电影推荐,此外推荐分类算法的实证比较分析.

介绍:CMU(ACL 2012)(500+页)面向NLP基于图的半监督学习算法.

介绍:从贝叶斯分析NIPS,看同行评审的意义.

介绍:(RLDM 2015)计算强化学习入门.

介绍:David Silver的深度强化学习教程.

介绍:深度神经网络的可解释性.

介绍:Spark快速入门.

介绍:TalkingMachines:面向体育/政治和实时预测的机器学习.

介绍:Stanford社交网络与信息网络分析课程资料+课设+数据.

介绍:David Silver(DeeMind)的强化学习课程,slide.

介绍:基于Theano/GPU的高效深度学习.

介绍:来自微软的<R编程入门>.

介绍:(Go)情感分析API服务Sentiment Server.

介绍:受限波尔兹曼机初学者指南.

介绍:Mining and Summarizing Customer Reviews ,Mining High-Speed Data Streams,Optimizing Search Engines using Clickthrough Data.

介绍:Nvidia深度学习课程.

介绍:2015年深度学习暑期课程,推荐讲师主页.

介绍:这是一篇关于百度文章《基于深度学习的图像识别进展:百度的若干实践》的摘要,建议两篇文章结合起来阅读.

介绍:视频标注中的机器学习技术.

介绍:博士论文:(Ilya Sutskever)RNN训练.

介绍:深度神经网络的灰色区域:可解释性问题,中文版.

介绍:Golang 实现的机器学习库资源汇总.

介绍:深度学习的统计分析.

介绍:面向NLP的深度学习技术与技巧.

介绍:Kaggle's CrowdFlower竞赛NLP代码集锦.

介绍:斯坦福的自然语言理解课程.

介绍:Deep Learning与Shallow Learning 介绍

介绍:这是一本机器学习的电子书,作者Max Welling先生在机器学习教学上面有着丰富的经验,这本书小但精致.

介绍:由荷兰阿姆斯特丹大学 & 谷歌瑞士著.

介绍:介绍个乐于总结和翻译机器学习和计算机视觉类资料的博客,包含的内容:Hinton的CSC321课程的总结;Deep Learning综述;Notes on CNN的总结;python的原理总结;Theano基础知识和练习总结;CUDA原理和编程;OpenCV一些总结.

介绍:针对具体问题(应用场景)如何选择机器学习算法(系列).

介绍:数据科学免费书分类集合

介绍:深度学习在语音合成最新进展有哪些?推荐MSRA的Frank Soong老师关于语音合成的深度学习方法的录像和幻灯片与以及谷歌的LSTM-RNN合成介绍,论文

介绍:新书(可免费下载):数据科学的艺术

介绍:模式识别与机器学习书籍推荐,本书是微软剑桥研究院大神Bishop所写,算是最为广为认知的机器学习教材之一,内容覆盖全面,难度中上,适合研究生中文版 or 备份

介绍:数据可视化介绍(23页袖珍小册子)

介绍:这篇论文荣获EMNLP2015的最佳数据/资源奖优秀奖,标注的推特数据集

介绍:作者在深度学习的思考.

介绍:数据可视化常用工具软件资源汇总

介绍:Buffalo大学教授Sargur Srihari的“机器学习和概率图模型”的视频课程

介绍:耶路撒冷希伯来大学教授Shai Shalev-Shwartz和滑铁卢大学教授Shai Ben-David的新书Understanding Machine Learning: From Theory to Algorithms,此书写的比较偏理论,适合对机器学习理论有兴趣的同学选读

介绍:机器学习学习清单

介绍:知乎上面的一篇关于NLP界有哪些神级人物?提问。首推Michael Collins

介绍:机器学习与NLP专家、MonkeyLearn联合创始人&CEO Raúl Garreta面向初学者大体概括使用机器学习过程中的重要概念,应用程序和挑战,旨在让读者能够继续探寻机器学习知识。

介绍:(IPN)基于Scikit-Learn的GBRT(Gradient Boost Regression Tree)教程,slide

介绍: 无需做深度学习就能用的分布式深度学习软件.

介绍: 在亚马逊数据和众包Mechanical Turk上,实现了来自彩票和拍卖的机制,以收集用户对产品的乐意购买价格(WTP,willingness-to-pay)训练集。 E-commerce Recommendation with Personalized Promotion [Zhao,RecSys15] 回归模型预测未知WTP,提升卖家利润和消费者满意度

介绍:来自伯克利分校的大规模机器学习.

介绍:来自52ml的机器学习资料大汇总.

介绍:这本书的作者McKeown是2013年世界首个数据科学院(位于哥伦比亚大学)主任,她亦是ACL、AAAI和ACM Fellow .

介绍:EMNLP-15文本摘要若干.

介绍:来自Netflix的Xavier Amatriain在Summer School 2014 @ CMU上长达4小时的报告,共248页,是对推荐系统发展的一次全面综述,其中还包括Netflix在个性化推荐方面的一些经验介绍.

介绍:(ECML PKDD 2015)大数据流挖掘教程,此外推荐ECML PKDD 2015 Tutorial列表.

介绍:Spark上的Keras深度学习框架Elephas.

介绍:Surya Ganguli深度学习统计物理学.

介绍:(系统/算法/机器学习/深度学习/图模型/优化/...)在线视频课程列表.

介绍:(PyTexas 2015)Python主题建模.

介绍:Hadoop集群上的大规模分布式机器学习.

介绍:基于LinkedIn数据得出的深度学习热门"东家"排行.

介绍:(c++)神经网络手把手实现教程.

介绍:香港中文大学汤晓鸥教授实验室公布的大型人脸识别数据集: Large-scale CelebFaces Attributes (CelebA) Dataset 10K 名人,202K 脸部图像,每个图像40余标注属性.

介绍:面向机器视觉的无监督特征学习,Ross Goroshin's webpage.

介绍:谷歌研究院Samy Bengio等人最近写的RNN的Scheduled Sampling训练方法论文.

介绍:机器学习基本算法简要入门.

介绍:Github机器学习/数学/统计/可视化/深度学习相关项目大列表.

介绍:CMU的信息论课程.

介绍:谷歌研究院Samy Bengio等人最近写的RNN的Scheduled Sampling训练方法论文.

介绍:基于Hadoop集群的大规模分布式深度学习.

介绍:来自斯坦福大学及NVIDIA的工作,很实在很实用。采用裁剪网络连接及重训练方法,可大幅度减少CNN模型参数。针对AlexNet、VGG等模型及ImageNet数据,不损失识别精度情况下,模型参数可大幅度减少9-13倍.

介绍:无需做深度学习就能用的分布式深度学习软件,github.

介绍:当今世界最NB的25位大数据科学家,通过他们的名字然后放在google中搜索肯定能找到很多很棒的资源译文.

介绍:Nils Reimers面向NLP的深度学习(Theano/Lasagne)系列教程.

介绍:主讲人是陶哲轩,资料Probability: Theory and Examples,笔记.

介绍:数据科学(学习)资源列表.

介绍:应对非均衡数据集分类问题的八大策略.

介绍:重点推荐的20个数据科学相关课程.

介绍:递归神经网络.

介绍:(HOG)学习笔记.

介绍:计算建模/计算神经学课程汇总.

介绍:(Yelp)基于深度学习的商业图片分类.

介绍:免费在线书《Neural Networks and Deep Learning》神经网络与深度学习。目前提供了前四章的草稿,第一章通过手写数字识别的例子介绍NN,第二章讲反向传播算法,第三章讲反向传播算法的优化,第四章讲NN为什么能拟合任意函数。大量python代码例子和交互动画,生动有趣.中文版

介绍:数据科学大咖荐书(入门).

介绍:NLP 深度学习资源列表.

介绍:很多arXiv上面知名论文可以在这个网站找到github的项目链接.

介绍:深度学习在视觉跟踪的探索.

介绍:Spark机器学习入门实例——大数据集(30+g)二分类.

介绍:保罗艾伦人工智能实验室表示,Google Scholar是十年前的产物,他们现在想要做进一步的提高。于是推出了全新的,专门针对科学家设计的学术搜索引擎Semantic Scholar.

介绍:半监督学习,Chapelle.篇篇都是经典,作者包括Vapnik,Bengio,Lafferty,Jordan.此外推荐Xiaojin (Jerry) Zhu编写的Introduction to Semi-Supervised Learning.

介绍:Spark机器学习入门实例——大数据集(30+g)二分类.

介绍:为入门者准备的深度学习与神经网络免费资源.

介绍:Google 开源最新机器学习系统 TensorFlow,此外提供TensorFlow白皮书white paper of tensorflow 2015.hacker news,Google大牛解读TensorFlow

介绍:三星开源的快速深度学习应用程序开发分布式平台.

介绍:分布式机器学习工具包.

介绍:语义大数据——大数据/事件处理的语义方法.

介绍:LSTM(Long Short Term Memory)和RNN(Recurrent)学习教程.

介绍:Princeton Vision Group的深度学习库开源.

介绍:基于AWS的自动分布式科学计算库Ufora,Why I Open Sourced Five Years of Work.

介绍:(PyCon SE 2015)深度学习与深度数据科学.

介绍:推荐南京大学机器学习与数据挖掘研究所所长——周志华教授的Google学术主页.

介绍:免费书:面向数据科学的高级线性模型.

介绍:基于知识迁移的神经网络高效训练Net2Net.

介绍:徐亦达机器学习课程 Variational Inference.

介绍:深度神经网络结构学习.

介绍:来自斯坦福大学的Multimodal Deep Learning papers.

介绍:深度学习简析,TensorFlow,Torch,Theano,Mxnet.

介绍:这个专栏是一个stanford学生做的CS183c课程的一个note,该课程是由Reid Hoffman等互联网boss级人物开设的,每节课请一位巨头公司的相关负责人来做访谈,讲述该公司是怎么scale的。最新两期分别请到了雅虎的梅姐和airbnb创始人Brian Chesky。.

介绍:基于分布式表示的自然语言理解(100+页),论文.

介绍:推荐系统手册.

介绍:理解LSTM网络翻译.

介绍:机器学习在quora中的应用.

介绍:思维学习——RL+RNN算法信息论.

介绍:数据科学家毕业后继续学习的5种方式.

介绍:深度学习在神经网络的应用.

介绍:上下文学习,代码.

介绍:机器学习零基础入门,代码.

介绍:2015年度CCF优秀博士学位论文奖论文列表.

介绍:Learning to Hash Paper, Code and Dataset.

介绍:(PyData2015)基于Theano/Lasagne的CNN/RNN教程,github.

介绍:复旦大学邱锡鹏老师编写的神经网络与深度学习讲义,ppt.

介绍:微软亚洲研究院开源分布式机器学习工具包.

介绍:语音识别的技术原理浅析

介绍:迈克尔·I.乔丹的主页.根据主页可以找到很多资源。迈克尔·I.乔丹是知名的计算机科学和统计学学者,主要研究机器学习和人工智能。他的重要贡献包括指出了机器学习与统计学之间的联系,并推动机器学习界广泛认识到贝叶斯网络的重要性。

介绍:杰弗里·埃弗里斯特·辛顿 FRS是一位英国出生的计算机学家和心理学家,以其在神经网络方面的贡献闻名。辛顿是反向传播算法和对比散度算法的发明人之一,也是深度学习的积极推动者.通过他的主页可以发掘到很多Paper以及优秀学生的paper,此外推荐他的学生Yann Lecun主页

介绍:Yoshua Bengio是机器学习方向的牛人,如果你不知道可以阅读对话机器学习大神Yoshua Bengio(上),对话机器学习大神Yoshua Bengio(下)

介绍:google大规模深度学习应用演进

介绍:MIT出版的深度学习电子书,公开电子书

介绍:深度卷积神经网络(CNN)提取特征的数学理论

介绍:推荐微软亚洲研究院何恺明主页

介绍:《语音与语言处理》第三版(草稿)

介绍:Stanford新课"计算词汇语义学"

介绍:上海交大张志华老师的统计机器学习与机器学习导论视频链接:密码: r9ak .概率基础

介绍:computational linguistics and deep learning视频,推荐Deep Learning: An Introduction from the NLP Perspective

介绍:(BlackHat2015)深度学习应用之流量鉴别(协议鉴别/异常检测),[slide])(https://www.blackhat.com/docs/us-15/materials/us-15-Wang-The-Applications-Of-Deep-Learning-On-Traffic-Identification.pdf),material

介绍:一个推荐系统的Java库

介绍:多中心图的谱分解及其在网络入侵检测中的应用(MC-GPCA&MC-GDL)

介绍:用Python学计算统计学

介绍:datumbox-framework——Java的开源机器学习框架,该框架重点是提供大量的机器学习算法和统计检验,并能够处理中小规模的数据集

介绍:递归神经网络awesome系列,涵盖了书籍,项目,paper等

介绍:Pedro Domingos是华盛顿大学的教授,主要研究方向是机器学习与数据挖掘.在2015年的ACM webinar会议,曾发表了关于盘点机器学习领域的五大流派主题演讲.他的个人主页拥有很多相关研究的paper以及他的教授课程.

介绍:机器学习视频集锦

介绍:深度机器学习库与框架

介绍:这篇文章内的推荐系统资源很丰富,作者很有心,摘录了《推荐系统实战》内引用的论文.

介绍:(天文学)贝叶斯方法/MCMC教程——统计实战

介绍:免费书:统计稀疏学习,作者Trevor HastieRob Tibshirani都是斯坦福大学的教授,Trevor Hastie更是在统计学学习上建树很多

介绍:R分布式计算的进化,此外推荐(R)气候变化可视化,(R)马尔可夫链入门

介绍:Nervana Systems在Startup.ML的主题研讨会——情感分析与深度强化学习

介绍:深度学习卷积概念详解.

介绍:Python推荐系统开发库汇总.

介绍:超棒的神经网络课程,深入浅出介绍深度学习,由Hugo Larochelle(Yoshua Bengio的博士生,Geoffrey Hinton之前的博士后)主讲,强烈推荐.

介绍:斯坦福新课程,面向视觉识别的卷积神经网络(Fei-Fei Li & Andrej Karpathy),slides+video,homework.

介绍:NIPS 2015会议总结第一部分,第二部分.

介绍:python机器学习入门资料梳理.

介绍:牛津大学著名视觉几何组VGG在IJCV16年首卷首期: Reading Text in the Wild with Convolutional Neural Networks,Jaderberg。这篇期刊文章融合了之前两篇会议(ECCV14,NIPS14ws),定位和识别图片中的文本(叫text spotting)。 端到端系统: 检测Region + 识别CNN。论文、数据和代码.

介绍:计算机视觉的一个较大的数据集索引, 包含387个标签,共收录了314个数据集合,点击标签云就可以找到自己需要的库了.

介绍:Tombone 对 ICCV SLAM workshop 的总结: the future of SLAM, SLAM vs deep learning 重点介绍了 monoSLAM 和 LSD-SLAM,而且讨论了 feature-based 和 feature-free method 的长短。在全民deep learning做visual perception的时候,再来读读CV中的 geometry.

介绍:Nervana Systems的开源深度学习框架neon发布.

介绍:ICCV 2015的ImageNet比赛以及MS COCO竞赛联合研讨会的幻灯片和视频.

介绍:Python机器学习入门.

介绍:Neural Enquirer 第二版.

介绍:[Google]基于TensorFlow的深度学习/机器学习课程.

介绍:R-bloggers网站2015"必读"的100篇文章,R语言学习的福音.

介绍:推荐书籍:<机器学习:概率视角>,样章Undirected graphical models Markov random fields.

介绍:这是一本在线的深度学习书籍,合著者有Ian Goodfellow, Yoshua Bengio 和 Aaron Courville.如果你是一位新入门的学员可以先看这本书籍Yoshua Bengio: How can one get started with machine learning?

介绍:UFLDL推荐的深度学习阅读列表.

介绍:纽约州立大学布法罗分校2015年春季机器学习课程主页.

介绍: Theano是主流的深度学习Python库之一,亦支持GPU,入门比较难.推荐Theano tutorial,Document

介绍:博士论文:神经网络统计语言模型.

介绍:文本数据的机器学习自动分类方法(下).

介绍:用RNN预测像素,可以把被遮挡的图片补充完整.

介绍:微软研究院把其深度学习工具包CNTK,想进一步了解和学习CNTK的同学可以看前几天公布的《CNTK白皮书》An Introduction to Computational Networks and the Computational Network Toolkit.

介绍: 卡尔曼滤波器教材,用尽量少的数学和推导,传授直觉和经验,全部Python示例,内容覆盖卡尔曼滤波器、扩展卡尔曼滤波,无迹卡尔曼滤波等,包括练习和参考答案

介绍:在线免费书:面向数据科学的统计推断,R示例代码,很不错GitHub.

介绍:这本书是由Yoshua Bengio撰写的教程,其内容包含了学习人工智能所使用的深度学习架构的学习资源,书中的项目已停止更新DeepLearnToolbox.

介绍:这是一份机器学习和深度学习教程,文章和资源的清单。这张清单根据各个主题进行撰写,包括了许多与深度学习有关的类别、计算机视觉、加强学习以及各种架构.

介绍:这是由Donne Martin策划收集的IPython笔记本。话题涵盖大数据、Hadoop、scikit-learn和科学Python堆栈以及很多其他方面的内容。至于深度学习,像是TensorFlow、Theano和Caffe之类的框架也均被涵盖其中,当然还有相关的特定构架和概念等.

介绍:开源的深度学习服务,DeepDetect是C++实现的基于外部机器学习/深度学习库(目前是Caffe)的API。给出了图片训练(ILSVRC)和文本训练(基于字的情感分析,NIPS15)的样例,以及根据图片标签索引到ElasticSearch中github.

介绍:这是国外的一个科技频道,涵盖了数据挖掘,分析以及数据科学类的文章.偶尔还有机器学习精选.

介绍:经典论文:数据挖掘与统计学.

介绍:NIPS’2015 Tutorial by Yoshua Bengio.

介绍:Nervana Systems的开源深度学习框架neon发布.

介绍:犹他州大学Matt Might教授推荐的研究生阅读清单.

介绍:开放数据集.

介绍:(edX)不确定性的科学——概率论导论(MITx).

介绍:R语言开发常用软件/工具推荐.

介绍:动态记忆网络实现.

介绍:英文主页

介绍:50个大数据分析最佳学习资源(课程、博客、教程等)

介绍:深度学习的全面硬件指南,从GPU到RAM、CPU、SSD、PCIe,译文

介绍:kaiming开源作品

介绍:自然语言处理(NLP)权威指南

介绍:如何在社会媒体上做语言检测?没有数据怎么办?推特官方公布了一个十分难得的数据集:12万标注过的Tweets,有70种语言

介绍:深度学习和机器学习重要会议ICLR 2016录取文章

介绍:机器学习——深度非技术指南

介绍:数据叙事入门指南——创意生成/数据采集/内容设计相关资源推荐

介绍:WikiTableQuestions——复杂真实问答数据集

介绍:(2016版)35个超棒的免费大数据源

介绍:Ion Stoica和 Michael I. Jordan两位大家首次联手发文,CAFFE和SPARK完美结合,分布式深度学习混搭模式!github

介绍:深度学习(分类)文献集

介绍:深度学习阅读列表

介绍:探索R包的好网站Awesome 42

介绍:MLbase是Prof. Dr. Tim Kraska的一个研究项目,MLbase是一个分布式机器学习管理系统

介绍:分布式深度学习平台SINGA介绍

介绍:Spark视频集锦

介绍:R语言深度学习第一节:从零开始

介绍:图解机器学习

介绍:AMiner论文引用数据集(v7:2,244,021 papers and 4,354,534 citation relationships)

介绍:10本最佳机器学习免费书

介绍:ICCV15视频集

介绍::(Yahoo)基于Hadoop/Spark的分布式Caffe实现CaffeOnSpark

介绍:Learning to Rank简介

介绍:全球深度学习专家列表,涵盖研究者主页

介绍:Spark生态顶级项目汇总

介绍:ACM IUI'16论文集Conference Navigator - Proceedings

介绍:深入机器学习,2,3,4

介绍:Nando de Freitas在 Oxford 开设的深度学习课程,课程youtube地址,Google DeepMind的研究科学家,此外首页:computervisiontalks的内容也很丰富,如果你是做机器视觉方面的研究,推荐也看看其他内容.肯定收获也不小.还有,这位youtube主页顶过的视频也很有份量

介绍:Geoffrey Hinton在Coursera开设的MOOC

介绍:深度学习领域的Hacker news.紧跟深度学习的新闻、研究进展和相关的创业项目。从事机器学习,深度学习领域的朋友建议每天看一看

介绍:Maxout网络剖析

介绍:NIPS领域的会议paper集锦

介绍:机器学习在生物工程领域的应用,如果你从事生物工程领域,可以先阅读一篇文章详细介绍

介绍:深度学习在生物信息学领域的应用

介绍:一些关于机器学习需要知道知识,对于刚刚入门机器学习的同学应该读一读

介绍:剑桥大学机器学习用户组主页,网罗了剑桥大学一些机器学习领域专家与新闻

介绍:Randy Olson's的一些数据分析与机器学习项目库,是学习实践的好材料

介绍:Golang机器学习库,简单,易扩展

介绍:用Swift开发苹果应用的倒是很多,而用来做机器学习的就比较少了.Swift Ai在这方面做了很多聚集.可以看看

介绍:如何向一位5岁的小朋友解释支持向量机(SVM)

介绍: reddit的机器学习栏目

介绍: 计算机视觉领域的一些牛人博客,超有实力的研究机构等的网站链接.做计算机视觉方向的朋友建议多关注里面的资源

介绍:香港中文大学深度学习研究主页,此外研究小组对2013年deep learning 的最新进展和相关论文做了整理,其中useful links的内容很受益

介绍: 这是一篇关于搜索引擎的博士论文,对现在普遍使用的搜索引擎google,bing等做了分析.对于做搜索类产品的很有技术参考价值

介绍: 深度学习书籍推荐(毕竟这类书比较少).

介绍: 深度学习书籍推荐(毕竟这类书比较少).

介绍: 贝叶斯定理在深度学习方面的研究论文.

介绍: 来自谷歌大脑的重温分布式梯度下降.同时推荐大规模分布式深度网络

介绍: 社交计算研究相关问题综述.

介绍: 社交计算应用领域概览,里面有些经典论文推荐

介绍: 协同过滤在推荐系统应用.

介绍: 协同过滤在内容推荐的研究.

介绍: 协同过滤经典论文.

介绍: 协同过滤算法.

介绍: 亚马逊对于协同过滤算法应用.

介绍: 协同过滤的隐式反馈数据集处理.

介绍: 计算机图形,几何等论文,教程,代码.做计算机图形的推荐收藏.

介绍: 推荐哥伦比亚大学课程,稀疏表示和高维几何.12年由Elsevier、13年至今由PAMI(仍由Elsevier赞助)设立的青年研究者奖(Young Researcher Award)授予完成博士学位后七年内取得杰出贡献的;由CV社区提名,在CVPR会议上宣布。2015年得主是哥大助理教授John Wright,09年《健壮人脸识别的稀疏表示法》引用已超5K.

介绍: CMU机器学习系著名教授Alex Smola在Quora对于《程序员如何学习Machine Learning》的建议:Alex推荐了不少关于线性代数、优化、系统、和统计领域的经典教材和资料.

介绍: 书籍推荐,深度学习基础.源码

介绍: 软件工程领域现在也对机器学习和自然语言处理很感兴趣,有人推出了“大代码”的概念,分享了不少代码集合,并且觉得ML可以用在预测代码Bug,预测软件行为,自动写新代码等任务上。大代码数据集下载

介绍: 深度学习进行目标识别的资源列表:包括RNN、MultiBox、SPP-Net、DeepID-Net、Fast R-CNN、DeepBox、MR-CNN、Faster R-CNN、YOLO、DenseBox、SSD、Inside-Outside Net、G-CNN

介绍: Yann LeCun 2016深度学习课程的幻灯片(Deep Learning Course by Yann LeCun at Collège de France 2016)百度云密码: cwsm 原地址

介绍: 斯坦福人机交互组五篇CHI16文章。1.众包激励机制的行为经济学研究:批量结算比单任务的完成率高。2.在众包专家和新手间建立联系:微实习。3.词嵌入结合众包验证的词汇主题分类(如猫、狗属于宠物)。4.词嵌入结合目标识别的活动预测。5.鼓励出错以加快众包速度。

介绍: 自学数据科学

介绍: 本课是CS224D一节介绍TensorFlow课程,ppt,DeepDreaming with TensorFlow

介绍: Leaf是一款机器学习的开源框架,专为黑客打造,而非为科学家而作。它用Rust开发,传统的机器学习,现今的深度学习通吃。Leaf

介绍: GTC 2016视频,MXnet的手把手深度学习tutorial,相关参考资料MXNet Tutorial for NVidia GTC 2016.

介绍: OpenAI Gym:开发、比较强化学习算法工具箱

介绍: 机器学习会议ICLR 2016 论文的代码集合

介绍: 此书是斯坦福大学概率图模型大牛Daphne Koller所写,主要涉及的是贝叶斯网络和马尔科夫逻辑网络的learning和inference问题,同时又对PGM有深刻的理论解释,是学习概率图模型必看的书籍。难度中上,适合有一些ML基础的研究生.备份地址

介绍: 此书是剑桥大学著名信息论专家David MacKay所写,出发角度与很多机器学习的书籍都不一样,inference和MCMC那章写的最好,难度中。适合研究生和本科生。

介绍: 非常好的Convex Optimization教材,覆盖了各种constrained和unconstrained optimization方法,介绍了convex优化的基本概念和理论。难度中,适合对优化和机器学习有一定基础的人群

介绍: 本书是CMU机器学习系主任Mitchell早年写的机器学习教科书,年代有点久远.难度不高。适合初学者,本科生,研究生

介绍: 本书设计学习Kernel和SVM的各种理论基础,需要较强的数学功底,适合对kernel和SVM感兴趣的同学选读Learning with Kernels PPT,参考Learning with Kernels

介绍: 斯坦福统计系三位大神的统计学习教科书,偏统计和学习理论,需要对线性代数、统计和概率论有一定基础、难度高、适合研究生

介绍: 本书是著名机器学习工具Weka作者撰写的应用机器学习指导书、非常实用、难度低、适合文科和各种应用科学做参考

介绍: 本书也是一本比较受欢迎的NLP教科书,难度一般,主要覆盖统计NLP方法,是斯坦福的另一位大牛Chirs manning所写

介绍: 在北美NLP最常用的教材,斯坦福Jurafsky所写的自然语言处理入门教程,覆盖面较为全面,难度中低。适合本科生和研究生

介绍: 实战型教程,著名工具NLTK作者的著作,适合本科生和入门者边动手边学

介绍: 自然语言处理学习工具包,帮助你理解什么是自然语言处理

介绍: 基于Attention共享机制的多通道/多语言感知机器翻译模型

介绍: 斯坦福2016年机器学习春季课程

介绍: 我们深度学习,做数据处理。究竟深度学习可以用来做什么?什么场景下引入深度学习要必传统的数据处理方式要好?初学者可以先看看这篇文章

介绍: KDD16论文是双轨制:分为研究和应用数据科学(之前叫工业&政府),均是10页。前者录取142篇(口头70+展报72),后者录取66篇(口头40+展报26) ,共计208篇。去年录取率:160/819=19.5%。 高产作者:九篇Hui Xiong;七篇Jieping Ye;五篇Hengshu Zhu。高产机构:十篇Tsinghua University;九篇Carnegie Mellon University、Rutgers;八篇Stanford University。高频词:learning online networks[评论来自:学生古]

介绍: 医疗数据

介绍: Matlab小技巧

介绍: TensorFlow基本原理

介绍: 电子书,机器学习课程

介绍: 国际机器学习会议PPT提供下载

使用 Jackson 轻松构造 JSON数据

$
0
0
原文地址:http://kdpeterson.net/blog/2009/03/easy-json-with-jackson.html 本文:http://www.paymoon.com:8001/index.php/2016/09/12/easy-json-with-jackson/ 有时候一个随意的选择可能导致一个大问题。在我们开发社交媒体产品的早期,我们决定使用JSON格式将数据存储到 HDFS中。这个想法后来被证实非常棒。它的(JSON)性能非常好,当你需要查看一个文件对象时,读取它非常方便 ,而且几乎每一种语言都有对应的JSON库文件,这让你能够在你所选择的语言中轻松进行流的写入操作。   但是,我们所选择的JSON库却令我们感到不如意。net.sf.json库相对于www.json.org上的代码来说,是一个非常大 的改进,但是这个库却有轻微的内存泄露问题。这个库使用一个基于ThreadLocal中HashMap保存对象,这使得循环 检测速度更快。但是,当我们试图通过同一个Mapper对象发送GB级别的数据时,这个库的性能就会变得非常糟糕— —因为它会保存每个反序列化对象的引用(这个特点就会导致严重的性能问题:内存泄露)。   刚开始项目时,我们对Hadoop并不熟悉,因此,我们起初并没有意识到JSON库造成了内存泄露问题。我们以为这只 是一个暂时的性能问题。因此,当内存耗尽时,我们就增加更多的内存,但是内存泄露问题却仍然存在!最后,一个 堆的转存为我们指明了正确的方向,明确方向后,就很容易找到可疑代码所在了。   发现问题原因后(json-lib库导致的),我们才做起初就应该做的事情:向邮件列表求助(邮件列表指用户反馈清单) 。我们快速预览了Hadoop核心用户所发的邮件列表,发现其中有一个人,在使用json-lib库的时候,已经遇到过和我 们相同的问题(报告这个Bug之后,json-lib迅速进行了修复)。另外还有两个人推荐使用Jaskson JSON Processor( 来做对象的JSON序列化与反序列化)。相比 json-lib,Jackson 库更好用、更简单!   下面就是一个简单的例子,展示了如何利用Jackson JSON库读写Java对象 [crayon-57d7c0032e637165400043/]
如果你发现上面的代码很有用,请自由使用。这些代码是我在家里写的,相对于我工作中所写的代码来说,这是一个 改进(这是我第一次看到Jackson库时写的)。

jackson 读写树

$
0
0
在Java平台(StAX, JAXB等)XML处理质量和多样化的激励下,Jackson为多功能的Java JSON处理包其目标为集快捷、正确、轻量和符合人体工程学与一体。 本文将给出Jackson的功能概览。 JSON的三种处理方式 Jackson提供了三种可选的JSON处理方法(一种方式及其两个变型):
  • 流式 API:(也称为"增量分析/生成") 读取和写入 JSON 内容作为离散事件。
    • org.codehaus.jackson.JsonParser 读, org.codehaus.jackson.JsonGenerator 写。
    • StAX API 的激励。
  • 树模型 :提供一个 JSON 文档可变内存树的表示形式。
    • org.codehaus.jackson.map.ObjectMapper 生成树 ;树组成 JsonNode 节点集。
    • 树模型类似于 XML DOM。
  • 数据绑定: JSON和POJO相互转换,基于属性访问器规约或注解。
    • 有两种变体: 简单 和 完整 的数据绑定:
    • 简单数据绑定: 是指从Java Map、List、String、Numbers、Boolean和空值进行转换
    • 完整数据绑定 :是指从任何 Java bean 类型 (及上文所述的"简单"类型) 进行转换
    • org.codehaus.jackson.map.ObjectMapper 对两个变种,进行编组(marshalling )处理 (写入 JSON) 和反编组(unmarshalling ,读 JSON)。
    • JAXB激励下的基于注释的 (代码优先)变种。
从使用的角度来看,总结这些3 种方法的用法如下:
  • 流 API: 性能最佳的方式 (最低开销、 速度最快的读/写; 其它二者基于它实现)。
  • 数据绑定 :使用最方便的方式。
  • 树模型: 最灵活的方式。
鉴于这些特性,让我们考虑以相反的顺序,以Java开发人员最自然和方便的方法开始使用: 杰Jackson数据绑定 API。 Jackson的 org.codehaus.jackson.map.ObjectMapper "只是"将JSON 数据映射为POJO对象 。例如,给定JSON数据:
1
2
3
4
5
6
{
      "name" : { "first" : "Joe", "last" : "Sixpack" },
      "gender" : "MALE",
      "verified" : false,
      "userImage" : "Rm9vYmFyIQ=="
}
用两行代码把它变成一个用户实例:
1
2
ObjectMapper mapper = new ObjectMapper(); // can reuse, share globally
User user = mapper.readValue(new File("user.json"), User.class);
用户类大致如下(源自另一博客):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
public class User {
  private Gender _gender;
  private Name _name;
  private boolean _isVerified;
  private byte[] _userImage;
  public Name getName() {
    return _name;
  }
  public boolean isVerified() {
    return _isVerified;
  }
  public Gender getGender() {
    return _gender;
  }
  public byte[] getUserImage() {
    return _userImage;
  }
  public void setName(final Name n) {
    _name = n;
  }
  public void setVerified(final boolean b) {
    _isVerified = b;
  }
  public void setGender(final Gender g) {
    _gender = g;
  }
  public void setUserImage(final byte[] b) {
    _userImage = b;
  }
  public static class Name {
    private String _first;
    private String _last;
    public String getFirst() {
      return _first;
    }
    public String getLast() {
      return _last;
    }
    public void setFirst(final String s) {
      _first = s;
    }
    public void setLast(final String s) {
      _last = s;
    }
  }
  public enum Gender {
    MALE,
    FEMALE;
  }
}
编组为JSON同样简单:
1
mapper.writeValue(new File("user-modified.json"), user);
对于更复杂的数据绑定 (例如,反编排格式日期到 java.util.Date),Jackson提供注解来自定义编排和反编排的处理过程。 简单的数据绑定示例 如果你没有 (或不想创建)从 JSON到 Java 的相互转化类,简单数据绑定可能是更好的方法。它用相同方式实现完整的数据绑定,除非形式化绑定类型只指定为 Object.class (或 Map.class, List.class,即使需要更多的类型定义)。因此早期绑定JSON的用户数据可能如此实现:
1
Map<String,Object> userData = mapper.readValue(new File("user.json"), Map.class);
userData 像一个的显式结构:
1
2
3
4
5
6
7
8
Map<String,Object> userData = new HashMap<String,Object>();
Map<String,String> nameStruct = new HashMap<String,String>();
nameStruct.put("first", "Joe");
nameStruct.put("last", "Sixpack");
userData.put("name", nameStruct);
userData.put("gender", "MALE");
userData.put("verified", Boolean.FALSE);
userData.put("userImage", "Rm9vYmFyIQ==");
这显然是双向的: 如果利用诸如Map 的结构构建(或从 JSON绑定及修改),也可以如前法实现:
1
Map<String,Object> userData = mapper.readValue(new File("user.json"), Map.class);
将如何工作呢? 只定义了Map.class,未定义一般的Key/valie类型,但ObjectMapper 却知晓与Map(及List、数组、wrapper类型 )之间如何相互转换,仅是如此即可。如果它可以正确地映射到您所提供的类型,它将被映射。 Jackson将使用简单数据绑定的具体Java 类型包括:
JSON Type Java Type
object LinkedHashMap<String,Object>
array ArrayList<Object>
string String
number(no fraction) Integer, Long or BigInteger (smallest applicable)
number (fraction) BigDecimal
true|false boolean
null null
泛型的数据绑定 除绑定到POJO和简单类型外,还有一个额外的变型:绑定到泛型(类型)容器。此时,由于所谓的类型擦除(Java采用向后兼容的方式实现泛型),需要进行特殊处理,以防止使用类似 Collection<String>.class(不被编译)。 所以,热想绑定数据岛Map<String,User>,方式如下:
1
Map<String,User> result = mapper.readValue(src, new TypeReference<Map<String,User>>() { });
其中TypeReference只需传入泛型类型即可(此时需要匿名内部类):重要部分为<Map<String,User>>,定义要绑定的数据类型。 若不如此(仅定义Map.class),其调用等价于绑定到 Map<?,?>(亦即 “untyped” Map),如前所述。 更新:1.3版的Jackson允许利用TypeFactory实现构造类型。 树模式示例 另一种从JSON获取对象方式是构造“树”,类似于XML的DOM树。Jackson构造树的方法利用JsonNode基类,其中包含公开的通常所需的读取访问方法,实际所用的节点类型为其子类;但子类型仅在修改树时需要。 JSON树可通过流式API或ObjectMapper方式读、写。 利用 ObjectMapper,方法如下:
1
2
3
4
5
6
7
8
9
10
11
ObjectMapper m = new ObjectMapper();
// can either use mapper.readTree(JsonParser), or bind to JsonNode
JsonNode rootNode = m.readValue(new File("user.json"), JsonNode.class);
// ensure that "last name" isn't "Xmler"; if is, change to "Jsoner"
JsonNode nameNode = rootNode.path("name");
String lastName = nameNode.path("last").getTextValue().
if ("xmler".equalsIgnoreCase(lastName)) {
  ((ObjectNode)nameNode).put("last", "Jsoner");
}
// and write it out:
m.writeValue(new File("user-modified.json"), rootNode);
或你想马上构造一棵树,方法如下:
1
2
3
4
5
6
7
8
9
TreeMapper treeMapper = new TreeMapper();
ObjectNode userOb = treeMapper.objectNode();
Object nameOb = userRoot.putObject("name");
nameOb.put("first", "Joe");
nameOb.put("last", "Sixpack");
userOb.put("gender", User.Gender.MALE.toString());
userOb.put("verified", false);
byte[] imageData = getImageData(); // or wherever it comes from
userOb.put("userImage", imageData);
(注意: Jackson 1.2可直接使用ObjectMapper:通过ObjectMapper.createObjectNode()创建userOb -- 上例工作于Jackson 1.0 和 1.1)。 流式 API 示例 最后,还有第三种方式: 涡轮增压、 高性能的方法称为流 API (或增量模式,因为内容是增量读取和写入的)。 只是为了好玩,让我们实现使用"原生"Stream  API 的写入功能 (相当于前面示例): WriteJSON.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
JsonFactory f = new JsonFactory();
JsonGenerator g = f.createJsonGenerator(new File("user.json"));
g.writeStartObject();
g.writeObjectFieldStart("name");
g.writeStringField("first", "Joe");
g.writeStringField("last", "Sixpack");
g.writeEndObject(); // for field 'name'
g.writeStringField("gender", Gender.MALE);
g.writeBooleanField("verified", false);
g.writeFieldName("userImage"); // no 'writeBinaryField' (yet?)
byte[] binaryData = ...;
g.writeBinary(binaryData);
g.writeEndObject();
g.close(); // 重要:强制写入输出,并关闭输出流!
非常不错 (尤其是相对写入所需的工作量,亦即等效的 XML 内容),但肯定比基本对象映射更辛苦。 另一方面,必须完全控制每一个细节。开销很小: 这仍然快于使用 ObjectMapper;并非快很多 ,但还是要快些(一般快或许 20-30%)。也许最重要的是,以流方式输出: 除一些缓冲外,所有内容都将马上输出。这意味着该方式内存使用量也是最小的。 然后如何解析呢?代码可能看起来类似:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
JsonFactory f = new JsonFactory();
JsonParser jp = f.createJsonParser(new File("user.json"));
User user = new User();
jp.nextToken(); // will return JsonToken.START_OBJECT (verify?)
while (jp.nextToken() != JsonToken.END_OBJECT) {
    String fieldname = jp.getCurrentName();
    jp.nextToken(); // move to value, or START_OBJECT/START_ARRAY
    if ("name".equals(fieldname)) { // contains an object
        Name name = new Name();
        while (jp.nextToken() != JsonToken.END_OBJECT) {
            String namefield = jp.getCurrentName();
            jp.nextToken(); // move to value
            if ("first".equals(namefield)) {
                name.setFirst(jp.getText());
            } else if ("last".equals(namefield)) {
                name.setLast(jp.getText());
            } else {
                throw new IllegalStateException("Unrecognized field '" + fieldname + "'!");
            }
        }
        user.setName(name);
    } else if ("gender".equals(fieldname)) {
        user.setGender(Gender.valueOf(jp.getText()));
    } else if ("verified".equals(fieldname)) {
        user.setVerified(jp.getCurrentToken() == JsonToken.VALUE_TRUE);
    } else if ("userImage".equals(fieldname)) {
        user.setUserImage(jp.getBinaryValue());
    } else {
        throw new IllegalStateException("Unrecognized field '" + fieldname + "'!");
    }
}
jp.close(); // ensure resources get cleaned up timely and properly
这是不是您将更多使用的数据绑定方法。 最后提醒的一个窍门: 可可能通过JsonParser 和 JsonGeneratorit 直接实现数据绑定和树模式。请参阅如下方法:
1
2
3
4
JsonParser.readValueAs()
JsonParser.readValueAsTree()
JsonGenerator.writeObject()
JsonGenerator.writeTree()
将实现你期望的结果。 切记,确保所用的 org.codehaus.jackson.map.MappingJsonFactory是"适用数据绑定“的解析器和生成器实例(而非基本的org.codehaus.jackson.JsonFactory)。 原文:http://simpleframework.net/news/view?newsId=15d30bbad7954851ab14aaae4f7d9f5b

[ 机器学习][学习路线]基本概念/要领/入门/资料

$
0
0

1. 引言

也许你和这个叫『机器学习』的家伙一点也不熟,但是你举起iphone手机拍照的时候,早已习惯它帮你框出人脸;也自然而然点开今日头条推给你的新闻;也习惯逛淘宝点了找相似之后货比三家;亦或喜闻乐见微软的年龄识别网站结果刷爆朋友圈。恩,这些功能的核心算法就是机器学习领域的内容。 套用一下大神们对机器学习的定义,机器学习研究的是计算机怎样模拟人类的学习行为,以获取新的知识或技能,并重新组织已有的知识结构使之不断改善自身。简单一点说,就是计算机从数据中学习出规律和模式,以应用在新数据上做预测的任务。近年来互联网数据大爆炸,数据的丰富度和覆盖面远远超出人工可以观察和总结的范畴,而机器学习的算法能指引计算机在海量数据中,挖掘出有用的价值,也使得无数学习者为之着迷。 但是越说越觉得机器学习有距离感,云里雾里高深莫测,我们不是专家,但说起算有一些从业经验,做过一些项目在实际数据上应用机器学习。这一篇就我们的经验和各位同仁的分享,总结一些对于初学者入门有帮助的方法和对进阶有用的资料。 www.paymoon.com:8001/index.php/2016/09/14/ml-how-to-begin-ml/ 人工智能

2. 机器学习关注问题

并非所有的问题都适合用机器学习解决(很多逻辑清晰的问题用规则能很高效和准确地处理),也没有一个机器学习算法可以通用于所有问题。咱们先来了解了解,机器学习,到底关心和解决什么样的问题。 从功能的角度分类,机器学习在一定量级的数据上,可以解决下列问题: 1.分类问题
  • 根据数据样本上抽取出的特征,判定其属于有限个类别中的哪一个。比如:
    • 垃圾邮件识别(结果类别:1、垃圾邮件 2、正常邮件)
    • 文本情感褒贬分析(结果类别:1、褒 2、贬)
    • 图像内容识别识别(结果类别:1、喵星人 2、汪星人 3、人类 4、草泥马 5、都不是)。
2.回归问题
  • 根据数据样本上抽取出的特征,预测一个连续值的结果。比如:
    • 星爷《美人鱼》票房
    • 大帝都2个月后的房价
    • 隔壁熊孩子一天来你家几次,宠幸你多少玩具
3.聚类等问题
  • 根据数据样本上抽取出的特征,让样本抱抱团(相近/相关的样本在一团内)。比如:
    • google的新闻分类
    • 用户群体划分
我们再把上述常见问题划到机器学习最典型的2个分类上。
  • 分类与回归问题需要用已知结果的数据做训练,属于“监督学习”
  • 聚类的问题不需要已知标签,属于“非监督学习”
如果在IT行业(尤其是互联网)里溜达一圈,你会发现机器学习在以下热点问题中有广泛应用: 1.计算机视觉
  • 典型的应用包括:人脸识别、车牌识别、扫描文字识别、图片内容识别、图片搜索等等。
2.自然语言处理
  • 典型的应用包括:搜索引擎智能匹配、文本内容理解、文本情绪判断,语音识别、输入法、机器翻译等等。
3.社会网络分析
  • 典型的应用包括:用户画像、网络关联分析、欺诈作弊发现、热点发现等等。
4.推荐
  • 典型的应用包括:虾米音乐的“歌曲推荐”,某宝的“猜你喜欢”等等。

3. 入门方法与学习路径

OK,不废话,直接切重点丢干货了。看似学习难度大,曲线陡的机器学习,对大多数入门者也有一个比较通用的学习路径,也有一些优秀的入门资料可以降低大家的学习门槛,同时激发我们的学习乐趣。 www.paymoon.com:8001/index.php/2016/09/14/ml-how-to-begin-ml/ 简单说来,大概的一个学习路径如下:
路径图
简单说一点,之所以最左边写了『数学基础』『典型机器学习算法』『编程基础』三个并行的部分,是因为机器学习是一个将数学/算法理论和工程实践紧密结合的领域,需要扎实的理论基础帮助引导数据分析与模型调优,同时也需要精湛的工程开发能力去高效化地训练和部署模型和服务。 需要多说一句的是,在互联网领域从事机器学习的人,有2类背景的人比较多,其中一部分(很大一部分)是程序员出身,这类同学工程经验相对会多一些,另一部分是学数学统计领域的同学,这部分同学理论基础相对扎实一些。因此对比上图,2类同学入门机器学习,所欠缺和需要加强的部分是不一样的。 下面就上述图中的部分,展开来分别扯几句:

3.1 数学基础

有无数激情满满大步向前,誓要在机器学习领域有一番作为的同学,在看到公式的一刻突然就觉得自己狗带了。是啊,机器学习之所以相对于其他开发工作,更有门槛的根本原因就是数学。每一个算法,要在训练集上最大程度拟合同时又保证泛化能力,需要不断分析结果和数据,调优参数,这需要我们对数据分布和模型底层的数学原理有一定的理解。所幸的是如果只是想合理应用机器学习,而不是做相关方向高精尖的research,需要的数学知识啃一啃还是基本能理解下来的。至于更高深的部分,恩,博主非常愿意承认自己是『数学渣』。 基本所有常见机器学习算法需要的数学基础,都集中在微积分、线性代数和概率与统计当中。下面我们先过一过知识重点,文章的后部分会介绍一些帮助学习和巩固这些知识的资料。

3.1.1 微积分

  • 微分的计算及其几何、物理含义,是机器学习中大多数算法的求解过程的核心。比如算法中运用到梯度下降法、牛顿法等。如果对其几何意义有充分的理解,就能理解“梯度下降是用平面来逼近局部,牛顿法是用曲面逼近局部”,能够更好地理解运用这样的方法。
  • 凸优化和条件最优化 的相关知识在算法中的应用随处可见,如果能有系统的学习将使得你对算法的认识达到一个新高度。

3.1.2 线性代数

  • 大多数机器学习的算法要应用起来,依赖于高效的计算,这种场景下,程序员GG们习惯的多层for循环通常就行不通了,而大多数的循环操作可转化成矩阵之间的乘法运算,这就和线性代数有莫大的关系了
  • 向量的内积运算更是随处可见。
  • 矩阵乘法与分解在机器学习的主成分分析(PCA)和奇异值分解(SVD) 等部分呈现刷屏状地出现。

3.1.3 概率与统计

从广义来说,机器学习在做的很多事情,和统计层面数据分析和发掘隐藏的模式,是非常类似的。
  • 极大似然思想、贝叶斯模型 是理论基础,朴素贝叶斯(Naïve Bayes )、语言模型(N-gram)、隐马尔科夫(HMM)、隐变量混合概率模型是他们的高级形态。
  • 常见分布如高斯分布是混合高斯模型(GMM)等的基础。

3.2 典型算法

绝大多数问题用典型机器学习的算法都能解决,粗略地列举一下这些方法如下:
  1. 处理分类问题的常用算法包括:逻辑回归(工业界最常用),支持向量机,随机森林,朴素贝叶斯(NLP中常用),深度神经网络(视频、图片、语音等多媒体数据中使用)
  2. 处理回归问题的常用算法包括:线性回归,普通最小二乘回归(Ordinary Least Squares Regression),逐步回归(Stepwise Regression),多元自适应回归样条(Multivariate Adaptive Regression Splines)
  3. 处理聚类问题的常用算法包括:K均值(K-means),基于密度聚类,LDA等等。
  4. 降维的常用算法包括:主成分分析(PCA),奇异值分解(SVD) 等。
  5. 推荐系统的常用算法:协同过滤算法
  6. 模型融合(model ensemble)和提升(boosting)的算法包括:bagging,adaboost,GBDT,GBRT
  7. 其他很重要的算法包括:EM算法等等。
我们多插一句,机器学习里所说的“算法”与程序员所说的“数据结构与算法分析”里的“算法”略有区别前者更关注结果数据的召回率、精确度、准确性等方面,后者更关注执行过程的时间复杂度、空间复杂度等方面。 。当然,实际机器学习问题中,对效率和资源占用的考量是不可或缺的。

3.3 编程语言、工具和环境

看了无数的理论与知识,总归要落到实际动手实现和解决问题上。而没有工具所有的材料和框架、逻辑、思路都给你,也寸步难行。因此我们还是得需要合适的编程语言、工具和环境帮助自己在数据集上应用机器学习算法,或者实现自己的想法。对初学者而言,Python和R语言是很好的入门语言,很容易上手,同时又活跃的社区支持,丰富的工具包帮助我们完成想法。相对而言,似乎计算机相关的同学用Python多一些,而数学统计出身的同学更喜欢R一些。我们对编程语言、工具和环境稍加介绍:

3.3.1 python

python有着全品类的数据科学工具,从数据获取、数据清洗到整合各种算法都做得非常全面。
  • 网页爬虫: scrapy
  • 数据挖掘:
    • pandas:模拟R,进行数据浏览与预处理。
    • numpy:数组运算。
    • scipy:高效的科学计算。
    • matplotlib:非常方便的数据可视化工具。
  • 机器学习:
    • scikit-learn:远近闻名的机器学习package。未必是最高效的,但是接口真心封装得好,几乎所有的机器学习算法输入输出部分格式都一致。而它的支持文档甚至可以直接当做教程来学习,非常用心。对于不是非常高纬度、高量级的数据,scikit-learn胜任得非常好(有兴趣可以看看sklearn的源码,也很有意思)。
    • libsvm:高效率的svm模型实现(了解一下很有好处,libsvm的系数数据输入格式,在各处都非常常见)
    • keras/TensorFlow:对深度学习感兴趣的同学,也能很方便地搭建自己的神经网络了。
  • 自然语言处理:
    • nltk:自然语言处理的相关功能做得非常全面,有典型语料库,而且上手也非常容易。
  • 交互式环境:
    • ipython notebook:能直接打通数据到结果的通道,方便至极。强力推荐。

3.3.2 R

R最大的优势是开源社区,聚集了非常多功能强大可直接使用的包,绝大多数的机器学习算法在R中都有完善的包可直接使用,同时文档也非常齐全。常见的package包括:RGtk2, pmml, colorspace, ada, amap, arules, biclust, cba, descr, doBy, e1071, ellipse等等。另外,值得一提的是R的可视化效果做得非常不错,而这对于机器学习是非常有帮助的。

3.3.3 其他语言

相应资深程序员GG的要求,再补充一下Java和C++相关机器学习package。

3.3.4 大数据相关

  • Hadoop:基本上是工业界的标配了。一般用来做特征清洗、特征处理的相关工作。
  • spark:提供了MLlib这样的大数据机器学习平台,实现了很多常用算法。但可靠性、稳定性上有待提高。

3.3.5 操作系统

  • mac和linux会方便一些,而windows在开发中略显力不从心。所谓方便,主要是指的mac和linux在下载安装软件、配置环境更快捷。
  • 对于只习惯windows的同学,推荐anaconda,一步到位安装完python的全品类数据科学工具包。

3.4 基本工作流程

以上我们基本具备了机器学习的必要条件,剩下的就是怎么运用它们去做一个完整的机器学习项目。其工作流程如下:

3.4.1 抽象成数学问题

  • 明确问题是进行机器学习的第一步。机器学习的训练过程通常都是一件非常耗时的事情,胡乱尝试时间成本是非常高的。
  • 这里的抽象成数学问题,指的我们明确我们可以获得什么样的数据,目标是一个分类还是回归或者是聚类的问题,如果都不是的话,如果划归为其中的某类问题。

3.4.2 获取数据

  • 数据决定了机器学习结果的上限,而算法只是尽可能逼近这个上限。
  • 数据要有代表性,否则必然会过拟合。
  • 而且对于分类问题,数据偏斜不能过于严重,不同类别的数据数量不要有数个数量级的差距。
  • 而且还要对数据的量级有一个评估,多少个样本,多少个特征,可以估算出其对内存的消耗程度,判断训练过程中内存是否能够放得下。如果放不下就得考虑改进算法或者使用一些降维的技巧了。如果数据量实在太大,那就要考虑分布式了。

3.4.3 特征预处理与特征选择

  • 良好的数据要能够提取出良好的特征才能真正发挥效力
  • 特征预处理、数据清洗是很关键的步骤,往往能够使得算法的效果和性能得到显著提高。归一化、离散化、因子化、缺失值处理、去除共线性等,数据挖掘过程中很多时间就花在它们上面。这些工作简单可复制,收益稳定可预期,是机器学习的基础必备步骤
  • 筛选出显著特征、摒弃非显著特征,需要机器学习工程师反复理解业务。这对很多结果有决定性的影响。特征选择好了,非常简单的算法也能得出良好、稳定的结果。这需要运用特征有效性分析的相关技术,如相关系数、卡方检验、平均互信息、条件熵、后验概率、逻辑回归权重等方法。

3.4.4 训练模型与调优

  • 直到这一步才用到我们上面说的算法进行训练。现在很多算法都能够封装成黑盒供人使用。但是真正考验水平的是调整这些算法的(超)参数,使得结果变得更加优良。这需要我们对算法的原理有深入的理解。理解越深入,就越能发现问题的症结,提出良好的调优方案。

3.4.5 模型诊断

如何确定模型调优的方向与思路呢?这就需要对模型进行诊断的技术。
  • 过拟合、欠拟合 判断是模型诊断中至关重要的一步。常见的方法如交叉验证,绘制学习曲线等。过拟合的基本调优思路是增加数据量,降低模型复杂度。欠拟合的基本调优思路是提高特征数量和质量,增加模型复杂度
  • 误差分析 也是机器学习至关重要的步骤。通过观察误差样本,全面分析误差产生误差的原因:是参数的问题还是算法选择的问题,是特征的问题还是数据本身的问题……
  • 诊断后的模型需要进行调优,调优后的新模型需要重新进行诊断,这是一个反复迭代不断逼近的过程,需要不断地尝试, 进而达到最优状态。

3.4.6 模型融合

  • 一般来说,模型融合后都能使得效果有一定提升。而且效果很好。
  • 工程上,主要提升算法准确度的方法是分别在模型的前端(特征清洗和预处理,不同的采样模式)与后端(模型融合)上下功夫。因为他们比较标准可复制,效果比较稳定。而直接调参的工作不会很多,毕竟大量数据训练起来太慢了,而且效果难以保证。

3.4.7 上线运行

  • 这一部分内容主要跟工程实现的相关性比较大。工程上是结果导向,模型在线上运行的效果直接决定模型的成败。 不单纯包括其准确程度、误差等情况,还包括其运行的速度(时间复杂度)、资源消耗程度(空间复杂度)、稳定性是否可接受。
这些工作流程主要是工程实践上总结出的一些经验。并不是每个项目都包含完整的一个流程。这里的部分只是一个指导性的说明,只有大家自己多实践,多积累项目经验,才会有自己更深刻的认识。

3.5 关于积累项目经验

初学机器学习可能有一个误区,就是一上来就陷入到对各种高大上算法的追逐当中。动不动就我能不能用深度学习去解决这个问题啊?我是不是要用boosting算法做一些模型融合啊?我一直持有一个观点,『脱离业务和数据的算法讨论是毫无意义的』。 实际上按我们的学习经验,从一个数据源开始,即使是用最传统,已经应用多年的机器学习算法,先完整地走完机器学习的整个工作流程,不断尝试各种算法深挖这些数据的价值,在运用过程中把数据、特征和算法搞透,真正积累出项目经验 才是最快、最靠谱的学习路径。 那如何获取数据和项目呢?一个捷径就是积极参加国内外各种数据挖掘竞赛,数据直接下载下来,按照竞赛的要求去不断优化,积累经验。国外的Kaggle和国内的DataCastle 以及阿里天池比赛都是很好的平台,你可以在上面获取真实的数据和数据科学家们一起学习和进行竞赛,尝试使用已经学过的所有知识来完成这个比赛本身也是一件很有乐趣的事情。和其他数据科学家的讨论能开阔视野,对机器学习算法有更深层次的认识。 有意思的是,有些平台,比如阿里天池比赛,甚至给出了从数据处理模型训练模型评估可视化模型融合增强的全部组件,你要做的事情只是参与比赛,获取数据,然后使用这些组件去实现自己的idea即可。具体内容可以参见阿里云机器学习文档

3.6 自主学习能力

多几句嘴,这部分内容和机器学习本身没有关系,但是我们觉得这方面的能力对于任何一种新知识和技能的学习来说都是至关重要的。 自主学习能力提升后,意味着你能够跟据自己的情况,找到最合适的学习资料和最快学习成长路径。

3.6.1 信息检索过滤与整合能力

对于初学者,绝大部分需要的知识通过网络就可以找到了。 google搜索引擎技巧——组合替换搜索关键词、站内搜索、学术文献搜索、PDF搜索等——都是必备的。 一个比较好的习惯是找到信息的原始出处,如个人站、公众号、博客、专业网站、书籍等等。这样就能够找到系统化、不失真的高质量信息。 百度搜到的技术类信息不够好,建议只作为补充搜索来用。各种搜索引擎都可以交叉着使用效果更好。 学会去常见的高质量信息源中搜索东西:stackoverflow(程序相关)、quora(高质量回答)、wikipedia(系统化知识,比某某百科不知道好太多)、知乎(中文、有料)、网盘搜索(免费资源一大把)等。 将搜集到的网页放到分类齐全的云端收藏夹里,并经常整理。这样无论在公司还是在家里,在电脑前还是在手机上,都能够找到自己喜欢的东西。 搜集到的文件、代码、电子书等等也放到云端网盘里,并经常整理。

3.6.2 提炼与总结能力

经常作笔记,并总结自己学到的知识是成长的不二法门。其实主要的困难是懒,但是坚持之后总能发现知识的共性,就能少记一些东西,掌握得更多。 笔记建议放到云端笔记里,印象笔记、为知笔记都还不错。这样在坐地铁、排队等零碎的时间都能看到笔记并继续思考。

3.6.3 提问与求助能力

机器学习的相关QQ群、论坛、社区一大堆。总有人知道你问题的答案。 但是大多数同学都很忙,没法像家庭教师那样手把手告诉你怎么做。 为了让回答者最快明白你的问题,最好该学会正确的问问题的方式:陈述清楚你的业务场景和业务需求是什么,有什么已知条件,在哪个具体的节点上遇到困难了,并做过哪些努力。 有一篇经典的文章告诉你怎样通过提问获得帮助:《提问的智慧》,强力推荐。 话锋犀利了些,但里面的干货还是很好的。 别人帮助你的可能性与你提问题的具体程度和重要性呈指数相关。

3.6.4 分享的习惯

我们深信:“证明自己真的透彻理解一个知识,最好的方法,是给一个想了解这个内容的人,讲清楚这个内容。” 分享能够最充分地提升自己的学习水平。这也是我们坚持长期分享最重要的原因。 分享还有一个副产品,就是自己在求助的时候能够获得更多的帮助机会,这也非常重要。

4. 相关资源推荐

文章的最后部分,我们继续放送干货。其实机器学习的优质资源非常多。博主也是翻遍浏览器收藏夹,也问同事取了取经,整合了一部分资源罗列如下:

4.1 入门资源

首先coursera 是一个非常好的学习网站,集中了全球的精品课程。上述知识学习的过程都可以在上面找到合适的课程。也有很多其他的课程网站,这里我们就需要学习的数学和机器学习算法推荐一些课程(有一些课程有中文字幕,有一些只有英文字幕,有一些甚至没有字幕,大家根据自己的情况调整,如果不习惯英文,基础部分有很多国内的课程也非常优质):
  • 微积分相关
Calculus: Single Variable Multivariable Calculus
  • 线性代数
Linear Algebra
  • 概率统计
Introduction to Statistics: Descriptive Statistics Probabilistic Systems Analysis and Applied Probability
  • 编程语言
Programming for Everybody:Python DataCamp: Learn R with R tutorials and coding challenges:R
  • 机器学习方法
Statistical Learning(R) machine learning:强烈推荐,Andrew Ng老师的课程 机器学习基石 机器学习技术:林轩田老师的课相对更有深度一些,把作业做完会对提升对机器学习的认识。 自然语言处理:斯坦福大学课程
  • 日常阅读的资源
@爱可可-爱生活的微博 机器学习日报的邮件订阅 等。

4.2 进阶资源

  • 有源代码的教程
scikit-learn中各个算法的例子 《机器学习实战》 有中文版,并附有python源代码。 《The Elements of Statistical Learning (豆瓣)》 这本书有对应的中文版:《统计学习基础 (豆瓣)》。书中配有R包。可以参照着代码学习算法。网盘中有中文版。 《Natural Language Processing with Python (豆瓣)》 NLP 经典,其实主要是讲 python的NLTK 这个包。网盘中有中文版。 《Neural Networks and Deep Learning》 Michael Nielsen的神经网络教材,浅显易懂。国内有部分翻译,不全,建议直接看原版。
  • 图书与教材
《数学之美》:入门读起来很不错。 《统计学习方法 (豆瓣) 》:李航经典教材。 《Pattern Recognition And Machine Learning (豆瓣) 》:经典中教材。 《统计自然语言处理》自然语言处理经典教材 《Applied predictive modeling》:英文版,注重工程实践的机器学习教材 《UFLDL教程》:神经网络经典教材 《deeplearningbook》:深度学习经典教材。
  • 工具书
《SciPy and NumPy (豆瓣) 》 《Python for Data Analysis (豆瓣) 》作者是Pandas这个包的作者
  • 其他网络资料
机器学习(Machine Learning)与深度学习(Deep Learning)资料汇总: 太给力,量大干货多,有兴趣的同学可以看看。 本文:www.paymoon.com:8001/index.php/2016/09/14/ml-how-to-begin-ml/

[ 机器学习][学习路线_2]机器学习进阶之最短路线图

$
0
0
很多人问机器学习领域要入门推荐什么书。在我看来,无论做什么,都要找准最短路径,所谓最短路径,就是连通几个核心概念和技能的耗时最短的一个流程。找到了最短的流程,就能以最少的时间为之后进一步的学习打下坚实的基础,之后无论专供机器学习的某一个子领域,都不会在核心概念上犯浑。   那么机器学习领域有那些核心技能了?首先是方法论,其次是常用的模型及其背后的统计原理,最低的一层是常用的算法包。方法论是说我们怎么评价模型,有那些可以加速学习和避免过拟合的trick,常用的模型包括SVM,随机森林,贝叶斯网络,人工神经网络等,学习算法包的目的是为了让读者有亲身的体验,从而对方法和模型有切身的了解。   因此,对于想认真学习机器学习课程的童鞋,这里推荐两条最短路径,如果你只关心分类任务,即有监督的学习,那么可以推荐一个4周的coursera 课程 Practical Machine Learning,这门课程涵盖了上文说的所有三个点,英语授课,对数学基础要求不高,每周视频时间1个半小时,课程后有编程作业,预期每周花一天时间,可以在一月内学完。   对于英语不好的童鞋,推荐的课程是台湾大学 林軒田 机器学习基石 (Machine Learning Foundations) 和其姐妹篇台湾大学 林軒田 机器学习技法(Machine Learning Techniques)该课程在课程图谱上的评价很高,10条评价全是五星,而且评论都很精彩。据说林老师现在创业去了,这门课说不定也会成为绝版,赶紧收藏吧,这两门课难度较大,需要一点的数学基础,课程时间也较长,两门课加起来需要16周的时间,但是涵盖面更加广泛,包含了目前常用的模型,如人工神经网络。   链接: http://pan.baidu.com/s/1hsmAsNq 密码: kxfj   链接: http://pan.baidu.com/s/1bpHSAPD 密码: abye 另外推荐几本书相关的书籍,这里推荐的书籍除了第一本是很简单的,其他都是有一点挑战,阅读起来需要花一些功夫去思考的书籍,只有看这样的书籍,才能让你的学习过程先苦后甜。 这是一本扫盲的书,用合大量案例与漫画,将高度抽象的数学、算法与应用,与现实生活中的案例和事件一一做了关联,这本书不会教会你任何实际可用的方法,但却可以让你在谈论起机器学习相关的话题时不再迷茫。 这两本书讲了机器学习在多个领域具体应用的案例,例如,图像识别,自然语言处理,股票市场预测,社交网络分析,网站访问量回归预测,基于相似度的聚类,邮件智能垃圾邮件识别,密码破译。对于喜欢通过案例学习的童鞋,这两本书值得细读,对于想知道机器学习如何改变我们日常生活并预测其未来影响的童鞋,了解基础的方法有助于做出准确的预测。 再所有推荐的书中,我觉得这本书是性价比最高的。这本书适合有一定基础的读者去看,检验自己是否理解一个方法的有效办法是看你能否用图形化的语言去将其表示出来,能否看懂这本书,可以用来复习并加深自己的理解。书中包含可执行的代码,没有装付费Matlab的童鞋可以试试免费的Octave,在上面一个个运行下这些代码,这本不厚的书可以读的很厚。 机器学习是一个很依赖数学基础的学科,没有学好概率论和线性代数,你就不会看懂那些方法背后的原理。这两本书是专门为那些数学基础不好的童鞋也最短的方式补课的。不过,数学总归是抽象的,是需要花整段的时间去投入的,所以这两本书也不是简单的书。

Spring MVC: Error 400 The request sent by the client was syntactically incorrect

$
0
0
I solved it, there excess parameter in the method of the second class [crayon-57d913cd81a27859211681/] Second class: [crayon-57d913cd81a35586796130/]    

[机器学习][数据挖掘][学习路线_3]从入门到进阶,机器学习与数据挖掘的学习路线

$
0
0
如果想简单的理清机器学习与数据挖掘二者的关系,不妨这样来理解,机器学习应用在数据分析领域 = 数据挖掘。同理,如果将机器学习应用在图像处理领域 = 机器视觉。当然这只是一种比较直白的理解,并不能见得绝对准确或者全面。我们权且这样处理。 但无论是机器学习,还是数据挖掘,你一定听说过很多名字吊炸天的传说,比如:SVM,神经网络,Logistic回归,决策树、EM、HMM、贝叶斯网络、随机森林、LDA... ....其实还是很多很多!在你学到一定程度的时候,就会发现自己了解的依然只是这个领域的冰山一角,而不免感叹学海无涯之苦了。 正式学习之前,你所需要的预备知识(主要是数学)应该包括: 微积分(偏导数、梯度等等) 概率论与数理统计(例如极大似然估计、中央极限定理、大数法则等等) 最优化方法(比如梯度下降、牛顿-拉普什方法、变分法(欧拉-拉格朗日方程)、凸优化等等)   机器学习与数据挖掘的四个阶段和两条路线   关于机器学习的路线图分为4个级别,每个级别都对应一本书必须要掌握的书。这5个级别如下: Level 0(新手):阅读《Data Smart: Using Data Science to Transform Information into Insight》。需要了解电子表格、和一些算法的高级数据流。 Level 1(学徒):阅读《Machine Learning with R》。学习在不同的情况下用R语言应用不同的机器学习算法。需要一点点基本的编程、线性代数、微积分和概率论知识。 Level 2(熟练):阅读《Pattern Recognition and Machine Learning》。从数学角度理解机器学习算法的工作原理。理解并调试机器学习方法的输出结果,同时对机器学习的概念有更深的了解。需要有算法、较好的线性代数、一些向量积分、一些算法实现经验。 Level 3(大师):阅读《Probabilistic Graphical Models: Principles and Techniques》。深入了解一些高级主题,如凸优化、组合优化、概率论、微分几何,及其他数学知识。深入了解概率图模型,了解何时应该使用以及如何解释其输出结果。 第一条线路: (基于普通最小二乘法的)简单线性回归-> 线性回归中的新进展(岭回归和LASSO回归)->(此处可以插入Bagging和AdaBoost的内容)-> Logistic回归 ->支持向量机(SVM)->感知机学习 -> 神经网络(初学者可先主要关注BP算法)-> 深度学习。 之所以把它们归为一条线路,因为所有这些算法都是围绕着 y = Σxiβi,这样一条简单的公式展开的,如果你抓住这条线索,不断探索下去,就算是抓住它们之间的绳索了。 当沿着第一条路线学习的时候,其实你已经攻克机器学习的半壁江山了!当然,在这个过程中,你一定时刻问问自己后一个算法与前一个的联系在哪里?最初,人们从哪里出发,才会如此设计出它们的。   第二条路线: K-means  -> EM->朴素贝叶斯->贝叶斯网络 -> 隐马尔科夫模型(基本模型,前向算法,维特比算法,前向-后向算法)->(卡尔曼滤波)。 这条线路所涉及的基本都是那些各种画来画去的图模型,一个学术名词是 PGM 。这条线的思路和第一条是截然不同的!贝叶斯网络、HMM(隐马尔科夫模型)是这个线路中的核心内容。K-means 和 EM 具有与生俱来的联系,认识到这一点才能说明你真正读懂了它们。而EM算法要在HMM的模型训练中用到,所以你要先学EM才能深入学习HMM。所以尽管在EM中看不到那种画来画去的图模型,但我还把它放在了这条线路中,这也就是原因所在。 朴素贝叶斯里面的很多内容在,贝叶斯网络和HMM里都会用到,类似贝叶斯定理,先验和后验概率,边缘分布等等(主要是概念性的)。最后,卡尔曼滤波可以作为HMM的一直深入或者后续扩展。尽管很多machine learning的书里没把它看做是一种机器学习算法(或许那些作者认为它应该是信号处理中的内容),但是它也确实可以被看成是一种机器学习技术。 机器学习和人工智能作为未来科技的发展方向,有着不错的前景和发展空间,但是正如这个领域的浩如烟海般的博大一样,学习的过程也是漫长而苦楚的,只有真正喜欢并且坚持的人,才能真正在机器学习领域有所建树。

[第三方支付]第三方支付架构设计之—帐户体系

$
0
0
第三方支付架构设计之—帐户体系 一,      什么是第三方支付? 什么是第三方支付?相信很多人对这个名字很熟悉,不管是从各种媒体等都经常听到,可以说是耳熟能熟。但,如果非得给这个名词总结出一个概念,却发现很难准确和全面的表述清楚。不过关系不大,我们无法给出一个很准确的概念的时候,我们就列举一下实际生活中我们经常使用第三方支付的例子:支付宝,财付通,微信支付等等,这些就是我们国内目前在第三方支付市场中比较有影响力的第三方支付了。 搜索一下百度,所谓第三方支付,就是一些和产品所在国家以及国外各大银行签约、并具备一定实力和信誉保障的第三方独立机构提供的交易支持平台。 在通过第三方支付平台的交易中,买方选购商品后,使用第三方平台提供的账户进行货款支付,由第三方通知卖家货款到达、进行发货;买方检验物品后,就可以通知付款给卖家,第三方再将款项转至卖家账户。 从这个概念中,有几个关键点: 1,       需要跟各个银行签约,那么问题是第三方支付跟银行的关系是什么? 2,       用户通过第三方支付平台进行支付,那么资金是如何进入第三方支付平台的? 3,       商户通过接入第三方支付平台进行收款,那么资金最终又是如何结算给到商户的? 因此,我们要充分理解第三方支付平台,得从用户,支付平台,商户,当然还有背后的银行和监管机构等进行全面分析,只有充分理解这些关系,才能对第三方支付的账户体系有充分的理解和掌握,从而充分理解支付中的资金流。 我们知道,随着电子商务在中国的迅速崛起,电子商务必须要解决几个非常关键的问题,那就是:信息流,资金流和物流,信息流一般是通过电子商务平台进行解决,包括用户信息,商品,商户和订单等,而资金流,即支付和结算等相关方面一般是通过第三方支付平台进行解决,第三方支付植入到电商平台中,帮助电商平台解决资金在用户和商户之间的流转,甚至在c2c交易中,第三方支付还起到了中介担保账户的作用;而物流,是解决物品如何送到用户手中的问题,各种物流公司或者电商自建物流网络等都是解决物流相关的解决方案,对信息流和物流,我们这里不进行展开,本章重点侧重资金流的流转。   二,      什么是账户? 从会计学上来看,账户是根据会计科目设置的,具有一定格式和结构,用于分类反馈会计要素增加变动情况及其结果的载体。设置账户是会计核算的重要方法之一。 同会计科目分类相对应,账户按其提供的信息详细程度和统驭关系不同分为总账账户明细账户,请注意,在设计IT账户系统中,总账户和明细账户是非常重要的概念,后面会重点分析。 而按照账户反映的经济内容不同可分为资产类账户,负债类账户,所有者权益类账户,成本费用类账户,损益类账户。 那么什么是会计要素?主要有6个方面:资产,负债,所有者权益,利润,费用,收入。 账户是有结构和内容的,账户分为左方,右方两个方向,一个登记增加,另外一方登记减少。账户的内容包括了账户的名称,记录经济业务的日期,所依据记账凭证的编号,经济业务摘要,借贷金额和余额等。 那么如何设计一个账户呢?从账户的结构和内容分析,一个账户需要记录账户变动的过程等,即借贷方向均需要进行记录,这里一般是通过账户流水来实现,即出入流水,同时,账户是记录会计要素变动结果的,因此需要根据变动的最终结果进行记录,即账户的余额。 账户 = 账户流水 + 账户余额 在具体实现中,系统对账户流水的操作和余额的操作必须是一个事务,即入流水必然导致账户余额的增加,出流水必然导致余额的减少。 那么有一个问题:借贷方向和账户流水的进出有什么关系?很多人很容易,把账户流入,即增加部分记为借,而把账户流产,即减少部分记为贷,但其实是不严谨的,或者是错误的(下面将重点介绍)。   三,账户的基本内容和结构 在账户的核算中,账户一般简化为“T”字账的形式,即包括账户名称,借方,贷方,发生额,借贷方余额和账户余额等。如下图: 账户的内部对账是:在一个指定的核算周期内,保证余额和流水的一致性。 (如果具体实现是通过db的事务机制,则DB本身就可以保证两者的一致性,如果不是,比如即流水,异步落地余额的情况,则需要按每天根据流水对余额进行调整或者纠正) 账户的外部对账是:保证账户操作的流水跟外部系统相关依赖流水的一致性。   四,      借贷复试记账法 所谓复试记账法就是针对发生的每项经济业务都要以相等金额在相互联系的两个或者两个以上有关账户中进行同时登记的记账方法。而借贷记账法是复试记账法的一种,它是以“资产=负债+所有者权益”为依据,以“借“和”贷”为记账符号,以“有借必有贷,借贷必须相等”为记账规则的一种复试记账方法。 借贷记账法的记账符号就是“借”和“贷”,用来反映经济业务增减变化的方向而已,本身没有特别的意义,在实际的操作中,我们把账户的左方规定记为借方,右方规范记为贷方,在任何一笔经济业务中,都必须同时登记相关账户的借方和贷方。 我们知道,每个账户都有借方和贷方,用来记录其对应经济业务的增减变化情况,那么哪一方登记增减,哪一方登记减少,则是要根据对应账户的经济性质决定的,即账户相对会计主体来说,是属于什么类型的账户。 1,        资产类账户 资产类账户,资产的增加登记账户的借方,资产的减少登记在账户的贷方,期末有余额,一般出现在借方。在一个会计期间,所有借方金额的累加为“借方本期发生额”,所有贷方金额的累加为“贷方本期发生额”。而资产账户的余额=借方期初余额+借方本期发生额-贷方本期发生额。 如,本人在招商银行账户A存入1000元,那么该如何记账呢?首先,我们要分析本人在招行的这个账户的性质,由于这是本人存储在招行的一笔资产,所以该账户对应我这个会计主体来说,是一个资产类账户,因此记账的借贷方向需要按照资产类账户的要求来进行,即增加记为借,减少记为贷。根据分析,本人存入1000到账户A,记账如下: 借:银行存款  1000元  (资产类账户,银行账户增加了1000元) 贷: 库存现金 1000元。(资产类账户,手中现金减少了1000元) 2,        负债类账户 负债类账户的记账规则跟资产类相反,负债增加记为贷,负债减少记为借,期末如有余额,一般在贷方,表明期末有债务实有额,负债类账户的余额计算: 贷方期末余额=贷方期初余额+贷方本期发生额-借方本期发生额。   3,        所有者权益类账户 所有者权益类账户的记账规则跟负债类账户一致:所有者权益增加记为贷,减少记为借。 4,        费用成本类账户 企业在日常经营活动中会发生各种各样的耗费,这些耗费在会计学上称为成本费用,它们是收入的抵减项目,在抵销收入之前,可以视为一种资产,因此成本费用类账户的记账规则跟资产类一样:增加记为借,减少或者转销记为贷,一般借方记录的增加额都要通过贷方转出,所有此类账户在期末转销后无余额,如有余额,出现在借方。 5,        收入类账户 企业取得的收入最终会使得所有者权益增加,因此收入类账户的记账方法跟所有者权益一致:增加记为贷,减少或者转销记为借,通常该账户期末无余额(因为期末收入都会转为所有者权益,如未分配利润等) 至此,一个账户的增加或者减少记为借还是记为贷,是跟该账户反映的经济内容有关系,而不是简单的增加就一定是借,减少就一定是贷,在实际的记账处理中,我们首先需要根据会计主体对记账的账户的经济性质进行分析,然后按照不同账户的记账规则进行处理即可。   五,      第三方支付账户体系介绍 前面我们从会计学的角度分析了账户的概念,结构和借贷记账法等内容,而这些基础知识对我们第三方支付来说是否非常重要的,它是指导我们如何更好的设计第三方支付中非常重要的---账户体系。 第三方支付机构涉及的账户类型是否非常多的,笔者根据主要的场景做了分类,主要有如下几类账户: 1,  用户在各个银行开通的账户。 这个概念非常好理解,我们每个人在相关银行开通的储蓄卡,存折,信用卡等等都是我们在银行开通的账户,在实际的支付中,用户银行账户是资金的输出方,通过银行系统,在用户授权的情况下把资金从用户的银行卡转移到第三方支付在银行开通的收款账户(见下面说明) 2,  第三方支付公司在各个银行开通的账户。 即第三方支付的银行账户,比如支付宝在招商银行设置的收款账户。那么第三方支付公司为啥需要在各个合作银行设置账户呢?其实道理非常简单,第三方支付公司本身毕竟不是银行,本身是无法直接接触和管理资金的,真正的资金流是通过银行系统进行的,用户通过网银或者快捷支付等支付后,用户的资金是少了,那么肯定有一个地方是多的,我们举一个例子:小明用支付宝在某商城A买了一件衣服100元,用自己的银行卡进行网上支付,假如小明的银行卡是招商银行的,并且支付宝和招商银行有合作关系,当发生支付的时候,其实支付宝只做了两个事情: l  在用户授权下,调用银行接口把钱从用户的银行卡转移到支付宝在招商银行设置的账户上(该账户是支付宝专门接受用户的付款资金的)---由于这步是只发生在银行系统之家的,是真实的资金流。 l  第1步成功后,支付宝会对商户A记入一笔入账:100元(商户A会在支付宝申请一个商户账户,类似支付宝在银行申请一个账户一样) 从会计学的角度分析,支付宝在招商银行设置的账户对支付宝这个会计主体来说,是一笔资产(或者说是银行欠支付宝的钱),该银行账户是资产类账户,而另外一个方面,商户A在支付宝设置的商户账户对支付宝来说是一个负债类账户(因为这是欠商户的钱,后续需要结算给到商户),那么上面的支付流程,会计记账如下: 借: 支付宝招行银行账户  100元   (资产类账户,资产增加,记为借) 贷:商户A支付宝账户  100元  (负债类账户,负债增加,记为贷)   2,第三方支付自有账户体系 这个比较复杂,类似银行账户有对公账户和对私账户,第三方支付公司也有针对商户的B账户和针对个人的C账户。请注意,第三方支付自有账户体系是独立第三方支付在银行申请的账户的,是自有的账户体系,完成资金在第三方支付体系的闭环和结算等,比如财付通用户余额,支付宝余额,微信支付余额等都是第三方支付账户to client的账户。 个人账户,我们称为c账户比较简单,而商户账户由于涉及到结算和提现等操作,按照不同的资金类别设置不同账户的设计原则,商户账户一个商户号其实对应两个账户:b账户和c账户,b账户是商户结算账户,用于交易的收款等,商户本身无法直接操作,是第三方支付进行结算的账户,而商户c账户则是商户可以直接进行操作的账户,如可以进行提现,充值和支付等等。   3,   各个银行在第三方支付公司设置的账户 这个账户是一个总账账户,一般用于记录资金进入第三方账户体系或者资金逃出第三方账户体系的,它一般不记录余额,而只是记录流水,方便跟各个银行进行对账。 六,      各种操作的资金流和记账规则 1,        用户通过银行卡快捷支付进行充值100元。 资金流:资金从用户银行卡进入第三方支付在对应银行的银行账户,同时对对应的第三方c账户记入一笔充值入账。 借: 第三方支付在银行的账户   100元 (资产类账户) 贷:某用户在第三方支付的c账户  100元  (负债类账户)   这个需要重点分析,其实这步操作后,资金进入了第三方支付的自有账户体系中,使得自有账户体系的资金盘子增加了100元,在实际的设计中,为了能够高效跟银行进行对账,每个银行会在第三方支付设置一个对应的账户,我们成为银行的第三方支付账户,比如招行在支付宝的账户,用户通过招行卡支付充值后,除了银行系统本身的记账外,第三方支付会在该账户同步记录一笔流水,使得所有通过招行进入自有账户体系的资金流都可以通过这个流水看到,我们理解为这个账户是一个总账账户,各个用户的c账户是一个分账账户。 2,        用户通过银行卡快捷支付给商户A支付100元 资金流:资金从用户的银行卡进入第三方支付在对应银行的银行账户,同时对对应的商户A的B账户记入一笔支付入账。 借:第三方支付在银行的账户 100元  (资产类账户) 贷:某商户A的B账户       100元   (负债类账户) 3,        用户通过第三方支付余额账户提现100到自己的招行卡 资金流:第三方支付首先把该用户余额的100元先冻结,然后调用银行接口,从自己在银行的账户中转账100元到用户的招行卡上,成功后,对该用户的余额冻结的100元进行解冻扣款。 借:某用户在第三方支付的c账户  100元  (负债类账户) 贷:第三方支付在银行的账户 100元  (资产类账户) 可以看出,该步骤的记账给第一部分的充值时相反的。   4,        自有账户体系的c2c转账 由于没有涉及到用户银行卡的操作,该部分操作没有涉及到真正的资金流变动,只是账务在第三方支付公司自有账户体系的转移而已,即从一个用户的c账户转移到另外一个c账户,由于c账户对第三方支付公司来说,都是负债类账户,因此记账如下: 借: 转出的c账户  100元 (负债类账户,转出表示负债减少,记为借) 贷:收款的c账户 100元 (负债类账户,转入表示负债增加,记为贷)   5,        自有账户体系的b2c支付 跟4一样,没有涉及到银行接口的调用,因此没有发生真正的资金流的流动,账户只是在第三方支付公司的自有账户体系转移而已,即从一个用户的c账户转移到另外一个商户的B账户。 记账如下: 借:支付的c账户 100元 贷:收款的商户B账户 100元。 综上,第三方支付的账户体系还是相当比较简单,一般是资产类账户和负债类账户比较多,会计处理上也比较简单。 http://blog.csdn.net/tenfyguo/article/details/41660281 本文:http://www.paymoon.com:8001/index.php/2016/09/18/pay-thirty-arch-account/ 论文:http://www.doc88.com/p-1993439924798.html

[深度学习]代码集锦

$
0
0

10月技术主题----“深度学习”

Batch Normalization 学习笔记 --------------https://code.csdn.net/snippets/1608106 神经网络代码-------------------------------https://code.csdn.net/snippets/1876975 线性代数和Numpy的使用----------------------https://code.csdn.net/snippets/1807414 神经网络常用操作实现-----------------------https://code.csdn.net/snippets/1810015 Theano常用技巧-----------------------------https://code.csdn.net/snippets/1815824 线性回归算法实现---------------------------https://code.csdn.net/snippets/1820662 逻辑回归算法应用---------------------------https://code.csdn.net/snippets/1823250 用Theano实现多层前馈网络-------------------https://code.csdn.net/snippets/1851432 卷积神经网络(CNN)之卷积操作--------------https://code.csdn.net/snippets/1856625 卷积神经网络(CNN)实现--------------------https://code.csdn.net/snippets/1857587 堆叠去噪自动编码机(SdA)原理及实现--------https://code.csdn.net/snippets/1869571 深度学习-LSTM网络-代码---------------------https://code.csdn.net/snippets/1866476 Caffe学习笔记——Matlab接口----------------https://code.csdn.net/snippets/1802842 solver参数说明及利用自己的数据集对权值微调-https://code.csdn.net/snippets/1865649 MNIST的CNN实现——源码和运行结果-----------https://code.csdn.net/snippets/1693313 利用caffe训练深度学习模型------------------https://code.csdn.net/snippets/1610379 vgg人脸识别模型测试------------------------https://code.csdn.net/snippets/1614525 caffe源码解析之blob.hpp或blob.cpp----------https://code.csdn.net/snippets/1620527 caffe模型参数的一些解释--------------------https://code.csdn.net/snippets/1610047 让计算机阅读《天龙八部》-------------------https://code.csdn.net/snippets/1773808 使用LSTM进行大盘回归-----------------------https://code.csdn.net/snippets/1847366

拓展阅读

本文:http://www.paymoon.com:8001/index.php/2016/09/18/dl-codes/ 常用的深度学习开源框架介绍: 1、Caffe 源自加州伯克利分校的Caffe被广泛应用,包括Pinterest这样的web大户。与TensorFlow一样,Caffe也是由C++开发,Caffe也是Google今年早些时候发布的DeepDream项目(可以识别喵星人的人工智能神经网络)的基础。 2、Theano 2008年诞生于蒙特利尔理工学院,Theano派生出了大量深度学习Python软件包,最著名的包括Blocks和Keras 3、Torch Torch诞生已经有十年之久,但是真正起势得益于去年Facebook开源了大量Torch的深度学习模块和扩展。Torch另外一个特殊之处是采用了不怎么流行的编程语言Lua(该语言曾被用来开发视频游戏)。 4、Brainstorm 来自瑞士人工智能实验室IDSIA的一个非常发展前景很不错的深度学习软件包,Brainstorm能够处理上百层的超级深度神经网络——所谓的公路网络Highway Networks。 5、Chainer 来自一个日本的深度学习创业公司Preferred Networks,今年6月发布的一个Python框架。Chainer的设计基于define by run原则,也就是说,该网络在运行中动态定义,而不是在启动时定义,这里有Chainer的详细文档。 6、Deeplearning4j 顾名思义,Deeplearning4j是”for Java”的深度学习框架,也是首个商用级别的深度学习开源库。Deeplearning4j由创业公司Skymind于2014年6月发布,使用Deeplearning4j的不乏埃森哲、雪弗兰、博斯咨询和IBM等明星企业。 DeepLearning4j是一个面向生产环境和商业应用的高成熟度深度学习开源库,可与Hadoop和Spark集成,即插即用,方便开发者在APP中快速集成深度学习功能,可应用于以下深度学习领域:人脸/图像识别、语音搜索、语音转文字(Speech to text)、垃圾信息过滤(异常侦测)、电商欺诈侦测 7、Marvin 普林斯顿大学视觉工作组新推出的C++框架。该团队还提供了一个文件用于将Caffe模型转化成语Marvin兼容的模式。 8、ConvNetJS 这是斯坦福大学博士生Andrej Karpathy开发浏览器插件,基于万能的JavaScript可以在你的游览器中训练神经网络。Karpathy还写了一个ConvNetJS的入门教程,以及一个简洁的浏览器演示项目。 9、MXNet 出自CXXNet、Minerva、Purine等项目的开发者之手,主要用C++编写。MXNet强调提高内存使用的效率,甚至能在智能手机上运行诸如图像识别等任务。 10、Neon 由创业公司Nervana Systems于今年五月开源,在某些基准测试中,由Python和Sass开发的Neon的测试成绩甚至要优于Caffeine、Torch和谷歌的TensorFlow。 原文: https://code.csdn.net/blog/41 本文:http://www.paymoon.com:8001/index.php/2016/09/18/dl-codes/

我在阿里这两年

$
0
0
摘要:本文转发了一篇文章,其中文中相关重点已经划出 本文链接:http://www.paymoon.com:8001/index.php/2016/09/20/alibaba-two-yrs-expericence/ 1 我为何而来?我为何而战?什么会因我而不同?我觉得投资像摩天轮,创业像过山车,阿里像海盗船 3 阿里,是一个商业价值至上的公司。做任何事情,你都逃不开的一个问题是:“你为客户解决什么问题,你给客户创造了什么价值,你能给公司带来多少收益?” 4 阿里的六脉神剑如是说:客户第一、拥抱变化、团队合作、诚信、激情、敬业。 5 AL01:《跟着总监学如何推动VP达成商业目标》 AL02:《写给总监的PPT和写给CEO的PPT有什么区别?》 AL03:《是啥造就了只有老板自high的低效率会议》 AL04:《谈谈用户型和商业型产品经理的区别》 AL05:《业务型产品经理和平台型产品经理的区别》 AL06:《在阿里做大数据业务的一年》 AL07:《从雕琢细节到追求格局》 AL08:《谈谈数据产品经理的工作职责》 本文链接:http://www.paymoon.com:8001/index.php/2016/09/20/alibaba-two-yrs-expericence/ 习惯性地打开浏览器,阿里内外的日历提醒我:亲爱的,这是你在阿里的第681天,享受你的这一天!我知道,当那个数字变成688的时候,我就和这个页面再无缘分。 阿里巴巴是我的第一家雇主,所以我还没有换工作的经验,很多或有预期或没有预期的感受不期而至。当工作交接基本完成,你看着曾经一起奋斗、一起吐槽的同事们风风火火地忙碌在各个角落,即便内心满怀对新生活的憧憬,也或多或少会有一些伤感吧。 早上看了一部阿里内部的纪录片,叫《Dream Maker》,至今还未来得及对外公开。这部片子讲述了阿里巴巴从成立至今的关键事件,从产品的演化到文化的形成无不包含,的确有点热血沸腾的感觉,发自内心地感慨,阿里真的是一家伟大的公司。阿里味儿的帖子如是说:十七年,6000多个日日夜夜,所有阿里人,用这种精神谱写了一个关于造梦者的传奇。 伴随着这部纪录片,面向集团组织部所有人提出的问题是:我为何而来?我为何而战?什么会因我而不同? 我想,无论我们在什么样的企业,什么样的工作岗位,都需要回答这个问题。对于有些人来说,当前的环境可以满足自己的需要,所以坚持和奋斗,对于另一些人来说,或许理想与现实时间存在鸿沟,需要通过改变来破局。 中午约了13年校招招我进来的HR聊天,两年时间,她已经生完第二个孩子,重新回到工作岗位上,谈起当年的回忆和我现在的选择,感叹时光。那一年清华过来的同学们,基本也只有我还留在校招时的岗位上了。 犹记得,不知道是出于什么原因,阿里的校招筛掉了我的简历,我一路跟着同学杀到北邮,把简历放在了她面前兴师问罪,才得以两天时间内迅速定下offer,随后,又面临着被分配到数字娱乐事业部万般无奈换部门的折腾,再纠结纠结北京户口的风险,最终能入职,也是曲折的一段经历。 然后,就开始了一言难尽的大数据产品生活,其间,当然也见到了很多人来人往。至今,我在阿里最好的一个朋友也即将离职创业了,她和我讲了个段子,说:“我觉得投资像摩天轮,创业像过山车,阿里像海盗船”历经中移动和网易,在阿里工作两年后选择创业的她的比喻,我似懂非懂。 面试的过程中很多人问我,你说阿里是这么大的一个平台,你为什么会选择离开? 首先,我不得不承认,倘若一切尽如人意,个人能力和自我实现的需求都得到满足,没有人会选择离开。所以,一定有一些地方是出了问题的,而且影响不小。 其次,我们似乎又不得不感谢这个环境,倘若它没有尽早在你面前呈现这些问题,可能不会将你推到一个想要寻求改变的阈值,也就有温水煮青蛙的危险。 最后,即便阿里有那么多的不如意,我也已经收获了足够多。倘若不是因为来了阿里,我的很多知识体系不会形成,也就错过了一个从商业的视角看互联网生态的机会。而一些世俗的东西,比如北京户口,大公司的光环,则真的没有那么重要。
1473811048-4034-1463352-1d595523f7ffe971
所以,我很愿意与你分享我在阿里这两年的收获和思考,算是对自己的一个总结。同时,无论是校招还是社招,如果你正面临是否加入阿里的选择,希望对你也有一点参考。
1. 一家大公司 阿里是一家“大”公司,业务方向复杂,员工基数庞大,办公地点众多,而任何一家企业,只要大的一定的程度,必然会遭遇所谓的“大公司病”。比如,决策流程长,比如,跨部门协作困难,比如,组织结构调整频繁,比如,团队内部竞争激烈…… 最遗憾的,大概就是当你处在某个小团队中,几乎无法从宏观的视角去看集团的战略,只见树木不见森林,还可能为眼前的既得利益受损而耿耿于怀。在不久之前,现任CEO提出,“要做大闭环,不要做小闭环”,也彰显了要打破各事业部之间各自为战的决心。 正因为这些由“大”造成的原因。进入阿里以后,我强烈感知到在这里做产品的思路和当年在有道词典做一个应用软件完全不同。 你需要认真去考虑,你所做的事情,对于集团战略的帮助和价值在哪里,如果想不清楚,估计离团队调整也就不远了。 你当然也得考虑,这件事情如果你觉得有价值且可以做,你是不是能去做,当事业部之间业务差异有没有那么泾渭分明的时候,蛋糕怎么分,也挺有讲究。 同时,很多大的项目离不开跨团队的合作,先不提双11这样的大促活动,就算是走完一个最基本的精准广告营销的解决方案,也涉及多团队多系统之间的整合,往往需要层层汇报研究。 所以,大概没有人能搞明白,阿里为什么会有这么多的会议。 在这个过程中,因为有很多的机会去做跨团队沟通和汇报,倒是练就了一身纵横捭阖的本领,尤其是写PPT和作汇报,在多次被敲打之后,也算是有了一些基本的概念。 曾经有过一些总结,如果感兴趣,可以参考我的历史文章,回复对应序号可得。 两篇干货 AL01:《跟着总监学如何推动VP达成商业目标》 AL02:《写给总监的PPT和写给CEO的PPT有什么区别?》 还有一篇吐槽AL03:《是啥造就了只有老板自high的低效率会议》 2. 一家商业公司 在阿里接受的一个比较重要的洗礼,是关于商业的。 在大多数人的认知,以及我曾经在有道词典实习的经历中,似乎更多的关注点都在如何让产品好用上,对于盈利及商业价值的考虑总有欠缺,也不乏很多人信誓旦旦地表示“只需要积累用户,不需要考虑赚钱的事情”。不知道别人怎么想,我总觉得不踏实。 而阿里,是一个商业价值至上的公司。做任何事情,你都逃不开的一个问题是:“你为客户解决什么问题,你给客户创造了什么价值,你能给公司带来多少收益?” 大概也是在这里,我才理解了用户型产品和商业产品的区别,并喜欢上了这些以商业交换为核心的产品形式。毕竟,无论你的产品多好,如果没有客户买单,总是枉然。 而对于to B的产品,我至今收益于老板的那句名言:to B的产品,你的客户并不是你的客户,你需要和你的客户在一起努力去服务好客户的客户。 当然,商业的思维也不唯价值收益至上,阿里将自己定位成一个平台型的公司,所以无论是集团战略还是产品设计,都往往以平台的思维进行。例如,对于大数据的分析场景,阿里从来不会像咨询公司一样靠堆人出报告来盈利,而是在建数据开放的体系,吸引生态里的服务商进来。 两篇关于商业产品的文章,回复对应序号可得: AL04:《谈谈用户型和商业型产品经理的区别》 AL05:《业务型产品经理和平台型产品经理的区别》 3. 一家数据公司 当大数据的概念像当年的云计算一样火爆,伴随着处理大数据的技术突飞猛进,放眼市场,真正能讲清楚大数据能解决商业问题的有几家? 我想,可能进入一个大数据业务相关的产品团队,对我来说是极大的幸运。我相信,阿里在大数据应用上的尝试,已经走得很前沿。顺道黑一下竞争对手,当阿里的大数据产品已经从数据分析报表走向数据开放平台的时候,京东的数据产品还仅仅停留在流量可视化上…… 在阿里两年最珍贵的一段经历,大概是在集团大客户的战略成型,御膳房作为数据团队支持大客户业务的时候,得以和宝洁等传统线下品牌的多个部门合作,认识了一帮和我们思维方式挺不一样的人,也看到了阿里的数据资产加上品牌的行业经验能产生多大的想象空间。 现如今,阿里每年的GMV保持快速增长趋势,无论是用户还是资本市场,都对其有极高的要求,而流量的增长已经达到瓶颈,大数据的力量不仅做到让流量变现更有效率,甚至指导了品牌线下的产品设计及生产,听起来还是挺振奋人心的。 如果你对这一段有兴趣,也可以参考: AL06:《在阿里做大数据业务的一年》 AL07:《从雕琢细节到追求格局》 AL08:《谈谈数据产品经理的工作职责》 4. 价值观&文化   知乎上曾经有个提问,叫“你为什么要从阿里巴巴离职”,一度引发出很多对阿里的文化和HR的诟病,当身处其中的时候,总归是会被影响,当然,自认为作为一个在学生时代就已经形成价值观的人,也不太容易被一些东西洗脑。 阿里的六脉神剑如是说:客户第一、拥抱变化、团队合作、诚信、激情、敬业。 所以呢,你常常有机会看到一群秉持这样的价值观努力奋斗的人们,并乐于参与其中,也的确有机会在一些场合下被所谓的价值观“绑架”,让你去做一些可能你并没有那么愿意做的事情。 这几条价值观本身都是极好的,倘若有些诟病,大概也只是在执行的时候出了一些问题,我无意去抱怨或攻击,仅仅是看过了,了解了,感受了。 其实还真的挺感动一帮人全意全意做一些事情的感觉。直到现在我都记得,14年年底,当时我们整个事业部要赶一个大项目上线,京杭两地996联合办公,在“誓师大会”上,一位技术架构师的女儿刚出生,他义正辞严地说:“我回去就要和我儿子讲,你是哥哥,要好好照顾妈妈和妹妹,因为爸爸要去做很重要的事情,这段时间没有空照顾你们了……” 我当时觉得,如果是我,大概做不到这么坚决吧,但是依然由衷佩服他的精神。后来,那个项目并不算成功,大事业部也随后充足,却被今天的御膳房产品打下了一个不错的基础,那是后话。 还有阿里的政委角色HRG,的确扮演着很重要的角色,他们要求不仅对所支持团队的业务了解,对团队当中的每一个人正在做的项目以及遇到的困难了解,从而在人员激励及人才盘点的时候,做出HRG应有的判断,也可以规避某些业务主管只手遮天的行为。 有个故事讲起来挺感动,当时一个业务Leader正在考虑是否要给已经离职的员工分配年终奖,迟疑的时候,被HRG一口喷回去:“你是主管你自己不会判断吗,这个人过去一年的绩效完成了吗,完成的怎么样,达到你的预期了吗,如果达到了为什么不给!”一时间觉得正气凛然。 关于文化,其实从开始做这个公众号,或多或少讲了不少吐槽的故事,在这里就不一一列出,如果感兴趣欢迎自行寻找。或许正如Lucy所说,阿里没有那么好,也没有那么差。我的确感受到了一些不能忍,可也的确感受到了它的发展和优化,这就是希望吧。 在阿里的最后一周,说得俗一点,还没有走,就已经开始想念,感谢这段经历丰富了我的人生。 本文链接:http://www.paymoon.com:8001/index.php/2016/09/20/alibaba-two-yrs-expericence/ (转载请保留) 原文: http://www.yixieshi.com/51900.html

分布式消息最终一致性事务MQ事务一致性

$
0
0
现在先抛出问题,假设有一个主数据中心在北京M,然后有成都A,上海B两个地方数据中心,现在的问题是,假设成都上海各自的数据中心有记录变更,需要先同步到主数据中心,主数据中心更新完成之后,在把最新的数据分发到上海,成都的地方数据中心A,地方数据中心更新数据,保持和主数据中心一致性(数据库结构完全一致)。数据更新的消息是通过一台中心的MQ进行转发。
先把问题简单化处理,假设A增加一条记录Message_A,发送到M,B增加一条记录 MESSAGE_B发送到M,都是通过MQ服务器进行转发,那么M系统接收到条消息,增加两条数据,那么M在把增加的消息群发给A,B,A和B找到自己缺失的数据,更新数据库。这样就完成了一个数据的同步。 从正常情况下来看,都没有问题,逻辑完全合理,但是请考虑以下三个问题 1 如何保证A->M的消息,M一定接收到了,同样,如何保证M->A的消息,M一定接收到了 2 如果数据需要一致性更新,比如A发送了三条消息给M,M要么全部保存,要么全部不保存,不能够只保存其中的几条记录。我们假设更新的数据是一条条发送的。 3 假设同时A发送了多条更新请求,如何保证顺序性要求? 这两个问题就是分布式环境下数据一致性的问题 对于第一个问题,比较好解决,我们先看看一个tcp/ip协议链接建立的过程 我们的思路可以从这个上面出发,在简化一下,就一个请求,一个应答。 简单的通信模型是这样的 A->M : 你收到我的一条消息没有,消息的ID是12345 M->A: 我收到了你的一条消息数据,消息数据是ID;12345 这样就一个请求,一个应答,就完成了一次可靠性的传输。如果A一致没有收到M的应答,就不断的重试。这个时候M就必须保证幂等性。不能重复的处理消息。那么最极端的情况是,怎么也收不到M的应答,这个时候是系统故障。自己检查一下吧。 这么设计就要求,A在发送消息的时候持久化这个消息的数据内容,然后不断的重试,一旦接收到M的应答,就删除这条消息。同样,M端也是一样的。不要相信MQ的持久化机制,不是很靠谱的。 那么M给A发送消息也采取类似的原理就可以了。 下面在看看第二个问题,如何保持数据的一致性更新,这个还是可以参考TCP/IP的协议。 首先A发送一条消息给M:我要发送一批消息数据给你,批次号是10000,数据是5条。 M发送一条消息给A:ok,我准备好了,批次号是10000,发送方你A 接着A发送5条消息给M,消息ID分别为1,2,3,4,5 ,批次号是10000, 紧接着,A发送一个信息给M:我已经完成5小消息的发送,你要提交数据更新了 接下来可能发送两种情况 1 那么M发送消息给A:ok,我收到了5条消息,开始提交数据 2 那么M也可以发送给A:我收到了5条消息,但是还缺少,请你重新发送,那么A就继续发送,直到A收到M成功的应答。 整个过程相当复杂。这个也就是数据一旦分布了,带来最大的问题就是数据一致性的问题。这个成本非常高。 对于第三个问题,这个就比较复杂了 这个最核心的问题就是消息的顺序性,我们只能在每个消息发一个消息的序列号,但是还是没有最好解决这个问题的办法。因为消息接收方不知道顺序。因为即使给他了序列号,也没有办法告诉他,这个应该何时处理。最好的办法是在第二种方式的基础作为一个批次来更新。 这个只是以最简单的例子来说明一下分布式系统的要保证数据一致性是一件代价很大的事情。当然有的博主会说,这个何必这么复杂,直接数据库同步不就可以了。这个例子当然是没有问题的,万一这个几个库的模型都不一样,我发送消息要处理的事情不一样的。怎么办? 在上文,简单的介绍了分布式数据的同步问题,上面的问题比较抽象,在目前的互联网应用中还很少见,这次在通过一个比较常见的例子,让大家更深入的了解一下分布式系统设计中关于数据一致性的问题 这次我们拿我们经常使用的功能来考虑吧,最近网购比较热门,就以京东为例的,我们来看看京东的一个简单的购物流程 用户在京东上下了一个订单,发现自己在京东的账户里面有余额,然后使用余额支付,支付成功之后,订单状态修改为支付成功,然后通知仓库发货。假设订单系统,支付系统,仓库系统是三个独立的应用,是独立部署的,系统之间通过远程服务调用。 订单的有三个状态:I:初始 P:已支付 W:已出库,订单金额100, 会员帐户余额200 如果整个流程比较顺利,正常情况下,订单的状态会变为I->P->W,会员帐户余额100,订单出库。 但是如果流程不顺利了?考虑以下几种情况 1:订单系统调用支付系统支付订单,支付成功,但是返回给订单系统数据超时,订单还是I(初始状态),但是此时会员帐户余额100,会员肯定会马上找京东骂京东,为啥不给老子发货,我都付钱了 2:订单系统调用支付系统成功,状态也已经更新成功,但是通知仓库发货失败,这个时候订单是P(已支付)状态,此时会员帐户余额是100,但是仓库不会发货。会员也要骂京东。 3:订单系统调用支付系统成功,状态也已经更新成功,然后通知仓库发货,仓库告诉订单系统,没有货了。这个时候数据状态和第二种情况一样。 对于问题一,我们来分析一下解决方案,能想到的解决方案如下 1 假设调用支付系统支付订单的时候先不扣钱,订单状态更新完成之后,在通知支付系统你扣钱 如果采用这种设计方案,那么在同一时刻,这个用户,又支付了另外一笔订单,订单价格200,顺利完成了整个订单支付流程,由于当前订单的状态已经变成了支付成功,但是实际用户已经没有钱支付了,这笔订单的状态就不一致了。即使用户在同一个时刻没有进行另外的订单支付行为,通知支付系统扣钱这个动作也有可能完不成,因为也有可能失败,反而增加了系统的复杂性。 2 订单系统自动发起重试,多重试几次,例如三次,直到扣款成功为止。 这个看起来也是不错的考虑,但是和解决方案一样,解决不了问题,还会带来新的问题,假设订单系统第一次调用支付系统成功,但是没有办法收到应答,订单系统又发起调用,完了,重复支付,一次订单支付了200。 假设支付系统正在发布,你重试多少次都一样,都会失败。这个时候用户在等待,你怎么处理? 3 在第二种方案的基础上,我们先解决订单的重复支付行为,我们需要在支付系统上对订单号进行控制,一笔订单如果已经支付成功,不能在进行支付。返回重复支付标识。那么订单系统根据返回的标识,更新订单状态。 接下来解决重试问题,我们假设应用上重试三次,如果三次都失败,先返回给用户提示支付结果未知。假设这个时候用户重新发起支付,订单系统调用支付系统,发现订单已经支付,那么继续下面的流程。如果会员没有发起支付,系统定时(一分钟一次)去核对订单状态,如果发现已经被支付,则继续后续的流程。 这种方案,用户体验非常差,告诉用户支付结果未知,用户一定会骂你,你丫咋回事情,我明明支付了,你告诉我未知。假设告诉用户支付失败,万一实际是成功的咋办。你告诉用户支付成功,万一支付失败咋办。 4 第三种方案能够解决订单和支付数据的一致性问题,但是用户体验非常差。当然这种情况比较可能是少数,可以牺牲这一部分的用户体验,我们还有没有更好的解决方案,既能照顾用户体验,又能够保证资金的安全性。 我们再回来看看第一种方案,我们先不扣钱,但是有木有办法让这一部分钱不让用户使用,对了,我们先把这一部分钱冻结起来,订单系统先调用支付系统成功的时候,支付系统先不扣钱,而是先把钱冻结起来,不让用户给其他订单支付,然后等订单系统把订单状态更新为支付成功的时候,再通知支付系统,你扣钱吧,这个时候支付系统扣钱,完成后续的操作。 看起来这个方案不错,我们仔细在分析一下流程,这个方案还存在什么问题,假设订单系统在调用支付系统冻结的时候,支付系统冻结成功,但是订单系统超时,这个时候返回给用户,告知用户支付失败,如果用户再次支付这笔订单,那么由于支付系统进行控制,告诉订单系统冻结成功,订单系统更新状态,然后通知支付系统,扣钱吧。如果这个时候通知失败,木有问题,反正钱都已经是冻结的了,用户不能用,我只要定时扫描订单和支付状态,进行扣钱而已。 那么如果变态的用户重新拍下来一笔订单,100块钱,对新的订单进行支付,这个时候由于先前那一笔订单的钱被冻结了,这个时候用户余额剩余100,冻结100,发现可用的余额足够,那就直接在对用户扣钱。这个时候余额剩余0,冻结100。先前那一笔怎么办,一个办法就是定时扫描,发现订单状态是初始的话,就对用户的支付余额进行解冻处理。这个时候用户的余额变成100,订单数据和支付数据又一致了。假设原先用户余额只有100,被冻结了,用户重新下单,支付的时候就失败了啊,的确会发生这一种情况,所以要尽可能的保证在第一次订单结果不明确的情况,尽早解冻用户余额,比如10秒之内。但是不管如何快速,总有数据不一致的时刻,这个是没有办法避免的。 第二种情况和第三种情况如何处理,下次在分析吧。 由于互联网目前越来越强调分布式架构,如果是交易类系统,面临的将会是分布式事务上的挑战。当然目前有很多开源的分布式事务产品,例如java JPA,但是这种解决方案的成本是非常高的,而且实现起来非常复杂,效率也比较低下。对于极端的情况:例如发布,故障的时候都是没有办法保证强一致性的。 在上文主要介绍了数据分布的情况下保证一致性的情况,在第二篇文章里面,我这里提出了三个问题 1.订单系统调用支付系统支付订单,支付成功,但是返回给订单系统数据超时,订单还是I(初始状态),但是此时会员帐户余额100,会员肯定会马上找京东骂京东,为啥不给老子发货,我都付钱了 2.订单系统调用支付系统成功,状态也已经更新成功,但是通知仓库发货失败,这个时候订单是P(已支付)状态,此时会员帐户余额是100,但是仓库不会发货。会员也要骂京东。 3.订单系统调用支付系统成功,状态也已经更新成功,然后通知仓库发货,仓库告诉订单系统,没有货了。这个时候数据状态和第二种情况一样。 重点分析解决了第一个的问题以及相应的方案,发现在数据分布的环境下,很难绝对的保证数据一致性(任何一段区间),但是有办法通过一种补偿机制,最终保证数据的一致性。 在下面在分析一下第二个问题 订单系统调用支付系统成功,状态也已经更新成功,但是通知仓库发货失败,这个时候订单是P(已支付)状态,此时会员帐户余额是100,但是仓库不会发货。会员也要骂京东。 通过在上一篇文章里面分析过,这个相对来说是比较简单的,我可以采取重试机制,如果发现通知仓库发货失败,就一致重试, 这里面有两种方式: 1 异步方式:通过类似MQ(消息通知)的机制,这个是异步的通知 2 同步调用:类似于远程过程调用 对于同步的调用的方式,比较简单,我们能够及时获取结果,对于异步的通知,就必须采用请求,应答的方式进行,这一点在(关于分布式系统的数据一致性问题(一))里面有介绍。这里面就不再阐述。 来看看第三个问题 订单系统调用支付系统成功,状态也已经更新成功,然后通知仓库发货,仓库告诉订单系统,没有货了。这个时候数据状态和第二种情况一样。 我觉得这是一个很有意思的问题,我们还是考虑几种解决的方案 1 在会员下单的时刻,就告诉仓库,我要你把货物留下来, 2 在会员支付订单时候,在支付之前检查仓库有没有货,如果没有货,就告知会员木有货物了 3 如果会员支付成功,这个时候没有货了,就会退款给用户或者等待有货的时候在发货 正常情况,京东的仓库一般都是有货的,所以影响到的会员很少,但是在秒杀和营销的时候,这个时候就不一定了,我们考虑假设仓库有10台iphone 如果采用第一种方案, 1 在会员下单的时候,相当于库存就-1,那么用户恶意拍下来,没有去支付,就影响到了其他用户的购买。京东可以设置一个订单超时时间,如果这段时间内没有支付,就自动取消订单 2 在会员支付之前,检查仓库有货,这种方案了,对于用户体验不好,但是对于京东比较好,至少我东西都卖出去了。那些没有及时付款的用户,只能投诉了京东无故取消订单 3 第三种方案,这个方案体验更不好,而且用户感觉受到京东欺诈,但是对于京东来说,比第二种方案更有益,毕竟我还可以多卖出一点东西。 个人觉得,京东应该会采用第二种或者第三种方式来处理这类情况,我在微博上搜索了 “京东 无故取消订单”,发现果真和我预料的处理方式。不过至于这里的无故取消是不是技术上的原因我不知道,如果真的是技术上的原因,我觉得京东可以采用不同的处理方案。对于秒杀和促销商品,可以考虑第一种方案,大多数人都会直接付款,毕竟便宜啊,如果用户抢不到便宜的东西,抱怨当然很大了。这样可以照顾大多数用户的体验。对于一般的订单,可以采用第二种或者第三种方式,这种情况下,发生付款之后仓库没有货的情况会比较少,并且就算发生了,用户也会觉得无所谓,大不了退钱吗,这样就可以实现自己的利益最大化而最低程度的减少用户体验。 而铁道部在这个问题上,采用的是第一种方案,为什么和京东不一样,就是因为用户体验,如果用户把票都买了,你告诉我木有票了,旅客会杀人的。哈哈,不过铁道部不担心票卖不出去,第一种方案对他影响没有什么。 说了这么多,就是说 分布式环境下(数据分布)要任何时刻保证数据一致性是不可能的,只能采取妥协的方案来保证数据最终一致性。这个也就是著名的CAP定理。 在前面三篇文章中,介绍了关于分布式系统中数据一致性的问题,这一篇主要介绍CAP定理以及自己对CAP定理的了解。 CAP定理是2000年,由 Eric Brewer 提出来的 Brewer认为在分布式的环境下设计和部署系统时,有3个核心的需求,以一种特殊的关系存在。这里的分布式系统说的是在物理上分布的系统,比如我们常见的web系统。 这3个核心的需求是:Consistency,Availability和Partition Tolerance,赋予了该理论另外一个名字 - CAP。 Consistency:一致性,这个和数据库ACID的一致性类似,但这里关注的所有数据节点上的数据一致性和正确性,而数据库的ACID关注的是在在一个事务内,对数据的一些约束。 Availability:可用性,关注的在某个结点的数据是否可用,可以认为某一个节点的系统是否可用,通信故障除外。 Partition Tolerance:分区容忍性,是否可以对数据进行分区。这是考虑到性能和可伸缩性。 为什么不能完全保证这个三点了,个人觉得主要是因为一旦进行分区了,就说明了必须节点之间必须进行通信,涉及到通信,就无法确保在有限的时间内完成指定的行文,如果要求两个操作之间要完整的进行,因为涉及到通信,肯定存在某一个时刻只完成一部分的业务操作,在通信完成的这一段时间内,数据就是不一致性的。如果要求保证一致性,那么就必须在通信完成这一段时间内保护数据,使得任何访问这些数据的操作不可用。 如果想保证一致性和可用性,那么数据就不能够分区。一个简单的理解就是所有的数据就必须存放在一个数据库里面,不能进行数据库拆分。这个对于大数据量,高并发的互联网应用来说,是不可接受的。 我们可以拿一个简单的例子来说明:假设一个购物系统,卖家A和卖家B做了一笔交易100元,交易成功了,买家把钱给卖家。 这里面存在两张表的数据:Trade表Account表 ,涉及到三条数据Trade(100),Account A ,Account B 假设 trade表和account表在一个数据库,那么只需要使用数据库的事务,就可以保证一致性,同时不会影响可用性。但是随着交易量越来越大,我们可以考虑按照业务分库,把交易库和account库单独分开,这样就涉及到trade库和account库进行通信,也就是存在了分区,那么我们就不可能同时保证可用性和一致性。 我们假设初始状态 trade(buyer,seller,tradeNo,status) = trade(A,B,20121001,I) account(accountNo,balance) = account(A,300) account(accountNo,balance) = account(B,10) 在理想情况下,我们期望的状态是 trade(buyer,seller,tradeNo,status) = trade(A,B,20121001,S) account(accountNo,balance) = account(A,200) account(accountNo,balance) = account(B,110) 但是考虑到一些异常情况 假设在trade(20121001,S)更新完成之前,帐户A进行扣款之后,帐户A进行了另外一笔300款钱的交易,把钱消费了,那么就存在一个状态 trade(buyer,seller,tradeNo,status) = trade(A,B,20121001,S) account(accountNo,balance) = account(A,0) account(accountNo,balance) = account(B,10) 产生了数据不一致的状态 由于这个涉及到资金上的问题,对资金要求比较高,我们必须保证一致性,那么怎么办,只能在进行trade(A,B,20121001)交易的时候,对于任何A的后续交易请求trade(A,X,X),必须等到A完成之后,才能够进行处理,也就是说在进行trade(A,B,20121001)的时候,Account(A)的数据是不可用的。 任何架构师在设计分布式的系统的时候,都必须在这三者之间进行取舍。首先就是是否选择分区,由于在一个数据分区内,根据数据库的ACID特性,是可以保证一致性的,不会存在可用性和一致性的问题,唯一需要考虑的就是性能问题。对于可用性和一致性,大多数应用就必须保证可用性,毕竟是互联网应用,牺牲了可用性,相当于间接的影响了用户体验,而唯一可以考虑就是一致性了。 牺牲一致性 对于牺牲一致性的情况最多的就是缓存和数据库的数据同步问题,我们把缓存看做一个数据分区节点,数据库看作另外一个节点,这两个节点之间的数据在任何时刻都无法保证一致性的。在web2.0这样的业务,开心网来举例子,访问一个用户的信息的时候,可以先访问缓存的数据,但是如果用户修改了自己的一些信息,首先修改的是数据库,然后在通知缓存进行更新,这段期间内就会导致的数据不一致,用户可能访问的是一个过期的缓存,而不是最新的数据。但是由于这些业务对一致性的要求比较高,不会带来太大的影响。 异常错误检测和补偿 还有一种牺牲一致性的方法就是通过一种错误补偿机制来进行,可以拿上面购物的例子来说,假设我们把业务逻辑顺序调整一下,先扣买家钱,然后更新交易状态,在把钱打给卖家 我们假设初始状态 account(accountNo,balance) = account(A,300) account(accountNo,balance) = account(B,10) trade(buyer,seller,tradeNo,status) = trade(A,B,20121001,I) 那么有可能出现 account(accountNo,balance) = account(A,200) trade(buyer,seller,tradeNo,status) = trade(A,B,20121001,S) account(accountNo,balance) = account(B,10) 那么就出现了A扣款成功,交易状态也成功了,但是钱没有打给B,这个时候可以通过一个时候的异常恢复机制,把钱打给B,最终的情况保证了一致性,在一定时间内数据可能是不一致的,但是不会影响太大。 两阶段提交协议 当然,还有一种方式就是我另外一篇文章里面《X/Open DTP-分布式事务模型》里面说的,但是再第一阶段和第二阶段之间,数据也可不能是一致性的,也可能出现同样的情况导致异常。而且DTP的分布式事务模型 限制太多,例如必须有实现其功能的相关的容器支持,并且资源管理器也必须实现了XA规范。限制比较多。 国外有的架构师有两种方案去解决CAP的限制,但是也是比较适合特定的业务,而没有通用的解决方案, 探知分区->分区内操作->事后补偿 就是上面介绍的异常检测恢复机制,这种机制其实还是有限制, 首先对于分区检测操作,不同的业务涉及到的分区操作可能不一样 分区内操作限制:不同的业务对应的约束不一致 事后补偿:由于业务约束不一样,补偿方式也不一样。 所以这只能作为一种思想,不能做一个通用的解决方案

[深度学习]的四个步骤

$
0
0
本文:http://www.paymoon.com:8001/index.php/2016/09/23/dl-4-steps/

摘要: 深度学习的四个步骤,由浅入深,并给出每个阶段的学习资源。

原文地址: https://medium.com/@vzkuma/4-steps-for-learning-deep-learning-86f11fcee54 6593f13b59d1b36cbcf11f921bdd7c193ffed58e 学习深度学习的四个步骤 一个手写资源列表帮助你变成一个深度学习专家 首先,如果你需要一些基本的信息或者令人信服的关于深度学习为什么有非常大的影响,可以检验下面由Andrew Ng制作的视频。 a29bd97cfb6df7d2896de9065f068cee28bb7404 https://www.youtube.com/watch?v=n1ViNeWhC24 本文:http://www.paymoon.com:8001/index.php/2016/09/23/dl-4-steps/ 步骤1.学习深度学习的基本知识 (可选的,但是建议你这样做) 由Andrew Ng的机器学习课程开始https://www.coursera.org/learn/machine-learning.他的课程提供了一些关于各种机器学习算法的介绍,更重要的是,一般的程序/机器学习的方法,包括数据预处理,大参数调优等。 阅读由Geoff Hinton、Yoshua Bengio和Yann LeCun写的NIPS 2015 深度学习教材,是一个以通俗易懂的介绍。 步骤2.深入专研深度学习 我学习的偏好是观看讲座视频,并感谢几个优秀的网上课程,这里有我喜欢的几个课程: 1.Deep learning at Oxford 2015,Nando de Freitas没有过于复杂的熟练解释基本原理。从讲座9开始,如果你熟悉神经网络并想要再深一点,他在他的例子中使用了火炬框架(Video on Youtube)。 2.Neural Network for Machine Learning :这是Geoff Hinton的课程。Hinton是一个杰出的研究者,他证明了一般的BP算法的使用并对于深度学习的发展起着至关重要的作用。我尊重他,但是我发现该课程没有组织。更进一步的,课程会由于布置的测试陷入困境。 3.Neural Networks Class,是由Hugo Larochelle 教授:另外一个极好的课程。 4.Yaser Abu-Mostafas machine learing course:如果你感兴趣更多的理论的话。 如果你更倾向于书籍,这里有一些极好的资源。 1.Neural Networks and Deep Learning Book,是由Michael Nielsen撰写:在线书籍并有几个交互式的     JavaScript元素可以玩。 2.Deep Learning Book,是由Ian Goodfellow, Yoshua Bengio和Aaron Courville撰写:有一些密集。 本文:http://www.paymoon.com:8001/index.php/2016/09/23/dl-4-steps/ 步骤3.挑选一个专注领域并深入研究 确定你所热爱的并深入研究,领域是宽广的,所以列表是一个全面的列表。 1.计算机视觉 深度学习已经改变了这一领域。斯坦福CS231课程是我最经历的最好课程,它教会你基础知识和卷积,同时也帮助你在AWS上建立GPU实例,同时,也可以看由Mofstafa S,Ibrahimz制作的课程Getting Started in Computer Vision。 2.自然语言处理(NLP) 用于机器翻译,提问和回答,以及情感分析。为了掌握这一领域,深度理解自然语言的算法和基础计算属性是必须的。CS224N/Ling284课程是一个很好的起步课程。CS224d:Deep Learning for Natural Language Processing,是由David Socher教授的另外一门极好的课程,回顾了所有关于自然语言的最新深度学习的研究。更细节的可以看How do I learn Natural Language Processing? 3.记忆网络(RNN-LSTM) 最近的工作是将在LSTM复发神经的注意机制与外部可写内存相结合,这意味着在建筑系统中有一些有趣的工作,可以被理解、存储并在以问答的方式检索。这个研究领域是由Dr.Yann Lecun的facebook实验室起步的,原始文字是在arxiv上:Memory Network。这里有许多研究变体、数据集、标准等,比如,Metamind的Dynamic Memory Networks for Natural Language Processing。 4.深度强化学习 由AlphaGo出名,围棋系统在历史上击败了最强围棋选手,David Sliver的(谷歌深度思维)视频课程和教授Rich Stutton的书籍是很好的起步。对于关于LSTM的一般介绍可以看Christopher的文章Understand LSTM nework和Andrej karpathy的The Unreasonable Effectiveness of Recurrent Neural Networks。 5.一般模型 虽然有辨识率模型试着去检测、区分和分类,它们最终是在一个基本层面上寻找功能分化并不理解数据。除了短期应用之外,生成模型提供了潜在的自动学习的自然特性;类别、维度或者完全不同的东西。三个常用的生成模型——Generative Adversarial Networks(GANs), Variational Autoencoders (VAEs) 和Autoregressive models(比如像素RNN),GAN是最流行的。想进一步深入阅读 1.Original GAN paper. 2.The Laplacian Adversarial Networks (LAPGAN) Paper. 3.The Deep Convolutional Generative Adversarial Networks (DCGANpaper和DCGAN Code(可以被用来学习层次特征而不需要任何监督),也可以参考DCGNN used for Image Superresolution. 步骤4.建立一些东西 动手制作是成为一个专家的关键,试着去建立一些吸引你的并匹配你技能等级的。这里有一些建议去启发你。 1.作为传统,开始是从分类手写数据库MNIST dataset. 2.试着在数据库ImageNet上进行人脸识别和分类,如果你一直在做这个,可以参加ImageNet Challenge 2016. 3.使用RNNs或者CNNs做一个Twitter情绪分析。 4.训练一个神经网络去复制著名画家的艺术风格(A Neural Algorithm of Artistic Style)。 5.使用RNN制作音乐:Compose Music With Recurrent Neural Networks。 6.使用深度强化学习打乒乓球:Play ping-pong using Deep Reinforcement Learning。 7.使用神经网络自拍:Use Neural Networks to Rate a selfie。 8.使用深度学习自动着色黑白照片:Automatically color Black & White pictures using Deep Learning。 想获得更多的启示,可以看下CS231n在冬天2016以及冬天2015的项目,也可以看下Kaggle 和HackerRank为了有趣的东西以及竞争和学习的机会而比赛。 本文:http://www.paymoon.com:8001/index.php/2016/09/23/dl-4-steps/ 附加资源 这里有一些指示来帮助你持续学习 1.阅读一些极好的博客:Christopher Olah Andrew Karpathy博客很好的解释基本原理和最近突破 2.在Twitter上关注一些有影响的人,@drfeifei, @ylecun, @karpathy, @AndrewYNg, @Kdnuggets, @OpenAI, @googleresearch.Who to follow on Twitter for machine learning information ? 3.Google + Deep Learning Community页面,是一个很好的方式与深度学习中的创新保持联系,同时也与其他深度学习的专家和爱好者交流。 参看ChristosChristofidis/awesome-deep-learning,关于深度学习课程、项目和社区的策划表是为了更多的乐趣。 本文:http://www.paymoon.com:8001/index.php/2016/09/23/dl-4-steps/

[总纲][深度学习]知识结构与精通之道

$
0
0
这篇文章是个目录,这个系列里面,我将会从浅到深,从点到系统的介绍深度学习与搭建神经网络的知识。 深度学习知识结构如下: 本文地址:http://www.paymoon.com:8001/index.php/2016/10/11/dl/ 一、深度学习应用 1、图像识别 2、人脸识别 3、图像检测 4、OCR 5、语音识别 6、强化学习 7、自然语言处理 8、无监督学习 9、迁移学习 本文地址:http://www.paymoon.com:8001/index.php/2016/10/11/dl/ 深度学习模型类型 1、神经元 神经网络 2、卷积 神经网络 3、递归 神经网络 深度学习模型求解 1、SGD(stochastic gradient descent) 2、AdaDelta 3、AG(adaptive gradient) 4、Adam 5、NAG(nesterov accelerated gradient) 6、RMSprop 深度学习模型泛化 1、Dropout 2、Dropconnect 3、data agumentation 深度学习特征表达 1、受限玻尔兹曼机 2、稀疏编码 3、自编码器 4、卷积神经网络 5、强化学习 6、深度置信网 本文地址:http://www.paymoon.com:8001/index.php/2016/10/11/dl/ 深度学习开源库 1、tensorflow 2、torch 3、theano 4、caffe 5、cuda-convnet2 6、mxnet 7、ABtest 深度学习训练及预测优化 1、预测加速&模型压缩 2、训练加速 本文地址:http://www.paymoon.com:8001/index.php/2016/10/11/dl/

并发的好处/多线程的优点

$
0
0
原文:http://tutorials.jenkov.com/java-concurrency/benefits.html 本文:http://www.paymoon.com:8001/index.php/2016/10/13/java-concurrency-benefits/
作者:Jakob Jenkov        翻译:古圣昌            校对:欧振聪 尽管面临很多挑战,多线程有一些优点使得它一直被使用。这些优点是:
  • 资源利用率更好
  • 程序设计在某些情况下更简单
  • 程序响应更快

资源利用率更好

想象一下,一个应用程序需要从本地文件系统中读取和处理文件的情景。比方说,从磁盘读取一个文件需要5秒,处理一个文件需要2秒。处理两个文件则需要:
1 5秒读取文件A
2 2秒处理文件A
3 5秒读取文件B
4 2秒处理文件B
5 ---------------------
6 总共需要14
从磁盘中读取文件的时候,大部分的CPU时间用于等待磁盘去读取数据。在这段时间里,CPU非常的空闲。它可以做一些别的事情。通过改变操作的顺序,就能够更好的使用CPU资源。看下面的顺序:
1 5秒读取文件A
2 5秒读取文件B + 2秒处理文件A
3 2秒处理文件B
4 ---------------------
5 总共需要12
CPU等待第一个文件被读取完。然后开始读取第二个文件。当第二文件在被读取的时候,CPU会去处理第一个文件。记住,在等待磁盘读取文件的时候,CPU大部分时间是空闲的。
总的说来,CPU能够在等待IO的时候做一些其他的事情。这个不一定就是磁盘IO。它也可以是网络的IO,或者用户输入。通常情况下,网络和磁盘的IO比CPU和内存的IO慢的多。

程序设计更简单

在单线程应用程序中,如果你想编写程序手动处理上面所提到的读取和处理的顺序,你必须记录每个文件读取和处理的状态。相反,你可以启动两个线程,每个线程处理一个文件的读取和操作。线程会在等待磁盘读取文件的过程中被阻塞。在等待的时候,其他的线程能够使用CPU去处理已经读取完的文件。其结果就是,磁盘总是在繁忙地读取不同的文件到内存中。这会带来磁盘和CPU利用率的提升。而且每个线程只需要记录一个文件,因此这种方式也很容易编程实现。

程序响应更快

将一个单线程应用程序变成多线程应用程序的另一个常见的目的是实现一个响应更快的应用程序。设想一个服务器应用,它在某一个端口监听进来的请求。当一个请求到来时,它去处理这个请求,然后再返回去监听。

服务器的流程如下所述:
1 while(server is active){
2     listen for request
3     process request
4 }
如果一个请求需要占用大量的时间来处理,在这段时间内新的客户端就无法发送请求给服务端。只有服务器在监听的时候,请求才能被接收。另一种设计是,监听线程把请求传递给工作者线程(worker thread),然后立刻返回去监听。而工作者线程则能够处理这个请求并发送一个回复给客户端。这种设计如下所述:
1 while(server is active){
2     listen for request
3     hand request to worker thread
4 }
这种方式,服务端线程迅速地返回去监听。因此,更多的客户端能够发送请求给服务端。这个服务也变得响应更快。
桌面应用也是同样如此。如果你点击一个按钮开始运行一个耗时的任务,这个线程既要执行任务又要更新窗口和按钮,那么在任务执行的过程中,这个应用程序看起来好像没有反应一样。相反,任务可以传递给工作者线程(word thread)。当工作者线程在繁忙地处理任务的时候,窗口线程可以自由地响应其他用户的请求。当工作者线程完成任务的时候,它发送信号给窗口线程。窗口线程便可以更新应用程序窗口,并显示任务的结果。对用户而言,这种具有工作者线程设计的程序显得响应速度更快。 more:Java NIO系列教程(一) Java NIO 概述 http://ifeve.com/overview/

Java并发:并发编程带来的好处和风险

$
0
0

一、好处

并发编程之所以让人迷惑是因为有不止一种问题的解决需要使用并发,也有不止一种方法去实现并发,而且他们之间也没有清晰的映射。 使用并发编程来解决的问题可以划分为两类,即“speed”和“designmanageability”。   1、速度优势: 多处理器:多处理器上面并发变成无疑会让程序运行很快。 单处理器:如果是单处理器的机器,那么并发编程可能相对于顺序编程没有什么变化。但是,如果其中某一个任务也许会发生阻塞的话,那么即使是单处理器,使用并发编程也会带来很大的好处,这样,某个任务阻塞的时候,其他任务也可以继续运行了。 反应灵敏的用户界面:在单处理器上面性能提升最典型的列子就是“事件驱动的编程”,比如创建一个有反应的用户界面,其中有个按钮,如果我们不使用并发编程,那么我们需要在我们编写的每一个代码片段中都要有对用户输入的检测,如果我们使用并发编程,我们只需要重新开启一个线程去监听用户的输入即可。 并发的实现:实现并发的最直接的方式是在操作系统级别,使用进程,进程一种自包含的程序,使用自己的地址空间,操作系统会让进程之间相互隔离,所以进程编程相对容易一些,不需要考虑共享资源的同步等问题。但是在Java中的并发编程,由于线程之间共享相同的memory或者IO等资源,所以Java多线程编程中需要考虑共享资源的同步问题。 进程和Java线程之间的选择:进程的确是一种实现并发的方式,butunfortunately there are generally quantity and overhead limitations toprocesses that prevent their applicability across the concurrency spectrum.   2、设计上的优势: 一般来说,线程使得你能够创建更加松耦合的设计。 单处理器:尽管单处理器上面的并发编程在同一时刻处理器仍然只能做一件事情,但是带来一个组织上面的重要优势:就是你的设计(design)会极大地简化。比如仿真。 仿真举例:如果没有并发,仿真将变得非常困难。 一般来说仿真涉及到多个交互元素,其中每一个都有“自己的想法”,尽管从程序员的角度来看每一个仿真元素都是被同一个处理器所驱动,但是设计上来看,每一个仿真元素都假装有自己的处理器以及运行独立的任务。  

二、风险

1、安全性问题 主要是多个线程共享数据时可能会产生于期望不相符的结果   2、活跃性问题(liveness) 当某个操作无法继续进行下去时,就会发生活跃性问题。比如死锁、饥饿、活锁等问题。   3 性能问题 a.线程过多时会使得CPU频繁切换,花在调度上时间太多。 b.多线程环境必须使用同步机制,导致很多编译器想做的优化被抑制。 c.线程过多还会消耗过多内存。

DB索引是什么/浅谈数据库索引

$
0
0
什么是索引 数据库索引好比是一本书前面的目录,能加快数据库的查询速度。 例如这样一个查询:select * from table1 where id=44。如果没有索引,必须遍历整个表,直到ID等于44的这一行被找到为止;有了索引之后(必须是在ID这一列上建立的索引),直接在索引里面找 44(也就是在ID这一列找),就可以得知这一行的位置,也就是找到了这一行。可见,索引是用来定位的。 索引分为聚簇索引和非聚簇索引两种,聚簇索引 是按照数据存放的物理位置为顺序的,而非聚簇索引就不一样了;聚簇索引能提高多行检索的速度,而非聚簇索引对于单行的检索很快。 建立索引的目的是加快对表中记录的查找或排序。 为表设置索引要付出代价的:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)。 为什么要创建索引 创建索引可以大大提高系统的性能。 第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。 第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。 第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。 第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。   也许会有人要问:增加索引有如此多的优点,为什么不对表中的每一个列创建一个索引呢?因为,增加索引也有许多不利的方面。 第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。 第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。 第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。 在哪建索引 索引是建立在数据库表中的某些列的上面。在创建索引的时候,应该考虑在哪些列上可以创建索引,在哪些列上不能创建索引。一般来说,应该在这些列上创建索引: 1.在经常需要搜索的列上,可以加快搜索的速度; 2.在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构; 3.在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度;在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的; 4.在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间; 5.在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。 同样,对于有些列不应该创建索引。一般来说,不应该创建索引的的这些列具有下列特点: 第一,对于那些在查询中很少使用或者参考的列不应该创建索引。这是因为,既然这些列很少使用到,因此有索引或者无索引,并不能提高查询速度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求。 第二,对于那些只有很少数据值的列也不应该增加索引。这是因为,由于这些列的取值很少,例如人事表的性别列,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大。增加索引,并不能明显加快检索速度。 第三,对于那些定义为text, image和bit数据类型的列不应该增加索引。这是因为,这些列的数据量要么相当大,要么取值很少,不利于使用索引。 第四,当修改性能远远大于检索性能时,不应该创建索引。这是因为,修改性能和检索性能是互相矛盾的。当增加索引时,会提高检索性能,但是会降低修改性能。当减少索引时,会提高修改性能,降低检索性能。因此,当修改操作远远多于检索操作时,不应该创建索引。 索引的数据结构 B-tree,B是balance,一般用于数据库的索引。使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度。而B+tree是B-tree的一个变种,大名鼎鼎的MySQL就普遍使用B+tree实现其索引结构。 插入(insert)操作:插入一个元素时,首先在B-tree中是否存在,如果不存在,即在叶子结点处结束,然后在叶子结点中插入该新的元素,注意:如果叶子结点空间足够,这里需要向右移动该叶子结点中大于新插入关键字的元素,如果空间满了以致没有足够的空间去添加新的元素,则将该结点进行“分裂”,将一半数量的关键字元素分裂到新的其相邻右结点中,中间关键字元素上移到父结点中(当然,如果父结点空间满了,也同样需要“分裂”操作),而且当结点中关键元素向右移动了,相关的指针也需要向右移。如果在根结点插入新元素,空间满了,则进行分裂操作,这样原来的根结点中的中间关键字元素向上移动到新的根结点中,因此导致树的高度增加一层。 删除(delete)操作:首先查找B-tree中需删除的元素,如果该元素在B-tree中存在,则将该元素在其结点中进行删除,如果删除该元素后,首先判断该元素是否有左右孩子结点,如果有,则上移孩子结点中的某相近元素到父节点中,然后是移动之后的情况;如果没有,直接删除后,移动之后的情况.。删除元素,移动相应元素之后,如果某结点中元素数目小于ceil(m/2)-1,则需要看其某相邻兄弟结点是否丰满(结点中元素个数大于ceil(m/2)-1),如果丰满,则向父节点借一个元素来满足条件;如果其相邻兄弟都刚脱贫,即借了之后其结点数目小于ceil(m/2)-1,则该结点与其相邻的某一兄弟结点进行“合并”成一个结点,以此来满足条件。 下面结合例子详细讲解mysql中索引的使用 索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。下面介绍几种常见的MySQL索引类型。   在数据库表中,对字段建立索引可以大大提高查询速度。假如我们创建了一个 mytable表:   CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL );   我们随机向里面插入了10000条记录,其中有一条:5555, admin。   在查找username="admin"的记录 SELECT * FROM mytable WHERE username='admin';   时,如果在username上已经建立了索引,MySQL无须任何扫描,即准确可找到该记录。相反,MySQL会扫描所有记录,即要查询10000条记录。   索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索包含多个列。   MySQL索引类型包括:   (1)普通索引 这是最基本的索引,它没有任何限制。它有以下几种创建方式:   ◆创建索引 CREATE INDEX indexName ON mytable(username(length)); 如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length,下同。   ◆修改表结构 ALTER mytable ADD INDEX [indexName] ON (username(length))   ◆创建表的时候直接指定 CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, INDEX [indexName] (username(length)) ); 删除索引的语法:   DROP INDEX [indexName] ON mytable;   (2)唯一索引 它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:   ◆创建索引 CREATE UNIQUE INDEX indexName ON mytable(username(length))   ◆修改表结构 ALTER mytable ADD UNIQUE [indexName] ON (username(length))   ◆创建表的时候直接指定 CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, UNIQUE [indexName] (username(length)) );   (3)主键索引 它是一种特殊的唯一索引,不允许有空值。一般是在建表的时候同时创建主键索引: CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, PRIMARY KEY(ID) ); 当然也可以用 ALTER 命令。记住:一个表只能有一个主键。   (4)组合索引 为了形象地对比单列索引和组合索引,为表添加多个字段: CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL, city VARCHAR(50) NOT NULL, age INT NOT NULL ); 为了进一步榨取MySQL的效率,就要考虑建立组合索引。就是将 name, city, age建到一个索引里: ALTER TABLE mytable ADD INDEX name_city_age (name(10),city,age); 建表时,usernname长度为 16,这里用 10。这是因为一般情况下名字的长度不会超过10,这样会加速索引查询速度,还会减少索引文件的大小,提高INSERT的更新速度。   如果分别在 usernname,city,age上建立单列索引,让该表有3个单列索引,查询时和上述的组合索引效率也会大不一样,远远低于我们的组合索引。虽然此时有了三个索引,但MySQL只能用到其中的那个它认为似乎是最有效率的单列索引。   建立这样的组合索引,其实是相当于分别建立了下面三组组合索引:   usernname,city,age usernname,city usernname 为什么没有 city,age这样的组合索引呢?这是因为MySQL组合索引“最左前缀”的结果。简单的理解就是只从最左面的开始组合。并不是只要包含这三列的查询都会用到该组合索引,下面的几个SQL就会用到这个组合索引:   SELECT * FROM mytable WHREE username="admin" AND city="郑州" SELECT * FROM mytable WHREE username="admin" 而下面几个则不会用到:   SELECT * FROM mytable WHREE age=20 AND city="郑州" SELECT * FROM mytable WHREE city="郑州"   (5)建立索引的时机 到这里我们已经学会了建立索引,那么我们需要在什么情况下建立索引呢?一般来说,在WHERE和JOIN中出现的列需要建立索引,但也不完全如此,因为MySQL只对<,<=,=,>,>=,BETWEEN,IN,以及某些时候的LIKE才会使用索引。例如:   SELECT t.Name FROM mytable t LEFT JOIN mytable m ON t.Name=m.username WHERE m.age=20 AND m.city='郑州' 此时就需要对city和age建立索引,由于mytable表的userame也出现在了JOIN子句中,也有对它建立索引的必要。   刚才提到只有某些时候的LIKE才需建立索引。因为在以通配符%和_开头作查询时,MySQL不会使用索引。例如下句会使用索引: SELECT * FROM mytable WHERE username like'admin%' 而下句就不会使用: SELECT * FROM mytable WHEREt Name like'%admin' 因此,在使用LIKE时应注意以上的区别。   (6)索引的不足之处 上面都在说使用索引的好处,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:   ◆虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。   ◆建立索引会占用磁盘空间的索引文件。一般情况这个问题不太严重,但如果你在一个大表上创建了多种组合索引,索引文件的会膨胀很快。 索引只是提高效率的一个因素,如果你的MySQL有大数据量的表,就需要花时间研究建立最优秀的索引,或优化查询语句。   (7)使用索引的注意事项 使用索引时,有以下一些技巧和注意事项:   ◆索引不会包含有NULL值的列 只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL。   ◆使用短索引 对串列进行索引,如果可能应该指定一个前缀长度。例如,如果有一个CHAR(255)的列,如果在前10个或20个字符内,多数值是惟一的,那么就不要对整个列进行索引。短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作。   ◆索引列排序 MySQL查询只使用一个索引,因此如果where子句中已经使用了索引的话,那么order by中的列是不会使用索引的。因此数据库默认排序可以符合要求的情况下不要使用排序操作;尽量不要包含多个列的排序,如果需要最好给这些列创建复合索引。   ◆like语句操作 一般情况下不鼓励使用like操作,如果非使用不可,如何使用也是一个问题。like “%aaa%” 不会使用索引而like “aaa%”可以使用索引。   ◆不要在列上进行运算 select * from users where YEAR(adddate)<2007; 将在每个行上进行运算,这将导致索引失效而进行全表扫描,因此我们可以改成 select * from users where adddate<‘2007-01-01’;   ◆不使用NOT IN和<>操作 以上,就对其中MySQL索引类型进行了介绍。
Viewing all 130 articles
Browse latest View live