Комментарии, вопросы, пожелания приветствуются.
Буду рад ответить на ваши вопросы: alimbekovr@hotmail.com.

6 заметок с тегом

Machine Learning

Датасет исторических данных про-игроков в StarCraft 2

Я немного увлекаюсь игрой в StarCraft 2 (Лига алмаз, расса — зерг), а сейчас так же увлекся анализом данных и алгоритмами машинного обучения. Решил почему бы не соединить два увлечения и не попробовать сделать что нибудь интересное. Итогом получился датасет исторических данных про-игроков в StarCraft 2. Данные взяты с сайта — aligulac.
А теперь подробнее о то, что получилось.

Датасет исторических данных про-игроков в StarCraft 2

Описание данных
Этот датасет содержит 10 переменных:

  1. match_date -Дата матча в формате mm/dd/yyyy
  2. player_1 — Игрок 1
  3. player_1_match_status — Статус матча для игрока 1: winner или loser
  4. score — результат матча (например: 1-0, 1-2 и т. д.)
  5. player_2 — Игрок 2
  6. player_2_match_status — Статус матча для игрока 2: winner или loser
  7. player_1_race — Игрок 1 Расса: Z — Зерг, P — Протосс, T — Терран
  8. player_2_race — Игрок 2 Расса: Z — Зерг, P — Протосс, Т — Терран
  9. аддон — игровой аддон: WoL- Wings of Liberty, HotS — Heart of the Swarm, LotV — Legacy of the Void
  10. tournament_type — турнир: онлайн или оффлайн

С помощью этого датасета можно, например, спрогнозировать победу одного игрока над другим.

Датасет качаем на kaggle

Обращаю ваше внимание, что данные на kaggle загружена по состоянию на  18 октября 2017г. Что бы их актуализировать можно воспользоваться моим скриптом на Python (Github).

Актуальные данные будут спарсены с сайта aligulac.

Код парсера прилагаю:

# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup
import pandas as pd
 
start = 1
end = 49
datapl = []
 
for i in range(start, end):
    response = requests.get('http://aligulac.com/earnings/?page=' + str(i) + '&year=all&country=all&currency=all')
    soup = BeautifulSoup(response.text)
    table = soup.find('table', attrs={'class': 'table table-striped table-hover'})
    rows = table.find_all('tr')
    for row in rows:
        cols = row.find_all('td', attrs={'class': 'ea_name'})
        for col in cols:
            for href in col.find_all('a'):
                datapl.append(href['href'].strip())
 
data = []
for i in range(len(datapl)):
     print 'http://aligulac.com'+datapl[i]+'results/'
     response = requests.get('http://aligulac.com'+datapl[i]+'results/')
     soup = BeautifulSoup(response.text)
     table = soup.find('table', attrs={'class': 'table table-hover'})
     rows = table.find_all('tr')
 
     for row in rows:
         cols = row.find_all('td')
         for col in cols:
             data.append(col.text.strip())
             data.append(col['class'])
         for img in row.find_all('img'):
             if img.get('alt') != None and "flag" not in img.get('src') and "unrated" not in img.get('alt'):
                 data.append(img['alt'])
 
data = [data[i:i + 18] for i in range(0, len(data), 18)]
 
for i in range(len(data)):
        data[i].pop(1)
        data[i].pop(1)
        data[i].pop(1)
        data[i].pop(4)
        data[i].pop(6)
        data[i].pop(6)
        data[i].pop(6)
        data[i].pop(6)
        data[i][2].pop(0)
        data[i][5].pop(0)
 
df = pd.DataFrame(data, columns=["match_date", "player_1", "player_1_match_status", "score", "player_2","player_2_match_status", "player_1_race", "player_2_race", "addon", "tournament_type"])
 
df.to_csv('C:/1.csv', index=False, encoding='utf-8')

Пользуйтесь на здоровье, надеюсь у вас получится сделать что нибудь интересное.


  • Telegram канал c конспектами книг @fresh_brain

