GotAI.NET

Форум: Проблемы искусственного интеллекта

 

Регистрация | Вход

 Все темы | Новая тема Стр.15 (19)<< < Пред. | След. > >>   Поиск:  
 Автор Тема: На: ML battle
mserg
Сообщений: 255
На: ML battle
Добавлено: 07 янв 17 5:13
xgboost дает 0.689
[Ответ][Цитата]
Эгг
Сообщений: 13020
На: ML battle
Добавлено: 07 янв 17 6:28
Изменено: 07 янв 17 6:29
Цитата:
Автор: гость
Не расстраивайтесь, у меня если честно вообще 0.691, стыдно, но таковы факты, хотя я не считаю себя гением и мог бы просто использовать их пример выдав за свой результат, как возможно поступили Вы и mserg, это сложно доказать или опровергнуть.

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

Мои трудности заключаются в том, что я всю жизнь работаю с физическими данными, грубо говоря, с полями, для меня данные numerai оказались очень искусственными, и то, что я считаю себя гением совершенно не помогает мне в них разобраться. Может быть нужно больше времени, но, скорее всего, виноваты подходы. Сильно я не расстраиваюсь, так бывает, что какие-то инструменты не подходят к каким-то задачам.
[Ответ][Цитата]
mserg
Сообщений: 255
На: ML battle
Добавлено: 07 янв 17 7:07
Изменено: 07 янв 17 7:09
Кстати, о связи точности классификации и logloss
Она сильное нелинейная - при точности классификации 0% (50%.50%) небольшие добавление точности почти ничего не дает - logloss практически не меняется. А вот если уже достигнута какая-приличная точность классификации, то небольшое ее приращение дает сильное уменьшение logloss

На r график logloss от точности у меня получился такой
logloss = function(t)-t*log(t)-(1-t)*log(1-t)
t= seq(0.5,0.65,0.01)
plot(200*(t-0.5),logloss(t),type="l")

Обратная функция получение необходимой точности классификации по logloss такая:
inv_logloss = function(e)
optim(c(0.7),function(t) (logloss(t)-e)^2, method="Brent",lower=0.5,upper=1)$par[1]

Примеры:
> (inv_logloss(0.69)-0.5)*200
[1] 7.929536
> (inv_logloss(0.689)-0.5)*200
[1] 9.101037
> (inv_logloss(0.68)-0.5)*200
[1] 16.1799
> (inv_logloss(0.67)-0.5)*200
[1] 21.4327
> (inv_logloss(0.66)-0.5)*200
[1] 25.60441
> (inv_logloss(0.6)-0.5)*200
[1] 42.47752

Т.е. 0.69 - это точность классификации где-то 8%
Т.е. 0.689 - это точность классификации где-то 9%
и т.д.
[Ответ][Цитата]
Сергей Гаврилов
Сообщений: 175
На: ML battle
Добавлено: 07 янв 17 7:27
Цитата:
Автор: mserg

Т.е. 0.69 - это точность классификации где-то 8%
Т.е. 0.689 - это точность классификации где-то 9%
Что то Вы не верно посчитали)) 0.69 это максимум 2-3% точности 47-48% ошибки при условии что вероятности в нужном диапазоне
[Ответ][Цитата]
mserg
Сообщений: 255
На: ML battle
Добавлено: 07 янв 17 7:43
Изменено: 07 янв 17 7:45
Цитата:
Автор: Сергей Гаврилов

Что то Вы не верно посчитали)) 0.69 это максимум 2-3% точности 47-48% ошибки при условии что вероятности в нужном диапазоне


А Вы расскажите, как получены ваши оценки.

Я брал вероятность p правильной классификации с предположением что нулей и единиц одинаково. Т.к. допустим, что наш алгоритм правильно классифицирует с вероятностью p.
Точность классификации будет 200*(p-0.5)

Прогноз состоит в том, чтобы для 1 указывать p, а для 0 - указывать (1-p).
Ну и потом собственно можно подсчитать logloss.

Почему константы для logloss выбраны p и (1-p)?
Потому что при них logloss минимален (p и (1-p) - это мат. ожидания, как нетрудно убедиться).

Зачем я это привел?
Затем, что logloss дезоринтирует, и результаты 0.67 кажутся нереальными.
[Ответ][Цитата]
Сергей Гаврилов
Сообщений: 175
На: ML battle
Добавлено: 07 янв 17 8:00
Ну вот у Вас на xgboost с логлосом в 0.689 сколько % ошибки? Разве 50 - 9 = 41% ? То есть считаете сколько раз угадали если вероятность выше 0.5 или ниже 1 и 0 соответсвено в тестовой выборке. По идее должно получиться не менее 47.5% никак не 41

Ещё может быть что именно на этом сайте как то логлос считают мутно, всё таки валидационная выборка не доступна что бы проверить, у меня на тестовом сабсете логлос примерно 0.69150 +-50 и ~47.5% ошибки а у них на сайте это 0.689
[Ответ][Цитата]
mserg
Сообщений: 255
На: ML battle
Добавлено: 07 янв 17 8:35
Изменено: 07 янв 17 8:40
Для точности я ввел локальное определение: когда ошибка 0%, то точность - 100%; когда ошибка 50% - точность равно %0.

Соответственно, для 0.689 процент ошибок составит 50 - 9/2 = 45.5%

Почему имеет место быть "По идее должно получиться не менее 47.5%" - мне не понятно. Нужны формулы.

