Введение в линейную регрессию

http://developercoding.com/tensorflow/linear-regression.php

Что такое линейная регрессия?

Линейная регрессия — это контролируемый подход к машинному обучению для моделирования линейной зависимости между зависимой переменной и одной или несколькими независимыми переменными. Проще говоря, это подход к созданию прямой линии или модели из дискретных значений и генерации непрерывных выходных данных.

давайте возьмем в качестве примера набор обучающих данных для прогнозирования цен на жилье. Размер в футах (x) и цена ($ в 1000 с) (Y)

Линия линейной регрессии — это прямая линия, проходящая через все точки (может пересекаться или не пересекаться с точками). Уравнение прямой линия: y=mx + c, где m – наклон, а c – константа. В модели линейной регрессии наклон становится весом, а константа действует как смещение. Базовой моделью будет ho=Weight*x +bias. где ,
W — вес
b — смещение.
x — входная переменная или признаки.
y — выходная переменная или целевая переменная.
давайте создадим программу в tensorflow.

import numpy as np
import tensorflow as tf
# объявление и инициализация весов и смещения
Weight=tf.Variable([.3], dtype=tf.float32)
bias= tf.Variable([-.3], dtype=tf.float32)
# определяем параметры x и y и делаем их заполнителями, поскольку сначала мы не знаем их значения
x=tf.placeholder( tf.float32)
linear_model=Вес * x + смещение
y=tf.placeholder(tf.float32)

Теперь нам нужно предсказать вес и смещение. Чтобы предсказать вес и смещение, мы будем использовать данные обучения.

Функция стоимости

Функция стоимости помогает нам подобрать наилучшую прямую линию к нашим данным. Она также называется квадратичной функцией ошибки. Она обозначается J, J (вес, смещение)

J(Вес,смещение)=(12m)m∑i=1(ho(xi)−yi)2J(Вес,смещение)=(12m)∑i=1m(ho(xi)-yi)2

Мы можем измерить точность нашей функции гипотезы, используя функцию стоимости. Это берет среднюю разницу всех результатов гипотезы с входными данными от x и фактическим выходным значением y,
ho(xi)ho(xi) — прогнозируемое значение, а
yiyi — фактическое значение.
поэтому эта функция называется функцией квадратичной ошибки или среднеквадратической ошибкой. Среднее значение уменьшено вдвое (12)(12) для удобства вычисления градиентного спуска, поскольку член производной функции в квадрате будет компенсировать член (12)(12) .
Теперь цель состоит в том, чтобы минимизировать это, чтобы найти точное значение веса и смещения. Чтобы добиться всего этого в тензорном потоке, мы можем использовать библиотечные функции тензорного потока.

# Для расчета потерь
loss=tf.reduce_sum(tf.square(linear_model - y)) # вычисляет сумму квадратов
# оптимизатор
optimizer=tf.train.GradientDescentOptimizer(0.01 )
train=optimizer.minimize(потери)

tf.reduce_sum(input_tensor) : эта функция добавляет элементы по измерениям тензора. Таким образом, она действует как суммирование ∑∑
tf.train.GradientDescentOptimizer() : эта функция является оптимизатором, который использует алгоритм градиентного спуска. Градиентный спуск — это алгоритм итерационной оптимизации первого порядка для нахождения минимума функции.

Тренировочные данные и тренировочный цикл

# значения обучения
x_trainingData=[1,2,3,4]
y_trainingData=[0,-1,-2,-3]
# обучение
init=tf. global_variables_initializer() # Для инициализации всех переменных
sess=tf.Session()
sess.run(init) # сбросить значения на неправильные
# цикл
для i в диапазоне (1000 ):
 sess.run(train,{x:x_trainingData, y:y_trainingData})

во время обучения мы должны передать все данные обучения, повторите эту задачу

Рассчитать точность обучения

curr_Weight, curr_bias, curr_loss=sess.run([Вес, смещение, потеря],{x:x_trainingData, y:y_trainingData})
print(W: %sb: %s потеря: %s%(curr_Weight, curr_bias , curr_loss))
Нам нужно получить вес, смещение и потери и соответственно вывести