ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ
БИЗНЕС, УПРАВЛЕНИЕ ПРОЕКТАМИ
АНГЛИЙСКИЙ ЯЗЫК
ЭЛЕКТРОННЫЕ КНИГИ


Создать новую тему Ответить  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Сб фев 21, 2009 7:39 am 
Не в сети
Site Admin

Зарегистрирован: Пт июл 18, 2008 3:46 pm
Сообщения: 0
Обсуждение книги Программируем коллективный разум


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Программируем коллективный разум
СообщениеДобавлено: Вс ноя 01, 2009 8:17 pm 
Не в сети

Зарегистрирован: Вс ноя 01, 2009 8:10 pm
Сообщения: 7
В книге приведено очень много умных (не заумных, а именно умных) мыслей по поводу каким должно быть современное ПО. Все алгоритмы описаны на языке программирования Python. Он позиционируется автором как мета язык, с помощью которого и может быть описан любой алгоритм. На самом деле каких-то специфических знаний от вас вовсе не потребуется, но математическое образование лишним точно не будет. Очень многое разжевано. Хотя некоторое просто не раскрыто, что может привести к неправильному восприятию читателем некоторых математических методов решения задач.
Книгу стоит читать с карандашем или ручкой (можно и блокнот, но я пишу на полях в книге), чтоб править некоторые описки и прорабатывать материал.

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

Личное мнение: "must have"
Читать с ручкой или карандашем.

стр. 63 - не затронута весьма интересная тема - критерий остановки кластеризации, как определить, что кластеров 4, а не 124? Я к тому, что в итоге в приведенной кластеризации всегда получается один кластер. Ну и получится в итоге, что у нас все предъявленные объекты в одном "кластерном" скопе. А это не интересно.

стр. 69 - немного не правильно приведена формула коэффициента Танимото, так как она расходится с определением данным выше, на самом деле вычисляется "модифицированный" коэффициент Танимото, имеющий значение от (1-T), где T - это и есть коэф. Танимото.

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

стр. 83 - представлена модель базы данных, но неряшливо, ненаглядно, лапки один-ко-многим пришлось самому дорисовывать. Да и вообще не хватает в приложении итоговой ER-модели с таблицами pagerank, hiddennode, wordhidden,hiddenurl,fc,cc.

стр. 83 - скрипт создания базы, я бы добавил столбец urlid в индекc worldlocation.

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

стр. 96 - не сказано, как вычислить достаточное число итераций прохождения алгоритма PageRank. фраза "20 должно быть достаточно" - меня лично не устраивает

стр. 97 - используются веса нескольких метрик, но вот не пойму, почему веса не нормализованы, это же гораздо удобней, когда и итоговые данные распределены от 0 до 1. Ведь сами отдельные метрики и распределены от 0 до 1. А веса какие-то мутные и итоговая метрика получается в интервале от 0 до 3 (именно в контексте этого примера). А ведь от 0 до 1 - все таки приятнее

стр. 105 - "обучение с обратным распространением". Это же совсем легко понять, когда знаешь как оперировать матрицами(складывать и перемножать) . Зачем эти вложенные мегациклы, когда здесь проще показать именно формулу - "вектор умножить на вектор, получить матрицу, и сложить с исходной матрицей - получим искомую матрицу". Я думал автор пробует избежать понятия матриц, но он их все равно вводит гораздо позже в другой теме. Почему б не ввести это понятие именно тут, а не на аж стр. 267?

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

стр.111-143 - "Случайный поиск", "Алгоритм спуска", "Алгоритм имитации отжига", "Генетические алгоритмы" - все имеют первое полученное случайным образом решение, от которого и "пляшут" далее. Другие алгоритмы оптимизации не описаны и не упомянуты. Непросвещенный подумает "Значит все методы оптимизации основываются на первом случайном решении". А это не так.

стр. 122 - как вам строчка сравнения значений статистик random.random()<p?

стр. 129 - "Ваша функция должно..." - описка.

стр. 138 - не хватает после "18" переопределения "s = optimization.genetic..." иначе будут показаны результаты случайного поиска, а не генетического алгоритма.

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

стр. 156 - "cprob = clf/(clf+nclf)" - заменить на "cprob = clf/freqsum", как это и сделано в функции cprob ниже.

стр. 156 - в самом низу "Как видите, документы, содержащие слово casino с вероятностью 0.9, классифицируются как спам" - эта фраза очень странная по нескольким причинам. Во-первых, в примере просто нет каких-либо упоминаний про casino и величину 0.9. А во-вторых, обратите внимание на запятые в предложении, ведь получается "документы, содержащие слово casino с вероятностью 0.9", а надо бы на самом деле "документы с вероятностью 0.9 классифицируются как спам".

стр. 269 - вот они и упоминавшиеся мной матрицы. Просто обратите внимание как они перемножаются. Ну как можно матрицу 3на4 умножить на матрицу 3на3? Это "банан" (двойка) по алгебре на первой сессии, а на второй уже без права исправления и прямиком в армию! Транспонируйте для приличия первую матрицу или другой пример приведите, только правильный.

Про разные API и связанный с этим код читал бегло, может там все и в порядке)


Вернуться к началу
 Профиль  
 

Система Orphus