使用matlab进行线性回归和分类的缩放

时间:2016-03-06 19:14:04

标签: matlab regression linear-regression logistic-regression surf

我正在做三件事:

  • 二维数据中的线性回归
  • 使用线性分类的分类
  • 使用逻辑回归分类

我对数据的缩放感到困惑。 我的问题是我不确定我是否正确扩展数据。此外,我想在matlab中更改表面图的外观。

数据是二维的(x和y),x的范围是15000到80000 和y从1000到5500。

seprable because not scaled

使用线性回归找到第1类和第0类的两条回归线。为此,我缩放了数据,计算了权重,并使用了缩放数据的权重,也对图中看到的非缩放数据。我想这是正确的,因为权重只是定义了斜率。 但是,只要在下图中看到的数据从0缩放到1,数据就不可分离。

enter image description here

现在我很困惑我应该扩展我的数据。因为对于线性分类,我无法对数据进行扩展,因为它显然无法实现。 没有缩放我使用梯度下降算法找到了以下分离平面:

enter image description here

关于matlab冲浪地图的第一个问题:如何获得一个看起来很漂亮的分离平面?

对于逻辑回归,有必要再次进行扩展。我猜是因为回归函数的范围为1 /(1 + exp(-w * x))。

我用这个

缩放它
data = (values - repmat(min(values,[],1),size(values,1),1))*spdiags(1./(max(values,[],1)-min(values,[],1))',0,size(values,2),size(values,2))

减去最小值并除以原始值的范围。对x和y缩放数据范围从0到1。 使用梯度上升算法计算权重,发现

w = 0.2493   33.7885  -36.0428

用于缩放数据集和

w = 0.7610  269.3073 -102.6686

表示未缩放的数据。

以下图片是缩放数据:

enter image description here

基本问题是我何时应该扩展数据? 何时使用缩放或未缩放的数据集?

scale data -> calc weights using scaled data -> plot using scaled or unscaled data?

calc weights using unscaled data -> plot using unscaled data? 

我想物流功能图的范围也从15000到80000(x) 从1000到5500(y)。当我绘制未缩放版本时,它看起来像这样,因为逻辑函数的范围从0到1:

unscaled logistic regression

绘制表面有更好的命令吗?网,trisurf?

1 个答案:

答案 0 :(得分:1)

在执行线性回归,线性分类或逻辑回归之前,没有必要对数据进行标准化 - 尽管它不会造成任何伤害,但最终结果应该通过线性变换保持不变。

我认为你根本不需要绘制表面。您有二维数据f(x,y),因此要将两者分开,您需要一行。