前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[置顶] 《Python机器学习算法》的写作历程

[置顶] 《Python机器学习算法》的写作历程

作者头像
felixzhao
发布2018-03-19 17:12:55
9680
发布2018-03-19 17:12:55
举报
文章被收录于专栏:null的专栏null的专栏

前言

首先,感谢各位支持我博客的同学,你们的支持是我一直努力的动力,正是因为你们的支持,才有了《Python机器学习算法》一书的面世:

这里写图片描述
这里写图片描述

目前,该书已经可以在各大商城预定,以下罗列各大商城的购买链接:

除了上述的购买链接,还可以到淘宝去搜索“Python机器学习算法”,找到对应的商品。本书中凝聚着我本人的学习心得,与市面上的其他机器学习方面的书的最大区别主要有以下两点:

  • 编程实现过程中,最重要的就是理解公式的来源,本书从基本的公式开始,逐步推到,既兼顾到算法原理的说明,又有具体的实现过程;
  • 在讲解基本原理之余,专门有一章介绍在工业界中如何使用这些算法求解具体的问题。

为了兼顾到不同层次的读者,在算法的删选以及具体的实现过程都尽量能够做到深入浅出,由于个人能力以及其他一些因素,书中难免还有不足,还望各位读者能够不吝支出。下面我将给大家介绍一下整本书的写作历程,以供大家参考。

机器学习的黄金时间

近年来,人工智能AI技术的快速发展,得益于越来越多的人工智能人才的涌入和计算机硬件以及软件技术的不断发展。机器学习是人工智能AI的中一个重要的方向,在机器学习的发展过程中,越来越多的人投身于机器学习的研究中,同时,越来越多的互联网公司加入到人工智能的行列,“人工智能”一词也成为妇孺皆知的名词,这正是人工智能发展的黄金时间,同样,机器学习算法作为人工智能中的核心方法,也是发展的一个黄金时间。

机器学习中的常用算法

在机器学习的发展过程中出现了很多优秀的机器学习算法,主要可以从监督学习,无监督学习以及半监督学习的角度对其进行划分。

  • 监督学习(Supervised Learning)是指利用训练样本,包括数据特征和数据标签,训练出一个模型,并利用训练好的模型,对未知数据进行预测。常用的监督学习问题包括分类和回归,其中,分类问题的标签是离散的值,而回归问题的标签是一系列连续的值。常见的监督学习有:Logistic Regression算法,支持向量机SVM算法,BP神经网络算法,线性回归,Lasso,GBDT,随机森林等。
  • 无监督学习(Unsupervised Learning)是指事先没有训练样本,我们需要直接对数据进行建模。常见的无监督问题包括聚类。常见的无监督学习有:KMeans算法,Mean Shift算法,DBSCAN算法等。

在发展的过程中,人们不断提出一些新的算法和模型,深度学习(Deep Learning)的概念便是在这个过程中被提出,深度学习通过构建深层神经网络模型,学习到输入数据的更抽象的表示,以此达到特征学习的功能,更大程度上提高了模型的学习能力。深度学习的成功成为机器学习乃至人工智能发展史上光辉的一笔。常见的深度学习模型包括:自编码器Auto-encoder,深度信念网DBN,卷积神经网络CNN,递归神经网络RNN以及LSTM等。

机器学习的常用框架

现在是机器学习发展的一个黄金时间,越来越多的研究人员和越来越多的公司参与到机器学习的研究和算法的开发过程中,因此,出现了很多开源的机器学习算法实现以及机器学习的算法框架,下面我们罗列一些常见的框架以及开源实现:

  • TensorFlow。TensorFlow当属现在最火的深度学习框架。TensorFlow最初由Google Brain小组(该小组隶属于Google’s Machine Intelligence研究机构)的研究员和工程师开发出来的,开发目的是用于进行机器学习和深度神经网络的研究。
  • Scikit-Learn。Scikit-Learn是用于机器学习的Python 模块,它建立在SciPy之上。该项目由David Cournapeau 于2007年创立,当时项目名为Google Summer of Code,自此之后,众多志愿者都为此做出了贡献。
  • Caffe。Caffe 是由神经网络中的表达式、速度、及模块化产生的深度学习框架,是一个基于C++/CUDA架构框架,开发者能够利用它自由的组织网络,目前支持卷积神经网络和全连接神经网络(人工神经网络)。
  • Keras。Keras是极其精简并高度模块化的神经网络库,在TensorFlow 或 Theano 上都能够运行,是一个高度模块化的神经网络库,支持GPU和CPU运算。
  • ConvNetJS。ConvNetJS是利用Javascript实现的神经网络,同时还具有非常不错的基于浏览器的Demo。它最重要的用途是帮助深度学习初学者更快、更直观的理解算法。
  • Theano。Theano是一个Python库,它允许使用者有效地定义、优化和评估涉及多维数组的数学表达式,同时支持GPUs和高效符号分化操作。
  • MXNet。MXNet是一个兼具效率和灵活性的深度学习框架。它允许使用者将符号编程和命令式编程相结合,以追求效率和生产力的最大化。
  • Vowpal Wabbit。Vowpal Wabbit是一个机器学习系统,该系统推动了如在线、散列、Allreduce、Learning2search、等方面机器学习前沿技术的发展。
  • XGBoot。XGBoot是设计为高效、灵活、可移植的优化分布式梯度 Boosting库。它实现了 Gradient Boosting 框架下的机器学习算法。XGBoost通过提供并行树Boosting(也被称为GBDT、GBM),以一种快速且准确的方式解决了许多数据科学问题。

