机器学习第一周总结——线性回归

来源:互联网 发布:数据分析师的发展趋势 编辑:程序博客网 时间:2024/06/01 07:25

先搞清楚什么是机器学习,这对定位问题是否应该使用机器学习来解决很重要,有些问题完全没必要使用机器学习,就没必要杀鸡用牛刀了。


什么是机器学习?

  • Arthur Samuel(1959):

    Field of study that gives computers the ability to learn without being explicitly programmed.
    说人话:不需要太多的编程就能使计算机拥有学习某一领域的能力。

  • Tom Mitchell(1998):

    A computer program is said to learn from experience E with respect to some task T and some performance measure P, if its performance on T, as measured by P, improves with experience E.
    说人话:AlphaGo为了完成人机对战(下棋 T),不断学习下棋,从中获取经验(E),目的是为了提高和人比赛的胜率(P)。


机器学习分类

机器学习涉及的范围很广,针对不同的问题,学习策略也很多,但总体而言大致可以分为监督学习非监督学习两种(还有半监督学习和强化学习)。不同的问题需要使用不同的策略。

还是把这两种策略的含义搞清楚先:

什么是监督学习?

可以理解为一部分数据的答案已经知道了。比如我们要预测未来大盘的点位,在历史中大盘的点位已经知道了;再比如我们要让机器知道给它的图片是个帅哥还是美女,前提是我们已经知道了这个图片是帅哥还是美女。

可想而知,如果需要人工去分类(打标),是一个多大的工程。这也孕育出了很多以出售打标数据盈利的公司。

什么是无监督学习?

和监督学习相反,数据的答案事先我们不知道。而寻找答案是一个无中生有的过程。比如你遇到一群外星人,这群外星人各自有着不同的特征,你需要通过聚类的方法把有相同特征的外星人分组到一起,然后研究他们哪些对人类友好,哪些对人类有威胁,这叫无监督学习。

算法一览:

机器学习种类 算法分类 算法 监督学习 分类、 回归 K近邻、朴素贝叶斯、决策树、随机森林、GBDT和支持向量机; 线性回归、逻辑回归 无监督学习 聚类、 推荐 K-Means、DBSCAN、协同过滤 半监督学习 聚类、 推荐 标签传播 强化学习 隐马尔可夫

1. 能预测未来的神奇算法——线性回归

说到线性回归,其实我们初中的时候就学过它的简单方程式,只不过那会儿我们没有安利这样一个高大上的名字,我们那会儿叫斜截公式

y=kx+b

来看看只有一个参数的单参数线性回归模型
hθ(xi)=θ0+θ1xi1
(xi0=1xi1i)

所谓的特征就是二维表中具有计算意义的一列数据,比如

ID Sex High 1 男 170 cm 2 女 175 cm 3 男 180 cm 4 女 200 cm

其中Sex是一个特征,High是另一个特征,ID不是个特征,它只是个序列索引而已。他们的i都是4,因为有4条数据。是不是秒懂?:) 是的,在一元线性回归算法中,我们就是用一条倾斜的直线来预测未来。原来我们从初中时就可以预测未来了。:)

为什么我们可以用类似一条直线来预测呢?

这个问题也可以换个说法,在什么情况下可以使用线性回归算法?

  1. 看数据的分布是有一定规律的,可以通过直线或曲线来拟合数据的中心。
  2. 需要预测的变量是连续的值,比如房价,股票价格。而不是离散值,比如只有男、女等。

再来看看多参数的线性回归模型

hθ(xi)=θ0xi0+θ1xi1+θ2xi2+θnxin

向量表示
hθ(x)=θ0x10x20xn0+θ1x11x21xn1++θnx1nx2nxnn

矩阵表示:
H=x10x20x30xn0x11x21x31xn1x12x22x32xn2x1nx2nx3nxnnθ0θ1θ2θn=Xθ

简不简单?有了这个公式,我们就能预测未来了:)


2. 如何预测?

上面那个模型中x是确定的,即我们的各种特征数据,不确定的是θ值。只要找到了θ,我们就可以写出那个模型方程式,再把新的数据代入到x中,就知道了未来。所以,如何算出θ?

针对一元回归模型,不同的θ意味这不同的斜率,不同的斜率他们和真实数据的拟合程度是不一样的。如何确定θ使得预测的误差最小呢?

J(θ)=12mi=1m(hθ(xi)yi)2

其中yi表示真实数据,而hθ(xi)表示预测数据。
说人话:θ要满足这样的条件,即预测出来各个点的值与真实值之间的差的平方和最小。

