分享

主成分分析、线性回归-简要说明

 东西二王 2019-02-16

介绍

主成分分析(PCA)的核心思想是减少由大量相互关联的变量组成的数据集的维度,同时尽可能地保留数据集中存在的变化。这是通过转换为一组新的变量(主要组件 (PC)来实现的,这些变量是不相关的,并且是有序的,因此前几个变量保留了所有原始变量中存在的大部分变化。

PCA背后的数学

PCA可以被认为是一种无监督的学习。从原始数据集中获取主成分的整个过程可以简化为六个部分:

  • 获取由d + 1维组成的整个数据集,并忽略标签,以便我们的新数据集变为d维。
  • 计算整个数据集的每个维度的均值
  • 计算整个数据集的协方差矩阵
  • 计算特征向量和相应的特征值
  • 通过减小特征值对特征向量进行排序,并选择具有最大特征值的k个本征向量,以形成d×k维矩阵W.
  • 使用此d×k特征向量矩阵将样本转换到新的子空间。

所以,让我们逐一展开每一个背后的数学。

  1. 获取由d + 1维组成的整个数据集,并忽略标签,以便我们的新数据集变为d维。

假设我们有一个d + 1维的数据集。在现代机器学习范式中,d可以被认为是X_train,1可以被认为是X_test(标签)。因此,X_train + X_test组成了我们的完整数据集。

因此,在我们删除标签之后,我们留下了d维数据集,这将是我们将用于查找主要组件的数据集。另外,假设我们在忽略标签后留下了三维数据集,即d = 3。

我们假设样本来自两个不同的类,其中我们数据集的一半样本标记为类1,另一半标记为类2。

让我们的数据矩阵X是三个学生的得分:

主成分分析背后的数学

2.计算整个数据集的每个维度的平均值。

上表中的数据可以用矩阵A表示,矩阵中的每列显示测试的分数,每行显示学生的分数。

主成分分析背后的数学

矩阵A.

那么,矩阵A的平均值就是

主成分分析背后的数学

矩阵A的平均值

3.计算整个数据集的协方差矩阵(有时也称为方差 - 协方差矩阵)

因此,我们可以使用以下公式计算两个变量XY的协方差

主成分分析背后的数学

使用上面的公式,我们可以找到A的协方差矩阵此外,结果将是d×d维的方阵。

让我们像这样重写我们的原始矩阵

主成分分析背后的数学

矩阵A.

它的协方差矩阵是

主成分分析背后的数学

A的协方差矩阵

这里可以注意到的几点是:

  • 沿对角线显示为蓝色,我们看到每个测试的分数方差。艺术测试的差异最大(720); 和英语测试,最小的(360)。所以我们可以说艺术考试成绩比英语考试成绩更具可变性。
  • 协方差在矩阵A的非对角线元素中以黑色显示

a)数学和英语之间的协方差是正的(360),数学和艺术之间的协方差是正的(180)。这意味着分数趋向于以一种积极的方式共变。随着数学成绩的提高,艺术和英语成绩也有上升的趋势;反之亦然。

b)然而,英语和艺术之间的协方差为零。这意味着英语和艺术分数之间往往没有可预测的关系。

4.计算特征向量和相应的特征值

直观地,特征向量是当向其应用线性变换时其方向保持不变的向量。

现在,我们可以根据上面的协方差矩阵轻松计算特征值和特征向量。

A是矩阵, ν矢量和标量λ满足Aν=λν,然后λ被称为特征值与特征向量的ν有关。

A的特征值是特征方程的根

主成分分析背后的数学

首先计算det(A-λI)是一个单位矩阵:

主成分分析背后的数学

首先简化矩阵,我们可以稍后计算行列式,

主成分分析背后的数学

主成分分析背后的数学

现在我们有了简化矩阵,我们可以找到相同的行列式:

主成分分析背后的数学

主成分分析背后的数学

我们现在有了等式,我们需要求解λ,以便得到矩阵特征值。所以,将上面的等式等于零:

主成分分析背后的数学

在为λ的值求解该等式之后我们得到以下值

λ≈44.81966...λ≈629.11039....λ≈910.06995

特征值

现在,我们可以计算出与上述特征值对应的特征向量。

因此,在求解特征向量之后,我们将得到相应特征值的以下解

主成分分析背后的数学

5.通过减小特征值对特征向量进行排序,并选择具有最大特征值的k个本征向量,以形成d×k维矩阵W.

我们的目标是减少特征空间的维数,即通过PCA将特征空间投影到较小的子空间,其中特征向量将形成这个新特征子空间的轴。但是,特征向量仅定义新轴的方向,因为它们具有相同的单位长度1。

