学习统计知识有几个步骤(从程序员的角度说统计学习方法概论)
学习统计知识有几个步骤(从程序员的角度说统计学习方法概论)最终的目标是要预测,所以策略在做的事情就是让风险最小,然后将问题转化成可求解的函数极值的问题。极大似然思想就是一种经验风险最小的例子:上面那女生骂A正确的概率肯定要比骂B正确的概率大。极大似然的想法也是相当的直观,我们都在不知不觉的使用这种思想:举个例子 假如你是女生,你读书时候,后面坐着两个男生A B.每天男生A 都在后面动你头发。突然有天B动了下你的头发,我想你转过头肯定还是会骂A. 极大似然估计还是大名顶顶的高斯提出的。数学点儿的描述就是样本出现的概率最大化。极大似然估计看着这些名词很吓人的样子,其实他们的直观逻辑都是及其简单的,虽然背后确实有复杂的假设,和数学证明。最小二乘法的思路是:找到一个函数使得其在样本上预测值和真实值之间的误差平方和最小。
应该说这是在看完《统计学习方法》这本书后有的想法,也算是读书笔记。《统计学习方法》是李航写的,重点偏向于基于统计的监督学习,个人觉得这本书好的地方是在叙述完理论之后,通常会有一个比较形象的小例子,在纸上演算一下具体的过程。这就让本来很抽象的数学公式变得相当直观,而且对于用代码实现也会有比较大的帮助。
对于程序员来说,特别是很少见数学公式的来说,要读一本这样满是公式的书其实是比较有挑战的。我试着从程序员能理解的角度去阐述这些概念。严格意义上来说我只是写了一年多程序的不合格程序员,所以很多时候还是得上公式,因为公式在很多时候是最精简的,就像很多优美的代码一样,他是无可替代的。
简单的例子
最小二乘法
极大似然估计
看着这些名词很吓人的样子,其实他们的直观逻辑都是及其简单的,虽然背后确实有复杂的假设,和数学证明。
最小二乘法的思路是:找到一个函数使得其在样本上预测值和真实值之间的误差平方和最小。
极大似然的想法也是相当的直观,我们都在不知不觉的使用这种思想:举个例子 假如你是女生,你读书时候,后面坐着两个男生A B.每天男生A 都在后面动你头发。突然有天B动了下你的头发,我想你转过头肯定还是会骂A. 极大似然估计还是大名顶顶的高斯提出的。数学点儿的描述就是样本出现的概率最大化。
最终的目标是要预测,所以策略在做的事情就是让风险最小,然后将问题转化成可求解的函数极值的问题。极大似然思想就是一种经验风险最小的例子:上面那女生骂A正确的概率肯定要比骂B正确的概率大。
上面两种strategy 的最终结果是把一个模型求解的过程转化为函数极值。如果这个函数极值有解析解,那后面的算法基本就没有必要了。通常是这个函数的极值比较复杂,很难求解或者根本就不存在解析解,那后面的算法就要派上用处了。
algorithm
这个算法和计算机里那个排序之类的还是有些区别,这个主要是说的数值计算。常见的梯度下降,牛顿法,EM …… 他们通常都是通过迭代拟合来实现对一个函数求极值。EM 算法的原理也是求函数下界函数的极值来逼近真实函数的极值,我见过的都是在求极值。
上面讲了这么多机器学习,机器在这个过程中干什么呢?我们都没见机器出场。其实机器的核心任务就是实现algorithm 的工具,因为算法通常需要很多迭代和尝试,靠人来做肯定是不行的,但是机器很在行这个。所以到这里我想应该理解写程序和机器学习到底是个什么关系。如果你不是为了创建一个新的算法,只是想解决一个数据上的问题,其实你能写程序就够了,前提是能看懂数学上的逻辑。如果看不懂,就像写程序的时候不知道产品需求一样,后果如何写 程序的都知道。
总结
当然机器学习比我说的要复杂的多,这里面也还会有其他问题。比如数据预处理、特征工程、模型评估、选择,而且这个过程中有很多细节的问题。但是从上面的描述你应该能看到写程序和数学是如何结合的,机器学习到底是个什么东西,至少在传统的基于统计的方法上是这样,其实我想深度学习也是在求函数极值。大部分的数据科学家,都是在利用少部分人发明出来的东西,来解决他们自己的问题,在这个过程中我认为真正重要的还是想象力,和动手能力,当然你得看得懂数学公式,至少能理解其中的逻辑,还是那句话写程序之前好好理解需求这是每个程序员圈子里广泛传播的经验,做机器学习你可能还要看懂公式,这就像是需求的一部分。
来自:正午的博客 正午不早了
链接:http://midday.me/article/db3c2875782547a1820b330699f8f1d4
数据分析网(www.afenxi.com),国内领先的大数据门户,旨在帮助大数据从业人士、爱好者提供大数据新闻资讯、前沿技术、业界观点的信息平台。