在机器学习的开头,因为机器学习涉及到很多数学的东西,很多基础的理论都来至于数学的推导,很多人都会在问,需不需要很高的数学基础,在这里我想说一下我对这个问题的看法。
在我看来,在机器学习领域中有这三部分人,第一部分是对机器学习有了较多的了解,知道机器学习中所用到的各种算法,并能很清楚的知道这些算法用在哪个领域下,例如文章分类可以使用贝叶斯算法,流量点击可以使用逻辑分类,等等。现在又有着非常多的关于机器学习的各种使用库,能够轻松的驾驭他们,我们不需要自己编写更多的算法和代码,只要能够知道这些算法的使用场景和机器学习库的使用方法,就能胜任大部分关于机器学习的工作任务,这一部分的人,完全可以对机器学习的数学基础可以完全不在乎,有什么样的问题,就采用什么样的算法库,属于实用派的人。
第二部分的人员对算法有较高的兴趣,想知道算法到底是怎样工作的,算法的理论基础在哪里,是如何通过一步一步的推导出来这一套计算过程的,这部分人员在了解公式推导的过程中,就必须对数学有较深的底子,才能看懂过程的每一步。通过对过程的推导了解了算法的原理,想对算法的过程进行参数的优化,提高算法。
第三部分人,对数学本来就非常的精通,对算法也非常的精通,自己就能够创建算法的人。
如果你对数学并不是太了解,或者对一大堆的数学公式非常的惧怕,你可以跳过数学相关的内容,直接看如何使用这些结果来解决相关的问题。
在这里也不会使用太多数学的专有名词,希望能够对问题一个一个进行相应的解决,这里我们看一些在机器学习公式推导的过程中,经常碰到的几个相通的问题。
评价函数
评价函数
是最优化理论里面的专业名词,我们可以这样来理解他,对于一件事情,如何去做,做得好不好,我们总有一个理论一个检验的标准,这个标准就是 评价函数
。在现实生活问题,经常需要把它转换为数学问题,需要使用数学公式对问题进行描述,综合出问题的一个表达形式,是 评价函数
的表现形式。
比如,开车去某个地方,需要评价怎么样的路径最为省油,这时需要需要得出油耗的评价函数
,这个函数描述了油耗和哪些参数有关系,比如选择的道路距离,道路拥挤程度等。
得到了评价函数
以后,能够通过函数求导
, 得出极值这可能是我们要的解了。如果对求导
还没有印象的话,这里给出一个简单的例子。
求解: x 3 − x 2 − x + 1 x^3 - x^2 - x + 1 x3−x2−x+1 的极值情况:
先画出这个函数的图形来:
import matplotlib.pyplot as plt
import numpy as np
#显示中文配置
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.style.use("ggplot")
x1 = np.arange(-3,4,0.01)
y = [x*x*x - x*x - x + 1 for x in x1]
y1 = [0]*700
plt.plot(x1,y)
plt.plot(x1,y1)
plt.annotate(u"极值", xy=(1, 0), xytext=(1.5, 15),arrowprops=dict(facecolor='black', shrink=0.05),)
plt.savefig('a.png')
如图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F3YmH3d9-1649812219165)(//images/kuxue/machine_learning/jizhi.png)]
可以简单的理解为,极值点为 和曲线相切的切线的斜率为0的,也就是对曲线求导,导数为0的时候。
在概率分布中,有一种管用的关于评价函数的一般形式,而且这种评价函数较为常见,在预估统计参数时,基本使用的就是它,它就是 极大似然估计
。
极大似然估计
极大似然估计
是统计学的一个概率,讲的是我们做出的估计需要满足我们所观察的现象,比如一个同学和一个超有经验的猎人出去打猎,在森林里看到了一只兔子,而后听到了三声枪声,兔子倒下了,这里让你估计这是谁开的枪,是你同学还是这位猎人。
我们的估计要最大条件的满足我们所观察到的现象,也就是三声枪声,兔子倒下了,这里假设如果是猎人开的枪,猎人是一个超有经验的枪手,只要开始一枪估计就能打中这只兔子,而现在开了 三枪,比较有可能的是你这位同学开的枪。
这就是极大似然估计的思想,在以后我们会用具体的数学公式进行表达。
虽然是关于机器学习的数学基础,但是并没有涉及太多的公式,只是不想一开始把机器学习搞得太过的高深,让人望而却步,机器学习是通过数学的基础为理论来解决现实中的问题,问题找到了,我们的求解过程就不会太难懂。