机器学习实战0
28 Dec 2017 by LelouchHe
重新开始
临近年末,工作比较轻松,所以决定打破自己的舒适区,让自己重新学习一下当前比较热门的技术:机器学习
既然入门,自然从”In Action”系列开始看起.这本”Machine Learning In Action”给我的总体感觉不错,除了有些地方的代码是错的和没有多少理论之外,没有什么太大的缺点了.
最大的收获在于,解除了机器学习的神秘感.我一直以为,机器学习就好像黑魔法,黑盒子一样.也许它能给出某些问题的答案,但我们不知道,或者没法理解这些答案背后的原因.但通过跟着这本书,把所有代码敲了一遍,顿时觉得也没有什么魔法,只是算法高明些,该丑该BF的地方,和别的代码没什么区别.
我觉得这种态度,对研究实现利用机器学习,是很有益处的.即便最后也许我们没法了解机器给出某些解的原因,但那也只是因为解过于复杂了,我们需要较长的时间才能理解,而非机器真的变成了一种我们无法预知的存在.
另外,这本书并没有提到最近比骄火的神经网络,估计当时深度学习还没火,AlphaGo和自动驾驶的风头还没起来吧.说起神经网络,我个人感觉比较后悔.想当年大学也做了个神经网络相关的手写数字识别项目,当初也没有好好的钻研,现在回想起来,貌似有些地方的实现还给弄错了,所以最后识别率低的可怜.要是当初能踏踏实实的搞清楚,而不是浮躁的得过且过的把项目水过去,也许我没准也能成为研究的大拿.哎,往事不可追.
闲话可休,接下来谈谈看书的心得与体会
分类
机器学习大体是分3类的,书上着重讲了2类比较常见的:
- 有监督学习: 已知输入/输出,求模型与解
- 无监督学习: 已知输入,求模型
有监督学习,很类似与解方程,不同之处在于,解方程的话,方程是已知的,有监督学习中,方程也是需要求解的未知之一,用术语来讲,也就是模型也是未知的.我们首先要做的,是通过分析已知输入/输出,推测一种可能的模型,然后再在这个模型的基础之上,把模型相关的未知解求出来.书中第1部分和第2部分介绍的若干具体算法,处理的都是后者,即求解的算法,而在之前,我们选择这个算法,不选择那个算法,这其实就是前者,在数据分析的基础上求模型.
模型和解是同等重要的,或者说,模型比解更重要.模型错了的话,解再正确,也不会得到满意的结果.以我现在浅薄的了解来看,学术界可能在模型上研究的更深入,工业界还是在求解上投入更多.估计这也是为什么很多人都吐槽在公司里机器学习只是调参数而已.模型什么的早就有前车之鉴了,其他人只是干些挖数据/洗数据/标数据/调数据之类的脏活罢了,个人看来,这些程序性的工作,最后肯定会被机器取代的,大家还得学习啊
无监督学习这部分我还没有搞的很清楚,单从这本书来看,给的都是识别模式的问题,给输入分组分类.我能想到2个相关的问题:
- 模式类型 无监督学习的模式,能识别类似有监督学习样例那样么?我觉得这个可能很难.但如果这一步做不到,就很难做到下一个问题
- 无监督+有监督 先识别模式,再推测模型,然后求解,最后反馈改进模式.这才应该是理想的机器学习流程.无监督学习解决1和2,就变成了有监督学习,然后结合在线算法,自动反馈给有监督学习改善解,无监督学习改善模式.
后者才是我理想中的机器学习的一个目标.因为求模型和解只是我们理解数据的一种手段,最后还是要回到线上,解决在线问题的.只要能解决,我个人来讲,是不太关心背后如何是做到的.所以可以完全交给机器来处理,形成一整套自动化的流程,包括前面吐槽的数据处理和调参数之类的这些有监督学习严重依赖的东西,完全可以交给对应的无监督学习和在线算法来处理.
不知道我的想法对不对,可能还得再研究看看现在的无监督学习究竟能解决哪些问题再说.
这篇综述就到这里,接下来的几篇就要讨论具体算法和实现了,希望我能在讲的时候加深理解,发现问题.