先搞清楚什么是机器学习,这对定位问题是否应该使用机器学习来解决很重要,有些问题完全没必要使用机器学习,就没必要杀鸡用牛刀了。
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、协同过滤 |
半监督学习 | 聚类、 推荐 | 标签传播 |
强化学习 | 隐马尔可夫 |
说到线性回归,其实我们初中的时候就学过它的简单方程式,只不过那会儿我们没有安利这样一个高大上的名字,我们那会儿叫斜截公式:
ID | Sex | High |
---|---|---|
1 | 男 | 170 cm |
2 | 女 | 175 cm |
3 | 男 | 180 cm |
4 | 女 | 200 cm |
其中Sex是一个特征,High是另一个特征,ID不是个特征,它只是个序列索引而已。他们的i都是4,因为有4条数据。是不是秒懂?:) 是的,在一元线性回归算法中,我们就是用一条倾斜的直线来预测未来。原来我们从初中时就可以预测未来了。:)
这个问题也可以换个说法,在什么情况下可以使用线性回归算法?
- 看数据的分布是有一定规律的,可以通过直线或曲线来拟合数据的中心。
- 需要预测的变量是连续的值,比如房价,股票价格。而不是离散值,比如只有男、女等。
再来看看多参数的线性回归模型:
上面那个模型中 x 是确定的,即我们的各种特征数据,不确定的是 θ 值。只要找到了 θ ,我们就可以写出那个模型方程式,再把新的数据代入到 x 中,就知道了未来。所以,如何算出 θ ?
针对一元回归模型,不同的 θ 意味这不同的斜率,不同的斜率他们和真实数据的拟合程度是不一样的。如何确定 θ 使得预测的误差最小呢?
现在的问题就转换成了求 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 了:
所以最终我们的梯度下降 θ 参数的确认式子为:
θ:=θ−α1m(XT∗(Xθ−Y))(*)
什么意思?意思是是只要不断的迭代 θ ,最终 α1m(XT∗(Xθ−Y)) 会收敛到0,从而得到一个收敛后的 θ ,获得最小值。
正规方程可以更快速简单的求解 θ 值,再一起推导一下。
首先正规方程也是从这个方程而来:
梯度方法和正规方程方法比较:
梯度下降方法 | 正规方程 |
---|---|
适合特征大于1W的情况 | 适合特征小于1W的情况 |
需要归一化(特征标准化) | 不需要归一化 |
方法相对复杂 | 方法简单 |