Ответы пользователя по тегу Машинное обучение
  • Как реализовать классификатор на датасете рукописных цифр?

    Maksim_64
    @Maksim_64
    Data Analyst
    По этой ссылке репозитарий с реализацией вашей задачи на чистом numpy (python библиотека), которая предоставляет векторизованный массив. (все функции написаны вручную) не каких ML алгоритмов из коробки не используется.

    Реализуйте на том языке на котором вам необходимо. Я думаю иметь готовый код без ML библиотек это хорошее начало для решения вашей проблемы.

    Так же автор репозитария написал статью на https://towardsdatascience.com/ вы можете зарегистрироваться там они дают по моему три бесплатные статьи в месяц и изучить его статью, как весь процесс организовать и т.д. Название статьи "MNIST Handwritten digits classification from scratch using Python Numpy".
    Ответ написан
    Комментировать
  • Как повысить точность модели машинного обучения?

    Maksim_64
    @Maksim_64
    Data Analyst
    Features, предоставленные мне для этой задачи, как я уже написал, обезличенные, поэтому они все нужные

    Данные могут быть числовые или категориальные. В свою очередь категориальные делятся на nominal и ordinal из чего следует что во первых если они присутствуют их надо закодировать и второе закодировать правильно, в sklearn есть OrdinalEncoder и OneHotEncoder. О том сделали ли вы это (и правильно ли сделали) вы нам конечно же не сообщаете, это действие относится к этапу Preprocessing data, там же Standard Scaler и другие возможно очень полезные трансформаторы вплоть до создания своего кастомного трансформатора.
    Просто данные не в один алгоритм не запихивают. Их приводят к такому виду (трансформируют) на которых алгоритм хорошо работает, а потом уже имеет смысл тюнить. Вам нужен результат. пожалуйста https://scikit-learn.org/stable/data_transforms.html . Вот это та глава в документации (а документация у sklearn как учебник) которая поправит дело. Результат достигается посредством трансформаций данных и в этой области лежит решение. Глава 6 что я вам скинул большая и за несколько часов или даже дней ее не осилить (если конечно же учится а не кусочки кода запускать). Начните с того что бы научится пользоваться объектом Pipeline (он не так прост как кажется) И с применением хотя бы простого трансформера StandardScaler и что бы без ошибок. Чтобы метод fit_transform вызывался на тренировочном сете а на тестовом только transform и т.д. или с правильным использованием Pipeline он это сам сделает. И приходите с кодом где вы перед тренировкой трансформируете данные.

    На данный момент у вас нет ничего 0.6 - 0.65 точность, у вас 300 / 500 = 0.6 то есть абсолютно случайно без какого либо обучения в среднем на длинной дистанции в 60% случаях можно угадывать статус 1.

    Мне нужно построить модель, которая будет предсказывать будущий статус.
    Что значит будущий речь идет о временной последовательности, а не о классической классификации?. Тогда препроцессинг должен быть сделан совершенно другой начиная от сплитов и т.д. В таком случае все данные нужно агрегировать разными функциями в пределах окна и на них учить, обязательно это проясните.
    Ответ написан
  • Какой алгоритм лучше подходит для определения прибыльной сделки на бирже?

    Maksim_64
    @Maksim_64
    Data Analyst
    А вы уверенны что тюните правильно, при тюнинге вы не должны сравнивать с тестовым сетом, это приведет к классической ошибке утечке тестовых данных. Нужно создавать либо либо третий сет валидации либо использвать кросс-валидацию но с осторожностью (там можно то же набедакурить и получить утечку и на практике никаких 0.7 вы не увидите).

    Если у вас есть алгоритм который например в течении следующих торговых 252 дней, покажет точность 0.7 то вы богаты. 0.7 вероятность успеха при экспонентом росте хватит с головой. (Помните что речь о последовательности) а не а классической классификации или регрессии. Возможно вы учите модель на данных которых у вас не будет в момент прогноза, (классическая ошибка). То есть все ваши данные должны быть: это различные индикаторы (оконные функции, которые с агрегировали статистику за определенное время), например какой нибудь скользящее среднее с окном 10, скользящее среднее с окном 21 и.т.д. Ваши вход X это набор индикаторов, статистик которые будут вам доступны в момент предсказания.

    Там временная последовательность, кросс-валидация делается специальным классом для этого в документации sklearn есть про это в разделе кросс-валидации.

    Ну и наконец про алгоритм лучший алгоритм не существует. Даже если вам удастся создать модель которая зацепит текущее положение дел, и будет КАКОЕ ТО время хорошо работать потом она перестанет никакого универсального хорошего алгоритма не существует. Потому что на ценообразование в разное время в мире влияют разные факторы. В одно время это факторы настроения а все фундаментальные работают слабо, в другое в точности наоборот и т.д. Не ищете лучший алгоритм.
    Ответ написан
  • Как настроить ML-модель?

    Maksim_64
    @Maksim_64
    Data Analyst
    То что вы пытаетесь сделать это называется тюнинг гиперпараметров. Так не делается конечно. в sklearn есть решения из коробки. При чем это целый этап в машинном обучении по этому целый раздел документации этому посвящен. https://scikit-learn.org/stable/modules/grid_searc...
    Там не только представлены классы но и различные методики которые используются. Изучайте там примеры есть, так что решите свой вопрос.
    Ответ написан
    Комментировать
  • Удалять ли отрицательную корреляцию, если строишь линейную регрессию?

    Maksim_64
    @Maksim_64
    Data Analyst
    Конечно же нет, негативная корреляция нормальный результат. Когда одна переменная увеличивается другая уменьшается это негативная корреляция. В то время как позитивная корреляция это когда одна переменная увеличивается увеличивается и другая. Вот и вся разница между позитивной и негативной корреляцией.
    Ответ написан
    4 комментария
  • Почему ResNet дает слишком хорошие результаты?

    Maksim_64
    @Maksim_64
    Data Analyst
    На практике такие метрики могут означать лишь одно вы тренируете и тестируете на одних и тех же данных. Первое место для проверки
    test_dataset = ASDataset(client_file="raw/client_train_raw.txt", imposter_file="raw/imposter_train_raw.txt", \
        transforms=preprocess)
    train_dataset = ASDataset(client_file="raw/client_test_raw.txt", imposter_file="raw/imposter_test_raw.txt", \
        transforms=preprocess)
    train_dataloader = DataLoader(train_dataset, batch_size=128, shuffle=True)
    test_dataloader = DataLoader(test_dataset, batch_size=128, shuffle=True)

    второе место для проверки естественно сам класс DataLoader.
    ну и третье сами файлы что бы по запарке они не содержали одно и тоже содержимое.

    В каком случае возможны такие метрики ну например данные на которых вы учитесь в них входная переменная это температура в цельсии а то что нужно "предсказать" температура в фаренгейтах. Ваши тестовые данные по структуре такие же но сам датасет алгоритм никогда не видел. На тех данных что алгоритм тренировался он благополучно выучит школьную формулу перевода из цельсии в фаренгейты и справится со 100 точностью. По простой причине в данная проблема состоит только из детерминистической составляющей, т.е вариативность отсутствует. (Данный пример специально примитивен. Это может и Unsupervised Learning это может задача где на вход "features" пойдут десятки переменных и.т.д лишь бы отсутствовала вариативность). Подобные примеры как этот будут выдавать такие метрики.
    Ответ написан
    Комментировать