2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2  След.
 
 линейная регрессия, параметр w
Сообщение14.06.2013, 23:11 
Аватара пользователя
Мы хотим учить функцию $y=f(x)$, где
$y = {x^T}w$, то есть имеем задачу для нахождения $w$.
В учебнике написано, что если мы знаем тестовые данные, то есть ${y_i} = {w_0} + {w_1}{x_i}$
то используя вывод из метода наименьших квадратов, получаем, что $w = {({A^T}A)^{ - 1}}Ay$
где $w = \left( {\begin{array}{*{20}{c}}
{{w_0}}\\
{{w_1}}
\end{array}} \right)$
Вопрос, какое из ${w_0}$, ${w_1}$ надо в качестве решения для задачи в случае новых данных??

 
 
 
 Re: линейная регрессия, параметр w
Сообщение15.06.2013, 06:56 
antoshka1303 в сообщении #736842 писал(а):
Мы хотим учить функцию $y=f(x)$

Чему?...

antoshka1303 в сообщении #736842 писал(а):
$y = {x^T}w$, то есть имеем задачу для нахождения $w$.
В учебнике написано, что если мы знаем тестовые данные, то есть ${y_i} = {w_0} + {w_1}{x_i}$

Первая строчка противоречит второй.

 
 
 
 Re: линейная регрессия, параметр w
Сообщение15.06.2013, 08:28 
Аватара пользователя
antoshka1303 в сообщении #736842 писал(а):
Мы хотим учить функцию $y=f(x)$, где
$y = {x^T}w$, то есть имеем задачу для нахождения $w$.
В учебнике написано, что если мы знаем тестовые данные, то есть ${y_i} = {w_0} + {w_1}{x_i}$

Прологарифмируйте "обучаемую" функцию, перейдёте к линейной регрессии.

 
 
 
 Re: линейная регрессия, параметр w
Сообщение16.06.2013, 20:16 
Аватара пользователя
Александрович в сообщении #736884 писал(а):
Прологарифмируйте "обучаемую" функцию, перейдёте к линейной регрессии.

Может быть я что-то не понял. Смотрите, у нас случай линейности.
У нас есть тестовая выборка х, для каждого ${x_i}$. есть тестовые ${y_i} $.
То есть задача линейной регрессии это найти на основе тестовых данных ${w_0}$ ${w_1}$,что можно было по заданному новому значению x предсказать y.

 
 
 
 Re: линейная регрессия, параметр w
Сообщение16.06.2013, 20:53 
antoshka1303 в сообщении #736842 писал(а):
Вопрос, какое из ${w_0}$, ${w_1}$ надо в качестве решения для задачи в случае новых данных??

В смысле? У вас есть тестовый набор. По нему вы нашли веса ${w_0}$, ${w_1}$.
Теперь вам дают какой-то новый $x$, и вы говорите - моя функция, обученная на тестовом наборе, предсказывает на этом новом $x$ значение $y = w_0 + w_1 x$. Может, вам просто не разъяснили один момент - вы ищете функцию $f$ в классе аффинных отображений, то есть к линейным функционалам можно добавлять константу. Но для упрощения жизни к вектору входных данных приписывают 1, тогда мы можем говорить, что ищем $y=x^Tw$, где в векторе $w$ содержатся и коэффициенты линейной части $w_1$, и константа $w_0$.

(Оффтоп)

Александрович, у него и так линейная регрессия же.

 
 
 
 Re: линейная регрессия, параметр w
Сообщение17.06.2013, 15:28 
Аватара пользователя
Тут, КМК, есть небольшая путаница в обозначениях.
Смешана "общая форма" записи регрессии
$y=x^Tw$
и "практическая", когда для введения свободного члена не добавляют в матрицу Х столбик из единиц, а рассматривают его отдельно (вычитая средние из X и y, считая коэффициенты, как $w=(X^TX)^{-1}X^Ty$, а затем вычисляя его, как $w_0=\bar{y}-\Sigma w_i\bar{x_i}$)
Отсюда неясность, откуда взялся $w_0$, если его вроде вначале не было.
А сперва надо понять, модель со свободным членом или без него.
Если со свободным - то столбец единиц неявно был в матрице Х, и прогноз имеет вид $y=w_0+w_1x$, если без свободного - то никакого $w_0$ нет.

 
 
 
 Re: линейная регрессия, параметр w
