2014 dxdy logo

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

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


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

Если Вы зададите новый вопрос в существующей теме, то в случае нарушения оформления или других правил форума Ваше сообщение и все ответы на него могут быть удалены без предупреждения.

Не ищите на этом форуме халяву, правила запрещают участникам публиковать готовые решения стандартных учебных задач. Автор вопроса обязан привести свои попытки решения и указать конкретные затруднения.

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 линейная регрессия, параметр w
Сообщение14.06.2013, 23:11 
Аватара пользователя


24/10/05
400
Мы хотим учить функцию $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 
Заслуженный участник


11/05/08
32166
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 
Аватара пользователя


21/01/09
3929
Дивногорск
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 
Аватара пользователя


24/10/05
400
Александрович в сообщении #736884 писал(а):
Прологарифмируйте "обучаемую" функцию, перейдёте к линейной регрессии.

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

 Профиль  
                  
 
 Re: линейная регрессия, параметр w
Сообщение16.06.2013, 20:53 


28/05/08
284
Трантор
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 
Заслуженный участник
Аватара пользователя


11/03/08
10041
Москва
Тут, КМК, есть небольшая путаница в обозначениях.
Смешана "общая форма" записи регрессии
$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 
Аватара пользователя


24/10/05
400
Евгений Машеров в сообщении #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 
Заслуженный участник
Аватара пользователя


11/03/08
10041
Москва
Что-то совершенно невнятное у Вас.
Переменных 6. Стало быть, и коэффициентов регрессии 6. Со свободным членом 7.
Наблюдений 10. Прогнозов и остатков от регрессии 10.
Откуда 12?
И что есть у Вас А1?

 Профиль  
                  
 
 Re: линейная регрессия, параметр w
Сообщение20.06.2013, 21:02 
Аватара пользователя


24/10/05
400
Евгений Машеров в сообщении #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 


28/05/08
284
Трантор
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 
Аватара пользователя


24/10/05
400
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 


28/05/08
284
Трантор
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 
Аватара пользователя


24/10/05
400
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 
Админ форума
Аватара пользователя


19/03/10
8952
 !  antoshka1303, замечание за избыточное цитирование.

 Профиль  
                  
 
 Re: линейная регрессия, параметр w
Сообщение20.06.2013, 23:56 


28/05/08
284
Трантор
antoshka1303 в сообщении #738937 писал(а):
почему нельзя писать обратную матрицу в матлабе?
Вы наверное имели ввиду
Код:
w = (X' * X) \ ( X' * y);
??

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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group