<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.linuxformat.ru/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF112%3AR</id>
		<title>LXF112:R - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF112%3AR"/>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF112:R&amp;action=history"/>
		<updated>2026-05-13T08:43:24Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.19.20+dfsg-0+deb7u3</generator>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF112:R&amp;diff=8897&amp;oldid=prev</id>
		<title>Crazy Rebel: викификация, оформление, иллюстрация</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF112:R&amp;diff=8897&amp;oldid=prev"/>
				<updated>2009-10-09T05:07:53Z</updated>
		
		<summary type="html">&lt;p&gt;викификация, оформление, иллюстрация&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;: '''''R''''' Свободный инструментарий для статистической обработки данных [[Категория:Учебники]]\&lt;br /&gt;
&lt;br /&gt;
==Интеллектуальный анализ, или Data Mining==&lt;br /&gt;
&lt;br /&gt;
{{Цикл/R}}&lt;br /&gt;
&lt;br /&gt;
: '''ЧАСТЬ 4''' Бытует мнение, что сбор невинных данных о вас и их обработка – это дело Врагов Свободы. Так ли эт, каждый решает сам – важно, что мы можем ударить по ним их же собственным оружием. '''Алексей Шипунов''' и '''Евгений Балдин''' откроют вам арсенал.&lt;br /&gt;
&lt;br /&gt;
{{Врезка|left|Заголовок=Наши данные|Содержание=Для всех примеров анализа мы будем использовать встроенные в ''R'' данные '''iris'''. Они позаимствованы из работы знаменитого математика (и биолога) Р. Фишера и описывают разнообразие нескольких признаков трёх видов ирисов (многолетние корневищные растения, относящиеся к семейству Касатиковых или Ирисовых). Эти данные состоят из 5 переменных (колонок), причём последняя колонка – это название вида.|Ширина=200px}}&lt;br /&gt;
&lt;br /&gt;
Выражение «data mining» всё чаще и чаще встречается на обложках книг по анализу данных, не говоря уж о росте упоминаний об этом методе во всеядном Интернете. Некоторые даже полагают, что эпоха статистики одной-двух переменных закончилась, и наступило новое время – время интеллектуального анализа больших и сверхбольших массивов данных. На самом деле, под&lt;br /&gt;
«дата-майнингом» подразумеваются любые визуальные или аналитические методы, позволяющие «нащупать» структуру в большом&lt;br /&gt;
объеме информации – в ином случае ее можно обнаружить и без&lt;br /&gt;
специальных методов, например, просто поглядев на распределение&lt;br /&gt;
единственного изучаемого параметра.&lt;br /&gt;
&lt;br /&gt;
Для анализа используются, как правило, многомерные данные, т.е. такие, которые можно представить в виде таблицы из нескольких колонок-переменных. Поэтому более традиционным названием&lt;br /&gt;
для этих методов является «многомерный анализ» или «многомерная статистика»; но «data mining» звучит, конечно, серьёзнее. Кроме&lt;br /&gt;
многомерности и большого размера (сотни, а то и тысячи строк и&lt;br /&gt;
столбцов), используемые данные отличаются ещё и тем, что переменные в них могут быть совершенно разных типов (качественные,&lt;br /&gt;
балльные, счётные, непрерывные), причём даже «типичные» для статистики непрерывные числовые переменные вполне могут не подчи-&lt;br /&gt;
няться заранее известным законам распределения, т.е. могут не быть&lt;br /&gt;
параметрическими.&lt;br /&gt;
&lt;br /&gt;
Сами по себе многомерные методы делятся на визуализационные&lt;br /&gt;
и методы классификации с обучением. В первом случае результат&lt;br /&gt;
можно анализировать в основном зрительно, а во втором возможна&lt;br /&gt;
статистическая проверка результатов. Разумеется, граница между&lt;br /&gt;
этими группами не резкая, но для удобства мы будем рассматривать&lt;br /&gt;
их именно в таком порядке.&lt;br /&gt;
&lt;br /&gt;
===Графический анализ===&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF112_74_1.jpg|200px]]Отображение многомерных данных с помощью пакета ''RGL''.|Ширина=200px}}&lt;br /&gt;
&lt;br /&gt;
Самое простое, что можно сделать с многомерными данными – это&lt;br /&gt;
построить график. Разумеется, предварительно надо свести всё&lt;br /&gt;
их разнообразие к двум или, в крайнем случае, трём измерениям. Эта операция называется «сокращением размерности».&lt;br /&gt;
Если же переменных уже три и все они непрерывные, то с представлением данных замечательно справится ''RGL'', написанный с использованием ''OpenGL'' и поддерживающий трёхмерную визуализацию.&lt;br /&gt;
&lt;br /&gt;
Давайте визуализируем при помощи пакета ''RGL'' четыре из пяти колонок массива '''iris''' (см. врезку):&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; library(rgl)&lt;br /&gt;
 &amp;gt; plot3d(iris$Sepal.Length, iris$Sepal.Width,&lt;br /&gt;
 +       iris$Petal.Length, col=iris$Species, size=3)&lt;br /&gt;
