跟我一起学人工智能(二)
文 | 小步
上一篇文章里简单说了下机器学习、深度学习的几个概念,如果你已经看完了上篇文章,还是建议你去搜索下这几个名词的权威解释,更能加深你的理解,也使你对这些概念的认识更加严谨和规范~
话不多说,这篇重点说下机器学习重要的两大模型:线性回归和逻辑回归模型。
学习之前你需要学会如下知识:
函数(一次函数、二次函数、反比例函数、三角函数等),导数,偏导数,矩阵知识。
如果对上述不懂,可以去万能的b站学习下高数,线代,离散,也不用全部都学,用啥学啥就好了~
这篇文章因为涉及很多数学方面知识,好多细节也没有表述清楚,再加之自己也没有理解透彻,如果想要学习的话,还是建议去b站看下ng的视频,从2-1开始看~
传送门:https://www.bilibili.com/video/av9912938/#page=6
如有此篇文章有不妥之处,还麻烦告知我下,大家共同进步!微信公众号:多一点思考
线性回归模型
通过一个房子的面积,房间数量等等,估算出这个房价是多少。
通过人均GDP,国民总收入等预测未来人口自然增长率。
研究用户的满意度与产品的颜色,重量,大小等之间的关系,改善产品。
…………
以上每个案例都其实可以用线性回归模型来解决,它们的特点:
需要先给模型输入大量的数据以及每条数据对应的标签值,如房子的面积,房间数量等的矩阵X(房子的面积,房间数量等属性称作特征量,矩阵X称作训练集)以及对应的房子价格的矩阵Y(矩阵Y称作预测集)
矩阵X内每个元素的上标表示第几条数据,下标表示第几个特征量,如X上标2,下标3,表示训练集的第2条的第3个特征量。
矩阵Y对应训练集的每行的结果值。
有点迷糊?拿预测房价举例子,矩阵X的每行仅有两个特征量,房子面积和房间数量,矩阵Y每一行对应矩阵X的每一行特征量的房价。
线性回归就是通过矩阵X,Y和算法得到数据的一般规律进行预测~
下面先说下回归算法不得不提的三个概念:(这三个函数我找了好久权威概念,还是没找到~只好根据自己的理解说下)
假设函数:这个函数可以是一元一次函数,二元一次函数等等,可以理解为用来拟合数据的函数。
代价函数:用假设函数拟合数据时产生的代价。
优化目标:确认最优解的函数。
我们先拿只有一个特征量的训练集来说下线性回归模型算法,数据表如下:
对应的散点图如下:
从散点图上来看,我们可以用 h (Θ) = Θ0+ Θ1 X 来作假设函数(当然也可以用二次函数,后面会提到,先这么认为)
代价函数:
优化目标:
我们要做的就是求得使J(Θ0,Θ1)最小(即代价最小,最能拟合数据)的Θ0,Θ1,这就又引出一个概念,梯度下降算法:
关于梯度下降的一个直观解释:我们在大山(J(Θ0,Θ1)函数)的某个位置,打算走到山底,于是决定走一步算一步,每走一步,就计算该位置的梯度(梯度是函数在该点下降最快的方向),沿着梯度的方向,也就是下山最快的方向走一步,这样一步一步走下去就可以快速得到达山脚下,当然还可能走到一个山谷的最低点。
这里需要注意的一点是,如果学习速率太小,则需要进行多次迭代才能到达最低点,学习速率过大,就有可能越过最低点。我们可以通过指定多个学习速率值,来选择最合适的那个。
在算法中,通过做自动收敛测试来检测是否得到了最低点的值,即∆J(Θ)< β 则可认为已经收敛。
通过上面这几个式子,我们就可以得出最能拟合数据的Θ0,Θ1的值,最重要的是,算法是可以用python代码写出来的~
上面的例子其实仅仅是对于一个特征量的情况下所说的,那如果多个特征量怎么办呢?
我们改下假设函数:
对于每条数据添加一个恒为1的X0(对于整体不影响),这样我们就可以将假设函数写成两个矩阵相乘的形式。X1,X2……Xn分别表示特征量1,2……n的值。
代价函数以及梯度下降算法:
这里梯度下降算法中将求导后的结果写了出来。
上面是多个特征量的情况,如果我要让一个二次/三次的函数来做假设函数怎么办?
对于这种情况的处理,可以直接将特征量的值N方带入,比如:
到这里线性回归模型已经差不多了。
为了提升梯度下降算法的性能,我们其实提前还需要对训练集进行优化,有个专业名词叫特征缩放。
用(该特征量的值 - 该特征量集合的均值)/(该特征量集合中最大值 - 该特征量集合中最小值)来优化训练集,从而使梯度下降算法效率更高。
逻辑回归模型
预测一个用户是否点击特定的商品
判断用户的性别
判断用户是否购买给定的类别商品
判断一个肿瘤是恶性的还是良性的
…………
以上其实是逻辑回归中简单的二分类问题~下面是实现的具体算法。(以二分类举例,预测集只有0,1两个取值)
线性回归的结果输出是一个连续值,而值的范围是无法被限定的,那我们有没有办法将结果映射成(0,1)之间的概率值呢?于是我们找到了一个神奇的sigmoid函数,详见下面的假设函数h(X)。
新定义的代价函数J(Θ),如果y=1,h(x)越接近于1,J(Θ)越小即代价越小,反之,h(x)越接近于0,J(Θ)越大即代价越大。如果y=0,,h(x)越接近于1,J(Θ)越大即代价越大,反之,h(x)越接近于0,J(Θ)越小即代价越小。(可以结合函数图像来具体分析)
梯度下降算法不变。
多分类问题以后再归纳总结~
从前只是觉得数学只有考上上才能派上用场,没想到学好数学还能干这么多事情~后悔当初没好好学数学呀。
下篇文章不出意外的话,会出一篇python基本语法的文章,敬请期待~