logLoss у них на сайте рассчитывается нормально, дело - в данных.

UPD. Если нужно связать ошибку и logloss, можно построить график на r (см. также скрипты выше)
plot(1-t,logloss(t),type="l")
[Ответ][Цитата]
Сергей Гаврилов
Сообщений: 175
На: ML battle
Добавлено: 07 янв 17 9:05
Изменено: 07 янв 17 9:06
Цитата:
Автор: mserg

По идее должно получиться не менее 47.5%" - мне не понятно.
У меня так, при логлосе 0.689 у них,но наверно это потому что у них датасет такой проверочный

https://numer.ai/ai/gavrik
[Ответ][Цитата]
mserg
Сообщений: 255
На: ML battle
Добавлено: 07 янв 17 9:13
Цитата:
Автор: Сергей Гаврилов

У меня так, при логлосе 0.689 у них,но наверно это потому что у них датасет такой проверочный

https://numer.ai/ai/gavrik

А, понял...

Для тренировочных данных имеем:
> 1-inv_logloss(0.69150)
[1] 0.4713096
Т.е. 47.1%

На тестовых (на их сайте)
> 1-inv_logloss(0.689)
[1] 0.4544948
Т.е. 45.4%
[Ответ][Цитата]
Сергей Гаврилов
Сообщений: 175
На: ML battle
Добавлено: 07 янв 17 9:24
Изменено: 07 янв 17 9:25
Цитата:
Автор: mserg


А, понял...

Для тренировочных данных имеем:
> 1-inv_logloss(0.69150)
[1] 0.4713096
Т.е. 47.1%

На тестовых (на их сайте)
> 1-inv_logloss(0.689)
[1] 0.4544948
Т.е. 45.4%
А как Вы получаете логлос из точности? Немного не понял... Можно в виде обычных мат формул без R команд
[Ответ][Цитата]
dr2chek
Сообщений: 871
На: ML battle
Добавлено: 07 янв 17 9:32
Народ, как вы работаете с числами до 20-го знака после запятой? Ведь это 128-битное представление уже получается... Иными словами, зачем в данных от этой нумерай такая неестественная точность?
[Ответ][Цитата]
mserg
Сообщений: 255
На: ML battle
Добавлено: 07 янв 17 9:48
Цитата:
Автор: Сергей Гаврилов

А как Вы получаете логлос из точности? Немного не понял... Можно в виде обычных мат формул без R команд

Можно доказать, что для двоичного классификатора logloss будет таким (кратко я уже описывал выше):
-p*log(p)-(1-p)*log(1-p)
p здесь - вероятность правильной классификации

В реальности в прогнозе будут разные числа, а не только два числа p и (1-p). Однако, плюс/минус лапоть, оценка будет верна.
[Ответ][Цитата]
mserg
Сообщений: 255
На: ML battle
Добавлено: 07 янв 17 9:55
Изменено: 07 янв 17 9:55
Цитата:
Автор: dr2chek

Народ, как вы работаете с числами до 20-го знака после запятой? Ведь это 128-битное представление уже получается... Иными словами, зачем в данных от этой нумерай такая неестественная точность?

Никак не работаем, у нас по 15 цифр после запятой. А если даже и есть, - это скорее происки программистов, боровшихся с округлениями.

Насколько я понял, numerai сохраняют "структуры" при шифровании. Я, конечно, толком не понял, но операции умножения и сложения, в каком-то смысле, при шифровании сохраняются. Гипотеза о скрытой информации в последних знаках, вероятно, не имеет место быть в реальности.
[Ответ][Цитата]
dr2chek
Сообщений: 871
На: ML battle
Добавлено: 07 янв 17 10:03
Цитата:
Автор: mserg


Никак не работаем, у нас по 15 цифр после запятой. А если даже и есть, - это скорее происки программистов, боровшихся с округлениями.

Насколько я понял, numerai сохраняют "структуры" при шифровании. Я, конечно, толком не понял, но операции умножения и сложения, в каком-то смысле, при шифровании сохраняются. Гипотеза о скрытой информации в последних знаках, вероятно, не имеет место быть в реальности.

Спасибо большое за ответ. Насчет последнего тезиса о скрытой инф-ии в последних знаках - я тоже согласен, поскольку представление данных все-таки десятичное и влияние 1/е-18 части на обучение - это даже не бифуркация, это уже эффект бабочки для планеты Про арифм операции над шифрованными данными я почитал, спасибо вам тоже за ссылку ранее.
[Ответ][Цитата]
Сергей Гаврилов
Сообщений: 175
На: ML battle
Добавлено: 07 янв 17 10:28
Изменено: 07 янв 17 10:34
Цитата:
Автор: mserg

-p*log(p)-(1-p)*log(1-p)

это по определению, я имел в виду как из 0.689 Вы получили 9% и наоборот
вот это:
Цитата:
Автор: mserg

Обратная функция получение необходимой точности классификации по logloss такая:
inv_logloss = function(e)
optim(c(0.7),function(t) (logloss(t)-e)^2, method="Brent",lower=0.5,upper=1)$par[1]


Т.е. 0.69 - это точность классификации где-то 8%
Т.е. 0.689 - это точность классификации где-то 9%
и т.д.
[Ответ][Цитата]
 Стр.15 (19)1  ...  11  12  13  14  [15]  16  17  18  19<< < Пред. | След. > >>