&lt;br /&gt;
Размер появившегося окна и проекцию отображения данных можно и нужно менять c помощью мыши. Сразу видно, что один из видов (Iris&lt;br /&gt;
setosa) хорошо отличается от двух других по признаку длины лепестков (Petal.Length). Кстати, визуализированных признаков действительно четыре: один из них (вид ириса) закодирован цветом.&lt;br /&gt;
&lt;br /&gt;
Для трёхмерной визуализации данных можно обойтись и без ''OpenGL'', взяв, например, пакет ''scatterplot3d''. Но, по-хорошему, трёхмерными графиками лучше не злоупотреблять. Очень часто двумерные проекции трёхмерных объектов не раскрывают, а «затемняют»&lt;br /&gt;
суть явления. Правда, в случае ''RGL'' это компенсируется возможностью свободно менять «точку обзора».&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF112_74_2.jpg|200px]]Отображение многомерных данных с помощью пакета ''lattice''.|Ширина=200px}}&lt;br /&gt;
&lt;br /&gt;
Есть и более специализированные системы для визуализации многомерных данных без снижения размерности. Среди&lt;br /&gt;
них можно отметить пакет ''rggobi'', основанный на системе ''Ggobi''. Сегодня мы его рассматривать не будем, поскольку&lt;br /&gt;
(строго говоря) использование «стороннего ПО» уже выводит нас за рамки ''R''.&lt;br /&gt;
&lt;br /&gt;
Ещё один способ визуализации многомерных данных – это построение графиков-таблиц. Здесь ''R'' обладает колоссальными возможностями, которые предоставляются пакетом ''lattice'',&lt;br /&gt;
предназначенным для так называемой Trellis-графики. Последняя&lt;br /&gt;
долгое время была общепризнанной изюминкой ''S-PLUS'', но теперь&lt;br /&gt;
стала доступна и в ''R''. Вот как можно визуализировать четыре признака ирисов:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; library(lattice)&lt;br /&gt;
 &amp;gt; xyplot(Sepal.Length ~ Petal.Length + Petal.Width | Species,&lt;br /&gt;
 +       data = iris, auto.key=TRUE)&lt;br /&gt;
