Закончил курс Machine Learning. Курс содержит видео лекции, контрольные вопросы, упражнения с программированием. Интенсивность - тема в неделю, несколько (около 10ти) видео по 8-15 минут на тему. Продолжительность - около 2-х месяцев с восемью уроками программирования. Рассмотрены следующие темы: линейная регрессия с одной и многими переменными, логистическая регрессия, нейронный сети, алгоритм обучения, Support Vector Machines (SVM), кластеринг, компонентный анализ, детектирование аномалий, рекомендующие системы. Из заявленных тем не было дерева решений и наивного Байесовского классификатора.Читает профессор, директор лаборатории Stanford Artificial Intelligence Lab Andrew Ng, отмеченный в 2008 как один из 35-ти выдающихся инноваторов в возрасте до 35. Программирование - на Octave, бесплатный аналог Matlab с умеренной с ним совместимостью. Курс оказался интересным с живыми примерами и программированием. Расскажу про несколько уроков, точнее про два.
1. Распознавание рукописных цифр. Материал, на котором выполнялось обучение выглядит таким образом.
1. Распознавание рукописных цифр. Материал, на котором выполнялось обучение выглядит таким образом.
Аналогичный подход применяется в распознавании текстов. В MS Paint мышкой нарисовал несколько цифр и после обучения на базе 5000 образцов, подобных тем, что на рисунке, оценил цифры нарисованные мною. Так “4” (цифра "преувеличена" :)
с помощью следующего кода с оттренированными параметрами all_theta
d4 = imread('4.bmp');
d4d = im2double(imcomplement(d4));
pred = predictOneVsAll(all_theta,reshape(d4d,1,400))
определилась (предсказана моделью - pred) как “4”
d4 = imread('4.bmp');
d4d = im2double(imcomplement(d4));
pred = predictOneVsAll(all_theta,reshape(d4d,1,400))
определилась (предсказана моделью - pred) как “4”
Три строки кода выполняют: чтение изображения 20х20 точек, инверсия яркости, превращение в матрицу double значений, использование параметров модели для определения цифры. Входными данными являются точки изображения, развернутые в строку (400 значений яркости). Ясно, что для того, чтобы распознавание заработало в настоящем, полезном приложении, надо потратить значительно больше усилий: найти строку символов в изображении, выделить каждый символ, привести его к размеру обучения, распознать, получить слова, проверить орфографию и семантику.
2. Другой интересный пример: используется база оценок (1..5) фильмов (1682) зрителями (943), взятая здесь, это матрица Y размером 1682x943 со значениями рейтинга от 1 до 5, где 5 - лучшая оценка, а 0 означает, что фильм i зрителем j не оценен, то есть, нет рейтинга. Картинку оценок можно представить так
2. Другой интересный пример: используется база оценок (1..5) фильмов (1682) зрителями (943), взятая здесь, это матрица Y размером 1682x943 со значениями рейтинга от 1 до 5, где 5 - лучшая оценка, а 0 означает, что фильм i зрителем j не оценен, то есть, нет рейтинга. Картинку оценок можно представить так
Слегка “размыл” изображение, иначе яркие точки (высокий рейтинг) были едва видны. Видно, что данные упорядочены, и по фильмам и по зрителям. К исходному массиву “подсоединяется” мой рейтинг нескольких фильмов Y=[my_ratings Y]. Вот этот список.
Затем начинается тренировка/”подгонка” параметров, которыми являются веса для (фильм/зритель) и свойства (романтический, боевик, …), с помощью Octave функции fmincg, “подгоняющей” дифференцируемую много-параметрическую модель с помощью функций стоимости и частных производных.
theta=fmincg(@(t)(cofiCostFunc(t,Ynorm,R,
theta=fmincg(@(t)(cofiCostFunc(t,Ynorm,R,
num_users,num_movies,num_features,lambda)),
initial_parameters,options);
В результате получаем параметры theta, по которым вычисляются модельные рейтинги фильмов от всех зрителей, включая “подсоединенного” зрителя с малым числом просмотренных фильмов - меня. 10 фильмов с максимальным модельным рейтингом являются рекомендацией для просмотра.
Не уверен, что посмотрю. В качестве побочного результата, определил похожесть своих предпочтений с другими зрителями. Получилось, что не очень похож. Нашлось только четверо, кто оценил 5 фильмов из 14-ти так же, как я.
Думаю, какой следующий курс пройти (“взять”): NLP или Алгоритмы.
Есть и российский сайт, посвященный машинному обучению. Он содержит большое количество материала на русском. В списке прикладных программ анализа данных на сайте есть Matlab и нет Octave, видимо, по недоразумению.
Думаю, какой следующий курс пройти (“взять”): NLP или Алгоритмы.
Есть и российский сайт, посвященный машинному обучению. Он содержит большое количество материала на русском. В списке прикладных программ анализа данных на сайте есть Matlab и нет Octave, видимо, по недоразумению.
Спасибо за интересную информацию. А в лекциях основной упор на выбор/применение алгоритмов для конкретной задачи или есть и подробное изучение/описание самих алгоритмов?
ReplyDeleteLegends of the fall - хороший фильм ), а в наборе, который тебе "посоветовали", мне, например, не знаком ни один )
Алгоритмы рассматриваются, то есть, теория дается в рамках отведенного времени. Хорошо то, что тут же (в смысле немедленно) рассматривается пример использования. Я тоже не знаю ни одного из предложенных. Для российских фильмов такой базы данных не нашел, есть только усредненные рейтинги.
ReplyDelete