Краткий обзор алгоритмов интеллектуального анализа данных Python

Python

предисловие

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

Во-первых, процесс добычи данных

1. Выбор данных

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

2. Предварительная обработка данных

Обычно выбранные данные будут иметь дефекты, такие как шум и неполнота.Необходимо очистить данные, разобраться с недостающими элементами, интегрировать, преобразовать и обобщить: Обработка строк Python (довольно удобно), сопоставление регулярных выражений, pandas, обработка BeautifulSoup HTML-тегов и другие инструменты.

3. Разработка функций/преобразование данных

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

4. Майнинг данных

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

5. Интерпретация и оценка

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

2. Введение в общие алгоритмы интеллектуального анализа данных

1. Алгоритм анализа ассоциаций

Правила ассоциации заключаются в нахождении ассоциаций между данными разных предметных областей с минимальным порогом поддержки и минимальным порогом достоверности. При исследовании алгоритма анализа ассоциативных правил эффективность алгоритма является основным вопросом. Классическими алгоритмами являются: алгоритм Apriori, алгоритм AprioriTid, алгоритм FP-роста;

2. Алгоритм классификации

Алгоритм дерева решений: представляет классификацию или набор решений в древовидной структуре и генерирует правила или обнаруживает правила. В основном это алгоритм ID3, алгоритм C4.5, алгоритм SLIQ, алгоритм SPRINT, алгоритм RainForest;

Алгоритм наивной байесовской классификации: Используя метод вероятности и статистики теоремы Байеса, выберите категорию с относительно большой вероятностью для классификации;

Алгоритм CBA (классификация на основе ассоциации): алгоритм классификации на основе правил ассоциации;

Алгоритм MIND (Mining in Database): алгоритм, который использует определяемую пользователем функцию (UDF) в базе данных для реализации классификации;

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

Грубая теория множеств: характеристика грубой теории множеств заключается в том, что ей не нужно предопределять количественное описание определенных признаков или атрибутов, а непосредственно исходит из данной проблемы, определяет приблизительную область проблемы через неразличимые отношения и неразличимые классы, и выясняет примерную область задачи внутренние закономерности в задаче;

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

3. Алгоритм кластеризации

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

Метод Ipartitioning Для базы данных, состоящей из N объектов или кортежей, метод разделения создает K разделов данных, каждый раздел представляет собой кластер, и K

иерархический метод Иерархическая декомпозиция заданного набора объектов данных, классическим алгоритмом является алгоритм РОЖДЕНИЯ;

метод на основе сетки Этот метод использует структуру данных сетки с несколькими разрешениями. Пространство количественно разбивается на конечное число ячеек, образующих сетчатую структуру, на которой выполняется весь кластерный анализ. Обычно используются алгоритмы STING, SkWAVECLUSTER и CLIQUE;

резюме

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

3. Реализация алгоритмов интеллектуального анализа данных

1. Соответствующие знания

(1) Метрика расстояния: при интеллектуальном анализе данных необходимо уточнить сходство выборочных данных, и обычно можно рассчитать расстояние между выборками Ниже приводится введение в общие метрики расстояния.

Пример данных начинается с:

样本数据

坐标

Манхэттен Расстояние:Также известный как расстояние в манхэттенском блоке, как расстояние от одной точки пересечения в блоке до другой точки пересечения, Двумерное пространство (многомерное пространство расширено таким же образом) выражается формулой как

Евклидово расстояние: Выражается как расстояние между точками. Формула для двумерного пространства (многомерное пространство расширяется таким же образом) выражается как

расстояние Минковского: представляет собой обобщение набора методов расстояния.При p=1 это одновременно манхэттенское расстояние, а при p=2 — евклидово расстояние. Когда p больше, разница в одном измерении оказывает большее влияние на целое.

Преимущества и недостатки расстояния Минковского (включая евклидово расстояние, манхэттенское расстояние):

Достоинства: Широкий спектр применения.

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