因此,为了确定我们想要为我们的低维子空间丢弃哪些特征向量,我们必须看一下特征向量的相应特征值。粗略地说,具有最低特征值的特征向量具有关于数据分布的最少信息,并且那些是我们想要丢弃的那些。

常见的方法是将特征向量从最高到最低的对应特征值进行排序,并选择前k个特征向量。

因此,在按递减顺序对特征值进行排序后,我们得到了

主成分分析背后的数学

对于我们的简单的例子,其中我们正在减少的3维特征空间的2维特征空间中,我们结合两个特征向量具有最高特征值来构建我们的d×K维特征向量矩阵W.

因此,特征向量对应于两个最大特征值是:

主成分分析背后的数学

6.将样本转换到新子空间

在最后一步中,我们使用我们刚刚计算的2×3维矩阵W,通过方程y = W'×x将我们的样本变换到新的子空间,其中W'是矩阵W转置

最后,我们计算了两个主要组件并将数据点投影到新的子空间。



线性回归-简要说明

不靠谱的熊大AI 2018-12-19 20:46:32

线性回归广泛用于通过将线性方程拟合到数据来观察两个或更多个变量之间的关系。

线性回归用于对一个或多个对输出变量有影响的自变量进行预测分析。输出必须是连续的并且取决于输入变量。

线性回归-简要说明

有两种类型的线性回归:

如果只有一个自变量,那么线性回归称为单变量线性回归

但是,如果有多个独立变量对因变量产生影响,则回归称为多变量线性回归。

示例:

假设房屋的价格取决于房屋的大小,房屋大小是自变量,价格是因变量,取决于房屋的大小:

然而,可能有多个变量会影响房子的价格。楼层、位置、周围环境等..

线性回归/假设的等式具有以下形式:

假设(单变量):

线性回归-简要说明

对于多个变量:

线性回归-简要说明

(其中x0始终为1)

函数h(θ)是基于输入变量的预测。θ0和θ1是学习参数(回归系数),从等式中,可以注意到它与斜率截距方程相同。

因此,数据必须显示一些趋势以适合分析的最佳线。如果数据没有显示任何趋势,那么使用其他模型是明智的。

预测基于回归系数的值。为了通过数据拟合最佳线,我们必须定义一种衡量模型效率的方法。这是成本概念发挥作用的时候。

成本是定义模型执行方式的术语。成本越高,预测就越差。目标是尽可能降低成本。

费用公式:

线性回归-简要说明

回归系数的值可以从正规方程计算:

线性回归-简要说明

如果数据集较小且具有较少的特征或变量,则正规方程是有用的,但如果变量的大小变得高于1000,那么最好使用其他方法,如梯度下降。

梯度下降 :

正规方程的复杂性使得梯度下降对于具有大特征变量的数据非常有用。

梯度下降是通过获取函数的导数然后沿着方向采取迭代步骤并同时更新参数来找到函数的最小值的方法。

线性回归-简要说明

成本函数的导数将为我们提供函数最小值的方向。

线性回归-简要说明

对于θ0:

线性回归-简要说明

对于θ1:

线性回归-简要说明

请注意,渐变只会向我们提供函数最小值的方向。我们将不得不通过在斜率/梯度方向上采取迭代步骤来更新权重。

更新参数的公式为:

线性回归-简要说明

这里α是学习率。学习将步长决定为函数的最小值。如果学习速率太小,函数将永远不会收敛或收敛将花费大量时间。而且,如果学习率太高,优化可能会不稳定(跳到最佳状态,甚至可能变得更差而不是更好)。最好选择像0.01,0.1的学习率...

为了找到最好的参数,我们需要通过多次迭代来运行梯度下降算法。

可视化梯度下降的最佳方法是绘制每个步骤的成本函数。

线性回归-简要说明

经过一定次数的迭代后,图形处于最低位置。这解释了一旦函数处于最小值,无论梯度下降算法采用多少次迭代,它都将保持在最小值。


线性回归和梯度下降的介绍

不靠谱的熊大AI 2018-12-16 14:31:20

线性回归用于找到特定数据集的最佳拟合线。如果目标是预测,预测或减少误差,则可以使用线性回归将预测模型拟合到响应值的观察数据集(例如测试结果)和解释性(例如研究测试的时间)变量。在从训练的数据集中获得拟合模型之后,我们可以对任何新的解释变量进行预测(例如,根据研究学生的学习时间来预测学生的考试成绩)。

但是我们的程序如何在随机数据集中找到最合适的线条,如果我们有两组数据怎么办?一个是中学生考试成绩和学习时间的数据,另一个是高中学生的数据集。人工智能的目的是给程序一个问题并让他来为我们解决。但是我们还需要一些东西来让我们的程序找到数据本身的最佳拟合线。