现在的问题就转换成了J(θ)的最小值问题了!
即:

minθ1,θ2θnJ(θ1,θ2,,θn)

这个问题有两种解决方案:

1. 梯度下降

要了解梯度下降算法,首先要知道求导公式的意义:

Jθ=ΔyΔx=tgα

说人话:每变化一点点θ,随之而变的J变化了多少?
还是没懂!? 上一个百度图片:

这里写图片描述
图片中Δx就是变化的那一点点(对应θΔy),而对应的曲线f(x),发生了Δy这么多变化。当N和M非常接近时(即Δx很小很小),我们可以用PQ的高度(dy)来近似NM的高度(其高度dy=在x0处的斜率 * Δx)。

知道了这个我们再来看看梯度下降算法公式

θj:=θjαJθj(*)

Jθj 可以简单的理解为上图中的tgaα是个正常数,学名叫学习速率。这个tga很神奇,在小于90°,它是个正实数;在大于90°时是个负实数。

所以,对于梯度下降算法公式,

当T倾斜向上,即角度小于90°时,αJθj值为正,θj从大变小,Jθj不断的趋近于0,θj不断的向左移动减小,直到移动到曲线的底部;
这里写图片描述
当T倾斜向下时,即角度大于90°时,αJθj值为负,θj从小变大,Jθj不断的趋近于0,θj不断的向右移动增大,直到移动到曲线的底部
这里写图片描述

理解了原理,下面就是如何算Jθj了:

Jθj=12mmi=1(hθ(xi)yi)2θj

12mmi=1(hθ(xi)yi)2展开:

J=12m[(hθ(x1)y1)2+hθ(x2)y2)2++hθ(xm)ym)2]

注意:上面的x1表示第一个训练样本,而y1是第一个训练样本所对应的真实目标值。
我们对其中一个子式子继续展开研究:
(hθ(x1)y1)2θj=[(θ0x10+θ1x11++θnx1n)y1]2θj=2((θ0x10+θ1x11++θnx1n)y1)x1j

简化成向量的形式:
(hθ(x1)y1)2θj=2([x10x11x1n]θ0θ1θny1)x1j

=2(X1θy1)x1j

所以最终我们的梯度下降θ参数的确认式子为:

θj:=θjα12mi=1m(2(Xiθyi)xij)(j=0,,n)

=θjα1mi=1m((Xiθyi)xij)

对求和公式展开后写成矩阵的形式:
θ:=θα1m((X1θy1)x10x11x1n+(X2θy2)x20x21x2n++(Xnθyn)xn0xn1xnn)(θ)

θ:=θα1mx10x11x1nx20x21x2nxn0xn1xnnX1θy1X2θy2Xnθyn

终极公式:

θ:=θα1m(XT(XθY))(*)

什么意思?意思是是只要不断的迭代θ,最终α1m(XT(XθY))会收敛到0,从而得到一个收敛后的θ,获得最小值。

2. 正规方程

正规方程可以更快速简单的求解θ值,再一起推导一下。
首先正规方程也是从这个方程而来:

J(θ)=12mi=1m(hθ(xi)yi)2=12m[(hθ(x1)y1)2+hθ(x2)y2)2++hθ(xm)ym)2]

因为
XTX=X2
所以
J(θ)=12m[(hθ(x1)y1)T(hθ(x1)y1)+(hθ(x2)y2)T(hθ(x2)y2)++(hθ(xn)yn)T(hθ(xn)yn)]

=12m(hθ(x1)y1)T(hθ(x2)y2)T(hθ(xn)yn)T[(hθ(x1)y1)(hθ(x2)y2)(hθ(xn)yn)]

=12m(Xθy)T(Xθy)=12m[((Xθ)TyT)(Xθy)]=12m[θTXTXθθTXTyyTXθ+yTy]

θ求导,且求导后的值要趋于0,所以:
Jθ=(θTXTXθθTXTyyTXθ+y2)θ=0

因为θTXTy=yTXθ所以有:
(θTXTXθθTXTyyTXθ+y2)θ=XTXθ2XTy=0

(XTX)1(XTX)θ=(XTX)1XTy

θ=(XTX)1XTy(*)

梯度方法和正规方程方法比较:

梯度下降方法 正规方程 适合特征大于1W的情况 适合特征小于1W的情况 需要归一化(特征标准化) 不需要归一化 方法相对复杂 方法简单
* 注:以上数学推导过程若有不严谨之处,欢迎指出!*
阅读全文
0 0
原创粉丝点击