除了上述的各种框架,还有一些开源的代码,如libSVMlibFM等等。

开始写博客

互联网技术的发展为我们的学习和生活提供了很多的便利,我们可以在互联网获取到大量的学习材料,可以和技术达人,学术牛人探讨各种技术问题。

在读研究生的时候,我有幸接触机器学习。刚开始接触机器学习时,抱着对各种机器学习算法的敬畏以及对知识的渴求,我努力去学习各种算法,包括聚类算法,分类算法等。在学习的过程中,我翻阅了机器学习领域的一些书,包括《pattern recognition and machine learning》(即PRML),《Machine Learning》,《集体智慧编程》,周志华老师的《机器学习》(即俗称的西瓜书),《机器学习实战》,李航老师的《统计机器学习》以及《推荐系统实战》等等。从这些书中,我学到了很多机器学习方面的知识,通过学习,我也渐渐对机器学习领域有了较为清晰的认识。

计算机学科是一门实践性较强的学科,任何一门语言或者任何一个算法,通过对算法的实现,能够加深对算法的理解,同时,算法的设计是为了解决实际的问题,只有在实践的过程中,才能更好的解决实际的问题。

因此,在学习的过程中,一方面学习机器学习的理论知识,另一方面通过具体的数据集,实践每一个算法。俗话说:独学而无友,则孤陋而寡闻。在掌握了部分算法后,我打算把我的学习过程分享出来,比较好的方式就是组织学习的小组,但是一些现实因素的限制,我决定通过写博客的方式将我的笔记写出来,一开始写博客,我打算能够记录出学习机器学习算法的具体过程,因此,我给自己的文章建了一个响亮的标题《简单易学的机器学习算法》(写着写着,发现想要说明白也不是那么简单)。

在此过程中,微博上也出现了很多大牛在分享各种学习资料,我也不断转发这些材料,并在事后不断学习,还为此做了一个话题:

这里写图片描述
这里写图片描述

开始写《Python机器学习算法》

能够写出一本书是很多人的理想,我也不例外,在此,我得感谢博文视点的符隆美编辑,多次鼓励我写书,才有我开始动手写这本书。

正如上面所说,我积累了大量的算法,以及自己对算法的实现,期间编辑与我联系,希望我能够将自己的稿子整理出来出一本书,刚开始的时候,我是拒绝的,我总觉得自己的能力还不足以将一个算法解释清楚,更别说出一本书,同时,市场上机器学习方面的书实在是多,如:1、《机器学习实战》。这真是一本好书,让很多初学者可以入门,同时提供了很多实践的机会,真是一本实战的好书。2、李航老师的《统计机器学习》。这是一本理论上很全的书。3、周志华老师的西瓜书《机器学习》。周老师是机器学习方面的专家,这本书得到了很多人的认可,无论是知识的全面性,还是对机器学习理论的解释,都体现出了周老师学识的渊博。4、还有一些经典的专注,如《PRML》等等还有很多。以上说的这些书是大家谈论比较多的,同时,还有一些其他的课程,如斯坦福的教程等等,无一不是学习的好材料。那究竟写些什么呢,在博客中的文章还是浅显,而且过于零散。


(以上分割线表示经过了一段时间的思考)

经过半个月时间的思考,决定写一些典型的算法,因为有些算法在我实际的工作中也经常被用到。在讲解算法的基本原理的同时,配上实验的代码,从聚类算法,分类算法,回归算法,推荐算法到深度学习,希望尽可能涉及到机器学习的大部分算法,同时,介绍了在实际中使用这其中某些算法的一个例子。

最终决定写一本机器学习入门读物,注重理论与实践的结合。在最终定稿时,全书一共包括6个部分,每个部分均以典型的机器学习算法为例,从算法原理出发,由浅入深,详细介绍算法的理论,并配合目前流行的Python语言,从零开始,实现每一个算法,以加强对机器学习算法理论的理解、增强实际的算法实践能力。

以下是本书的目录:

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

全书的代码已上传到我的Github:Python机器学习算法。同时,我还为本书设置了QQ群:

由于本人能力等各方面的原因,书中难免存在不完善的地方,希望对本书感兴趣的同学加入到我们的群中,一起讨论机器学习相关的知识,或者本书中的一些知识,若对本书有任何的建议,还望不吝指出。

致谢

在写作的过程中,得益于大家的支持和鼓励,才有了这本书的出版,在这里,尤其需要感谢博文视点的符隆美编辑,是您的鼓励和支持才有了这本书,在此谢谢您;感谢博文视点的董雪编辑,是您一遍一遍的帮我审阅书稿;感谢我的领导姜贵彬,感谢我的组长陶辉,感谢孙永生,感谢七月科技的July,感谢王斌老师,感谢你们在这过程中的鼓励和支持,最后需要感谢的是阿里妈妈的尹慧民,美团的潘文斌以及百度的毛钦,感谢在百忙之中帮忙写推荐语。再次,感谢大家的支持。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 机器学习的黄金时间
    • 机器学习中的常用算法
      • 机器学习的常用框架
      • 开始写博客
      • 开始写《Python机器学习算法》
      • 致谢
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档