machine learning 机器学习入门(一)
有监督学习和无监督学习:
机器学习是如今用处较多的一个技术,机器学习,顾名思义,就是计算机替代人类主动去学习并掌握住事物发展的规律,从中拟合出自己想要的模型函数
首先先讲讲机器学习中的主要分类,机器学习分为监督学习和非监督学习,从名字中来理解,监督学习就是有监督的学习,那么是什么来监督呢,在机器学习中定义为:
所以前提是我们已经知道一组完整的数据(特征为,需预测的量为),假设我们通过特征进行建模的输出量为,通俗的来说,此时我们就可以用已有的y的值来监督我们预测出的 值,对模型的结果进行评估并一步步的修改参数进行拟合。
而另外一方面,非监督学习显然就是只给了一些数据点,但并未告诉我们想要的最终结果y的值,需要我们自己去划分类别。
总体如下:
对于有监督学习,我们先来考虑最基础的一类问题
线性回归:
从实际案例中来考虑,假设我们已经有一组关于房价的数据,我们想做一些基本的预测:
先分析数据——代表训练集中第i个房屋的面积,代表训练集中第i个房屋的卧室数目,我们需要预测最终的房价
对于这个模型,我们先做出假设预测量关于每个特征都为线性关系。用h(hypothesis)表示我们的假设
即,这里的为参数(权重),也可以理解为该特征对该假设的效用
简化后
右边的和x都为向量,n表示输入变量的个数(不包括)
因为知道最终的结果y,所以我们可以定义一个函数,衡量不同的参数情况下,和的距离,这样就可以定义一个成本函数(cost function)
这个函数和常规最小二乘法拟合模型的最小二乘法成本函数非常相似。这个其实是更广泛的算法家族中的一个特例。
最小均方算法,因为从上面成本函数的本身来理解,其表示最终的估计值和真实值的误差程度。因为它是用来评估模型参数的好坏程度,所以我们拟合参数时是想得到使上面式子的值最小的一组参数。对于这个,我们可以考虑采用梯度下降法,这个方法就是从某一个的初始值开,然后逐渐重复更新
(这里的“:=”表示的是计算机程序中的一种赋值操作,是把等号右边的计算结果赋值给左边的变量)
为上一步的参数值表示每一步走的距离,其中代表学习率,表示梯度下降的快慢,如果过快的话会导致拟合不到最低点(因为相邻两步之间走的太远了),过慢的话会导致要走很久才会到达局部最低点,所以对该参数要选取合适的值,后面表示对求导数,表示的是变化最快的方向,即梯度。整个过程如下,我们先随机选取一个点,由图中可以看到。经过一侧一侧迭代,我们最终从山峰到达了谷底,也就是局部最低点。
懂了该算法的原理后,我们就着手来推导这个公式:
对单个训练样本,更新规则如下所示:
重复该过程直到收敛:
此时替代下降迭代结束,完成参数的选择。
梯度下降分为以下两类
批量梯度下降法要在运行第一步之前先对整个训练集进行扫描遍历,当训练集的规模 m 变得很大的时候,因此引起的性能开销就很不划算了;随机梯度下降法就没有这个问题,而是可以立即开始,对查询到的每个样本都进行运算。通常情况下,随机梯度下降法查找到足够接近最低值的 θ 的速度要比批量梯度下降法更快一些。(也要注意,也有可能会一直无法收敛)到最小值,这时候 θ 会一直在 J(θ) 最小值附近震荡;不过通常情况下在最小值附近的这些值大多数其实也足够逼近了,足以满足精度要求
上面中的梯度下降法是一种找出 J 最小值的办法。其实还可以用法方程这种方法,这种方法寻找起来简单明了,而且不需要使用迭代算法,感兴趣的人可以去网上看相关的算法。