和很多机器学习的初学者一样,初识机器学习这个名词并不清楚这个具体含义是什么,但还是先把概率论和统计学重新捡了起来,直到看到多元线性回归和逻辑回归部分时,才有了一个大概的方向,知道了机器学习实际上是统计学问题的延伸,以矩阵和向量表示各个变量,变量间通过线性代数矩阵论相关知识计算,目标是分类或回归, 实现的工具主要是最优化和概率论等知识,是一个对数学要求比较高的学科,综合性比较强。
后来看了大家公认不错的吴恩达公开课视频,他对于公式的推导令我折服,有时候写好几个黑板来推出一个很简洁的结论更是让我大呼过瘾,当然这也是一个科研工作者应有的严谨态度,但当我企图自己实现一些算法时,发现难度同样很大,而且在写代码的时候,自己哪里掌握不牢,一下子就彻底暴露出来了,毕竟代码不会说谎。
在机器学习实现的诸多工具语言中,python可以说是一骑绝尘,其简易方便的语法,使初学者可以很快上手,而不会纠结于语法细节,同时开源社区和大量的包使其在数据分析,数据挖掘,深度学习等领域发挥了相当大的作用,在我上大学这几年逐渐风靡全球。当然python不是没有弱点,运行效率始终被很多程序员吐槽,然而,python胶水特性又实现了c++,Fortran接口,使人们可以用python语法来调用其他更高效语言的API,比如numpy就是一个例子。
在用python实现机器学习算法的众多途径中,sklearn是一个运行高效同时可以用很短的几行代码便实现的包,这很适合很多初学者。但是如果只使用已经成型的包,就会出现理论和实际应用的脱节,因此,我决定尽量不适用sklearn,tensorflow等包来实现机器学习算法,当然,难度也随之上升。
在后面的博客中,我会尽量只使用numpy来实现机器学习算法,主要参考书籍是《统计学习方法》,《python与机器学习实战》
网友评论