Я делаю три вещи:Scaling для линейной регрессии и классификации с использованием MATLAB
- линейной регрессии в двух размерных данных
- classificaiton с использованием линейной классификации
- классификации с помощью логистической регрессии
I я запутался в масштабировании данных. Моя проблема в том, что я не уверен, правильно ли я масштабирую свои данные. Кроме того, я хотел бы изменить внешний вид моих поверхностных графиков в Matlab.
Данные двумерный (х и у) с й в диапазоне от 15000 до 80000 и у от 1000 до 5500.
Две линии регрессии для класса 1 и класса 0 были найдены используя линейную регрессию. Для этого я масштабировал данные, вычислял вес и использовал весы для масштабированных данных также по не масштабированным данным, видимым на изображении. Я думаю, это правильно, потому что веса просто определяют наклон. Однако данные не будут отделяться, если они масштабируются от 0 до 1, как показано на следующем изображении.
Теперь я смущен, когда я должен делать масштабироваться мои данные. Потому что для линейной классификации я не мог масштабировать данные, потому что это не было бы очевидно. Без масштабирования я нашел следующий разделяющую плоскость, используя градиентный алгоритм спуска:
Первого quesiton относительно MatLab прибоя участка: Как получить твердую глядя разделяющую плоскость?
Для логистической регрессии необходимо было снова масштабировать. Я думаю, из-за диапазона функции регрессии 1/(1 + exp (-w * x)).
я масштабируется его с помощью этой
data = (values - repmat(min(values,[],1),size(values,1),1))*spdiags(1./(max(values,[],1)-min(values,[],1))',0,size(values,2),size(values,2))
который вычитанием минимального и деления на интервале от исходных значений. После масштабирования данные изменяются от 0 до 1 для x и y. Весов были рассчитаны с использованием градиентного алгоритма подъема и обнаружили, что
w = 0.2493 33.7885 -36.0428
для масштабированного набора данных и
w = 0.7610 269.3073 -102.6686
для немасштабируемых данных.
Следующее изображение с масштабируемыми данными:
Основным вопрос, когда я должен масштабировать свои данные? И когда использовать масштабированный или немасштабированный набор данных?
scale data -> calc weights using scaled data -> plot using scaled or unscaled data?
или
calc weights using unscaled data -> plot using unscaled data?
Я хотел бы логистическую функцию участка также в диапазоне от 15000 до 80000 (х) и от 1000 до 5500 (у). Когда я сюжет немасштабируемой версии она выглядит, как это, потому что логистическая функция находится в диапазоне от 0 до 1:
Есть ли лучшая команда для построения поверхности? сетка, trisurf?
Но когда я делаю классификацию для двумерных данных, я получаю трехмерный весовой вектор w. 'w0 * x0 + w1 * x1 + w2 * x2', который равен или больше нуля для разных классов с использованием линейной классификации. Как можно получить разделительную линию вместо плоскости? – evolved
У меня нет Matlab на этом компьютере, чтобы проверить, что он выводит, но я предполагаю, что первый 'w0' соответствует смещению, то есть на самом деле у вас есть' w0 + w1 * x1 + w2 * x2'. – RPM