Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2015-11-01

Week 4, Logistic Regression

Курс Scalable Machine Learning. Hadoop, Apache Spark, Python, ML -- вот это всё.

Продолжаю конспектировать пройденный курс. В прошлый раз было описание лабораторки Lab 3. Продолжим.

Неделя 4: Логистическая регрессия;
предсказание кликов по рекламным банерам. В смысле, щелкнет посетитель по банеру или нет.

Logistic Regression and Click-through Rate Prediction.
Topics: Online advertising, linear classification, logistic regression, working with probabilistic predictions, categorical data and one-hot-encoding, feature hashing for dimensionality reduction.

Онлайн реклама как задача для large-scale ML комплекса.

Характеристики задачи таковы:
– миллиарды показов банеров миллионам людей
– менее 1% захода по рекламе
– легко собрать много labeled data

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

Как показатель успеха (за что платит рекламодатель) часто принимается клик по банеру.

The most common metric for success
is clickthrough rate prediction.
And this is what we'll be focusing on

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

This problem involves estimating a conditional probability,
or the probability of a click event
occurring given a set of predictive features

Данных много, но
However, the data is high-dimensional, sparse,
and skewed.
Additionally, only a small fraction of these ads
actually get clicked on by users,
and thus we have a heavily biased label training set.

In summary, the goal of the clickthrough rate prediction
problem is to use large amounts of data
to estimate the conditional probability that a user will
click on an ad, given features about the user, the ad,
and the publisher.

С задачей разобрались. Теперь посмотрим на инструмент её решения.

LINEAR CLASSIFICATION AND LOGISTIC REGRESSION

In this segment, we'll talk about linear classification
and relate it to the problem of linear regression.
We'll also introduce logistic regression,
which is a particular type of linear classification model.

Click-through rate prediction is another example (классификации, после примера с электропочтой – спам/не спам).
Here, our observations are (user, ad, publisher) triples.
Our labels are not-click and click.
And given a set of labeled observations,
we want to predict whether a new (user ad publisher) triple
will result in a click.

Точнее, оценка нужна не в виде кликнет/не кликнет а в виде вероятность(кликнет) в диапазоне 0 до 1.

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

In linear regression, our key assumption
is that there's a linear mapping between the features
and the label.


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

Почему линейное уравнение?
– это просто
– часто неплохо работает
– можно произвольно усложнять добавляя в уравнение фичи высших порядков

Осталось придумать, как сделать классификатор на линейном уравнении.
Нам нужен бинарный ответ: щелкнет/не щелкнет.

To achieve this goal, we can't directly
use the linear regression model since linear regression
predictions are real values rather than class predictions.

Ответ заключается в слове threshold




What this rule says is that a w transpose x is positive,
then our prediction y hat is 1.
And a w transpose x is negative, our prediction is negative 1.
And when w transpose x equals 0, we
can arbitrarily choose the prediction
to be 1 or negative 1.
Another way to say this is that w transpose x equals 0
is our decision boundary.

То есть, линия, рисуемая по полученному уравнению, это граница между да и нет.



This decision boundary is defined by the equation w transpose dot x equals 0.

ОК, глядя на знак результата, мы получаем ответ да/нет.
Возникает следующий вопрос: как оценить точность результата?
В линейной регрессии мы использовали среднеквадратичное отклонение – чем больше разница между лейблом и вычисленным результатом, тем больше ошибка/штраф.
Как быть с бинарной классификацией?
Допустим, так: угадал – штраф 0; не угадал – штраф 1. Тоже бинарненько.

Тогда можно сделать так: определим z как произведение лабели y на вычисленное значение wT * x
И определим штрафную функцию как 1 если z < 0 и 0 если z >= 0.


Теперь, когда с моделью и ее оценкой мы определились, можно подумать о том, как тренировать модель.
Суть тренировки в том, чтобы подобрать такой вектор параметров w, который дает минимальную ошибку (сумму значений штрафной функции) на тренировочном наборе данных x, y.

Задача оптимизации.


Но тут есть грабли: штрафная функция не convex

Unfortunately, this is not a convex optimization problem
as a 0-1 loss is not a convex function.
And thus, this is a hard problem to solve.

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

But all hope isn't lost, because instead of using the 0-1 loss
in our optimization problem, we can use a surrogate loss that
is convex and also provides a good approximation to 0-1 loss


For instance, the hinge loss is used to define the SVM model.
The exponential loss is used to describe the Adaboost model.
And the logistic loss is used to define the logistic regression
model.
In particular, we'll focus on logistic regression

Мы сосредоточимся на функции логистической регрессии, хотя SVM выглядит более обещающе.


Как результат применения convex функции, мы можем использовать стандартный метод оптимизации: gradient descent.


И, для борьбы с оверфиттингом, добавляем регуляризацию:

Finally, similar to ridge regression,
we can use a regularized version of logistic regression.
In this regularized version, we're
trading off between two terms.
The first is the log loss on the training data.
And the second is the model complexity.



we introduce a user specified hyper parameter, lambda,
to determine the trade-off between these two terms

В общем-то, это всё, что вам необходимо знать про логистическую регрессию.

В следующий раз продолжим конспектировать материалы 4-ой недели. Будет интерпретация логистической регрессии с точки зрения вероятности.




original post http://vasnake.blogspot.com/2015/11/week-4-logistic-regression.html

Комментариев нет:

Отправить комментарий

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) Java (22) humor (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Manager (15) web-browser (15) Никонов (15) Klaipeda (14) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) serialization (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)