&lt;br /&gt;
===Сокращение размерности===&lt;br /&gt;
&lt;br /&gt;
Вернёмся к методам сокращения размерности. Самый распространённый из них – это «анализ главных компонент». Суть его&lt;br /&gt;
заключается в том, что все признаки-колонки преобразуются в&lt;br /&gt;
компоненты, причём наибольшую информацию о разнообразии&lt;br /&gt;
объектов несёт первая компонента, вторая – чуть меньше, и так&lt;br /&gt;
по убыванию.&lt;br /&gt;
&lt;br /&gt;
Таким образом, хотя компонент получается столько же, сколько&lt;br /&gt;
изначальных признаков, почти все нужные нам сведения сосредоточены в первых двух-трёх из них, поэтому их можно использовать для&lt;br /&gt;
визуализации данных на плоскости. Обычно используется первая и&lt;br /&gt;
вторая (реже первая и третья) компоненты. Компоненты часто называют «факторами», и это порождает некоторую путаницу с похожим&lt;br /&gt;
на анализ главных компонент «факторным анализом», преследующим, однако, совсем иные цели.&lt;br /&gt;
&lt;br /&gt;
Вот как делается анализ главных компонент на наших данных про ирисы:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; iris.pca &amp;lt;- princomp(scale(iris[,1:4]))&lt;br /&gt;
&lt;br /&gt;
Мы использовали функцию '''scale()''' для того, чтобы привести все четыре переменные к одному масштабу (по умолчанию она вычитает из данных среднее и делит их на его квадрат), поскольку переменные, варьирующие в разных масштабах, способны исказить результат&lt;br /&gt;
анализа. В ''R'' реализован и другой метод анализа главных компонент, основанный на иных преобразованиях матрицы: он вызывается&lt;br /&gt;
функцией ''prcomp()''.&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF112_75_1.jpg|200px]]Анализ главных компонент (служебный график).|Ширина=200px}}&lt;br /&gt;
&lt;br /&gt;
Выведем служебный график, демонстрирующий относительные вклады каждого компонента в общий разброс данных:&lt;br /&gt;
&lt;br /&gt;
  &amp;gt; plot(iris.pca)&lt;br /&gt;
&lt;br /&gt;
На графике хорошо видно, что компонент четыре, как и признаков, но, в отличие от последних, наибольший вклад вносят первые&lt;br /&gt;
два. Можно получить то же самое в текстовом виде, набрав:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; summary(iris.pca)&lt;br /&gt;
 Importance of components:&lt;br /&gt;
                        Comp.1    Comp.2 Comp.3        Comp.4&lt;br /&gt;
 Standard deviation     1.7026571 0.9528572 0.38180950 0.143445939&lt;br /&gt;
 Proportion of Variance 0.7296245 0.2285076 0.03668922 0.005178709&lt;br /&gt;
 Cumulative Proportion 0.7296245 0.9581321 0.99482129 1.000000000&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF112_75_2.jpg|200px]]Анализ главных компонент.|Ширина=200px}}&lt;br /&gt;
&lt;br /&gt;
Теперь перейдём собственно к визуализации:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; iris.p &amp;lt;- predict(iris.pca)&lt;br /&gt;
 &amp;gt; plot(iris.p[,1:2], type=&amp;quot;n&amp;quot;,xlab=&amp;quot;PC1&amp;quot;, ylab=&amp;quot;PC2&amp;quot;)&lt;br /&gt;
 &amp;gt; text(iris.p[,1:2],&lt;br /&gt;
 +    labels=abbreviate(iris[,5],1,method=&amp;quot;both.sides&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
Как видно из рисунка, Iris setosa (отмечен буквой '''s''') сильно отличается от двух остальных видов, Iris versicolor ('''v''') и Iris virginica ('''a'''). Функция '''predict()''' позволяет расположить исходные случаи (строки) в пространстве вновь найденных компонент. Функция '''abbreviate()''' «умным» образом сокращает названия до одной буквы.&lt;br /&gt;
&lt;br /&gt;
Пакеты '''''ade4''''' и '''''vegan'''' реализуют множество вариаций анализа&lt;br /&gt;
главных компонент, но самое главное то, что они содержат гораздо&lt;br /&gt;
больше возможностей для визуализации. Например, так можно проанализировать те же данные по ирисам с ''ade4'':&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; install.packages(&amp;quot;ade4&amp;quot;, dependencies=TRUE)&lt;br /&gt;
 &amp;gt; library(ade4)&lt;br /&gt;
 &amp;gt; iris.dudi &amp;lt;- dudi.pca(iris[,1:4], scannf=FALSE)&lt;br /&gt;
 &amp;gt; s.class(iris.dudi$li, iris[,5])&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF112_75_3.jpg|300px]]Анализ главных компонент с помощью пакета ''ade4''. |Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
