Machine Learning 笔记一
1.什么是Machine Learning?
定义:
假设用P来评估计算机程序在某任务类T上的性能,若一个程序通过利用经验E在T中的任务上获得了性能改善,则我们就说关于T和P,该程序对E进行了学习。——Mitchell 1997
通俗的讲就是:在任务不断执行中积累的经验会给计算机带来性能上的提升。
举个例子:
假如我写了个程序,可以识别手写数字,但是在程序一开始的时候基本上不能够正确的识别手写的数字,但是,当你把这个程序进行了多次的训练之后(多次的运行),到最后程序可以很好的识别你写的数字。
2.人类的学习
人非生而知之者,那么人类是怎么从无知到掌握大量的知识的呢?
首先,人类能够接受来自外部的信息,这是一切的前提。
然后我们会不自觉讲我们看到的接收到的东西进行一些特征的提取。
比如,怎么认识月亮是月亮的过程,月亮在不同的时候都会显示出不同的月相,有人在满月的时候告诉你,”这个是月亮”,好,这个时候你就知道这个是月亮了,但是,当过了一段时间,月亮变成下弦月或者新月的时候呢?这时你又不知道这是什么了,这时,人家还告诉你,“这是月亮”,多次之后,你可能就知道,这个悬在夜空,晚上会发光的球体就是月亮了,这个就是特征的提取,人类的学习过程(当然人类的学习力很强)
有了这些特征,我们就会根据这些特征来判断东西。
3.统计学习
统计学习分为监督学习、非监督学习、半监督学习以及强化学习。
监督学习(supervised learning),任务是学习一个模型,是模型能够对任意给定的输入,对其相应的输出做出一个好的预测,是有标签(label)输入的。
非监督学习(unsupervised learning), 也称为聚类,依据计算数据之间的相似性进行分类,是没有标签(label)的输入的。
半监督式学习(semi-supervised learning),介于两者之间。
强化学习(Reinforcement Learning),举个例子,比如:Alpha Go,在一开始,只告诉计算机,围棋的基本规则(如何下子与输赢规则等),然后让其不断训练。(附:Alpha Go论文)
4.一个小小的例子
如果有人难以理解模型是什么的话,可以把模型认为是一个比较复杂的定义函数,输入值或者不输入值都会给你返回一个结果;也可以看成一个映射,从左边的定义域映射到右边的值域。
在此,为大家举一个例子,可以更加深刻的理解一些。
我们来通过上面的训练集来预测下面的房价,就是说把问号去掉,换成具体的数值。
首先我们假设,这是一个非常非常简单的线性问题,符合条件
其中 x0、x1、x2、x3 都是变量,分别代表房屋的类型、房间数、屋子的面积、是否有公共交通, θ0、θ1、θ2、θ3 分别代表着每个向量的权重,而 y 和
然后我们通过上面的计算,算出了
5.ML的一般流程
通过上面的一个小小的例子,我们可以总结出一些小小的机器学习的流程规律。
6.各种算法的简单介绍
这里本来想放各种算法的简单介绍,但是我怕一写起来没完没了,反正也会用到,用到的时候再进行详细的介绍吧。
7.数理问题的一些学习
①自然常数 e 的简单推导
首先抛出一条公式
或者

