Matlab中的最小二乘线性分类器

7
我很难理解如何在Matlab中为我的数据实现最小二乘线性分类器。我的数据有N行,每行宽度为10列。每一行代表一个具有10个特征的数据点。只有两个类别,我的测试数据的前N/2行是类1,其余是类2。
所有关于最小二乘的解释都很有道理,但我无法将它们适应到我的数据上,我只需要一点与我的数据和最小二乘方法相关的概念性解释。

也许你可以把这看作是一个非线性优化问题,其中x是数据点,beta是线性系数,f(beta * x)是分类结果。当然,f()是一个将beta * x映射到0/1或-1/1的非线性函数。误差为Y - f(beta, x),其中Y是真实标签。然后,您可以使用MATLAB函数lsqnonlin()来解决此问题。 - Shanqing Cai
1个回答

9

使用最小二乘法进行线性分类

The idea of using least squares to create a linear classifier is to define a linear function

f(x) = w<sup>T</sup>x
and adjust w so that f(x) is close to 1 for your data points of one class and close to -1 for the other class. The adjustment of w is done by minimizing for each data point the squared distance between f(x) and either 1 or -1, depending on its class.

Matlab二维示例

% Create a two-cluster data set with 100 points in each cluster
N = 100;
X1 = 0.3*bsxfun(@plus, randn(N, 2), [6 6]);
X2 = 0.6*bsxfun(@plus, randn(N, 2), [-2 -1]);

% Create a 200 by 3 data matrix similar to the one you have
% (see note below why 200 by 3 and not 200 by 2)
X = [[X1; X2] ones(2*N, 1)];

% Create 200 by 1 vector containing 1 for each point in the first cluster
% and -1 for each point in the second cluster
b = [ones(N, 1); -ones(N, 1)]

% Solve least squares problem
z = lsqlin(X, b);

% Plot data points and linear separator found above
y = -z(3)/z(2) - (z(1)/z(2))*x;
hold on;
plot(X(:, 1), X(:, 2), 'bx'); xlim([-3 3]); ylim([-3 3]);
plot(x, y, 'r');

关于数据矩阵中的额外列的注意事项

为了让分离器更加灵活多变,我在数据矩阵中添加了一个额外的列,这样就可以允许移动分离器。如果不这样做,你会强制分离器通过原点,这通常会导致更差的分类结果。

线性最小二乘法找到的线性分离器


你能否解释一种评估线性最小二乘分类器的方法,并附上所得系数?我正在尝试解决一个二元分类问题,当在测试数据上运行时,我得到的标签是实数。我该如何将它们分类到我的二元类别中?大多数结果标签是正值。谢谢。 - ggauravr
@ ggauravr 您可以通过 w ^ T x 的符号对测试点 x 进行分类,即如果 w ^ T x> 0,则该点属于第一类,否则如果 w ^ T x <0,则它属于第二类。 - 3lectrologos
谢谢,我搞定了。你的回答很有帮助。 - ggauravr
@3lectrologos,额外的列会如何影响线性分离器的发现?当我将额外列的值设置为0而不是1时,我得到了更好的解决方案。当额外列的一半值为-1,另一半为0时,甚至更加如此。 - JSuar
额外的列增加了一个额外的自由度,这对应于允许线性分离器不通过(0, 0)。如果您添加一个与所有“1”不同的列,则实际上向数据集添加了另一个特征。(当然,如果您拥有此类信息,则可以将其添加到数据矩阵中,并可能改善结果。) - 3lectrologos
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接