Нетрудно заметить, что различия между ирисами на этом графике&lt;br /&gt;
видны яснее. Более того, с помощью ''ade4'' можно проверить качество&lt;br /&gt;
разрешения между классами (в данном случае – видами ирисов):&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; iris.between &amp;lt;- between(iris.dudi, iris[,5], scannf=FALSE)&lt;br /&gt;
 &amp;gt; randtest(iris.between)&lt;br /&gt;
 Monte-Carlo test&lt;br /&gt;
 Call: randtest.between(xtest = iris.between)&lt;br /&gt;
 Observation: 0.7224358&lt;br /&gt;
 Based on 999 replicates&lt;br /&gt;
 Simulated p-value: 0.001&lt;br /&gt;
 Alternative hypothesis: greater&lt;br /&gt;
     Std.Obs      Expectation Variance&lt;br /&gt;
 6.868114e+01 1.374496e-02 1.064728e-04&lt;br /&gt;
&lt;br /&gt;
Из распечатки видно, что классы различаются хорошо (0,7 близко к 1) и стабильно. Этот метод уже действительно ближе к «настоящей&lt;br /&gt;
статистике», нежели к типичной визуализации данных.&lt;br /&gt;
&lt;br /&gt;
===Классификация без обучения===&lt;br /&gt;
&lt;br /&gt;
Ещё одним способом снижения размерности является ординация&lt;br /&gt;
(упорядочение или классификация без обучения), проводимая на&lt;br /&gt;
основании заранее вычисленных значений сходства между всеми&lt;br /&gt;
парами объектов (строк). В результате этой процедуры получается&lt;br /&gt;
квадратная матрица расстояний, диагональ которой обычно состоит&lt;br /&gt;
из нулей (расстояние между объектом и им же самим равно нулю).&lt;br /&gt;
За десятилетия развития этой области статистики придуманы сотни&lt;br /&gt;
коэффициентов сходства, из которых наиболее употребимыми являются евклидово и квартальное (манхэттеновское). Эти коэффициенты применимы в основном к непрерывным переменным. Балльные и&lt;br /&gt;
бинарные переменные в общем случае требуют других коэффициентов, но в пакете ''cluster'' реализована функция '''daisy()''', которая способна распознавать тип переменной и применять соответствующие&lt;br /&gt;
коэффициенты, а в пакете ''vegan'' доступно множество дополнительных коэффициентов сходства.&lt;br /&gt;
&lt;br /&gt;
Вот как можно построить матрицу сходства (лучше её всё-таки называть матрицей различий, поскольку в её ячейках стоят именно&lt;br /&gt;
расстояния) для наших ирисов:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; library(cluster)&lt;br /&gt;
 &amp;gt; iris.dist &amp;lt;- daisy(iris[,1:4], metric=&amp;quot;manhattan&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
С полученной таким образом матрицей можно делать довольно&lt;br /&gt;
многое. Одним из самых простых её применений является «многомерное шкалирование» или, иначе, «анализ главных координат» (это&lt;br /&gt;
название применяют в основном для метрических вариантов данного метода).&lt;br /&gt;
&lt;br /&gt;
Попробуем разобраться в сути «многомерного шкалирования».&lt;br /&gt;
Допустим, в результате долгой и изнурительной последовательности&lt;br /&gt;
действий над картой были измерены расстояния между десятком&lt;br /&gt;
городов, результаты сохранены, а сама карта была неожиданно потеряна. Теперь перед исследователями стоит задача: восстановить карту взаимного расположения городов, зная только расстояния между&lt;br /&gt;
ними. Именно её и решает многомерное шкалирование, причём это&lt;br /&gt;
отнюдь не метафора. Можно набрать ''example(cmdscale)'' и на примере 21 европейского города посмотреть, как подобное вычисляется&lt;br /&gt;
на самом деле. Для наших же ирисов многомерное шкалирование можно применить так:&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF112_76_1.jpg|300px]]Многомерное шкалирование.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; iris.c &amp;lt;- cmdscale(iris.dist)&lt;br /&gt;
 &amp;gt; plot(iris.c[,1:2], type=&amp;quot;n&amp;quot;, xlab=&amp;quot;Dim. 1&amp;quot;, ylab=&amp;quot;Dim. 2&amp;quot;)&lt;br /&gt;
 &amp;gt; text(iris.c[,1:2],&lt;br /&gt;
 +      labels=abbreviate(iris[,5],1, method=&amp;quot;both.sides&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
Как видно из графика, результат очень напоминает полученный&lt;br /&gt;
при анализе главных компонент, что неудивительно, так как внутренняя структура данных (которую нам и надо найти в процессе «data&lt;br /&gt;
mining») не изменилась. Кроме '''cmdscale()''', советуем обратить внимание на непараметрический вариант этого метода, осуществляемый при помощи функции '''isoMDS()'''.&lt;br /&gt;
&lt;br /&gt;
===Кластерный анализ===&lt;br /&gt;
&lt;br /&gt;
Ещё одним вариантом работы с матрицей различий является&lt;br /&gt;
«кластерный анализ». Существует множество его разновидностей, причём наиболее употребимыми являются иерархические&lt;br /&gt;
методы, которые вместо уже привычных нам двумерных графиков производят «полуторамерные» деревья классификации или&lt;br /&gt;
дендрограммы.&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF112_76_2.jpg|300px]]Кластерная дендрограмма.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; iriss &amp;lt;- iris[seq(1,nrow(iris),5),]&lt;br /&gt;
 &amp;gt; iriss.dist &amp;lt;- daisy(iriss[,1:4])&lt;br /&gt;
 &amp;gt; iriss.h &amp;lt;- hclust(iriss.dist, method=&amp;quot;ward&amp;quot;)&lt;br /&gt;
 &amp;gt; plot(iriss.h,&lt;br /&gt;
 +     labels=abbreviate(iriss[,5],1, method=&amp;quot;both.sides&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
Для построения «дерева» была взята только каждая пятая строка&lt;br /&gt;
данных, иначе ветки сидели бы слишком плотно. Это, кстати, недостаток иерархической кластеризации как метода визуализации данных.&lt;br /&gt;
Метод Уорда [Ward] даёт очень хорошо очерченные кластеры – при&lt;br /&gt;
условии, естественно, что их удаётся найти; поэтому неудивительно,&lt;br /&gt;
что в нашем случае все три вида разделились. При этом отлично видно, что виды на «v» (versicilor и virginica) разделяются на более низком уровне (Height ~ 12), то есть сходство между ними сильнее, чем каждого из них с третьим видом.&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF112_76_3.jpg|300px]]Пакет ''pvclust''.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
Кластерный анализ этого типа весьма привлекателен тем, что даёт готовую классификацию. Однако не стоит забывать, что это «всего&lt;br /&gt;
лишь визуализация». Насколько «хороши» получившиеся кластеры, проверить порой непросто, хотя и здесь существует множество&lt;br /&gt;
методов. Один из них, так называемый «silhouette plot», реализован в пакете ''cluster''. Чтобы увидеть его в действии, достаточно набрать ''example(agnes)''. Ещё один, очень модный сейчас метод, основанный&lt;br /&gt;
на boostrap-репликации, реализован в пакете ''pvclust'':&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; install.packages(&amp;quot;pvclust&amp;quot;, dependencies=TRUE)&lt;br /&gt;
 &amp;gt; library(pvclust)&lt;br /&gt;
 &amp;gt; iriss.pv &amp;lt;- pvclust(t(iriss[,1:4]),&lt;br /&gt;
 + method.dist=&amp;quot;manhattan&amp;quot;, method.hclust=&amp;quot;ward&amp;quot;, nboot=100)&lt;br /&gt;
 &amp;gt; plot(iriss.pv, print.num=FALSE)&lt;br /&gt;