我们这么想,我们画出 log1.5(x)、log2(x)、log3(x) 的图像,然后在 (1.0,0) 处做切线,那么是否可以找得到对数函数使其切线斜率为1?
解:(上图问题)
我们令 f(x)=loga(x)
则:
问: limn→∞(1+1n)n=?
对此我们构造{ xn }并使用牛顿-莱布尼兹展开式子。
xn=(1+1n)n
=1+C1n1n+C2n1n2+C3n1n3+⋯⋯+Cnn1nn
=1+n∗1n+n(n−1)2!∗1n2+n(n−1)(n−2)3!∗1n3+⋯+n(n−1)(n−2)⋯1n!∗1nn
=1+1+12!(1−1n)+13!(1−1n)(1−2n)+⋯+1n!(1−1n)(1−2n)⋯(1−n−1n)
<1+1+12!+13!+⋯⋯+1n!
<1+112+122+123+⋯+12n−1
=3−12n−1
<3
于此我们可知,此单调函数必有上界,即当 n→∞ 时极限必存在,我们将极限记作 e .
同时我们再利用夹逼定理:
=e
limn→∞(1+1n)n+1=limn→∞((1+1n)n(1+1n)=limn→∞(1+1n)n∗limn→∞(1+1n)=e∗(1+0)=e
由夹逼定理可知 f(x)=(1+1x)x 的极限存在,且为 e
②二阶导数
是斜率变化快慢的反应,表征是曲线的凸凹性,二阶导大于0时,为凸函数,二阶导小于0时为凹函数。
③N→∞⟹lnN!→N(lnN−1)
lnN!=∑Ni=1lni≈∫N1lnxdx
=xlnx|N1−∫N1xdlnx
=Nlnx−∫N1x∗1xdx
=NlnN−x|N1
=NlnN−N+1
→NlnN−N
==N(lnN−1)
④Tayolr公式-Maclaurin公式
Tayolr :f(x)=f(x0)+f´(x0)(x−x0)+f(2)(x−x0)22!+⋯+fn(x0)n!(x−x0)n+Rn(x)
Maclaurin(即Tayolr在0处的展开):f(x)=f(0)+f´(0)x+f(2)(0)2!x2+⋯+f(n)(0)n!xn+o(xn)
Taylor展示的直观意义
由上图我们标注
f(a1)=f(a)
那么
f(a2)=f(a+Δx)=f(a)+f(Δx)
f(a3)=f(a+2Δx)=f(a+Δx)+Δf(a+Δx)=f(a)+2Δf(x)+Δ2f(x)
f(a4)=f(a+3Δx)=f(a)+4Δf(x)+6Δ2f(x)+4Δ3f(x)+Δ4f(x)
Taylor公式的应用1
数值计算:初等函数值的计算
sinx=x−x33!+x55!−x77!−x99!+⋯+(−1)m−1x2m−1(2m−1)!+R2m
ex=1+x+x22!+x33!+⋯+xnn!+Rn
例子:给定正实数x,计算
ex=?
提供一种可行的思路:求整数k和小数r,使得:
(提示:任意一个数值可以分成一个整数加小数的情况,比如:2.8 = 3.0-0.2 , 3.3 = 3.0+0.3,至于取 ln2 完全是因为它方便,且使得小数部分足够小)
从而:ex
=ek∗ln2+r
=ek∗ln2∗er
=2k∗er
≈2k
Taylor公式的应用2
考察Gini系数
将f(x)=−lnx于x=1处一阶展开,忽略高级无穷小,我们可以得到f(x)≈1−x
H(x)=−∑ki=1pklnpk
≈∑Kk=1pk(1−pk)
⑤方向导数
如果函数
z=f(x,y)
在点
P(x,y)
是可微分的,那么,函数在该点沿任意方向L的方向导数都存在且有:
梯度
设函数
Z=f(x,y)
在平面区域D内具有一阶连续偏导数,则对于每一个点
P(x,y)∈D
,向量
为函数 Z=f(x,y) 在点P的梯度,记作 gradf(x,y)
梯度的方向(即与方向向量的夹角为 0o )是函数在该点变化最快的方向,于此后面的SGD等都是依照此原理。
⑥ Γ 函数推导
Γ(x)=(x−1)∗Γ(x−1)⟹Γ(x)Γ(x−1)=x−1
Γ
函数是阶乘在实数域上的推广,它的发明人是欧拉
我们来这个思考 ∫xndx=1n+1xn+1 和 ∫exdx=ex
当我们都将其放在一起思考,并且将 ex 变成倒数即 e−x 之时
就为
这样子貌似和我一般的习惯不是很相似,我们将其转化一下,同时将x的指数换减去1(不减1也能算,但是-1之后算出的结果比较好看)
于是就成了
我们开始对其进行计算,使用分步积分法
同时我们令 x=1 ,可以计算的 Γ(1)=1
那么 Γ(x)=(x−1)Γ(x−1)=(x−1)(x−2)Γ(x−2)=(x−1)(x−2)(x−3)⋯⋯Γ(1)=(x−1)!
⑦ f(x1,x2)=log(ex1+ex2)≈max(x1,x2)
推广
f(x1,x2,x3,⋯,xn)=log(ex1+ex2+ex3+⋯+exn)≈max(x1,x2,x3,⋯,xn)
在这里只进行简单的计算,以后再进行推导,在此可以简单的画上两张图让大家看一看。
这个是代码
import numpy as np
from matplotlib import pyplot as pltif name == ‘main‘:
fig = plt.figure()
ax = fig.add_subplot(111)
u = np.linspace(0,4,1000)
x , y = np.meshgrid(u , u)
z = np.log(np.exp(x) + np.exp(y))
ax.contourf(x,y,z,20)
8.概率论
下次再对这个进行一些简单的介绍,其实很多东西,大家都已经了解非常的多了,我的介绍仅仅只是为大家锦上添花罢了。