Machine Learning — старт проекта. Часть 2

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

Machine Learning - старт проекта. Часть 2

Инфраструктура проекта в области Machine Learning:

  1. Создание данных
    • Стационарные и мобильные датчики
    • Системы сбора данных об использовании Интернета
    • Протоколирование событий, хранение протоколов
    • Аудио/видео записи
  2. Извлечение данных
    • Извлечение данных из открытых источников — социальные сети и т. п.
    • Импорт данных из внешних источников — покупка данных,
  3. Обработка данных
    • Инфраструктура для обработки данных пакетами или в реальном времени
  4. Инфраструктура облачная, собственная, переходные варианты

Платформа и сервисы для проекта в области Machine Learning:

  1. Структура платформы BD/ML
    • Средства сбора данных
    • Средства хранения данных
    • Среда разработки и обучения моделей
    • Runtime модули готовых моделей
    • Средства интеграции runtime моделей
  2. Внешние сервисы BD/ML

Цикл работы модели:
Этапы:

  • Data Upload — загрузка и преобразование данных
  • Model Learning — обучение модели на основании загруженных данных
  • Prediction — генерация предсказаний или предписаний в ответ на запросы заказчика
  • Application — применение предсказаний или предписаний
  • Evaluation — измерение результата, сравнение с контрольной выборкой

Теперь самое интересное — метрики оценки алгоритмов машинного обучения.
Метрики оценки алгоритмов классификация

  • Точность и полнота = precision and recall
  • Precision-recall curve
  • ROC curve
  • AUC = Area under the curve

Метрики оценки алгоритмов регрессия

  • MSE, RMSE
  • Log-likelihood, log-loss

Метрики оценки для бизнеса алгоритмов рекомендаций

  • Up-sell, cross-sell
  • Что порекомендовать, чтобы купил?
  • Оптимизируем отклики?
  • 1000 откликов на автоплатеж vs 1 ипотека
  • Оптимизируем выручку

Метрики оценки алгоритмов — Speech recognition

  • WER = Word Error Rate
Word Error Rate

, где C — число слов в эталоне, S — число замен, D — число пропущенных слов, I — число «лишних» слов

Сознательно не описывал каждую метрику формулой. Эти метрики достаточно стандартны. О них много информации в Интернете. Здесь больше справочно приведена информация для того, что бы помнить какую метрику когда применять.


  • Telegram канал c конспектами книг @fresh_brain

Сайты с соревнованиями Machine Learning

Data Science проекты это постоянные эксперименты и проверка результатов с дальнейшим улучшением алгоритмов и выбранных методов. Для тех кто учится и только начинает развиваться свои навыки нужны наборы данных и задачи. Многие крупные ИТ-компании публикуют наборы открытых данных и задания для потенциального отбора специалистов. Все это можно использовать в целях отработки навыков. Сегодня вашему вниманию представляю несколько таких сайтов.

Сайты с соревнованиями Machine Learning

Самый знаменитый — Kaggle. На этом сайте постоянно проводятся соревнования по анализу данных, в которых можно принять участие. Есть также большое количество наборов открытых данных, которые можно анализировать и публиковать свои результаты. Кроме этого, можно смотреть скрипты, опубликованные другими участниками (на Kaggle такие скрипты называются Kernels) и перенимать успешный опыт.

Один и российских проектов Boosters. На нем проводят соревнования Сбербанк,Тинькофф Банка, Avito и Бин Банк. Так же на этом сайте бывают не только проекты в области Machine Learning. Так же на сайте можно посмотреть вакансии от ведущих российский компаний.

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

ML Boot Camp — соревнования от mail.ru. Содержит достаточно интересные задачи. Например: предсказать наличие сердечно-сосудистых заболеваний по результатам классического врачебного осмотра.


  • Telegram канал c конспектами книг @fresh_brain
Ctrl + ↓ Ранее