Сообщение20.06.2013, 11:40 
Аватара пользователя
Евгений Машеров в сообщении #737568 писал(а):
Тут, КМК, есть небольшая путаница в обозначениях.
Смешана "общая форма" записи регрессии
$y=x^Tw$
и "практическая", когда для введения свободного члена не добавляют в матрицу Х столбик из единиц, а рассматривают его отдельно (вычитая средние из X и y, считая коэффициенты, как $w=(X^TX)^{-1}X^Ty$, а затем вычисляя его, как $w_0=\bar{y}-\Sigma w_i\bar{x_i}$)
Отсюда неясность, откуда взялся $w_0$, если его вроде вначале не было.
А сперва надо понять, модель со свободным членом или без него.
Если со свободным - то столбец единиц неявно был в матрице Х, и прогноз имеет вид $y=w_0+w_1x$, если без свободного - то никакого $w_0$ нет.

спасибо, делаю так, то с ответом не сходится никак.
Вот данные.
Код:
x10 =
    3.5520    1.5301    3.3059    3.3343    5.0874   20.0835
    3.5520    2.2755    2.7097    3.4983    6.0296   20.0835
    2.3680    0.8827    1.8968    2.3009    5.2759   20.6337
    2.3680    1.1966    2.3846    2.9697    5.6904   22.0093
    2.3680    0.9612    2.1678    2.2748    5.4266   21.7342
    2.3680    0.9612    1.7884    2.1382    5.4266   21.4590
    2.3680    1.3732    2.3846    3.4329    6.5195   21.7342
    2.3680    1.1083    2.5742    2.6466    5.2759   19.5332
    3.5520    1.9616    2.3846    3.6349    6.4441   22.2844
    4.7360    3.4427    4.1459    4.9344    5.0874   19.5332
y10 =
   20.0000
   18.0000
   29.0000
   35.0000
   35.7000
   36.1000
   22.3000
   25.0000
   20.2000
   14.0000