Коэффициент косинусной корреляции: выборочные данные рассматриваются как вектор, и корреляция подтверждается значением косинуса угла между двумя векторами. Диапазон значений: [-1, 1]. -1 означает отрицательную корреляцию, 0 ничего не означает, 1 означает положительную корреляцию.

Преимущества и недостатки коэффициента косинусной корреляции:

Преимущества: Косинусное сходство не имеет ничего общего с величиной вектора, только с направлением вектора, и оно присутствует при расчете сходства документов (TF-IDF) и сходства изображений (гистограммы); И его все еще можно использовать, когда выборочные значения разрежены.

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

Коэффициент корреляции Пирсона: вычисляет корреляцию между образцами векторов, диапазон значений — [-1, 1].

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

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

(2) Стандартизация данных:Справочная статья

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

мин-макс нормализация: Масштабирует диапазон значений до (0,1), но не меняет распределение данных. max — это максимальное значение выборки, а min — минимальное значение выборки.

нормализация z-показателя: Масштабируйте диапазон значений примерно до 0, а обработанные данные соответствуют стандартному нормальному распределению. u — среднее значение, σ — стандартное отклонение.

Скорректированный стандартный z-показатель: После коррекции влияние выбросов в выборочных данных может быть уменьшено. Измените среднее значение на медиану и стандартное отклонение на абсолютное отклонение в формуле нормализации z-оценки.
Где asd абсолютное отклонение: u — медиана, card(x) — количество выборок.

(3) Оценка эффекта алгоритма:

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

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

2. Алгоритм рекомендаций по совместной фильтрации

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

...
示例:
r = Recommendor()

print("items base协同推荐 slope one")
#items base协同推荐算法 Slope one
r.slope_one_recommendation('lyy')

print("items base协同推荐 cos")
#items base协同推荐算法  修正余弦相似度 
r.cos_recommendation('lyy')

print("users base协同推荐")
#userbase协同推荐算法 
r.user_base_recommendation("lyy")

(1) Алгоритм совместных рекомендаций на основе пользователей

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

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

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

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

(2) Алгоритм совместных рекомендаций на основе элементов

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

Существует два распространенных типа алгоритмов совместных рекомендаций на основе товаров:

Модифицированный алгоритм подобия косинусов:

Принимая рейтинг элемента в качестве значения атрибута элемента, корреляцию s(i,j) рассчитывают путем сравнения относительных оценок пользователей элементов i и j. По аналогии с принципом коэффициента корреляции Пирсона существует общий рейтинг пользователя R(u,j) для каждого элемента, и R(u,i) необходимо вычесть из среднего R(`u) рейтинга пользователя, чтобы получить устранить инфляцию баллов.

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

Исправьте недостатки косинусного подобия: разреженность, которая должна быть основана на данных пользовательского рейтинга;

Алгоритм рекомендаций Slope One:

Первым шагом является вычисление средней разницы:

dev(i,j) — средняя разница оценок общих пользователей u, просматривающих все общие элементы i, j.

card(Sj, i(X)) представляет количество пользователей, которые оценили элементы j и i одновременно.

slopeone

Второй шаг, используя взвешенный алгоритм Slope One:

PWS1(u)j означает, что мы будем прогнозировать рейтинг пользователя u для элемента j.

Найдите коллекцию i, принадлежащую S(u)-j, все элементы i (кроме j) содержатся в пользователе u.

dev(i,j) — средняя разница оценок общих пользователей u, просматривающих все общие элементы i, j.

C(ji), также известное как card(Sj, i(X)), представляет количество пользователей, которые оценили элементы j и i одновременно.

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

Недостатки алгоритма Slope One: разреженность, требующая пользовательских рейтинговых данных;

3. Алгоритм классификации

(1) Алгоритм классификации KNN на основе собственных значений элемента

КодАлгоритм классификации Iris KNN

...

 # KNN算法
    def knn(self, oj_list):
        weight_dict = {"Iris-setosa":0.0, "Iris-versicolor":0.0, "Iris-virginica":0.0}
        for atuple in oj_list:
            weight_dict[atuple[1]] += (1.0 / atuple[0])
        rel_class = [(key, value) for key, value in weight_dict.items()]
        #print(sorted(rel_class, key=lambda x:x[1], reverse=True))
        rel_class = sorted(rel_class, key=lambda x:x[1], reverse=True)[0][0]
        return rel_class
        
...

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

Первый шаг, выбор значения функции

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

Второй шаг, рассчитать расстояние

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

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

(2) Алгоритм байесовской классификации

КодОтличительная категория новостей Алгоритм наивной байесовской классификации

...
def train_data(self):
        #训练组的条件概率
        for word in self.vocabulary:
            for category,value in self.prob.items():
                if word not in self.prob[category]:
                    count = 0
                else :
                    count = self.prob[category][word]
                #优化条件概率公式
                self.prob[category][word] = (count + 1) / (self.total[category] + len(self.vocabulary)) 
                
...

Алгоритм классификации байесов основан на алгоритмах классификации вероятностей. По сравнению с алгоритмом классификации KNN это алгоритм активного обучения. Он установит модель в соответствии с набором тренировок и использовать эту модель для классификации новых образцов, а скорость будет намного быстрее. Теоретические основы алгоритма байесовской классификации основаны на формуле условной вероятности (применяется в реальности P (x | y & z), а p (y | x) * p (z | x) более интуитивно понятна), а также Предположим, что существует мероприятие (y, z ... Там будет несколько приложений в практических приложениях) не зависит друг от друга (поэтому также известно как простые байесы), когда y, k инциденты независимы:

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

Шаг 1: вычислить априорную вероятность и условную вероятность

Априорная вероятность: вероятность возникновения одного события, такого как P (купить зеленый чай), P (органические продукты питания).

Условная вероятность (апостериорная вероятность): вероятность того, что событие y произошло, и вероятность того, что x произойдет после наблюдения набора данных y. Например, P (купить натуральные продукты | купить зеленый чай) рассчитывается по следующей формуле (nc представляет частоту появления x в наборе данных y, а n — общее количество набора данных y):

В приведенной выше формуле есть недостаток: когда условная вероятность P(y|x) равна 0, общий результат прогноза P(x) * P(y|x) * P(z|x) может быть только 0, поэтому это не может быть более всеобъемлющий прогноз.

Модифицированная условная вероятность: (Формула взята из «Машинного обучения» Тома Митчелла. m — константа, представляющая эквивалентный размер выборки. Существует много способов определить константу m, мы можем использовать категорию прогнозируемого результата как m здесь Например, голосование имеет две категории одобрения и отклонения, поэтому m равно 2. p — соответствующая априорная вероятность. Например, если вероятность одобрения равна 0,5, то p (одобрение) равно 0,5.):

Шаг 2. Делайте прогнозы на основе формулы Байеса.

Рассчитайте и сравните разность вероятностей различных событий x при возникновении событий y и z по формуле Например, вероятность P (x = нравится) и P (x = не нравится) получается, и она предсказывается как событие с относительно высокой вероятностью. Поскольку P (y) * p (z) в приведенной выше формуле то же самое, формулу можно упростить, чтобы вычислить максимальный член вероятности и предсказать классификацию:

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

Недостатки байесовского алгоритма: требуется определенный формат, числовые данные должны быть преобразованы в категории для расчета вероятностей или в распределение Гаусса для расчета вероятностей;

(2) Алгоритм классификации логистической регрессии

КодРазличать изображения кошек

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

...
# cost函数,计算梯度
def propagate(w, b, X, Y):
    m = X.shape[1]      
    A = sigmoid(np.dot(w.T, X) + b)            
    cost = -1 / m * np.sum(Y * np.log(A) + (1 - Y) * np.log(1 - A))        
    dw = 1 / m * np.dot(X, (A - Y).T)  
    db = 1 / m * np.sum(A - Y) 
...    

Алгоритм классификации логистической регрессии реализует входной вектор признаков X, а выходные данные Y (диапазон 0–1) предсказывают классификацию X.

Первый шаг — получить функцию линейной регрессии на X.

WX + b можно получить с помощью линейной регрессии, где W — вес, а b — значение смещения. Однако прогнозируемое значение не может быть выражено в этой формуле, потому что значение выхода Y должно находиться в интервале (0~1);

Второй шаг, через преобразование функции активации

Характеристика функции активации заключается в том, что она может преобразовывать линейную функцию в нелинейную и имеет характеристики ограниченного выходного значения, дифференцируемости и монотонности. В этом примере используется сигмоид, поэтому на выходе получается прогнозируемое значение Y=sigmoid(WX+b);

Третий шаг, построить функцию стоимости

Чтобы обучить W и b лучше предсказывать реальную категорию, вам нужно построить функцию стоимости стоимости, y^ — это прогнозируемое значение классификации сигмоида (WX + b), а y — фактическое значение классификации (0 или 1):

где L(y^,y) называется функцией потерь

Цель обучения состоит в том, чтобы сделать L(y^,y) достаточно маленьким, то есть, когда фактическое классификационное значение y равно 1, y^ должно быть максимально смещено к 1. Когда фактическое классификационное значение y равно 0, y^ минимально возможно и близко к 0.

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

Взяв частную производную двух параметров W и b, итеративно перемещаемся в положение спада (оптимизируем значения w и b до минимального значения, где α — величина падения контроля скорости обучения), а глобальный оптимальное решение То есть функция стоимости (функция стоимости) J(w,b) является точкой минимума выпуклой функции.
Пятый шаг - предсказать классификацию через обученный W, b.

4. Алгоритм кластеризации

(1) Иерархическая кластеризация

КодИерархическая кластеризация видов собак

Иерархическая кластеризация рассматривает каждый фрагмент данных как категорию и объединяет две самые близкие категории на каждой итерации, пока не останется одна категория.

(2) Кластеризация K-средних++

КодКМАН ++ кластер

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

        ...
        #kmean初始化随机k个中心点
        #random.seed(1)
        #center = [[self.data[i][r] for i in range(1, len((self.data)))]  
                  #for r in random.sample(range(len(self.data)), k)]
            
        # Kmean ++ 初始化基于距离份量随机选k个中心点
        # 1.随机选择一个点
        center = []
        center.append(random.choice(range(len(self.data[0]))))
        # 2.根据距离的概率选择其他中心点
        for i in range(self.k - 1):
            weights = [self.distance_closest(self.data[0][x], center) 
                     for x in range(len(self.data[0])) if x not in center]
            dp = [x for x in range(len(self.data[0])) if x not in center]
            total = sum(weights)
            #基于距离设定权重
            weights = [weight/total for weight in weights]
            num = random.random()
            x = -1
            i = 0
            while i < num :
                x += 1
                i += weights[x]
            center.append(dp[x])
        ... 

Алгоритм k-means++ можно резюмировать следующим образом:

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

Рассчитайте расстояние (D) от каждой точки данных dp(n) до каждой центральной точки и выберите наименьшее значение D(dp);

В соответствии с весом расстояния D(dp) в качестве центральной точки случайным образом выбирается следующая точка.

(2) классифицировать по расстоянию от каждой точки до центральной точки;

(3) Рассчитайте новую центральную точку каждой классификации. Повторяйте (2, 3) до тех пор, пока условия не будут выполнены.


Добро пожаловать, чтобы следовать«Расширенный алгоритм»Официальный аккаунт, сюда регулярно выкладывают хорошие статьи по Python, машинному обучению, глубокому обучению и другим технологиям. Добро пожаловать, чтобы учиться и обмениваться прогрессом вместе!