Я начну со второго вопроса и использую его для объяснения первого. Авто-кодировщик пытается взять тензор входных значений, уменьшить их размерность и затем снова аппроксимировать вход с информацией, которую он оставил. Поскольку он пытается приблизиться к количественной цели, а не к качественной метке, ему необходимо регрессировать этих значений.
Следствием этого является то, что мы не можем просто сгруппировать вещи в «правильное» и «неправильное» ведро, а скорее мы видим, насколько наши значения совпадают с целевыми значениями. Если бы у нас были «правильные» и «неправильные», мы бы не узнали, насколько мы близки к исправлению - для 22
target 21.963
было бы так же неправильно, как и 1.236
. Кроме того, ваши регрессионные значения очень редко попадают прямо в нос правильного значения, поэтому вы не можете точно оценить производительность модели.
Так что, если нет простых правильных и неправильных, как мы можем измерить производительность модели? Мы смотрим на расстояние между прогнозируемыми и фактическими значениями и используем его для расчета погрешности измерения. Принятие среднего числа ошибок дает нам нашу первую метри c - Средняя абсолютная ошибка (MAE). Это измерение L1, но оно часто бывает нестабильным, поэтому мы хотим более плавное измерение. Возводя в квадрат значение, мы получаем Среднее квадратичное отклонение (MSE), которое ведет себя более предсказуемо и является стандартной функцией потери регрессии. (Достойное упоминание Среднее квадратичное значение ошибки журнала (MSLE или MSLogE), которое возводит в квадрат лог ошибки.)
MSE является вашим go -то, но требует гауссовского распределения. MSLogE такой же, но лучше обрабатывает большие целевые значения, а MAE может обрабатывать полугауссовы распределения. Тем не менее, если вы стандартизируете или нормализуете свой ввод, вы в любом случае должны иметь гауссовское распределение.
Если вам необходимо иметь статистику "точность" c, определите приемлемый уровень ошибки и создайте маска фильтра в вашем Dataframe для значений выше и ниже этого порога. Затем нужно просто рассчитать количество значений ниже порогового значения по общему количеству значений.