1

я запустил эту программу: https://github.com/backstopmedia/tensorflowbook/blob/master/chapters/04_machine_learning_basics/linear_regression.pyPuzzled методом линейной регрессии Результаты от искрового ML и Tensorflow

Я добавил "печать (" ш =», W.eval(), "Ь =", b.eval()) "после строки 55 в вышеуказанной программе. В результате я получил это:

ш = [[3,5245235] [1,50171268]] б = 1,14499

Так у = 3.5245235x1 + 1.50171268x2 1,14499.

Я использовал те же данные, что и выше программы (формат файла присоединен позже), и запустил программу https://github.com/apache/spark/blob/master/examples/src/main/java/org/apache/spark/examples/ml/JavaLinearRegressionWithElasticNetExample.java результат:

Коэффициенты: [0.3827266230806965,5.1690760222564425] Перехват: 82.22008153614573 numIterations: 6 objectiveHistory: [0.5,0.41583549697777683,0.15548328325638935,0.15439025905767773,0.15432368309706285,0.15432368309449543]

так у = 0.3827266230806965x1 + 5.1690760222564425x2 + +82,22008153614573.

Я смущен, как результаты настолько различны для одной и той же проблемы? Формат данных я использовал программу Спарк:



354 1:84 2:46 
190 1:73 2:20 
405 1:65 2:52 
263 1:70 2:30 
451 1:76 2:57 
302 1:69 2:25 
288 1:63 2:28 
385 1:72 2:36 
402 1:79 2:57 
365 1:75 2:44 
209 1:27 2:24 
290 1:89 2:31 
346 1:65 2:52 
254 1:57 2:23 
395 1:59 2:60 
434 1:69 2:48 
220 1:60 2:34 
374 1:79 2:51 
308 1:75 2:50 
220 1:82 2:34 
311 1:59 2:46 
181 1:67 2:23 
274 1:85 2:37 
303 1:55 2:40 
244 1:63 2:30 

 

ответ

0

См. Tensorflow on simple linear regression. Код имеет ту же проблему. Исправление будет таким же, как и ответ. Кроме того, learning_rate слишком мал (установите его на .001), и шаги должны быть 100000. Выбор этих начальных значений очень технический (один эксперт рассказал мне об этом).

1

Ответ довольно прост, искра модель не линейной регрессии.

Линейная регрессия минимизирует || y - Wx || _2^2

Модель искры эластичная сетка, которая минимизирует || y - Wx || _2^2 + a1 || W || _2^2 + a2 || W || _1

Если вы хотите, эта искра код является линейной регрессии удалить условия регуляризации:

.setRegParam(0.3) 
    .setElasticNetParam(0.8); 

и увеличить количество итераций, чтобы убедиться, что он сходится.

+0

Не уверен, я удалил эти две строки и .setMaxIter (1000). Кажется, что это не очень помогает: Коэффициенты: [0.4173620987945001,5.21659080879135] Intercept: 77. numIterations: 1 objectiveHistory: [0,0] –

+0

Если мы посмотрим на это: http://tempforum.neas-seminars.com/ Attachment4373.aspx, я думаю, что результат Spark ML правильный, как предположил @lejlot. Может ли кто-нибудь исправить код тензорного потока? –

Смежные вопросы