вот код в матлабе
Код:
for i=1:6
A1=[x10(:,i).^0, x10(:,i)];
w10(:,i) = ((A1'*A1)^(-1))*(A1'*y10);
end

for i=1:6
w_res(i) = w10(1,i)/w10(2,i);
end

вот что получилось
${w_{res}} = \frac{{{W_1}}}{{{W_0}}}$
Код:
w10 =
   48.5578   38.1720   47.9864   50.5477   38.0536  -60.3730
   -7.7796   -8.0557   -8.7235   -8.0275   -2.2259    4.1085
w_res =
   -6.2417   -4.7385   -5.5008   -6.2968  -17.0958  -14.6948

а в ответе стоит
Изображение

-- Чт июн 20, 2013 10:15:04 --

если брать без свободного члена, то все равно не сходится с ответом
Код:
for i=1:6
A1=[x10(:,i).^0, x10(:,i)];
w10(:,i) = ((A1'*A1)^(-1))*(A1'*y10);
[b]w_w_10(:,i)=((x10(:,i)'*x10(:,i))^(-1))*(x10(:,i)'*y10);[/b]
end

Код:
w_w_10 =
    7.5232   11.6546    8.7635    7.1833    4.4838    1.2276

 
 
 
 Re: линейная регрессия, параметр w
Сообщение20.06.2013, 16:14 
Аватара пользователя
Что-то совершенно невнятное у Вас.
Переменных 6. Стало быть, и коэффициентов регрессии 6. Со свободным членом 7.
Наблюдений 10. Прогнозов и остатков от регрессии 10.
Откуда 12?
И что есть у Вас А1?

 
 
 
 Re: линейная регрессия, параметр w
Сообщение20.06.2013, 21:02 
Аватара пользователя
Евгений Машеров в сообщении #738784 писал(а):
Что-то совершенно невнятное у Вас.
Переменных 6. Стало быть, и коэффициентов регрессии 6. Со свободным членом 7.
Наблюдений 10. Прогнозов и остатков от регрессии 10.
Откуда 12?
И что есть у Вас А1?

Я пытаюсь понять, где же ошибка...
Переменных 6, то есть для каждого булет 6 коэф. регрессии +1 свободный член = 7. У меня так и вышло.
Откуда 12, не вижу.
Я делал по аналогии с http://www.machinelearning.ru/wiki/index.php?title=%D0%9B%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D0%B0%D1%8F_%D1%80%D0%B5%D0%B3%D1%80%D0%B5%D1%81%D1%81%D0%B8%D1%8F_%28%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80%29

 
 
 
 Re: линейная регрессия, параметр w
Сообщение20.06.2013, 22:36 
antoshka1303 в сообщении #738685 писал(а):
вот код в матлабе
Код:
for i=1:6
A1=[x10(:,i).^0, x10(:,i)];
w10(:,i) = ((A1'*A1)^(-1))*(A1'*y10);
end

for i=1:6
w_res(i) = w10(1,i)/w10(2,i);
end



А теперь посмотрите внимательно, что делает этот код. Зачем-то в цикле берутся все столбцы вашей design matrix, к каждому слева приписывается столбец единиц (чудовищным образом записанных в виде почленного возведения каждого элемента в нулевую степень
Код:
x10(:,i).^0
), и для каких-то целей используется эта непонятная 10 на 2 матрица. Все это не нужно совершенно --- если хочется приписать единицы, то можно просто сказать
Код:
A = [x10 ones(10,1)];

Ну а чтобы получился ваш ответ, этого вообще делать не надо, достаточно просто посчитать $(X^T X)^{-1} (X^T y)$, что намекает на то, что модель ваша --- без свободного члена (ваша матрица x10 --- это и есть design matrix $X$).

 
 
 
 Re: линейная регрессия, параметр w
Сообщение20.06.2013, 22:45 
Аватара пользователя
Narn в сообщении #738914 писал(а):
antoshka1303 в сообщении #738685 писал(а):
вот код в матлабе
Код:
for i=1:6
A1=[x10(:,i).^0, x10(:,i)];
w10(:,i) = ((A1'*A1)^(-1))*(A1'*y10);
end

for i=1:6
w_res(i) = w10(1,i)/w10(2,i);
end



А теперь посмотрите внимательно, что делает этот код. Зачем-то в цикле берутся все столбцы вашей design matrix, к каждому слева приписывается столбец единиц (чудовищным образом записанных в виде почленного возведения каждого элемента в нулевую степень
Код:
x10(:,i).^0
), и для каких-то целей используется эта непонятная 10 на 2 матрица. Все это не нужно совершенно --- если хочется приписать единицы, то можно просто сказать
Код:
A = [x10 ones(10,1)];

Ну а чтобы получился ваш ответ, этого вообще делать не надо, достаточно просто посчитать $(X^T X)^{-1} (X^T y)$, что намекает на то, что модель ваша --- без свободного члена (ваша матрица x10 --- это и есть design matrix $X$).

cпасибо! все понял
Код:
w=((x10'*x10)^(-1))*(x10'*y10)

 
 
 
 Re: линейная регрессия, параметр w
Сообщение20.06.2013, 22:52 
antoshka1303 в сообщении #738918 писал(а):
cпасибо! все понял
Код:
w=((x10'*x10)^(-1))*(x10'*y10)

Практический совет --- никогда не пишите обратную матрицу в матлабе, если вам не нужно знать именно обратную матрицу. Вам же нужно по сути просто решить уравнение $X^T X w = X^Ty$, это пишется так:
Код:
w = (X' * X) \ ( X' * w);

 
 
 
 Re: линейная регрессия, параметр w
Сообщение20.06.2013, 23:36 
Аватара пользователя
Narn в сообщении #738921 писал(а):
antoshka1303 в сообщении #738918 писал(а):
cпасибо! все понял
Код:
w=((x10'*x10)^(-1))*(x10'*y10)

Практический совет --- никогда не пишите обратную матрицу в матлабе, если вам не нужно знать именно обратную матрицу. Вам же нужно по сути просто решить уравнение $X^T X w = X^Ty$, это пишется так:
Код:
w = (X' * X) \ ( X' * w);

почему нельзя писать обратную матрицу в матлабе?
Вы наверное имели ввиду
Код:
w = (X' * X) \ ( X' * y);
??

 
 
 
 Re: линейная регрессия, параметр w
Сообщение20.06.2013, 23:39 
Аватара пользователя
 !  antoshka1303, замечание за избыточное цитирование.

 
 
 
 Re: линейная регрессия, параметр w
Сообщение20.06.2013, 23:56 
antoshka1303 в сообщении #738937 писал(а):
почему нельзя писать обратную матрицу в матлабе?
Вы наверное имели ввиду
Код:
w = (X' * X) \ ( X' * y);
??

Да, опечатался, извините. Имел в виду, что если вы пишете через \, то матлаб просто решает соответствующую систему, это требует (для больших матриц) меньших вычислительных усилий, чем полноценное обращение матрицы, которое происходит, если вы пишете
Код:
(x10' * x10)^(-1)

 
 
 [ Сообщений: 16 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group