&lt;br /&gt;
Красным цветом на графике печатаются p-значения (p-values),&lt;br /&gt;
связанные с устойчивостью кластеров в процессе репликации исходных данных. Величины, близкие к 100, считаются «хорошими». В&lt;br /&gt;
данном случае мы видим как раз «хорошую» устойчивость получившихся основных трёх кластеров (разных видов ирисов), и неплохую&lt;br /&gt;
устойчивость кластера, состоящего из двух видов на «v».&lt;br /&gt;
&lt;br /&gt;
Кроме иерархических методов кластеризации, существуют и другие. Из них наиболее интересны так называемые fuzzy-методы,&lt;br /&gt;
основанные на той идее, что каждый объект может принадлежать к&lt;br /&gt;
нескольким кластерам сразу, но с разной «силой». Вот как реализуется такой метод в пакете ''cluster'':&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF112_77_1.jpg|300px]]Пакет ''cluster''.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; library(cluster)&lt;br /&gt;
 &amp;gt; iris.f &amp;lt;- fanny(iris[,1:4], 3)&lt;br /&gt;
 &amp;gt; plot(iris.f, which=1)&lt;br /&gt;
 &amp;gt; head(data.frame(sp=iris[,5], iris.f$membership))&lt;br /&gt;
     sp              X1                X2           X3&lt;br /&gt;
 1 setosa             0.9142273         0.03603116   0.04974153&lt;br /&gt;
 2 setosa            0.8594576         0.05854637   0.08199602&lt;br /&gt;
 3 setosa            0.8700857         0.05463714   0.07527719&lt;br /&gt;
 4 setosa            0.8426296         0.06555926   0.09181118&lt;br /&gt;
 5 setosa            0.9044503         0.04025288   0.05529687&lt;br /&gt;
 6 setosa            0.7680227         0.09717445   0.13480286&lt;br /&gt;
