Автор: Artem Kondranin

  • Работа с данными — Очистка, нормализация и фичевая инженерия

    Работа с данными — Очистка, нормализация и фичевая инженерия

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


    Очистка данных

    Проблемы с исходными данными

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

    Основные проблемы, с которыми можно столкнуться:

    • Пропущенные значения.
    • Выбросы (аномальные значения).
    • Дублирующиеся записи.
    • Шум в данных (непредсказуемые или нерелевантные данные).

    Обработка пропущенных значений

    Пропущенные значения часто встречаются в данных и могут быть вызваны различными причинами: ошибками в сборе данных, техническими сбоями или отсутствием данных по определенным признакам.

    Основные подходы к обработке пропусков:

    1. Удаление строк или столбцов с пропущенными значениями: Этот метод применим, если пропусков мало и их удаление не повлияет на общую структуру данных.
    2. Заполнение пропущенных значений: Заполнение пропусков средним, медианой или модой для числовых признаков и наиболее частым значением для категориальных признаков.
    3. Предсказание пропущенных значений: Можно использовать алгоритмы машинного обучения для предсказания пропущенных значений на основе других признаков.

    Обработка выбросов

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

    Методы работы с выбросами:

    1. Удаление выбросов: Один из самых распространенных методов — удаление значений, которые сильно отклоняются от других данных. Часто используется метод межквартильного размаха (IQR).
    2. Масштабирование выбросов: Выбросы можно не удалять, а уменьшить их влияние на модель, применив логарифмическую трансформацию или нормализацию.

    Визуализация данных для выявления проблем

    Перед тем как начать обработку данных, полезно визуализировать их, чтобы увидеть пропуски, выбросы и дисбаланс. Несколько полезных визуализаций:

    • Box plot (ящик с усами) — для выявления выбросов.
    • Heatmap — для отображения корреляции между признаками.
    • Гистограмма — для оценки распределения данных.
    import seaborn as sns
    import matplotlib.pyplot as plt
    
    # Визуализация выбросов
    sns.boxplot(x=df['column_name'])
    plt.show()
    
    # Визуализация корреляции между признаками
    sns.heatmap(df.corr(), annot=True)
    plt.show()

    Нормализация и стандартизация данных

    Многие модели машинного обучения чувствительны к масштабу данных. Если признаки находятся в разных диапазонах (например, один в пределах 0-1, а другой — в пределах 0-1000), это может нарушить работу модели. Нормализация и стандартизация данных помогают устранить эту проблему.

    Нормализация

    Нормализация заключается в преобразовании данных таким образом, чтобы они находились в одном диапазоне, чаще всего от 0 до 1. Нормализация особенно полезна, когда данные имеют разный масштаб, и модель должна учитывать их пропорционально.

    Формула нормализации:

    Пример нормализации:

    from sklearn.preprocessing import MinMaxScaler
    
    # Нормализация данных
    scaler = MinMaxScaler()
    df_normalized = scaler.fit_transform(df)

    Стандартизация

    Стандартизация приводит данные к нулевому среднему и единичному стандартному отклонению. Этот метод полезен, если алгоритм предполагает нормальное распределение данных, как, например, линейные модели и SVM.

    Формула стандартизации:

    Пример стандартизации:

    from sklearn.preprocessing import StandardScaler
    
    # Стандартизация данных
    scaler = StandardScaler()
    df_standardized = scaler.fit_transform(df)

    2.3 Когда использовать нормализацию или стандартизацию?

    • Нормализация полезна для моделей, которые основаны на расстояниях, например, k-ближайших соседей (kNN) или нейронных сетей.
    • Стандартизация применяется, когда данные должны быть нормально распределены или если модель использует такие методы, как линейная регрессия или SVM.

    Фичевая инженерия

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

    Создание новых признаков

    Примеры создания новых признаков:

    1. Признаки на основе дат: Временные данные часто содержат скрытую информацию, которую можно извлечь, разделив временные метки на составляющие (день, месяц, час и т.д.).
    2. Комбинирование признаков: Полезно создавать новые признаки, комбинируя существующие. Это может быть произведение или деление признаков, создание отношений.
    3. Бинаризация признаков: Иногда полезно перевести числовые признаки в бинарный формат (например, 0 и 1), основываясь на пороговом значении.

    Работа с категориальными признаками

    Категориальные признаки необходимо преобразовать в числовую форму, чтобы их можно было использовать в моделях машинного обучения.

    1. One-Hot Encoding: Этот метод создает отдельный бинарный признак для каждого уникального значения в категориальном признаке.
    2. Label Encoding: Категориальные значения преобразуются в числовые индексы. Этот метод подходит для деревьев решений и случайных лесов.

    Преобразование признаков

    Иногда полезно применить математические преобразования к признакам, чтобы улучшить их вклад в модель.

    1. Логарифмирование: Логарифмическая трансформация помогает уменьшить влияние больших значений и делает данные более «нормальными».
    2. Квадратный корень: Применение квадратного корня к данным уменьшает влияние крупных значений, сохраняя их порядок.

    Работа с корреляцией признаков

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

    Пример анализа корреляции:

    import seaborn as sns
    
    # Визуализация корреляции между признаками
    sns.heatmap(df.corr(), annot=True, cmap='coolwarm')
    plt.show()

    Работа с большими данными

    При работе с большими объемами данных традиционные методы могут быть слишком медленными. Для таких случаев существуют библиотеки и инструменты, которые помогают обрабатывать данные эффективно:

    • Dask: Библиотека для параллельной обработки данных, поддерживающая работу с большими объемами.
    • PySpark: Фреймворк для распределенной обработки данных, который позволяет масштабировать обработку на кластерах.

    Пример использования Dask:

    import dask.dataframe as dd
    
    # Загрузка данных с использованием Dask
    df = dd.read_csv('large_dataset.csv')
    
    # Применение операций
    df = df.dropna().compute()

    Заключение

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


    Рекомендации для самостоятельного изучения:

    • Книга «Feature Engineering for Machine Learning: Principles and Techniques for Data Scientists» от Alice Zheng и Amanda Casari.
    • Онлайн-курсы по фичевой инженерии на Coursera и Kaggle.
    • Практические задачи на Kaggle для работы с данными.
  • Введение в смарт-контракты

    Введение в смарт-контракты

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


    Что такое смарт-контракты?

    Смарт-контракт — это программа, которая автоматически исполняет условия, заложенные в её коде. Она выполняется на блокчейне, что обеспечивает прозрачность и неизменность её работы. Как только условия смарт-контракта выполнены, происходит автоматическое выполнение заложенных в него действий — например, перевод средств между сторонами.

    Основные характеристики смарт-контрактов:

    Децентрализация: Смарт-контракты развертываются на децентрализованных блокчейнах (например, Ethereum), что устраняет необходимость в центральных органах.

    Неизменяемость: После развертывания смарт-контракт не может быть изменён, что гарантирует выполнение условий без манипуляций.

    Автоматизация: Все процессы в смарт-контрактах происходят автоматически, без необходимости вмешательства третьих лиц.

    Прозрачность: Смарт-контракт открыт для просмотра любому участнику сети, что позволяет проверять его условия и действия.

    Технические аспекты работы смарт-контрактов:

    Смарт-контракты выполняются на блокчейнах, таких как Ethereum, где они используют ресурсы сети для своего исполнения. Для выполнения контракта необходимо оплатить газ — комиссия, которая идёт валидаторам сети за обработку и подтверждение транзакций. Это делает процесс взаимодействия с контрактом платным, а стоимость газа может варьироваться в зависимости от загруженности сети.

    Пример работы смарт-контракта:

    Допустим, вы хотите продать цифровую картину как NFT. В смарт-контракте прописываются условия: как только покупатель переведет криптовалюту на ваш адрес, смарт-контракт автоматически передаст ему право собственности на картину в виде NFT. Этот процесс происходит без участия третьих сторон.

    Смарт-контракты используются в самых разных сферах, от финансов до децентрализованных организаций.

    Децентрализованные финансы (DeFi)

    DeFi — это финансовые услуги, которые работают на основе блокчейна и смарт-контрактов без участия традиционных банков и финансовых институтов. Смарт-контракты управляют кредитованием, обменом активов и стейкингом.

    Пример: Uniswap

    Uniswap — это децентрализованная биржа, где пользователи могут обменивать криптовалюты напрямую друг с другом через пулы ликвидности, управляемые смарт-контрактами. Смарт-контракт автоматически выполняет обмен, распределяет ликвидность и начисляет комиссии.

    Торговля NFT

    NFT — это уникальные цифровые активы, которые подтверждают право собственности на объекты, такие как искусство, коллекционные предметы и внутриигровые активы.

    Пример: OpenSea

    OpenSea — это платформа для торговли NFT, где смарт-контракты обеспечивают создание, передачу и продажу цифровых активов. Когда покупатель совершает транзакцию, смарт-контракт автоматически передаёт право на владение NFT покупателю.

    Децентрализованные автономные организации (DAO)

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

    Пример: MakerDAO

    MakerDAO управляет стейблкоином DAI, обеспеченным криптовалютой. Владельцы токенов MKR голосуют за изменения в системе, такие как процентные ставки или параметры залогов. Смарт-контракты контролируют выпуск и управление DAI, обеспечивая децентрализованное управление без посредников.

    Игры и виртуальные миры

    Смарт-контракты используются в играх на блокчейне для управления внутриигровыми активами и торговлей.

    Пример: Axie Infinity

    Axie Infinity — это блокчейн-игра, где игроки могут покупать, развивать и торговать виртуальными существами (Axies), которые представлены в виде NFT. Смарт-контракты управляют игровыми процессами и обеспечивают безопасную торговлю активами между игроками.


    Проблемы и ограничения смарт-контрактов

    Несмотря на их преимущества, у смарт-контрактов есть свои ограничения и проблемы.

    Неизменяемость и ошибки в коде

    Одно из главных преимуществ смарт-контрактов — их неизменяемость — также является проблемой. Если в контракте допущена ошибка, её невозможно исправить после развертывания. Это делает критически важным проверку кода перед публикацией.

    Пример: DAO (2016)

    В 2016 году смарт-контракт DAO, управлявший крупным фондом, имел уязвимость, которую использовали хакеры для кражи средств. Из-за неизменяемости кода разработчики не могли просто исправить ошибку. Это привело к разделению сети Ethereum на две цепи: Ethereum и Ethereum Classic.

    Проблемы с масштабируемостью

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

    Оракулы и доверие к внешним данным

    Смарт-контракты не могут взаимодействовать с внешним миром напрямую. Для получения данных извне (например, результаты спортивных матчей или цены активов) они используют оракулы — специальные сервисы, которые передают данные в блокчейн. Оракулы могут стать уязвимым звеном, если предоставят неверные или поддельные данные.

    Решение: Децентрализованные оракулы

    Для снижения рисков многие системы используют децентрализованные оракулы, такие как Chainlink. Эти оракулы работают на основе нескольких независимых источников данных, что снижает риск манипуляций.

    Проблемы с юридическим статусом

    Смарт-контракты могут сталкиваться с правовыми ограничениями. Поскольку они работают в децентрализованных системах и не зависят от конкретных юрисдикций, возникает вопрос о их юридической силе и правоприменении. Решение споров, возникающих из-за работы смарт-контрактов, может быть сложным в рамках традиционных правовых систем.


    Безопасность смарт-контрактов

    Смарт-контракты работают с цифровыми активами, что делает их привлекательной целью для хакеров. Чтобы минимизировать риски, необходимо следовать передовым практикам безопасности.

    Лучшие практики безопасности:

    1. Аудит кода: Перед публикацией смарт-контрактов обязательно проведение аудита кода сторонними специалистами для выявления уязвимостей.
    2. Использование проверенных библиотек: Например, использование проверенных библиотек, таких как OpenZeppelin для разработки смарт-контрактов, позволяет избежать многих типичных уязвимостей.
    3. Ограничение полномочий: Разработка смарт-контрактов с минимальными полномочиями (например, ограничение доступа к управлению средствами).
    4. Механизмы аварийной остановки (circuit breakers): Внедрение механизма аварийной остановки позволяет временно приостановить работу контракта в случае обнаружения проблем.

    Заключение

    Смарт-контракты — это мощный инструмент для автоматизации договорных отношений, финансовых транзакций и управления децентрализованными организациями. Они уже применяются в таких сферах, как DeFi, NFT и DAO, и предоставляют возможность построения прозрачных и доверенных систем. Однако использование смарт-контрактов требует внимательности и осторожности из-за неизменяемости кода и возможных уязвимостей. Будущие уроки будут посвящены разработке смарт-контрактов с использованием языка Solidity и их интеграции в децентрализованные приложения (DApps).

  • Методы оценки качества моделей

    Методы оценки качества моделей

    Оценка качества моделей машинного обучения — важный шаг в процессе построения и оптимизации моделей. Правильный выбор метрики позволяет объективно оценить, насколько эффективно модель решает задачу. В зависимости от специфики задачи и данных могут использоваться различные метрики, такие как точность, полнота, F-мера, а также ROC-AUC и логарифмическая функция потерь (Log-Loss). В этом материале мы рассмотрим основные метрики, используемые для задач классификации, их математические основы, примеры использования, а также как интерпретировать результаты.


    Матрица ошибок (Confusion Matrix)

    Матрица ошибок — это таблица, которая показывает, как модель классифицирует объекты на основе их истинных и предсказанных классов. Она разбивает предсказания на четыре категории:

    • True Positive (TP): Модель правильно предсказала положительный класс.
    • False Positive (FP): Модель ошибочно предсказала положительный класс, хотя на самом деле класс отрицательный.
    • True Negative (TN): Модель правильно предсказала отрицательный класс.
    • False Negative (FN): Модель ошибочно предсказала отрицательный класс, хотя на самом деле класс положительный.

    Визуализация матрицы ошибок:

    import seaborn as sns
    import matplotlib.pyplot as plt
    from sklearn.metrics import confusion_matrix
    
    # Пример истинных значений и предсказанных значений
    y_true = [0, 1, 1, 0, 1, 0, 1]
    y_pred = [0, 1, 0, 0, 1, 1, 1]
    
    # Создание и визуализация матрицы ошибок
    cm = confusion_matrix(y_true, y_pred)
    sns.heatmap(cm, annot=True, fmt='d', cmap='Blues')
    plt.title('Матрица ошибок')
    plt.xlabel('Предсказано')
    plt.ylabel('Истинное')
    plt.show()

    Основные метрики оценки

    Точность (Accuracy) — это доля правильно предсказанных примеров (как положительных, так и отрицательных) среди всех примеров.

    • Преимущества: Легко интерпретируется и работает хорошо на сбалансированных данных.
    • Недостатки: На несбалансированных данных точность может вводить в заблуждение, если большинство примеров относятся к одному классу.

    Пример расчета точности:

    from sklearn.metrics import accuracy_score
    
    # Пример истинных и предсказанных значений
    y_true = [0, 1, 1, 0, 1, 0, 1]
    y_pred = [0, 1, 0, 0, 1, 1, 1]
    
    # Вычисление точности
    accuracy = accuracy_score(y_true, y_pred)
    print(f"Точность: {accuracy:.2f}")

    Полнота (Recall)

    Полнота (Recall), также известная как чувствительность, показывает, как хорошо модель распознает все истинные положительные примеры.

    • Преимущества: Важна в ситуациях, где важнее не пропустить положительные примеры, например, в медицинской диагностике.
    • Недостатки: Если модель предсказывает много ложноположительных результатов, она может иметь высокую полноту, но низкую точность.

    Пример расчета полноты:

    from sklearn.metrics import recall_score
    
    # Вычисление полноты
    recall = recall_score(y_true, y_pred)
    print(f"Полнота: {recall:.2f}")

    Точность предсказания (Precision)

    Точность предсказания (Precision) измеряет, насколько точны положительные предсказания модели.

    • Преимущества: Полезна в задачах, где важно минимизировать количество ложноположительных предсказаний, например, в спам-фильтрах.
    • Недостатки: Может давать слишком высокую оценку, если модель редко предсказывает положительные классы.

    Пример расчета точности предсказания:

    from sklearn.metrics import precision_score
    
    # Вычисление точности предсказания
    precision = precision_score(y_true, y_pred)
    print(f"Точность предсказания: {precision:.2f}")

    F-мера (F1-score)

    F-мера (F1-score) — это среднее гармоническое между точностью предсказания и полнотой. Она полезна в задачах с несбалансированными данными, так как учитывает оба показателя.

    • Преимущества: Комбинирует точность предсказания и полноту, что делает её полезной для оценки моделей на несбалансированных данных.
    • Недостатки: Может быть сложно интерпретировать отдельно без контекста.

    Пример расчета F1-меры:

    from sklearn.metrics import f1_score
    
    # Вычисление F1-меры
    f1 = f1_score(y_true, y_pred)
    print(f"F1-мера: {f1:.2f}")

    Дополнительные метрики

    ROC-кривая и AUC (Area Under Curve)

    ROC-кривая (Receiver Operating Characteristic) — это график, который показывает соотношение между полнотой (Recall) и ложноположительными срабатываниями (False Positive Rate) при различных порогах классификации.

    • AUC (Area Under Curve) — площадь под ROC-кривой. Чем ближе AUC к 1, тем лучше модель разделяет классы. AUC = 0.5 означает, что модель предсказывает случайно.

    Пример построения ROC-кривой:

    from sklearn.metrics import roc_curve, auc
    import matplotlib.pyplot as plt
    
    # Пример истинных значений и предсказанных вероятностей
    y_true = [0, 1, 1, 0, 1, 0, 1]
    y_scores = [0.2, 0.8, 0.6, 0.4, 0.9, 0.3, 0.7]
    
    # Построение ROC-кривой
    fpr, tpr, thresholds = roc_curve(y_true, y_scores)
    roc_auc = auc(fpr, tpr)
    
    # Визуализация ROC-кривой
    plt.figure()
    plt.plot(fpr, tpr, color='darkorange', lw=2, label=f'ROC-кривая (AUC = {roc_auc:.2f})')
    plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
    plt.xlabel('False Positive Rate')
    plt.ylabel('Recall')
    plt.title('ROC-кривая')
    plt.legend(loc='lower right')
    plt.show()

    Логарифмическая функция потерь (Log-Loss)

    Log-Loss — это метрика, которая измеряет, насколько хорошо предсказанные вероятности соответствуют реальным классам. Она полезна для задач, где важны вероятностные предсказания.

    Пример расчета Log-Loss:

    from sklearn.metrics import log_loss
    
    # Пример истинных значений и предсказанных вероятностей
    y_true = [0, 1, 1, 0, 1, 0, 1]
    y_probs = [0.1, 0.9, 0.8, 0.2, 0.85, 0.3, 0.75]
    
    # Вычисление Log-Loss
    log_loss_value = log_loss(y_true, y_probs)
    print(f"Log-Loss: {log_loss_value:.2f}")

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

    Для задач многоклассовой классификации метрики, такие как точность, полнота и F1-мера, могут быть адаптированы для нескольких классов. Используются два подхода:

    1. Micro-averaging: Суммирует TP, FP, FN по всем классам и вычисляет метрику.
    2. Macro-averaging: Вычисляет метрику для каждого класса и усредняет их.

    Пример расчета F1-меры для многоклассовой классификации:

    from sklearn.metrics import f1_score
    
    # Пример многоклассовых данных
    y_true = [0, 1, 2, 0, 1, 2]
    y_pred = [0, 2, 1, 0, 0, 1]
    
    # Вычисление F1-меры для каждого класса
    f1_macro = f1_score(y_true, y_pred, average='macro')
    f1_micro = f1_score(y_true, y_pred, average='micro')
    
    print(f"F1-мера (Macro): {f1_macro:.2f}")
    print(f"F1-мера (Micro): {f1_micro:.2f}")

    Как выбрать правильную метрику?

    • Точность (Accuracy): Используйте на сбалансированных данных, где классы примерно одинаковы по частоте.
    • Полнота (Recall): Важна в задачах, где пропуск положительных примеров может иметь серьезные последствия (например, медицина).
    • Точность предсказания (Precision): Полезна, когда важно минимизировать ложные срабатывания (например, спам-фильтры).
    • F1-мера: Полезна на несбалансированных данных, когда требуется баланс между полнотой и точностью предсказаний.
    • ROC-AUC: Важна, когда требуется оценить способность модели ранжировать примеры по вероятности принадлежности к классу.

    Заключение

    Методы оценки качества моделей играют ключевую роль в процессе построения эффективных решений на основе машинного обучения. Точность, полнота, F-мера и ROC-AUC являются основными метриками, которые помогают объективно оценить эффективность модели. Понимание этих метрик позволяет выбрать оптимальную модель для конкретной задачи и улучшить ее производительность.


    Рекомендации для самостоятельного изучения:

    • Книга «Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow» от Aurélien Géron.
    • Онлайн-курсы по машинному обучению на Coursera и edX.
    • Лекции по машинному обучению от MIT OpenCourseWare.
  • Еженедельный дайджест новостей в сфере WEB3 (29 сентября — 6 октября)

    Еженедельный дайджест новостей в сфере WEB3 (29 сентября — 6 октября)

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


    Beacons: исследуйте ролевые подземелья и зарабатывайте NFT

    Игра Beacons предлагает погружение в мир rogue-like подземелий с использованием Web3-технологий. Игроки могут исследовать случайно генерируемые подземелья, получать редкие NFT и торговать ими. Этот проект показывает, как игровые элементы и блокчейн могут сочетаться для создания увлекательного опыта с экономическим потенциалом.

    CryptoQuant о «умных» регуляциях для криптовалют

    Генеральный директор CryptoQuant высказался о необходимости «умных» регуляций, которые могли бы обеспечить баланс между защитой инвесторов и инновациями в Web3. Однако сообщество высказывает опасения по поводу того, что слишком жёсткие правила могут замедлить рост отрасли и сдерживать её потенциал.

    Heroes of Mavia: будущий хит Web3-игр?

    Heroes of Mavia представляет собой многопользовательскую онлайн-стратегию, которая обещает стать следующей успешной игрой на базе Web3. В этой игре пользователи могут владеть игровыми активами в виде NFT и зарабатывать на них, что выводит традиционный игровой опыт на новый уровень, делая его более интерактивным и прибыльным.

    ООН угрожает Web3-геймингу: как технологии могут быть под ударом?

    Игровая индустрия Web3 может столкнуться с новыми угрозами, связанными с регулированием со стороны ООН. Некоторые эксперты предупреждают, что вмешательство ООН может замедлить развитие сектора, в то время как другие видят необходимость в регулировании, чтобы обеспечить безопасность и устойчивость Web3-игр в глобальной экономике.

    ICP Hub запускает акселератор для Web3-стартапов

    ICP Hub Болгарии запустил Formation3, акселератор для стартапов в сфере Web3. Программа направлена на поддержку молодых компаний, работающих с децентрализованными технологиями, предоставляя им доступ к ресурсам и инвестициям, которые помогут ускорить их рост и выход на международный рынок.

    TOKEN2049: крупнейшее крипто-событие в мире собрало 20 000 участников

    На TOKEN2049, крупнейшем мировом мероприятии, посвящённом криптовалютам, присутствовало более 20 000 участников и организовано 800 сторонних событий. Мероприятие продемонстрировало возрастающий интерес к криптовалютам, блокчейну и Web3, а также стало площадкой для обсуждения важнейших тенденций и инноваций в отрасли.

    Astra Nova и Hawk Gaming создают глобальные альянсы для развития Web3

    Astra Nova объявила о сотрудничестве с Hawk Gaming Group и заручилась поддержкой Саудовской Аравии. Эти альянсы нацелены на создание новых инноваций в области Web3-игр, что укрепляет позиции обеих компаний на мировом рынке и открывает двери для глобальных партнёрств.

    Lamborghini и Animoca Brands создают Motorverse

    Lamborghini объединяется с Animoca Brands для создания проекта Motorverse, который позволит поклонникам автоспорта взаимодействовать с брендом в метавселенной Web3. Проект включает создание эксклюзивных цифровых активов и игровых возможностей, что укрепляет позиции автопроизводителя в цифровом пространстве.

    Aptos Labs покупает Hashpalette для расширения на японском рынке

    Aptos Labs завершила приобретение Hashpalette, расширяя своё присутствие в Японии и укрепляя свои позиции в одном из крупнейших рынков Web3. Этот шаг открывает возможности для коллабораций с японскими компаниями и дальнейшего роста в азиатском регионе.

    Meta демонстрирует Hyperscape — мост к метавселенной Web3

    Meta представила демонстрацию Hyperscape — новой платформы для погружения пользователей в Web3-метавселенную. Этот проект нацелен на интеграцию цифрового взаимодействия и блокчейн-технологий, создавая пространство для игр, работы и социальных взаимодействий.

    Monero и Ripple объединяются в деле XRP и XEC

    Monero и Ripple объединили свои усилия в деле против регуляторов в контексте расследования по XRP и XEC. Эти два крупных проекта работают над защитой своих интересов и доказывают, что децентрализованные технологии могут противостоять государственным ограничениям и регулированиям.

    Transak получила лицензию платёжного оператора в Алабаме

    Компания Transak, занимающаяся интеграцией фиатных валют и криптовалют, получила лицензию платёжного оператора (MTL) в штате Алабама, что укрепляет её позиции на рынке США. Это открывает новые возможности для пользователей, которые могут легко конвертировать свои криптоактивы в традиционные валюты.

    Web3-гейминг: право на владение игровыми активами и их совместимость

    Важным вопросом для Web3-гейминга остаётся право на владение игровыми активами и их совместимость между различными платформами. Новые проекты создают системы, где игроки могут перемещать свои NFT и токены между играми, создавая настоящую экономику внутри цифровых миров.

    Запуск Axelar Interoperability Stack: шаг вперёд в Web3

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

    Виртуальные машины с нулевым знанием: ключ к росту Ethereum

    HashKey Capital подчёркивает важность виртуальных машин с нулевым знанием (zkVM) для дальнейшего роста Ethereum. Эти технологии позволят значительно улучшить производительность сети и масштабируемость, обеспечивая конфиденциальность данных без потери эффективности.

    DMCC и CVVC стимулируют инновации Web3

    DMCC (Дубайский центр товарной торговли) и CVVC (Crypto Valley Venture Capital) объединили усилия для продвижения инноваций в сфере Web3. Партнёрство направлено на развитие стартапов в области децентрализованных технологий, предоставляя им доступ к инвестициям, ресурсам и международным рынкам.

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

  • Еженедельный дайджест новостей в сфере ИИ (29 сентября — 6 октября)

    Еженедельный дайджест новостей в сфере ИИ (29 сентября — 6 октября)

    На этой неделе мир ИИ и блокчейна не перестаёт удивлять новыми событиями, которые охватывают самые разные сферы — от медицины и науки до глобальной экономики и безопасности. Эти технологии оказывают огромное влияние на многие отрасли, вызывая как энтузиазм, так и опасения. Мы собрали для вас ключевые новости, которые помогут оставаться в курсе всех последних изменений.


    Применение ИИ в науке и здравоохранении

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

    Эстония демонстрирует возможности децентрализованных ИИ-сетей

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

    Губернатор Калифорнии отклонил законопроект о регулировании ИИ

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

    Nvidia: ИИ поможет бороться с «тёмным ИИ»

    Генеральный директор Nvidia заявил, что ИИ будет использоваться для противодействия киберпреступлениям и злоумышленникам, использующим ИИ. Новые разработки помогут защитить цифровые системы от атак и обеспечить кибербезопасность на высоком уровне.

    Цена биткойна падает на фоне опасений по поводу рецессии и «пузыря» ИИ

    Цена биткойна снизилась из-за опасений инвесторов по поводу возможной глобальной рецессии и перегрева рынка ИИ. Страхи по поводу потенциального «пузыря» в сфере ИИ продолжают давить на рынки криптовалют.

    Hive Digital меняет фокус с криптомайнинга на центры данных для ИИ

    Компания Hive Digital решила переориентировать свою деятельность с майнинга криптовалют на развитие мощных центров обработки данных для ИИ. Это решение связано с растущим спросом на вычислительные мощности для поддержки ИИ-приложений.

    Solidus AI Tech готовится к запуску AI Marketplace

    9 октября состоится официальный запуск AI Marketplace от Solidus AI Tech. Платформа будет предоставлять компании доступ к необходимым мощностям и решениям для разработки и внедрения ИИ-технологий, облегчая их интеграцию в бизнес.

    Малайзия усиливает регулирование ИИ и облачных технологий

    Правительство Малайзии разрабатывает новые меры по регулированию ИИ и облачных технологий. Эти меры направлены на обеспечение безопасности данных и поддержку инноваций в быстро развивающейся отрасли ИИ.

    Европа разрабатывает кодекс практики для генеративного ИИ

    Европейские эксперты собрались для разработки кодекса практики, касающегося генеративного ИИ. Этот кодекс позволит регулировать вопросы, связанные с созданием контента на базе ИИ, и обеспечить безопасность и конфиденциальность данных.

    Itheum предлагает новые решения для управления данными в эпоху ИИ

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

    Хакеры используют генеративный ИИ для создания вредоносного кода

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

    В Африке стартовала программа PhD для женщин в сфере ИИ

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

    Meta демонстрирует ИИ-модель для создания фотореалистичных фильмов

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

    Нигерия запускает инициативу по развитию ИИ на $1,5 млн

    Нигерия объявила о запуске программы по развитию ИИ на сумму $1,5 млн. Эта инициатива направлена на создание рабочих мест и поддержку инноваций в области искусственного интеллекта, что поможет развить технологический сектор в стране.

    Apple и Google доминируют в индустрии ИИ — мнение Кэти Вуд

    Кэти Вуд, основатель Ark Invest, заявила, что Apple и Google занимают лидирующие позиции в индустрии ИИ благодаря огромным базам данных и разработкам. Однако она также отмечает, что этот доминирующий статус вызывает опасения по поводу концентрации власти в руках нескольких компаний.

    OpenAI выпустила обновления для улучшения голосовых и визуальных возможностей ИИ

    OpenAI продолжает развивать свои модели, улучшив их голосовые и визуальные способности. Эти улучшения позволят сделать ИИ более интуитивным и удобным для использования в различных сферах, от бизнеса до образования.

    ИИ-чат-боты пытаются раскрыть личность Сатоши Накамото перед выходом фильма HBO

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

    Генеративные ИИ-чат-боты ухудшаются со временем — академическое исследование

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

    Конгресс США призван сосредоточиться на децентрализованном ИИ

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

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

  • Крипто кошельки и управление ключами

    Крипто кошельки и управление ключами

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


    Что такое крипто кошелек?

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

    Основные функции криптовалютного кошелька

    • Хранение приватных ключей: Кошелек безопасно хранит приватные ключи, которые используются для подписания транзакций.
    • Отправка и получение криптовалют: Пользователи могут отправлять и получать криптовалюту через адреса, созданные с использованием публичных ключей.
    • Взаимодействие с блокчейном: Кошелек позволяет подписывать транзакции и взаимодействовать с блокчейном без посредников.

    Типы криптовалютных кошельков

    1. Горячие кошельки (Hot Wallets): Программные кошельки, постоянно подключенные к интернету. Они удобны для ежедневного использования, но более уязвимы для взломов. Примеры: MetaMask, Trust Wallet.
    2. Холодные кошельки (Cold Wallets): Офлайн-кошельки, предназначенные для долгосрочного хранения средств. Это аппаратные устройства или бумажные кошельки, которые не подключены к интернету, что делает их более безопасными для хранения крупных сумм. Примеры: Ledger, Trezor, бумажные кошельки.
    3. Аппаратные кошельки (Hardware Wallets): Устройства, которые обеспечивают безопасное хранение приватных ключей. Они подключаются к компьютеру или смартфону только во время подписания транзакций, что защищает их от сетевых атак. Примеры: Ledger Nano S, Trezor One.
    4. Мобильные и веб-кошельки: Кошельки, работающие через мобильные приложения или веб-браузеры, предоставляют доступ к криптовалюте с любого устройства. Примеры: MetaMask (веб- и мобильная версия), Trust Wallet (мобильный кошелек).

    Приватные и публичные ключи

    Ключевая крипто технология, лежащая в основе криптовалютных кошельков, — это асимметричная криптография, которая использует пару ключей: приватный и публичный.

    Приватный ключ

    Приватный ключ — это уникальная секретная строка символов, которая должна храниться в безопасности. Он используется для подписания транзакций и подтверждает, что пользователь является владельцем средств. Если приватный ключ утерян, восстановить доступ к средствам невозможно.

    Генерация приватных ключей

    Приватные ключи генерируются с помощью криптографических алгоритмов, которые создают случайные последовательности символов. Алгоритмы генерации обеспечивают уникальность каждого приватного ключа. Для большинства криптовалют (например, Bitcoin, Ethereum) приватные ключи генерируются с использованием криптографических алгоритмов, таких как Elliptic Curve Digital Signature Algorithm (ECDSA).

    Пример приватного ключа:

    e9873d79c6d87dc0fb6a5778633389f4453213303da61f29bb7b7021959a5db3

    Публичный ключ

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

    Пример публичного ключа:

    0450863ad64a87ae8a2fe83c1af1a8403cb554b637075a947d7b1880b4d5c437bc64efc18379bce8c16b904682117e21a1181a29cf110e0a37764b10a56239a55b

    Связь между приватным и публичным ключом

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


    Механизм работы криптовалютного кошелька

    Когда пользователь хочет отправить криптовалюту, он создает транзакцию, которая подписывается его приватным ключом. Подпись подтверждает, что пользователь является владельцем средств и имеет право их отправить. Затем транзакция отправляется в блокчейн для подтверждения.

    Типы адресов: SegWit и Bech32

    Криптовалютные кошельки могут поддерживать разные типы адресов. Например:

    1. Legacy-адреса (P2PKH): Классический формат адресов, начинающихся с «1» (например, в Bitcoin).
    2. SegWit (P2SH): Адреса, оптимизированные для повышения пропускной способности сети и снижения комиссий, начинаются с «3».
    3. Bech32 (Native SegWit): Адреса, поддерживающие ещё более низкие комиссии, начинаются с «bc1».

    Использование современных типов адресов, таких как Bech32, позволяет снижать комиссии за транзакции.


    Безопасное управление ключами

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

    Создание резервных копий

    1. Мнемоническая фраза (seed-фраза): Это последовательность из 12 или 24 слов, которая кодирует приватный ключ. Она используется для восстановления доступа к кошельку в случае утери устройства.
    2. Зашифрованные резервные копии: Резервная копия приватного ключа может быть зашифрована и храниться в безопасном месте (например, на внешнем носителе или в холодном хранилище).

    Использование холодного хранения

    • Аппаратные кошельки: Наиболее безопасный способ хранения приватных ключей. Аппаратные кошельки, такие как Ledger или Trezor, хранят ключи офлайн и требуют физического подтверждения для подписания транзакций.
    • Бумажные кошельки: Приватный ключ и соответствующий адрес печатаются на бумаге и хранятся в защищённом месте.

    Двухфакторная аутентификация (2FA)

    Использование двухфакторной аутентификации добавляет дополнительный уровень защиты. Для доступа к кошельку или подтверждения транзакции необходимо ввести одноразовый код, сгенерированный на внешнем устройстве (например, через приложение Google Authenticator).


    Мультиподписи (Multisig)

    Мультиподписи позволяют повысить безопасность кошелька, требуя нескольких подписей для выполнения транзакции. Например, для выполнения транзакции необходимо получить одобрение двух или более сторон (например, при управлении корпоративными активами).

    Примеры использования мультиподписей:

    1. Корпоративные кошельки: Несколько участников (например, финансовый директор и генеральный директор) должны подписать транзакцию, чтобы она была выполнена.
    2. Семейные кошельки: Мультиподписи могут использоваться для семейных фондов, где несколько членов семьи должны подтвердить транзакцию.

    Самые известные криптовалютные кошельки

    MetaMask

    MetaMask — это популярный веб-кошелек, который интегрируется с браузером и используется для взаимодействия с децентрализованными приложениями (DApps) на платформе Ethereum. Он позволяет пользователям управлять своими приватными ключами и подписывать транзакции.

    Ledger Nano S

    Ledger Nano S — это аппаратный кошелек, который обеспечивает безопасное хранение приватных ключей в защищённом чипе. Устройство подключается к компьютеру только для подписания транзакций, что минимизирует риск онлайн-атак.

    Trust Wallet

    Trust Wallet — это мобильный кошелек, который поддерживает широкий спектр криптовалют и позволяет пользователям участвовать в децентрализованных финансовых операциях (DeFi) напрямую со смартфона.


    Примеры атак и риски

    1. Фишинговые атаки: Злоумышленники могут создавать поддельные сайты или приложения, похожие на оригинальные кошельки (например, MetaMask), чтобы получить доступ к вашим приватным ключам.
    2. Уязвимость слабых ключей: Случаи, когда ключи были сгенерированы неслучайным образом или использовались слабые алгоритмы, что привело к их компрометации.

    Способы защиты:

    • Всегда проверяйте URL-адрес сайта или приложения.
    • Используйте только надёжные и хорошо зарекомендовавшие себя кошельки.
    • Регулярно обновляйте программное обеспечение кошелька.

    Пример использования криптокошелька для авторизации на сайте в Web3

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

    Шаг 1: Авторизация через криптокошелек

    Представьте, что вы хотите авторизоваться на децентрализованной платформе, которая поддерживает вход через криптокошелек, например, MetaMask. Вместо традиционного метода ввода логина и пароля, сайт предлагает вам опцию авторизации с использованием вашего кошелька.

    1. Появляется запрос на подключение кошелька: При попытке авторизации сайт отправляет запрос на подключение к вашему криптокошельку. Например, если вы используете MetaMask, браузерный кошелек открывается автоматически и предлагает вам подключиться.
    2. Подтверждение подключения: В кошельке отображается уведомление с запросом на авторизацию, в котором указано, что платформа запрашивает доступ к вашему публичному адресу (адресу кошелька). Вы подтверждаете запрос, и сайт получает ваш публичный ключ, который используется для идентификации вас как пользователя.
    3. Цифровая подпись для аутентификации: После получения публичного ключа платформа может запросить, чтобы вы подписали цифровую подпись, подтверждающую, что вы являетесь владельцем кошелька. Для этого кошелек автоматически создаёт хеш данных (например, случайное число или сообщение) и подписывает его с использованием приватного ключа. Приватный ключ не передается платформе — только результат подписи. Платформа проверяет подпись с использованием вашего публичного ключа.

    Шаг 2: Получение данных пользователя из блокчейна

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

    1. Загрузка данных профиля с помощью смарт-контрактов: Ваша учетная запись или профиль может храниться в децентрализованном виде на блокчейне. Сайт с помощью смарт-контрактов и публичного ключа может запросить данные, связанные с вашим криптоадресом. Например, это могут быть:
    2. Интеграция с децентрализованными приложениями (DApps): Авторизация через криптокошелек также может автоматически подключать вас к децентрализованным приложениям, в которых хранятся данные, такие как участие в DAO (децентрализованных автономных организациях) или результаты голосования. Все эти данные связаны с вашим криптоадресом, и платформа получает доступ к ним через смарт-контракты.
    3. Синхронизация цифровых активов: Если вы владеете какими-либо NFT или цифровыми активами, платформа может отобразить их в вашем профиле. Например, если это децентрализованная платформа для торговли NFT, после авторизации ваш инвентарь (NFT) будет загружен и показан на сайте.

    Шаг 3: Использование данных для взаимодействия с платформой

    Теперь, когда вы авторизованы, и платформа получила доступ к вашему криптокошельку, вы можете использовать свои данные для различных операций без необходимости создания аккаунта или передачи личных данных. Пример:

    1. Покупка цифровых активов: Вы можете совершать покупки, например, торговать NFT, не вводя банковские данные или номера карт — все платежи проходят через ваш криптокошелек.
    2. Участие в голосованиях: Если это платформа DAO, вы можете использовать свои токены для голосования за предложения, при этом данные о вашем голосе сохраняются в блокчейне и становятся частью децентрализованного управления.
    3. Индивидуализированный контент: Платформа может показывать персонализированный контент на основе данных из блокчейна, таких как ваши токены или взаимодействие с другими децентрализованными приложениями.

    Пример платформы с авторизацией через криптокошелек

    Decentraland — это виртуальная платформа, где пользователи могут покупать и владеть виртуальной недвижимостью (в виде NFT). Авторизация через криптокошелек (например, MetaMask) позволяет пользователям автоматически загружать свои владения, аватары и другие данные, хранящиеся на блокчейне. После входа через кошелек вы можете посещать свои участки земли и взаимодействовать с ними, при этом всё ваше имущество привязано к вашему криптоадресу.


    Преимущества авторизации через криптокошелек:

    1. Приватность: Вам не нужно передавать личные данные, такие как email, пароль или телефон, а доступ к платформе осуществляется с помощью публичного ключа и цифровой подписи.
    2. Безопасность: Приватные ключи никогда не покидают ваш кошелек. Даже если платформа будет скомпрометирована, ваши данные останутся защищёнными.
    3. Децентрализация: Ваши данные и активы принадлежат только вам, и вы управляете ими через смарт-контракты и блокчейн. Никто другой не контролирует ваш доступ к средствам и информации.
    4. Интеграция с Web3: Авторизация через криптокошелек — это не просто доступ к платформе, но и возможность интеграции с другими децентрализованными приложениями, обеспечивая единый доступ ко всем вашим активам и данным.

    Авторизация через криптокошелек в Web3 демонстрирует новую парадигму управления личными данными и активами, где контроль полностью находится в руках пользователей, а платформы взаимодействуют с ними напрямую через блокчейн и децентрализованные технологии.


    Заключение

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

  • Виды машинного обучения (Machine Learning)

    Виды машинного обучения (Machine Learning)

    Машинное обучение (ML) — это область искусственного интеллекта, которая занимается разработкой алгоритмов для создания моделей, способных обучаться на данных и делать прогнозы без явного программирования. Существуют три основных вида машинного обучения, которые различаются по характеру данных и типу задач: обучение с учителем, обучение без учителя и обучение с подкреплением. В этом материале мы подробно рассмотрим каждый из этих видов, включая их особенности, примеры, алгоритмы и области применения.


    1. Обучение с учителем (Supervised Learning)

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

    • Входные данные: Набор пар «вход — выход», где входные данные представляют собой признаки, а выходные — это метки классов (в классификации) или числовые значения (в регрессии).
    • Цель: Обучить модель предсказывать метку или значение для новых примеров.

    Типы задач

    1. Классификация: Когда результатом работы модели является предсказание класса для каждого примера. (Пример: Классификация изображений, где модель предсказывает, что на изображении (например, «кошка» или «собака»).)
    2. Регрессия: Когда модель предсказывает непрерывное числовое значение. (Пример: Прогнозирование цен на недвижимость на основе характеристик объектов.)

    Алгоритмы обучения с учителем

    Некоторые популярные алгоритмы:

    • Линейная регрессия: Алгоритм регрессии, который строит линейную зависимость между входными данными и результатом. Например, для прогнозирования цен на основе квадратных метров.
    • Логистическая регрессия: Алгоритм классификации, который оценивает вероятность того, что объект принадлежит к одному из двух классов.
    • Дерево решений: Алгоритм, который строит древовидную структуру для принятия решений, разделяя данные на основе их признаков.
    • Метод опорных векторов (SVM): Алгоритм классификации, который строит гиперплоскость для разделения данных на классы с максимальной границей между ними.
    • Нейронные сети: Многослойные структуры, которые обучаются на больших объемах данных и могут решать как задачи классификации, так и регрессии.

    Пример задачи с учителем

    Рассмотрим пример задачи классификации с использованием логистической регрессии:

    from sklearn.model_selection import train_test_split
    from sklearn.datasets import load_digits
    from sklearn.linear_model import LogisticRegression
    from sklearn.metrics import accuracy_score
    
    # Загрузка данных (цифры)
    digits = load_digits()
    X = digits.data
    y = digits.target
    
    # Разделение данных на обучающую и тестовую выборки
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
    
    # Создание и обучение модели логистической регрессии
    model = LogisticRegression(max_iter=10000)
    model.fit(X_train, y_train)
    
    # Оценка точности на тестовой выборке
    y_pred = model.predict(X_test)
    print(f"Точность модели: {accuracy_score(y_test, y_pred):.4f}")

    Преимущества и ограничения обучения с учителем

    Преимущества:

    • Высокая точность, если имеется достаточное количество размеченных данных.
    • Хорошо подходит для предсказательных задач, таких как классификация и регрессия.

    Ограничения:

    • Требует большого количества размеченных данных, что может быть дорого и трудоемко.
    • Плохая переносимость на задачи с изменяющимися условиями (например, если данные со временем меняются).

    2. Обучение без учителя (Unsupervised Learning)

    Обучение без учителя — это метод машинного обучения, при котором модель обучается на данных без меток классов. Цель состоит в том, чтобы выявить скрытые закономерности или структуру в данных. Модель анализирует входные данные и пытается найти зависимости и паттерны без какой-либо дополнительной информации о правильных ответах.

    • Входные данные: Только входные данные (без меток классов).
    • Цель: Найти структуру или группировки в данных.

    Типы задач

    1. Кластеризация: Задача разбиения данных на группы (кластеры), где объекты в одном кластере схожи по характеристикам. (Пример: Разделение клиентов интернет-магазина на группы на основе их покупательского поведения.)
    2. Снижение размерности: Уменьшение числа признаков для более эффективного анализа данных. (Пример: PCA (анализ главных компонент) для визуализации многомерных данных в 2D или 3D пространстве.)

    Алгоритмы обучения без учителя

    • K-means: Алгоритм кластеризации, который разбивает данные на K кластеров на основе близости объектов друг к другу.
    • DBSCAN: Алгоритм плотностной кластеризации, который находит кластеры произвольной формы на основе плотности данных.
    • PCA (анализ главных компонент): Метод уменьшения размерности данных, который проецирует их в новое пространство с меньшим числом признаков.

    Пример задачи без учителя

    Пример с кластеризацией методом K-средних:

    from sklearn.cluster import KMeans
    import matplotlib.pyplot as plt
    from sklearn.datasets import load_digits
    
    # Загрузка данных
    X, _ = load_digits(return_X_y=True)
    
    # Кластеризация методом KMeans
    kmeans = KMeans(n_clusters=10, random_state=42)
    clusters = kmeans.fit_predict(X)
    
    # Визуализация данных
    plt.scatter(X[:, 0], X[:, 1], c=clusters, cmap='viridis')
    plt.title('Кластеризация методом KMeans')
    plt.show()

    Преимущества и ограничения обучения без учителя

    Преимущества:

    • Не требует размеченных данных, что делает его более гибким для работы с необработанными данными.
    • Помогает находить скрытые закономерности и структуры, которые могут быть неочевидны.

    Ограничения:

    • Интерпретация результатов может быть сложной, так как модель не предоставляет явных меток.
    • Трудно оценить качество обучения, поскольку нет правильных ответов.

    3. Обучение с подкреплением (Reinforcement Learning)

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

    • Агент: Система, которая принимает решения.
    • Среда: Окружающая среда, с которой взаимодействует агент.
    • Награда: Обратная связь, которую получает агент за свои действия.
    • Цель: Максимизировать накопленную награду за долгосрочный период.

    Процесс обучения с подкреплением

    1. Агент выполняет действие в среде.
    2. Среда меняет своё состояние и отправляет агенту награду (или штраф).
    3. Агент корректирует свою стратегию на основе полученной награды, чтобы улучшить свои действия в будущем.

    Пример использования обучения с подкреплением

    Алгоритмы обучения с подкреплением применяются в робототехнике, управлении ресурсами, стратегических играх (например, AlphaGo) и других задачах, где агент должен принимать последовательные решения в изменяющейся среде.

    Алгоритмы обучения с подкреплением

    • Q-Learning: Агент строит таблицу QQ-значений, где каждая ячейка соответствует состоянию и действию. Агент выбирает действия, максимизирующие ожидаемую награду.
    • Deep Q-Networks (DQN): Усовершенствованный метод Q-Learning с использованием нейронных сетей для аппроксимации функции ценности.

    Пример Q-Learning:

    import numpy as np
    import gym
    
    # Создание среды
    env = gym.make('FrozenLake-v1')
    
    # Параметры Q-learning
    alpha = 0.1  # скорость обучения
    gamma = 0.99  # фактор дисконтирования
    epsilon = 0.1  # вероятность выбора случайного действия
    q_table = np.zeros([env.observation_space.n, env.action_space.n])
    
    # Обучение
    for episode in range(1000):
        state = env.reset()
        done = False
        while not done:
            if np.random.uniform(0, 1) < epsilon:
                action = env.action_space.sample()  # случайное действие
            else:
                action = np.argmax(q_table[state])  # действие, максимизирующее награду
            
            next_state, reward, done, _ = env.step(action)
            q_table[state, action] = q_table[state, action] + alpha * (reward + gamma * np.max(q_table[next_state]) - q_table[state, action])
            state = next_state
    
    # Оценка обученной стратегии
    print(f"Q-таблица:\n{q_table}")

    Преимущества и ограничения обучения с подкреплением

    Преимущества:

    • Подходит для задач, где нужно принимать последовательные решения в условиях неопределенности.
    • Используется в играх, робототехнике и управлении системами.

    Ограничения:

    • Требует значительных вычислительных ресурсов и времени для обучения.
    • Нестабильность и сложность настройки параметров (например, награды и штрафы).

    Сравнение видов машинного обучения


    Заключение

    Машинное обучение делится на три основные категории: обучение с учителем, обучение без учителя и обучение с подкреплением. Каждый тип имеет свои особенности и применяется в зависимости от типа задачи и доступных данных. Понимание этих методов помогает выбирать подходящие модели для различных проблем и добиваться лучших результатов.


    Рекомендации для самостоятельного изучения:

    • Книга «Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow» от Aurélien Géron.
    • Онлайн-курсы по машинному обучению на Coursera и edX.
    • Лекции по машинному обучению от MIT OpenCourseWare.
  • Основы криптографии: хеширование и цифровые подписи

    Основы криптографии: хеширование и цифровые подписи

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


    Что такое криптография?

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

    • Конфиденциальности: Обеспечение доступа к информации только авторизованным пользователям.
    • Целостности данных: Гарантия того, что данные не были изменены после их отправки.
    • Аутентификации: Подтверждение подлинности отправителя данных.
    • Неотказуемости: Доказательство того, что отправитель не может отрицать, что он подписал транзакцию.

    Хеширование

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

    Как работает хеширование?

    Хеш-функция принимает данные любого размера и возвращает строку фиксированной длины, называемую хешем. Хеш является уникальным «отпечатком» исходных данных, и даже минимальные изменения в исходных данных приводят к изменению хеша.

    Пример хеш-функции: SHA-256

    SHA-256 — это популярная криптографическая хеш-функция, которая преобразует данные в 256-битный хеш. Она используется в блокчейнах Bitcoin и Ethereum.

    Пример хеширования текста «Hello, world!»:

    SHA-256("Hello, world!") = a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b1f6f84b414efbd67

    Свойства хеш-функций

    1. Детерминированность: Один и тот же ввод всегда приводит к одинаковому хешу.
    2. Необратимость: Невозможно восстановить исходные данные по хешу.
    3. Уникальность: Разные данные практически всегда дают разные хеши (коллизия маловероятна).
    4. Быстрота: Хеш-функции должны быть быстрыми для расчёта.

    Уязвимости хеш-функций

    Хотя хеш-функции крайне устойчивы, они не полностью защищены от атак. Например:

    • Атака дня рождения: Злоумышленник пытается найти два разных набора данных, которые дают одинаковый хеш (коллизию). Однако, современные хеш-функции, такие как SHA-256, делают вероятность таких атак крайне низкой.

    Хеширование в блокчейне

    Хеширование используется для:

    • Создания идентификаторов транзакций и блоков. Хеш каждого блока содержит хеш предыдущего блока, что связывает их в цепочку.
    • Проверки целостности данных. Изменение данных в блоке изменит его хеш, что приведёт к нарушению всей цепочки блоков.

    Асимметричная криптография и цифровые подписи

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

    Принцип работы асимметричной криптографии

    • Приватный ключ: Известен только владельцу и используется для создания цифровой подписи.
    • Публичный ключ: Открыт для всех и используется для проверки подлинности цифровой подписи.

    Пример:

    1. Пользователь создаёт транзакцию и подписывает её приватным ключом.
    2. Другие участники сети проверяют подпись с помощью публичного ключа.
    3. Если проверка успешна, это означает, что транзакция подлинная и данные не были изменены.

    Преимущества цифровых подписей

    1. Аутентификация: Подтверждение того, что транзакция была инициирована владельцем приватного ключа.
    2. Целостность: Любое изменение данных делает подпись недействительной.
    3. Неотказуемость: Владелец ключа не может отрицать факт подписания транзакции.

    Мультиподписи (Multisig)

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

    Применение мультиподписей:

    1. Корпоративные кошельки: В корпорациях могут использоваться мультиподписи для обеспечения того, чтобы транзакции могли быть проведены только после одобрения нескольких участников (например, директоров или финансовых менеджеров).
    2. Семейные или совместные кошельки: В личных целях мультиподпись может использоваться для защиты семейных активов, где, например, необходимо согласие обоих супругов для проведения транзакции.

    Примеры использования хеширования и цифровых подписей

    Пример 1: Bitcoin

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

    Пример 2: Ethereum

    В Ethereum цифровые подписи используются для подписания каждой транзакции, а смарт-контракты зависят от хеширования для проверки данных.


    Заключение

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

  • Теория информации в искусственном интеллекте

    Теория информации в искусственном интеллекте

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


    1. Энтропия и информация

    1.1 Что такое энтропия?

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

    • Формула энтропии для случайной величины X, принимающей значения X1,X2,…,Xn с вероятностями p(X1),p(X2),…,p(Xn):

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

    Пример:

    Представим, что у нас есть две монеты:

    • Честная монета: Вероятности выпадения «орла» и «решки» равны 0.5. Энтропия высока, так как результат неопределён.
    • Подстроенная монета: Всегда выпадает «орёл» (вероятность 1). Энтропия будет равна 0, так как исход заранее известен.
    import numpy as np
    
    # Функция для вычисления энтропии
    def entropy(probabilities):
        return -np.sum([p * np.log2(p) for p in probabilities if p > 0])
    
    # Пример с честной монетой
    p_fair = [0.5, 0.5]
    print(f"Энтропия честной монеты: {entropy(p_fair):.4f}")
    
    # Пример с подстроенной монетой (всегда орел)
    p_biased = [1.0, 0.0]
    print(f"Энтропия подстроенной монеты: {entropy(p_biased):.4f}")

    1.2 Информация и неопределенность

    Информация — это мера, которая показывает, насколько сильно уменьшается неопределенность. Чем более редкое событие, тем больше информации оно несет, если происходит. В AI это связано с предсказанием событий и оценкой вероятностей.


    2. Перекрестная энтропия

    2.1 Определение

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

    • Формула перекрестной энтропии:

    где p(Xi) — истинные вероятности (истинные классы), а q(Xi) — предсказанные моделью вероятности.

    2.2 Пример в задачах классификации

    Для задач классификации, особенно бинарной, перекрестная энтропия измеряет качество предсказаний вероятности принадлежности к классу 1. Чем ближе предсказанные вероятности к истинным значениям, тем ниже перекрестная энтропия.

    Пример:

    from sklearn.metrics import log_loss
    
    # Истинные классы
    y_true = [1, 0, 1, 1]
    
    # Предсказанные вероятности классов
    y_pred = [0.9, 0.1, 0.8, 0.7]
    
    # Вычисление перекрестной энтропии
    loss = log_loss(y_true, y_pred)
    print(f"Перекрестная энтропия: {loss:.4f}")

    3. Взаимная информация

    3.1 Определение

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

    • Формула взаимной информации:

    где p(x,y) — совместное распределение X и Y, а p(x) и p(y) — их маргинальные распределения.

    3.2 Пример взаимной информации

    Взаимная информация помогает определить, насколько информация о признаке X полезна для предсказания переменной Y. Это важно при отборе признаков в моделях машинного обучения.

    from sklearn.feature_selection import mutual_info_classif
    from sklearn.datasets import make_classification
    
    # Создание набора данных
    X, y = make_classification(n_samples=1000, n_features=10, random_state=42)
    
    # Вычисление взаимной информации
    mi = mutual_info_classif(X, y)
    
    # Вывод значимости признаков
    print("Значимость признаков (взаимная информация):", mi)

    3.3 Применение взаимной информации в отборе признаков

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


    4. Теорема Байеса и теория информации

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

    Формула теоремы Байеса:

    • Пример: Если модель прогнозирует вероятность покупки товара на основе информации о действиях пользователя, теорема Байеса может обновлять эту вероятность по мере получения новой информации.

    5. Применение теории информации в AI

    5.1 Принятие решений в условиях неопределенности

    Теория информации помогает моделям AI принимать решения в условиях неопределенности, минимизируя количество информации, необходимой для точного предсказания. Это используется, например, в робототехнике и задачах стратегического планирования.

    5.2 Уменьшение размерности данных

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

    5.3 Регуляризация моделей

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


    6. Информационные меры и нейронные сети

    6.1 Перекрестная энтропия как функция потерь

    В нейронных сетях для задач классификации перекрестная энтропия широко используется как функция потерь. Она помогает модели правильно оценивать вероятности и настраивать параметры для минимизации ошибок.

    Пример использования перекрестной энтропии в нейронной сети на Python:

    import tensorflow as tf
    
    # Создаем простую нейронную сеть для классификации
    model = tf.keras.Sequential([
        tf.keras.layers.Dense(units=10, activation='relu'),
        tf.keras.layers.Dense(units=3, activation='softmax')  # 3 класса
    ])
    
    # Компиляция модели с функцией потерь "categorical_crossentropy"
    model.compile(optimizer='adam', loss='categorical_crossentropy')
    
    # Печать структуры модели
    model.summary()

    7. Визуализация энтропии и перекрестной энтропии

    7.1 Визуализация энтропии

    Построение графика энтропии поможет лучше понять, как изменяется энтропия в зависимости от вероятностей.

    import matplotlib.pyplot as plt
    
    p_values = np.linspace(0.01, 0.99, 100)
    entropies = [-p * np.log2(p) - (1 - p) * np.log2(1 - p) for p in p_values]
    
    plt.plot(p_values, entropies)
    plt.title('Зависимость энтропии от вероятности события')
    plt.xlabel('Вероятность события')
    plt.ylabel('Энтропия')
    plt.show()

    7.2 Визуализация перекрестной энтропии

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


    Заключение

    Теория информации — это мощный инструмент в арсенале искусственного интеллекта. Она помогает моделям лучше работать с неопределенностью, оптимизировать их эффективность и принимать более точные решения. Понимание таких концепций, как энтропия, перекрестная энтропия, взаимная информация и теорема Байеса, является основой для эффективной разработки и применения AI-моделей.


    Рекомендации для самостоятельного изучения:

    • Клод Шеннон, «Математическая теория связи».
    • Онлайн-курсы по теории информации на Coursera и edX.
    • Лекции по теории информации от MIT OpenCourseWare.
  • Базовые алгоритмы сортировки (PHP)

    Базовые алгоритмы сортировки (PHP)

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


    Алгоритмы сортировки

    Сортировка пузырьком

    Описание:  Сортировка пузырьком — один из простейших алгоритмов сортировки. Он многократно проходит по массиву, сравнивая соседние элементы и меняя их местами, если они находятся в неправильном порядке. Этот процесс повторяется до тех пор, пока массив не будет отсортирован.

    Алгоритм:

    1. Пройтись по массиву от первого до последнего элемента.
    2. Сравните каждый элемент с соседним элементом.
    3. Если текущий элемент больше следующего, поменяйте их местами.
    4. Повторяйте процесс, пока массив не будет отсортирован.

    Реализация на PHP:

    function bubbleSort($arr) {
    $n = count($arr);
    for ($i = 0; $i < $n; $i++) {
    for ($j = 0; $j < $n - $i - 1; $j++) {
    if ($arr[$j] > $arr[$j + 1]) {
    // Swap elements
    $temp = $arr[$j];
    $arr[$j] = $arr[$j + 1];
    $arr[$j + 1] = $temp;
    }
    }
    }
    return $arr;
    }

    // Example function call
    $arr = [64, 34, 25, 12, 22, 11, 90];
    $sortedArr = bubbleSort($arr);

    echo "Sorted array: ";
    print_r($sortedArr);

    Сложность:

    • Худший случай: O(n²) — возникает, когда массив сортируется в обратном порядке.
    • Лучший случай: O(n) — если массив уже отсортирован, пузырьковая сортировка может выполнить минимальное количество операций.

    Сортировка по выбору

    Описание:  Сортировка выбором находит наименьший элемент в массиве и меняет его местами с первым элементом. Затем алгоритм повторяет этот процесс для оставшейся неотсортированной части массива.

    Алгоритм:

    1. Пройдитесь по массиву и найдите минимальный элемент.
    2. Поменяйте его местами с первым элементом.
    3. Повторите эти действия для оставшейся части массива.

    Реализация на PHP:

    function selectionSort($arr) {
    $n = count($arr);
    for ($i = 0; $i < $n - 1; $i++) {
    $minIndex = $i;
    for ($j = $i + 1; $j < $n; $j++) {
    if ($arr[$j] < $arr[$minIndex]) {
    $minIndex = $j;
    }
    }
    // Swap the found minimum element with the first element
    $temp = $arr[$minIndex];
    $arr[$minIndex] = $arr[$i];
    $arr[$i] = $temp;
    }
    return $arr;
    }

    // Example function call
    $arr = [64, 25, 12, 22, 11];
    $sortedArr = selectionSort($arr);

    echo "Sorted array: ";
    print_r($sortedArr);

    Сложность:

    • Худший и лучший случай: O(n²), так как количество операций не зависит от того, отсортирован ли массив.

    Сортировка вставкой

    Описание:  Сортировка вставками работает как сортировка карт в вашей руке: элементы массива вставляются в правильную позицию среди уже отсортированных элементов.

    Алгоритм:

    1. Начните со второго элемента и рассмотрите его как часть отсортированной последовательности.
    2. Вставить текущий элемент в правильную позицию в отсортированной части массива.
    3. Повторите для всех элементов.

    Реализация на PHP:

    function insertionSort($arr) {
    $n = count($arr);
    for ($i = 1; $i < $n; $i++) {
    $key = $arr[$i];
    $j = $i - 1;

    // Move elements greater than the key one position ahead
    while ($j >= 0 && $arr[$j] > $key) {
    $arr[$j + 1] = $arr[$j];
    $j = $j - 1;
    }
    $arr[$j + 1] = $key;
    }
    return $arr;
    }

    // Example function call
    $arr = [12, 11, 13, 5, 6];
    $sortedArr = insertionSort($arr);

    echo "Sorted array: ";
    print_r($sortedArr);

    Сложность:

    • Худший случай: O(n²) — возникает, когда массив сортируется в обратном порядке.
    • Лучший случай: O(n) — если массив уже отсортирован.

    Рекомендуемая литература:

    1. «Изучаем алгоритмы» Адитьи Бхаргавы.  Отличная книга для начинающих, в которой объясняются основные алгоритмы с наглядными иллюстрациями и примерами (написана на Python, но может быть легко адаптирована для PHP).
    2. «Введение в алгоритмы» Томаса Кормена и др.  Классическая книга по алгоритмам, охватывающая более сложные и продвинутые алгоритмы, такие как быстрая сортировка и сортировка слиянием.
    3. «Алгоритмы PHP» Мизанура Рахмана  Книга с реализациями алгоритмов специально на PHP.

    Заключение

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