解决方案是使用梯度下降算法。梯度下降算法是用于找到函数最小值的一阶迭代优化算法。通俗地说,算法将允许我们遍历梯度,这最终将帮助我们找到最佳拟合线,无论使用哪个数据集。

线性回归示例

假设我们有以下数据集:

线性回归和梯度下降的介绍

数据集

如果我们想通过这个数据绘制一条直线,我们将使用斜率截距公式y = mx + b ,其中m代表斜率值,b代表截距。为了找到我们数据的最佳线,我们需要找到最佳的m和b值。

误差函数

为了找到上述数据的最佳拟合线,我们需要定义一个误差函数。这种类型的误差函数更具体地称为残差平方和或预测误差平方和。误差函数衡量数据集与估计模型(我们预测的最佳拟合线)之间的差异。

线性回归和梯度下降的介绍

从线到典型数据点的垂直距离等于线与该y值之间的误差,也称为残差。

线性回归和梯度下降的介绍

残余平方和误差函数

y是被预测变量的第i个值,x是解释变量的第i个值,mx + b是y的预测值。这个函数是平方的,以确保在求和之前值是正数。然后平方估计值的总和除以数据集中N个值的总数。下面的代码是python中的错误函数。

线性回归和梯度下降的介绍

python中的错误函数

参数包括y轴截距b,斜率m和(x,y)点的2D数组points

为了得到误差,函数将斜率m和截距b作为参数。然后通过它的2D数组points,并存储在误差平方的totalError,具有以下的预测值m和b ,x和y在for循环后每一次迭代。然后在退出for循环之后,除以totalErrorpoints数组中的值的数量float(len(points)),并将其作为浮点数返回。现在我们需要找出如何让我们的程序找到b和m的最佳值,这就是梯度下降的作用。

利用梯度下降法可以最大限度地减少误差函数

下面的图像是我们数据集的渐变。为了计算梯度,我们需要区分我们的误差函数。梯度图记录了3个值,误差函数中计算的误差,y轴截距b 和斜率m 。梯度上的每个点代表y轴截距b和斜率m,用于汇总数据集中的所有值x和y值。我们可以看到占据误差最小的区域是梯度斜率最平坦的地方(底部的蓝色区域)。

线性回归和梯度下降的介绍

渐变的示例

为了找到最适合我们数据集的行,我们的程序将需要最小化错误函数计算的误差。这可以通过对误差函数对m和b求偏导数来实现。通过这样做,我们将获得梯度特定点处的斜率。这意味着如果斜率接近于零,则它们必须接近具有提供最适合我们数据集的线的m和b值。要使用梯度下降找到函数的局部最小值,它将采用与当前点处函数的梯度的负值成比例的步骤。所以它总是从梯度的最陡部分移动到最平的部分。

线性回归和梯度下降的介绍

关于m和b的误差函数的偏导数

梯度下降的代码发布在下图中。在这里你可以看到step_gradient函数接受4个参数b的当前值b_current,m的当前值m_current,我们数据集的2D数组points,以及learning_rate。learning_rate决定了我们的学习速度。如果learning_rate太高,在梯度中将采取过大的步骤,但可能会错过最小值。另一方面,如果learning_rate太低,则需要很长时间才能达到最小值(如果有的话)。

step_gradient函数遍历整个数据集,每次迭代使用x和y的值,分别求出b和m的梯度。然后,梯度的值与learning_rate相乘,分别从b_current和m_current中减去,赋值给new_b和new_m,然后返回gradient_descent_runner函数。

线性回归和梯度下降的介绍

gradient_descent_runner允许程序找到函数本身的最小值。该函数接受以下参数点:starting_b = 0、starting_m = 0、learning_rate和num_iteration = 1000。然后for循环将为num_interations设置的任何值重复调用step_gradient。

线性回归和梯度下降的介绍

程序不断更新的新值b和m直到他们发现具有最低梯度,从而产生对数据进行最佳拟合线的值。在我们的程序运行完所有迭代之后,它将把b和m的值返回给我们的main函数。

线性回归和梯度下降的介绍

每次迭代的梯度下降误差

全盘分析

在我们的main函数中,我们声明了以下变量; points,learning_rate,initial_b,initial_m,num_iterations,和数组的最终值b和m。

线性回归和梯度下降的介绍

main 函数

调用gradient_descent_runner启动梯度下降,因此我们可以实现数据集的线性回归。在控制台中打印值后。我们已经实现了梯度下降的线性回归。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多