&lt;br /&gt;
Аналогичные графики мы уже видели неоднократно – здесь нет &lt;br /&gt;
ничего принципиально нового. А вот текстовый вывод интереснее. &lt;br /&gt;
Для каждой строчки указан «membership» или показатель «силы», &lt;br /&gt;
с которой данный элемент «притягивается» к каждому из трёх кластеров. Как видно, шестая особь, несмотря на то, что почти наверняка принадлежит к первому кластеру, тяготеет также и к третьему. &lt;br /&gt;
Недостатком этого метода является необходимость заранее указывать количество получающихся кластеров.&lt;br /&gt;
&lt;br /&gt;
Подобный метод реализован также и в пакете ''e1071''. Функция называется '''cmeans()''', но в этом случае вместо количества кластеров можно указать предполагаемые центры, вокруг которых будут группироваться элементы.&lt;br /&gt;
&lt;br /&gt;
===Классификация с обучением===&lt;br /&gt;
&lt;br /&gt;
Теперь обратимся к методам, которые могут называться «визуализацией» лишь частично. В зарубежной литературе именно их&lt;br /&gt;
принято называть «методами классификации». Чтобы с ними работать, надо освоить технику «обучения». Как правило, выбирается часть данных с известной групповой принадлежностью.&lt;br /&gt;
На основании анализа этой части, называемой «тренировочной&lt;br /&gt;
выборкой», строится гипотеза о том, как должны распределяться&lt;br /&gt;
по группам остальные, неклассифицированные данные. При этом&lt;br /&gt;
обычно можно узнать, насколько хорошо работает та или иная&lt;br /&gt;
гипотеза. Кроме того, методы классификации с обучением можно&lt;br /&gt;
с успехом применять и для других целей: например, для выяснения важности признаков.&lt;br /&gt;
&lt;br /&gt;
Один из самых простых методов в данной группе – это «линейный дискриминантный анализ». Его основной идеей является создание функций, которые на основании линейных комбинаций значений признаков (это и есть классификационная гипотеза) «сообщают»,&lt;br /&gt;
куда нужно отнести данную особь. Воспользуемся им для выяснения&lt;br /&gt;
структуры данных ирисов:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; iris.train &amp;lt;- iris[seq(1,nrow(iris),5),]&lt;br /&gt;
 &amp;gt; iris.unknown &amp;lt;- iris[-seq(1,nrow(iris),5),]&lt;br /&gt;
 &amp;gt; library(lda.cv)&lt;br /&gt;
 &amp;gt; iris.lda &amp;lt;- lda(scale(iris.train[,1:4]), iris.train[,5])&lt;br /&gt;
 &amp;gt; iris.ldap &amp;lt;- predict(iris.lda, iris.unknown[,1:4])$class&lt;br /&gt;
 &amp;gt; table(iris.ldap, iris.unknown[,5])&lt;br /&gt;
 iris.ldap             setosa           versicolor         virginica&lt;br /&gt;
   setosa                 0                  0                 0&lt;br /&gt;
   versicolor            34                  0                 0&lt;br /&gt;
   virginica              6                 40                40&lt;br /&gt;
