社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

机器学习基本概念图解:线性回归和成本函数

FinTechHi • 3 天前 • 17 次点击  

本篇文章将深入探讨机器学习中的三个关键概念:线性回归(Linear Regression)、成本函数(Cost Function)和梯度下降(Gradient Descent。这些概念构成了许多机器学习算法的基础。理解这些概念对于理解更高级的机器学习知识,如例如神经网络至关重要。


与任何机器学习问题一样,我们首先要回答一个特定的问题。在本例中:马克正在考虑出售他2400平方英尺的房子,需寻求帮助,以便确定他房子卖多少价格合适

首先,在马克的社区里寻找类似的房子。稍加搜索后,我们找到了附近三栋房子的列表,并查看它们的售价。当然,典型的数据集会包含数千甚至数万个数据点,但为了简单起见,我们只使用这三栋房子。

把这3个房子的面积和价格图形化:

通过检查数据,我们发现房屋价格与其面积呈线性关系。为了对这种关系进行建模,我们可以使用一种名为“线性回归”的机器学习技术。这需要在散点图上绘制一条最能代表数据点模式的线。我们的模型可能如下所示:

现在使用这条线,我们可以说一栋面积为 2400 平方英尺的房子应该卖到..…约26万美元。

现在最大的问题是:我们如何确定最适合我们数据的线?

本来可以画一条稍微偏离的线,像这样:

或者更糟糕的是,像这样:

我们可以清楚地看到,它们并不像第一行那样适合我们的数据。为了找到最佳价格线,我们首先需要用数学方法表示出一条糟糕的价格线是什么样子的。

让我们以这条“糟糕”的价格线为例,根据这条线,一栋2000平方英尺的房子应该卖到14万美元左右,而我们知道它的实际售价是30万美元:

它也与所有其他值有显著不同:

平均而言,这条线路节省约 94,000 美元(50,000 美元 + 160,000 美元 + 72,000 美元 / 3)。这里有一句更好的话:

这条线平均偏差约 44,000 美元,效果好多了。这 44,000 美元被称为使用这条线的成本。

成本函数:

成本指的是这条线与实际数据的偏差程度。最佳线是与实际数据的偏差最小或成本最低的线。

为了找出哪条线是最佳线,我们需要使用成本函数

利用平均绝对误差 (MAE)成本函数来确定实际房价与预测房价之间的偏差。这基本上计算了实际房价(表示为 y,因为它代表 y 轴上的值)与预测房价(表示为 ŷ)之间的偏差的平均值。用数学公式MAE表示如下:

在计算 MAE 时使用绝对值,是因为它们确保预测值与实际值之间的差值始终为正,无论预测值是高还是低。这可以公平地比较不同预测值之间的误差,因为如果不取绝对值,正负差值会相互抵消。

根据机器学习算法和具体问题,可以采用各种类型的成本函数。对于上面的问题,我们不使用MAE,而是采用一种常用的方法——均方误差 (MSE),它计算预测房价与实际房价之差平方的平均值。

最终,任何成本函数的目的都是最小化其值并尽可能地降低成本

直线方程:


在深入探讨线性回归之前,我们先回顾一下基础知识。以下是一条直线的示例:y = 1 + 2x。第一个数字称为截距,它告诉我们这条线开始时应该有多高。

第二个告诉我们直线的角度(或者用专业术语来说,斜率):

现在我们理解了方程的原理,只需要确定斜率截距这两个值的最优值,就能得到线性回归问题的最佳拟合线。

为了更简单起见,我们假设斜率的值已经神奇地变成了 0.069。因此我们的线性回归线方程是:

要获得特定面积房屋的预测价格,我们只需代入截距值期望房屋面积即可。例如,对于面积为 1000 平方英尺²、截距为0 的房屋……

得到的预测房价是 69,000 美元。因此,现在我们要做的就是找到截距的最优值,从而得到线性回归模型。

一种选择(我们很快就会发现它相当繁琐,而且没什么意思)是使用蛮力,我们反复猜测截距的值,画一条LR线,然后计算MSE。仅仅为了实验,让我们尝试一下这种方法。

首先猜测截距的随机值(让我们从 0 开始)并绘制 LR 线:

然后我们计算这条线的MSE

为了直观地理解,让我们在图表上绘制截距值和相应的MSE :

接下来,我们将测试截距 的另一个值(假设为25),绘制相应的线,并计算MSE

我们可以使用不同的截距值(= 0、25、50、75、100、125、150 和 175)继续此过程,直到得到如下所示的图表:

从图上绘制的点可以看出,截距设为 100 时,MSE最低。然而,在 75 到 100 之间可能存在另一个截距值,这会导致更低的MSE。一种寻找最小MSE 的缓慢而痛苦的方法是,像下面这样不断地插入和填充一堆截距值:

尽管我们付出了努力,但仍无法确定是否找到了最低的MSE值。测试多个截距值的过程既繁琐又低效。幸运的是,梯度下降法可以通过更高效的方式找到最优解来解决这个问题。

原文:https://medium.com/data-science/back-to-basics-part-uno-linear-regression-cost-function-and-gradient-descent-590dcb3eee46

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/183794
 
17 次点击