首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

跟我一起学人工智能2

跟我一起学人工智能(二)

文 | 小步

上一篇文章里简单说了下机器学习、深度学习的几个概念,如果你已经看完了上篇文章,还是建议你去搜索下这几个名词的权威解释,更能加深你的理解,也使你对这些概念的认识更加严谨和规范~

话不多说,这篇重点说下机器学习重要的两大模型:线性回归和逻辑回归模型。

学习之前你需要学会如下知识:

函数(一次函数、二次函数、反比例函数、三角函数等),导数,偏导数,矩阵知识。

如果对上述不懂,可以去万能的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基本语法的文章,敬请期待~

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180213A0KUJW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券