&lt;br /&gt;
На выходе получился довольно забавный результат: наша тренировочная выборка привела к построению гипотезы, по которой все&lt;br /&gt;
virginica и versicolor (а также часть setosa) попали в одну группу. Это&lt;br /&gt;
говорит не только о близости видов на «v», но также и о недостаточной «тренировке».&lt;br /&gt;
&lt;br /&gt;
Великое множество методов «data mining», разумеется, нереально&lt;br /&gt;
охватить в небольшой статье. Однако нельзя и не упомянуть ещё об&lt;br /&gt;
одном современном методе, основанном на идее вычисления параметров гиперплоскости, разделяющей различные группы в многомерном пространстве признаков – Support Vector Machines.&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; library(e1071)&lt;br /&gt;
 &amp;gt; iris.svm &amp;lt;- svm(Species ~ ., data = iris.train)&lt;br /&gt;
 &amp;gt; iris.svmp &amp;lt;- predict(iris.svm, iris[,1:4])&lt;br /&gt;
 &amp;gt; table(iris.svmp, iris[,5])&lt;br /&gt;
 iris.svmp              setosa           versicolor            virginica&lt;br /&gt;
   setosa                 50                  0                    0&lt;br /&gt;
   versicolor              0                 50                    14&lt;br /&gt;
   virginica               0                  0                    36&lt;br /&gt;
&lt;br /&gt;
Данный метод изначально разрабатывался для случая бинарной классификации, однако в ''R'' его можно использовать и для большего&lt;br /&gt;
числа групп.&lt;br /&gt;
&lt;br /&gt;
На этом мы завершаем наше «углубленное введение» в мир ''R'' вообще и в технологии интеллектуального анализа – в частности. В&lt;br /&gt;
заключение хотелось бы отметить, что настоящая статья ни в коем случае не заменяет больших книг и справочников, написанных по&lt;br /&gt;
теме «data mining». Мы ставили целью лишь дать примерное представление о многообразии методов анализа многомерных данных и&lt;br /&gt;
наиболее распространенных способах решения основных проблем, возникающих при поиске порядка в больших массивах информации. '''LXF'''&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>	</entry>

	</feed>