Como os cientistas de dados da VK tornam a publicidade eficaz

No ano passado, Artem Popov, o líder da equipe VK Performance Advertising, falou conosco. Compartilhamos com vocês a transcrição da transmissão e da gravação.








Meu nome é Artem, sou o chefe de publicidade de desempenho da VK. Nossa equipe está empenhada no fato de, por um lado, tornar a publicidade no VK mais eficaz, mais lucrativa para os anunciantes e mais interessante para os usuários. Este é um grande objetivo do produto.



Por outro lado, tecnicamente, somos uma equipe de engenheiros de ML, desenvolvedores bastante comuns que gastam muito tempo em tarefas relacionadas à ciência de dados e ML. Hoje quero falar sobre esses dois tópicos, porque os dois me interessam, gosto de falar sobre eles. Espero sinceramente que tenhamos comunicação ao vivo; se alguém estiver assistindo à transmissão, será mais interessante se você escrever perguntas.



No geral, quero dividir nossa conversa em dois blocos. No primeiro, falarei sobre diferentes tarefas que são encontradas na publicidade na interseção com a ciência de dados. É por isso que a publicidade pode ser uma área interessante para um especialista em ML, para um especialista em ciência de dados. Por outro lado, quero compartilhar minha experiência de mudança para um projeto de engenharia de ML, o que estudei durante aqueles quatro anos em que fiz ML como parte da história da engenharia. E falar sobre o que se encontra nas grandes empresas, mas que não se fala em diferentes cursos; quais são as habilidades que são difíceis de aprender quando você está estudando ciência de dados ou ML em uma universidade ou educação online. Tentarei dedicar meia hora a cada tópico.



Em primeiro lugar, falarei sobre publicidade, tecnologias de publicidade, publicidade computacional como um campo de pesquisa, atividades científicas e de engenharia - ou seja, um campo do conhecimento; quais tarefas existem e por que é divertido realizá-las quando existe PNL e outras coisas exageradas, mas não se fala muito em publicidade.



O desafio geral é: temos um conjunto de anunciantes. Eles podem ser quaisquer usuários que desejam promover o conhecimento sobre seus produtos, seus negócios. Todos eles têm seus próprios objetivos diferentes. Alguém quer apenas mostrar seu anúncio para o maior número de pessoas possível; Por exemplo, a Coca-Cola condicional tem a tarefa de fazer com que todos conheçam sua marca, para que todos se lembrem que existe tal bebida, que é ano novo, e que não há alternativa senão essa bebida se você for à loja. Outro bom exemplo é o Fairy: quantos outros detergentes você conhece além dele? É tudo consciência de marca; grandes anunciantes definem uma meta - garantir que todos tenham em suas cabeças o conhecimento da existência de um determinado produto.



Existem outros objetivos. Por exemplo, mais aplicado, os chamados objetivos de desempenho. É quando o anunciante deseja que você siga o anúncio e execute uma ação. Por exemplo, eles foram ao site e deixaram um pedido de empréstimo. Ou você comprou algo em uma loja online. Etc.

Em geral, a tarefa da publicidade é trazer novos usuários para um negócio (os chamados leads) e fazer com que esses usuários façam algo útil para o anunciante e tragam lucro para o seu negócio.



Temos uma plataforma - um lugar onde permitimos que você exiba anúncios. No caso do VK, é uma fita; no caso de algum outro site, pode ser, por exemplo, um banner. O objetivo do site é ganhar dinheiro com publicidade; ele vende a atenção dos usuários por dinheiro. Graças a isso, o VK continua sendo um projeto gratuito; outros modelos de monetização poderiam ser considerados, mas o modelo de anúncio funciona bem para um serviço semelhante.



Os usuários geralmente não querem ver anúncios: eles não procuram o serviço para isso. Mas acontece que o contrato de publicidade funciona exatamente assim: o usuário paga com sua atenção para usar o serviço. Portanto, nosso objetivo como rede de publicidade é garantir que os usuários não fiquem bravos, a publicidade não os afaste ou assuste.



Seria absolutamente maravilhoso se os anúncios se tornassem úteis para o usuário - ou seja, as empresas e postagens promovidas se tornassem tão interessantes para o usuário quanto o conteúdo normal. Isso geralmente é perfeito.



Temos três forças: o usuário, o anunciante e o site. Devemos estabelecer essa interação entre eles para que cada um cumpra seus objetivos. Imagine: você vai ao serviço VK, abre o feed - e vê o local onde inserimos os anúncios. Existem muitos anunciantes que se candidatam a este recurso e querem ver exatamente seus anúncios - mas como escolher o anúncio que precisa ser mostrado a cada momento para cada usuário?



O método padrão usado ativamente em publicidade é o leilão online. Você pode ter visto diferentes opções de leilão na vida real ou no Ebay, por exemplo: pode ser uma situação em que todos podem dar lances. Um usuário diz - eu aposto 10 rublos, outro entra - aposta 20, o terceiro - 100 e assim por diante. Porém, é inviável a realização de leilões do tipo “quem pagou mais, ganhou” no ambiente da Internet, por isso são utilizados leilões fechados. Nesse caso, cada um dos participantes faz uma aposta silenciosamente. Falando figurativamente, todos os pedaços de papel com as apostas são colocados no pote, e então alguém vem, desmonta, encontra o pedaço de papel com o maior número e diz - você ganhou.



Digamos que haja dois anunciantes - por exemplo, Nike e Coca-Cola. Um deles está disposto a pagar 5 copeques por cada exibição, e o outro - 10. O outro ganha, e o desenvolvimento da história depende do tipo de leilão. Existem dois tipos principais de publicidade: leilões de primeiro e segundo preço. Em um leilão de primeiro preço, o vencedor paga o preço que ele nomeou. Por exemplo, a Coca-Cola diz: “Vou pagar 10 copeques”, sem ver as taxas de outros usuários; o leilão diz - OK, 10 copeques. A Nike diz "5 copeques", a Coca-Cola ganha e paga 10 copeques.



No entanto, há também um leilão de segundo preço: neste caso, o vencedor deve pagar exatamente a quantia necessária para vencer todos os outros lances. Em nosso caso, uma etapa de 1 copeque pode ser usada, por exemplo. Imagine a situação: a mesma Coca-Cola e a mesma Nike aparecem. A Coca-Cola diz: "Estou pronto para pagar 100 rublos pelo show", e a Nike diz: "Estou pronto para pagar 1 copeque." E a Coca-Cola ficará muito ofendida ao saber que poderia ter vencido pagando 2 copeques em vez de 100 rublos. O leilão de segundo preço é considerado mais justo para todos os participantes.



Com base nisso, uma determinada propriedade é considerada muito importante para um anunciante: sempre coloque um preço máximo honesto nos leilões que você está disposto a pagar por uma impressão. Isso é necessário para construir qualquer estratégia de negociação competente.



No leilão de primeiro preço, você precisa inventar uma estratégia astuta, pense - aqui, tal e tal anunciante pode dar lances tanto, mas nos leilões de segundo preço isso não é necessário. Todos colocam a taxa que estão dispostos a pagar o máximo. Se você ganhou, você paga exatamente a mesma quantia ou menos; caso contrário, você não estava pronto para pagar mais. Esta é uma grande propriedade desse tipo de leilão, que passou da teoria ao uso generalizado em sistemas de publicidade.



Entretanto, não foi o caso. Parece, do ponto de vista teórico, o leilão de segundo preço é muito bom, e suas propriedades permitem que seja muito prático. Mas, na verdade, quando nos deparamos com sistemas reais, descobrimos que existem vários fatores que garantem a popularidade dos leilões de primeiro preço - por algum motivo, as pessoas preferem usá-los, em vez de leilões de segundo preço. Um dos dois pontos principais sobre o qual gostaria de dizer é que o leilão de segundo preço não é transparente. Ou seja, quando um leilão de publicidade é organizado por alguma plataforma sobre a qual você nada sabe - você apenas participa como anunciante - ele diz que seu lance de (digamos) 10 copeques ganhou e você tem que pagar o segundo preço - deixe estar 9 copeques. Este segundo preço é opaco; não está claro de onde veio. Geralmente,o site pode facilmente enganar o anunciante fazendo as chamadas apostas falsas. Também existem mecanismos justos para lances adicionais - por exemplo, “preço reverso”: você declara que um determinado leilão não pode ser vendido por menos de 9 copeques e esse lance honesto aparece. Mas a transparência é muito importante e sua falta de transparência afasta os anunciantes. Quando você não sabe o que está acontecendo sob o capô de um sistema de publicidade, precisa novamente apresentar algumas estratégias: você não pode simplesmente adotar e usar a abordagem de definir apenas os preços que está disposto a pagar.e sua ausência desativa os anunciantes. Quando você não sabe o que está acontecendo sob o capô de um sistema de publicidade, precisa novamente apresentar algumas estratégias: você não pode simplesmente adotar e usar a abordagem de definir apenas os preços que está disposto a pagar.e sua ausência desativa os anunciantes. Quando você não sabe o que está acontecendo sob o capô de um sistema de publicidade, precisa novamente apresentar algumas estratégias: você não pode simplesmente adotar e usar a abordagem de definir apenas os preços que está disposto a pagar.



O segundo ponto é que o leilão de segundo preço funciona bem em um cenário ideal, com apenas um leilão acontecendo por vez. Em um sistema de publicidade real, milhões deles ocorrem por segundo, convencionalmente. Nessas condições, já é necessário traçar estratégias, e quebra a ideia de que o anunciante sempre tem uma estratégia simples e pronta para uma negociação perfeita em um leilão.



Eu gostaria de falar sobre os momentos que surgem no contexto das tarefas de projetar leilões - como você pode projetá-los mais interessantes, mais úteis e assim por diante. Quero mencionar dois pontos. Em primeiro lugar, no leilão, ao que parece, tudo deve acontecer com base no valor máximo, a quantidade máxima de dinheiro que a rede de publicidade vai ganhar com a venda do espaço; Porém, na realidade, o valor que é vendido no leilão pode ser expresso de diferentes maneiras para o site - não apenas no valor que o anunciante está disposto a pagar. Por exemplo, é muito importante para nós que os usuários não fiquem enfurecidos com nossa publicidade - é desejável que ela seja útil para eles. Como parte da tarefa de projetar um leilão, você deve criar métricas adicionais para classificar os anúncios. Isso resulta em uma série de métricas: lucro esperado, a probabilidade de uma reação negativa do usuário e assim por diante.



A segunda variante do problema é um leilão “não ganancioso”. Neste caso, entendemos que nós, como rede de publicidade, poderíamos ganhar mais se não vendêssemos sempre espaços publicitários ao vencedor, mas os distribuíssemos entre todos os anunciantes de forma a maximizar todos os seus orçamentos publicitários, deixando alguns depois, honestidade no leilão. Ou seja, se temos vários anunciantes, e um deles é mais rico do que os outros e compra constantemente em leilões, talvez nem sempre devamos dar a ele o lance do vencedor. Tal "problema da mochila" - talvez você se lembre daqueles dos cursos sobre programação ou algoritmos de estrutura de dados, se você tivesse essa história. É uma tarefa muito legal, é muito interessante fazer, e há artigos científicos sobre ela.



No VK, estamos apenas chegando a esta tarefa; Temos muitas tarefas, e outra grande parte das tarefas que estão na publicidade já estão mais próximas do ML. Devido ao fato de termos que cumprir diferentes objetivos dos anunciantes, precisamos prever com que probabilidade o usuário realizará esta ou aquela ação para utilizar esse conhecimento na formação da estratégia de licitação do leilão.



Ou seja, o anunciante diz: Quero o máximo possível de compras em minha loja, para gastar meu orçamento da melhor forma possível. Nós, como plataforma de publicidade, estamos pensando em como destacar os usuários com maior probabilidade de comprar algo na loja. Surge um problema típico de ML. Classificação binária: '1' - o usuário clicou no anúncio e fez algo bom (comprou), '0' - o usuário ignorou o anúncio. Com base nesse problema, precisamos construir uma classificação binária, em que, na saída, usamos a probabilidade de um evento útil como parte dos cálculos adicionais de qual lance usaremos no leilão. A tarefa parece muito banal em termos de ML - como, pegue e faça. Mas, na vida real, essa tarefa tem muitas dificuldades, e contarei algumas. O principal éque a publicidade geralmente é um projeto de alta carga. Tanto em termos de dados quanto em termos de carga. Você precisa responder rapidamente a uma solicitação. A janela é de, digamos, 100 milissegundos - e você precisa de tempo para responder. Com base nisso, certas restrições são impostas a nós - especificamente, sobre como - na engenharia - os modelos que usamos para prever a publicidade podem funcionar. Você pode inventar um monte de coisas legais, fazer redes neurais complexas que, através de várias camadas, destacam interações não lineares entre recursos, mas na vida é necessário que tudo isso funcione muito rapidamente.que usamos para prever anúncios. Você pode inventar muitas coisas legais, fazer redes neurais complexas que, através de várias camadas, destacam interações não lineares entre recursos, mas na vida é necessário que tudo isso funcione muito rapidamente.que usamos para prever anúncios. Você pode inventar muitas coisas legais, fazer redes neurais complexas que, através de várias camadas, destacam as interações não lineares entre os recursos, mas na vida é necessário que tudo isso funcione muito rapidamente.



Ele é treinado em grandes quantidades de dados. A tarefa é em grande escala, com conjuntos de dados de terabyte. Com base nisso, você geralmente tem que fazer coisas como computação distribuída, treinamento de modelo distribuído, pensar sobre quais modelos usar. A publicidade tradicionalmente usa modelos lineares, como regressão logística ou aumento de gradiente; às vezes eles mudam para coisas mais legais, como máquinas de fatoração. Ou seja, a escolha de modelos é grande, mas normalmente são utilizados modelos bastante simples - devido ao grande carregamento.



Outro ponto próximo ao ML: usamos dados extremamente desequilibrados em termos de feedback. Existe um 1 para cada 10.000 zeros. Como treinar máquinas de ML nessas condições é uma boa pergunta. Você tem que usar truques diferentes; a principal delas é justamente a formulação do problema: não tente prever se haverá um clique (compra) ou não, por exemplo, mas use abordagens relacionadas a probabilidades, suavize dados de baixa cardinalidade ao máximo, e assim por diante. Muito pode ser pensado, mas a dificuldade é que eventos positivos raramente ocorrem na tarefa.



Quando você clica em um anúncio e compra algo, nem sempre faz isso imediatamente. Ou seja, muitas vezes os eventos direcionados que os anunciantes desejam acontecem com um longo atraso. Isso pode ser não apenas uma compra - por exemplo, pode ser o registro no jogo e levar um personagem ao nível 10 ou a aprovação de um pedido de empréstimo. Essas coisas podem acontecer em alguns dias. E, quando precisamos treinar modelos, que, segundo o anúncio, deveriam dizer agora mesmo que o usuário fará algo, mas, na verdade, recebemos um feedback positivo poucos dias depois de algo acontecer, e isso cria problemas adicionais. Para lidar com esses problemas, existem várias soluções diferentes que surgiram na ciência e na prática. Uma complexidade tão engraçada.



Outro ponto: quando um usuário vê anúncios de determinados produtos, ele pode entrar em contato com eles a partir de vários canais de marketing. Por exemplo, você saiu para a rua - você viu um outdoor "Taxi VKontakte"; começou a folhear o feed - há também um anúncio de "Táxi VKontakte", foi para outro serviço - e também há um anúncio de "Táxi VKontakte", do serviço de publicidade Yandex ou Google. Você diz - sim, eu já entendo, coloque o aplicativo. E depois disso Yandex, VK, Google, o outdoor precisa descobrir de quem é a participação nesse processo - em uma ação útil para o anunciante - quantos por cento.



Esse processo é chamado de "atribuição" - a questão de alocar qual contato com o anunciante influenciou tão fortemente sua decisão de realizar a ação direcionada. Normalmente são usados ​​modelos simples - por exemplo, "atribuição do último clique": o último anúncio em que você clicou recebe todos os prêmios. Mas então descobrimos que não é lucrativo se envolver no primeiro "contato frio" - mostrar anúncios a um usuário que não está familiarizado com o produto. Com base nisso, existem muitos modelos de ML diferentes (incluindo) que permitem distribuir melhor o lucro das impressões. Eles usam, entre outras coisas, chips do tipo atenção, algumas coisas mais interessantes de redes neurais. Tarefa legal. E seu objetivo, no final das contas, é barganhar melhor, mais certo, mais certo e assim por diante.



Quanto melhor você entender quem influenciou a decisão final de compra, melhor entenderá quanto entregar em um determinado momento. Como resultado, todo o setor está se movendo no sentido de que trabalhar com uma previsão da probabilidade de você comprar algo é menos eficaz do que trabalhar com uma ideia do grau de influência na decisão de compra. Talvez você já estivesse pronto para comprar o jogo de tabuleiro que visitou. Mas a publicidade online está começando a aparecer. Talvez este anúncio não tivesse existido se todos decidissem inicialmente que você compraria este jogo de qualquer maneira, e anúncios adicionais não sejam necessários - você já tomou sua decisão. Penso no termo "teste de incrementalidade" e ainda tem a ver com o domínio ML de "inferência causal". Ou seja, estamos passando da tarefa de prever a probabilidade de realizar uma ação alvo para prever o impacto - isto é,a diferença na probabilidade do que você comprará depois de ver o anúncio, menos o que você já comprou. Esta também é uma transição muito legal, uma transição para uma nova ideia de como trabalhar, como prever alguns eventos.



Em geral, existem muitas tarefas na publicidade, e quase todas decorrem do desejo inicial de cumprir a tarefa do anunciante. A meta "Quero o máximo possível de compras em minha loja" se transforma em uma sequência de lances no leilão, pois todos os anunciantes são eliminados no leilão por impressões. Esta é uma estratégia. E precisamos fazer a transição mais legal do objetivo original para a sequência de apostas. Isso implica no desejo de entender o comportamento do usuário, extrair interesses comerciais, direcionar anúncios automaticamente, coletar criativos - é assim que os anúncios se parecem - e assim por diante.



Se alguém estiver interessado em aprender mais sobre isso, tenho uma palestra em um encontro, onde falo em detalhes sobre o que um cientista de dados pode fazer em publicidade e por que trabalhar nisso pode ser interessante. Acabou sendo uma descoberta para mim. Inicialmente, quando entrei na indústria, pensei - bem, publicidade, o que é interessante. O primeiro, segundo, terceiro ano se passou - e eu percebi quantas tarefas legais existem, e como é interessante fazer isso do ponto de vista de um engenheiro.



Passarei agora para o ML em produção. Agora você fez cursos de aprendizado de máquina ou estudou na universidade. Você é um grande especialista em Kegel, digamos, e você é um ótimo especialista em clicar em tarefas de análise de dados em uma competição. Você chega a uma empresa real onde um grande produto está sendo desenvolvido de forma iterativa e consistente. E aqui alguns desmantelamentos acontecem. Acontece que você simplesmente não tem muitas habilidades que gostaria de possuir no momento em que entra no setor. Ninguém te ensinou ou explicou como funciona na realidade; quais são as dificuldades do setor, quão diferente é resolver problemas com uma formulação clara. Se no campo da programação ainda se fala muito sobre isso, no campo da ciência de dados não basta.



Quais são os desafios enfrentados pelos recém-chegados às equipes de produto que trabalham no mesmo produto há muito tempo - por exemplo, tornar a publicidade VK eficaz? Por "novatos" quero dizer eu mesmo, incluindo; Tenho feito isso há quatro anos e ainda me sinto um novato. Isso é uma coisa muito complexa e interessante de entender.

A primeira coisa que quero dizer é o desejo de iniciar uma tarefa existente imediatamente com algum método progressivo legal que pode ser encontrado na ciência; desejo de criar uma nave espacial que faça tudo bacana de uma vez. Na vida real, no campo do desenvolvimento de produtos, a ciência de dados é um lugar onde podemos prever muito mal qual método funcionará no final. É muito difícil trabalhar com os requisitos originais do produto, porque você não sabe como resolver o problema.



Você tem uma formulação de tarefas: por exemplo, criar um sistema de moderação automática que deve resolver alguns problemas iniciais. Você pode correr e encontrar algum artigo super-top, em que o problema seja resolvido de forma ideal, enrole os transformadores. Ou você pode fazer uma heurística simples que vai olhar quantas vezes nós aprovamos um determinado anunciante antes, pegar uma parte desse número, comparar com 70%, por exemplo, e dizer: este já foi aprovado antes. Tal coisa pode imediatamente ajudar muito uma empresa, trazer informações úteis. E um sistema complexo leva muito tempo, e não é verdade que valha a pena. Na ciência de dados, você precisa chegar a esta ideia muito rapidamente: você está constantemente trabalhando no modo de hipóteses, você não sabe o que vai funcionar e, a fim de reduzir riscos e agregar valor ao usuário final e à empresa o mais rápido possível,você precisa lidar com tarefas de uma solução simples a uma complexa. Freqüentemente - para lidar com, começando com heurísticas, sem qualquer ML - pode não haver dados para isso. Isso pode abalar o cientista de dados interessado em modelos neurais giratórios. Mas sem isso, você não pode obter a linha de base inicial - uma pequena etapa a partir da qual você pode começar. Você pode fazer por muito tempo o que não vai funcionar.



A coisa mais difícil e incomum do trabalho na indústria é que, depois de fazer um modelo, colocá-lo em produção, sua vida está apenas começando. Precisa ser ativamente apoiado e alterado. Com a modelo, enquanto ela vive, há muitas mudanças diferentes. Primeiro, existe o que se chama de treinamento servindo de inclinação.



De uma forma simples: se um modelo funciona em produção em determinados dados, ou em um conjunto de conjuntos gerais de tarefas que seu modelo deve resolver - e foi treinado em outros dados obtidos de outras maneiras -, erros muitas vezes ocorrem neste ponto, e o modelo começa a funcionar mal. Idealmente, você precisa construir um sistema em que os modelos durante a análise e durante a preparação inicial sejam treinados nos mesmos dados com os quais trabalharão na produção.



Em segundo lugar, a qualquer momento algum recurso, ou o próprio modelo, pode começar a funcionar de maneira incorreta, inadequada. Você tem um repositório que armazena características; algo mudou, ao invés de zeros, null começou a fluir, ao invés de "-1" outros valores começaram a ser retornados; ou alguém multiplicou esses valores por 100 porque pensava que eram porcentagens, não frações. E seu modelo de repente começa a funcionar mal. Você precisa notar essas mudanças de alguma forma. A qualidade mais legal do modelo de ML é o erro silencioso; ela nunca dirá que algo deu errado - ela sempre dará algum resultado, dependendo do que você deu a ela. Lixo entra, lixo sai. Isso deve ser monitorado de alguma forma. Com base nisso, há uma grande quantidade de coisas que precisam ser rastreadas enquanto o modelo está sendo executado em produção. Você precisa construir um sistema de monitoramento, monitorar,para que a distribuição de recursos não mude muito, e assim por diante. Você tem que entender que a modelo pode dar jogo completo a qualquer momento e de alguma forma viver nessas condições. E se esses resultados retirassem dinheiro diretamente de nossos usuários - licitando em um leilão de anúncios ou negociando em uma bolsa, ou qualquer outra coisa? Existem muitas maneiras de fazer isso, mas é importante pensar nisso primeiro.



Com base nisso, como muda a vida de um cientista de dados, que entra em um ambiente onde é necessário desenvolver modelos iterativamente? Parece-me que primeiro você precisa ser um bom engenheiro e depois um bom pesquisador. Porque seu código e suas conclusões, os insights que você recebe durante a pesquisa e análise, seus modelos - tudo o que é produto de seu trabalho de cientista de dados - não serão usados ​​2 ou 10 vezes. Muitas pessoas verão como os experimentos são construídos, como os resultados são obtidos, por que, onde, como o que funciona e como é usado na produção. Portanto, o que mais falta nas pessoas que vêm para a indústria do zero - por exemplo, da universidade, levadas pelo tópico de ciência de dados, ou analistas, ou ML - são habilidades de engenharia. Em primeiro lugar, um cientista de dados é um subtipo de desenvolvedor.Ele também trabalha com código, ele também trabalha com algo que então funciona na produção em um ambiente mutável que as pessoas usam. Eles lerão seu código. Você precisará encontrar soluções eficazes, bem suportadas e testáveis. Esta é a parte que falta a muitos candidatos. Portanto, se você é um iniciante em ciência de dados, preste muita atenção às habilidades do desenvolvedor. Como escrever código eficiente, compreensível e bem mantido; soluções de engenharia para construir efetivamente processos de troca de dados. Tudo isso vai te ajudar muito em sua carreira.que falta a um grande número de candidatos. Portanto, se você é um iniciante em ciência de dados, preste muita atenção às habilidades do desenvolvedor. Como escrever código eficiente, compreensível e bem mantido; soluções de engenharia para construir efetivamente processos de troca de dados. Tudo isso vai te ajudar muito em sua carreira.que falta a um grande número de candidatos. Portanto, se você é um iniciante em ciência de dados, preste muita atenção às habilidades do desenvolvedor. Como escrever código eficiente, compreensível e bem mantido; soluções de engenharia para construir efetivamente processos de troca de dados. Tudo isso vai te ajudar muito em sua carreira.



A segunda dica e a segunda coisa que separa os cientistas de dados legais daqueles que estão trabalhando duro é a imersão no contexto do produto e na parte de engenharia do ambiente do seu modelo. Digamos que você esteja desenvolvendo um modelo e, como cientista de dados, seja fácil para você dizer: “Meu trabalho é desenvolver o modelo, todo o resto está fora da minha responsabilidade. Eu ensino modelos, esse é o meu negócio. O back-end irá incorporá-los, o engenheiro de dados irá preparar os dados, o testador irá testá-los e o gerente de produto decidirá como usá-los. " Mas um grande número de implicações e maneiras de tornar o modelo mais interessante e valioso está além do processo de design do próprio modelo. Exemplo: se você está classificando resultados de pesquisa, está classificando documentos vindos de fora; existe algum tipo de seleção de candidatos. Se você sabe como funciona essa seleção, pode entender facilmenteque o gargalo no trabalho não é que o modelo não funcione bem, mas que documentos incorretos, desinteressantes e incompletos são submetidos à entrada. Por outro lado, se você sabe que em seu produto seu modelo pode, em certas circunstâncias, não funcionar como você gostaria, mas é muito difícil fazer com que funcione melhor, então você pode trocar o produto pelo modelo. Podemos dizer: agora o produto está organizado de forma diferente, agora não é o usuário que chama o modelo, mas o modelo chama algum tipo de ferramenta automática que coordena vários parâmetros que o usuário não pode seguir. A ideia é que você possa trocar o produto pelo modelo, e não vice-versa. Se você estiver imerso nessas áreas, como cientista de dados e engenheiro de ML, poderá gerar enormes lucros e benefícios para seu produto e usuários.que o modelo não funciona bem, mas que documentos incorretos, desinteressantes e incompletos são enviados para entrada. Por outro lado, se você sabe que em seu produto seu modelo pode, em certas circunstâncias, não funcionar como você gostaria, mas é muito difícil fazer com que funcione melhor, então você pode trocar o produto pelo modelo. Podemos dizer: agora o produto está organizado de forma diferente, agora não é o usuário que chama o modelo, mas o modelo chama algum tipo de ferramenta automática que coordena vários parâmetros que o usuário não pode seguir. A ideia é que você possa trocar o produto pelo modelo, e não vice-versa. Se você estiver imerso nessas áreas, como cientista de dados e engenheiro de ML, poderá gerar enormes lucros e benefícios para seu produto e usuários.que o modelo não funciona bem, mas que documentos incorretos, desinteressantes e incompletos são enviados para entrada. Por outro lado, se você sabe que em seu produto seu modelo pode, em certas circunstâncias, funcionar de maneira diferente do que você gostaria, mas é muito difícil fazer esse trabalho melhor, então você pode trocar o produto pelo modelo. Podemos dizer: agora o produto está organizado de forma diferente, agora não é o usuário que chama o modelo, mas o modelo chama algum tipo de ferramenta automática que coordena vários parâmetros que o usuário não pode seguir. A ideia é que você possa trocar o produto pelo modelo, e não vice-versa. Se você estiver imerso nessas áreas, como cientista de dados e engenheiro de ML, poderá gerar enormes lucros e benefícios para seu produto e usuários.documentos incompletos. Por outro lado, se você sabe que em seu produto seu modelo pode, em certas circunstâncias, funcionar de maneira diferente do que você gostaria, mas é muito difícil fazer esse trabalho melhor, então você pode trocar o produto pelo modelo. Podemos dizer: agora o produto está organizado de forma diferente, agora não é o usuário que chama o modelo, mas o modelo chama algum tipo de ferramenta automática que coordena vários parâmetros que o usuário não pode seguir. A ideia é que você possa trocar o produto pelo modelo, e não vice-versa. Se você estiver imerso nessas áreas, como cientista de dados e engenheiro de ML, poderá gerar enormes lucros e benefícios para seu produto e usuários.documentos incompletos. Por outro lado, se você sabe que em seu produto seu modelo pode, em certas circunstâncias, não funcionar como você gostaria, mas é muito difícil fazer esse trabalho melhor, então você pode trocar o produto pelo modelo. Podemos dizer: agora o produto está organizado de forma diferente, agora não é o usuário que chama o modelo, mas o modelo chama algum tipo de ferramenta automática que coordena vários parâmetros que o usuário não pode seguir. A ideia é que você possa trocar o produto pelo modelo, e não vice-versa. Se você estiver imerso nessas áreas, como cientista de dados e engenheiro de ML, poderá gerar enormes lucros e benefícios para seu produto e usuários.como gostaríamos, mas é muito difícil fazer esse trabalho melhor, então você pode trocar o produto pelo modelo. Podemos dizer: agora o produto está organizado de forma diferente, agora não é o usuário que chama o modelo, mas o modelo chama algum tipo de ferramenta automática que coordena vários parâmetros que o usuário não pode seguir. A ideia é que você possa trocar o produto pelo modelo, e não vice-versa. Se você estiver imerso nessas áreas, como cientista de dados e engenheiro de ML, poderá gerar enormes lucros e benefícios para seu produto e usuários.como gostaríamos, mas é muito difícil fazer esse trabalho melhor, então você pode trocar o produto pelo modelo. Podemos dizer: agora o produto está organizado de forma diferente, agora não é o usuário que chama o modelo, mas o modelo chama algum tipo de ferramenta automática que coordena vários parâmetros que o usuário não pode seguir. A ideia é que você possa trocar o produto pelo modelo, e não vice-versa. Se você estiver imerso nessas áreas, como cientista de dados e engenheiro de ML, poderá gerar enormes lucros e benefícios para seu produto e usuários.que o usuário não pode seguir. A ideia é que você possa trocar o produto pelo modelo, e não vice-versa. Se você estiver imerso nessas áreas, como cientista de dados e engenheiro de ML, poderá gerar enormes lucros e benefícios para seu produto e usuários.que o usuário não pode seguir. A ideia é que você possa trocar o produto pelo modelo, e não vice-versa. Se você estiver imerso nessas áreas, como cientista de dados e engenheiro de ML, poderá gerar enormes lucros e benefícios para seu produto e usuários.



Voltando à questão de que o ML é o reino da especulação. Nunca sabemos como chegar a um ótimo produto, temos que tentar caminhos diferentes para a solução final. Portanto, você precisa construir o fluxo de trabalho de maneira um pouco diferente. Freqüentemente, as pessoas, especialmente engenheiros nos períodos iniciais de desenvolvimento de carreira, pensam que todos os tipos de chips gerenciais - SCRUM, Agile - são tudo besteira e não funcionam. No entanto, muitas vezes eles realmente não funcionam porque são usados ​​no contexto errado. Por exemplo, se você entrar em uma equipe de ciência de dados SCRUM, será difícil e doloroso para você. De repente, descobre-se que a pesquisa se tornou difícil de prever e você não sabe como chegará ao resultado, mas aqui - iterações de duas semanas, outra coisa, em geral, o gerenciamento gera lixo desnecessário. Processos de trabalho,dentro do qual você trabalha deve ajudá-lo, não atrapalhar. Ou seja, quando a ciência de dados pega e aplica métodos de desenvolvimento de software convencional, nem sempre é eficaz.



Portanto, quero dizer separadamente: se você trabalha como cientista de dados e tem que interagir com pessoas diferentes - clientes, colegas, cooperar no trabalho - então seria bom para você entender como construir melhor um processo colaborativo, atividade de equipe auto-organizada. Uma boa maneira de entender como fazer isso é acessando uma comunidade chamada LeanDS. Lá se reuniram pessoas interessadas em entender como construir melhor os processos de trabalho em problemas de ML em um ambiente de desenvolvimento de produto. A partir daí, você pode aprender muitas coisas legais que as pessoas já descobriram e que diferentes especialistas usam em diferentes empresas. E pelo que eu aconselharia, em primeiro lugar, você precisa mudar para uma abordagem ao formular todas as tarefas por meio de hipóteses de produto. Quando você não sabeque vai trazer resultados, mas você imagina: eu acho que tal e tal coisa vai ajudar a promover as tarefas do usuário fulano de tal, bombear métricas, e em tal e tal tempo pode ser verificado. Essas hipóteses são muito mais fáceis de trabalhar. Com base em um fluxo de trabalho tão incompreensível, onde é muito difícil prever quanto tempo levará sua tarefa, quando chegará ao resultado e de que forma, na minha opinião, o Kanban funciona muito bem. Não vou falar sobre isso por muito tempo, apenas recomendo: tente olhar para a comunidade LeanDS. Confira seus materiais. Acho que todos que trabalham com ciência de dados e se deparam com processos que migraram do desenvolvimento convencional estarão interessados ​​em entender o que pode ser feito de maneira diferente e como usar os processos a seu favor.que tal e tal coisa ajudará a promover as tarefas do usuário, bombear métricas e, em tal e tal momento, pode ser verificado. Essas hipóteses são muito mais fáceis de trabalhar. Com base em um fluxo de trabalho tão incompreensível, onde é muito difícil prever quanto tempo levará sua tarefa, quando chegará ao resultado e de que forma, na minha opinião, o Kanban funciona muito bem. Não vou falar sobre isso por muito tempo, apenas recomendo: tente olhar para a comunidade LeanDS. Confira seus materiais. Acho que todos que trabalham com ciência de dados e se deparam com processos que migraram do desenvolvimento convencional estarão interessados ​​em entender o que pode ser feito de maneira diferente e como usar os processos a seu favor.que tal e tal coisa ajudará a promover as tarefas do usuário, bombear métricas, e em tal e tal tempo pode ser verificado. Essas hipóteses são muito mais fáceis de trabalhar. Com base em um fluxo de trabalho tão incompreensível, onde é muito difícil prever quanto tempo levará sua tarefa, quando chegará ao resultado e de que forma, na minha opinião, o Kanban funciona muito bem. Não vou falar sobre isso por muito tempo, apenas aconselho: tente olhar para a comunidade LeanDS. Confira seus materiais. Acho que todos que trabalham em ciência de dados e se deparam com processos que migraram do desenvolvimento convencional estarão interessados ​​em entender o que pode ser feito de maneira diferente e como usar os processos em seu benefício.Essas hipóteses são muito mais fáceis de trabalhar. Com base em um fluxo de trabalho tão incompreensível, onde é muito difícil prever quanto tempo levará sua tarefa, quando chegará ao resultado e de que forma, na minha opinião, o Kanban funciona muito bem. Não vou falar sobre isso por muito tempo, apenas recomendo: tente olhar para a comunidade LeanDS. Confira seus materiais. Acho que todos que trabalham com ciência de dados e se deparam com processos que migraram do desenvolvimento convencional estarão interessados ​​em entender o que pode ser feito de maneira diferente e como usar os processos a seu favor.Essas hipóteses são muito mais fáceis de trabalhar. Com base em um fluxo de trabalho tão incompreensível, onde é muito difícil prever quanto tempo levará sua tarefa, quando chegará ao resultado e de que forma, na minha opinião, o Kanban funciona muito bem. Não vou falar sobre isso por muito tempo, apenas aconselho: tente olhar para a comunidade LeanDS. Confira seus materiais. Acho que todos que trabalham com ciência de dados e se deparam com processos que migraram do desenvolvimento convencional estarão interessados ​​em entender o que pode ser feito de maneira diferente e como usar os processos a seu favor.apenas uma dica: tente olhar para a comunidade LeanDS. Confira seus materiais. Acho que todos que trabalham com ciência de dados e se deparam com processos que migraram do desenvolvimento convencional estarão interessados ​​em entender o que pode ser feito de maneira diferente e como usar os processos a seu favor.apenas uma dica: tente olhar para a comunidade LeanDS. Confira seus materiais. Acho que todos que trabalham em ciência de dados e se deparam com processos que migraram do desenvolvimento convencional estarão interessados ​​em entender o que pode ser feito de maneira diferente e como usar os processos em seu benefício.



Como resultado, direi o que os caras que vêm para fazer tarefas de ciência de dados no início de suas carreiras estão faltando e como você pode se tornar mais legal como especialista e aumentar as chances de conseguir um emprego em um lugar que você gosta.



Primeiro, como eu disse antes, as habilidades de engenharia são muito importantes para um cientista de dados. Nada menos do que habilidades relacionadas a ML, análise de dados, teoria da probabilidade e assim por diante. Em primeiro lugar, desejo que você seja um engenheiro legal e, em segundo lugar, um desenvolvedor. Em segundo lugar, muitas pessoas não têm uma habilidade clara de reformular um problema de negócios em um problema de ciência de dados. Esta é uma habilidade separada. Esta é uma situação em que você precisa entender exatamente o que o cliente quer de você - bem, vamos chamá-lo de uma pessoa que deseja que algo funcione bem. Voltando ao exemplo da moderação automática: o que exatamente ele quer? Afinal, a tarefa de moderação automática pode ser definida de maneiras muito diferentes, com diferentes coisas específicas que queremos melhorar em nosso sistema. Com base nas tarefas, a tarefa de ciência de dados é formulada de maneiras diferentes; com base no problema de ciência de dados, as métricas otimizadas são formuladas de diferentes maneiras,um método para selecionar um conjunto de dados, avaliar a qualidade e assim por diante. Essa habilidade é muito valiosa para todos os cientistas de dados. Digamos que um cliente diga que seus moderadores não conseguem lidar com o fluxo de tarefas de processamento para verificar se o anúncio é bom ou precisa ser banido com um tópico específico. Então você descobrirá que há muitos motivos diferentes para o banimento e, durante a moderação, você precisa descrevê-los claramente para que o anunciante possa corrigir o anúncio. Com base nisso, você decide que precisa fazer algum tipo de classificação multiclasse que irá gerar um texto explicando o motivo, e a tarefa será muito difícil. Mas espere - talvez o problema possa ser reformulado de uma maneira diferente. E acontece que você pode se concentrar não em rejeitar anúncios, mas em escolher o anúncio certo. Se o anúncio for bom, você pode simplesmente ignorá-lo,se for ruim, pode ser dado a moderadores ao vivo, e nenhuma explicação precisa ser gerada. Com base nisso, você entende: se você precisa se concentrar no que é bom, o que pode ser pulado, então você precisa entender como gerenciar esse negócio - esse fluxo de anúncios que vai passar pelo seu sistema. Você entende: sim, com base nesta tarefa, posso escolher ROC AUC como a métrica que me convém, ela descreve bem a relação entre a precisão do modelo e o número de anúncios que passarão automaticamente pelo nosso sistema. Etc. Ou seja, com base neste diálogo entre o cliente condicional e você, como especialista, você pode simplificar muito sua tarefa, tendo um bom entendimento de como reformular uma tarefa de negócio em uma tarefa de ciência de dados.você entende: se você precisa se concentrar no que é bom, o que pode ser ignorado, você precisa entender como gerenciar esse negócio - esse fluxo de anúncios que vai passar pelo seu sistema. Você entende: sim, com base nesta tarefa, posso escolher ROC AUC como a métrica que me convém, ela descreve bem a relação entre a precisão do modelo e o número de anúncios que passarão automaticamente pelo nosso sistema. Etc. Ou seja, com base neste diálogo entre o cliente condicional e você, como especialista, você pode simplificar muito sua tarefa, tendo um bom entendimento de como reformular uma tarefa de negócio em uma tarefa de ciência de dados.você entende: se você precisa se concentrar no que é bom, o que pode ser ignorado, você precisa entender como gerenciar esse negócio - esse fluxo de anúncios que vai passar pelo seu sistema. Você entende: sim, com base nesta tarefa, posso escolher ROC AUC como a métrica que me convém, ela descreve bem a relação entre a precisão do modelo e o número de anúncios que passarão automaticamente pelo nosso sistema. Etc. Ou seja, a partir desse diálogo entre o cliente condicional e você, como especialista, você pode simplificar muito sua tarefa, tendo um bom entendimento de como reformular uma tarefa de negócio em uma tarefa de ciência de dados.Você entende: sim, com base neste problema, posso escolher ROC AUC como a métrica que me convém, ela descreve bem a relação entre a precisão do modelo e a quantidade de anúncios que passarão automaticamente pelo nosso sistema. Etc. Ou seja, com base neste diálogo entre o cliente condicional e você, como especialista, você pode simplificar muito sua tarefa, tendo um bom entendimento de como reformular uma tarefa de negócio em uma tarefa de ciência de dados.Você entende: sim, com base nesta tarefa, posso escolher ROC AUC como a métrica que me convém, ela descreve bem a relação entre a precisão do modelo e o número de anúncios que passarão automaticamente pelo nosso sistema. Etc. Ou seja, com base neste diálogo entre o cliente condicional e você, como especialista, você pode simplificar muito sua tarefa, tendo um bom entendimento de como reformular uma tarefa de negócio em uma tarefa de ciência de dados.como reformular um problema de negócios em um problema de ciência de dados.como reformular um problema de negócios em um problema de ciência de dados.



Eu gostaria de falar sobre mais uma coisa que ajuda muito. É entender quais sinais específicos estão sendo passados ​​para o modelo que você está desenvolvendo na forma de recursos e como ele os processa. Esta é uma habilidade que pertence diretamente à competência da equipe de desenvolvimento de ML. Por alguma razão, muitos candidatos, em minha experiência, aderem à abordagem "ML comerá tudo" - coloque tudo em um aumento gradiente e funcionará. Estou exagerando, mas, no geral, é muito legal quando você entende claramente que o sinal que você está usando carrega exatamente a informação que você transmitiu, e não a informação que você planejou transmitir.



Por exemplo, digamos que você decida que um bom indicador da capacidade de resposta de um usuário a um anúncio seria uma taxa de cliques. Ou seja, pegamos o número de anúncios vistos durante todo o tempo e o número de cliques no anúncio, dividimos um pelo outro e obtemos o indicador do usuário. Em um caso, ele diz que o usuário gosta de clicar no anúncio, no outro, que não clica em nada. E passamos esse número para o nosso modelo - aumento de gradiente ou regressão linear. Aí pode surgir um pensamento: o modelo não tem como distinguir entre aqueles usuários para os quais temos muitas estatísticas, daqueles que são poucos. Uma métrica pode não significar que um usuário sempre clica em um anúncio, mas que ele teve apenas uma impressão. Surge a questão: como apresentar esse recurso de forma que o modelo distinga uma grande quantidade de estatísticas de uma pequena? Primeiro,o que vem à mente é colocar o número de impressões de anúncios no modelo. Você pode apenas colocar o número de impressões, mas a dependência de nossa confiança nas estatísticas sobre o número de impressões de anúncios que um usuário tem não é linear. Acontece que você precisa colocar não apenas impressões, mas um quadrado ou logaritmo de impressões. Então, descobrimos que, se tivermos um modelo linear, esses dois recursos não interagem entre si de forma alguma. Não será possível fazer esquemas como “se o usuário tem tal e tal quantidade de estatísticas, então confiamos tanto, usamos um recurso com tal e tal peso”. A regressão linear não pode construir tais conexões, mas o aumento de gradiente pode. Ou você pode reformular o recurso. Em vez de estatísticas brutas, você pode suavizar, usar abordagens de transições bayesianas, adicionar algum conhecimento a priori de como os usuários clicam em média,e usando uma certa fórmula para misturá-los. Etc. Acontece que é muito importante entender qual sinal específico você está transmitindo como sinal.



E em segundo lugar, é muito importante saber como esse recurso será usado no modelo. Na regressão linear, ele será usado um de cada vez, no aumento de gradiente de uma maneira diferente, e se for uma rede neural, então funcionará com um tipo diferente de dados e como o contexto funciona ali.

Você não precisa saber exatamente como o modelo funciona, mas precisa de uma compreensão intuitiva do que é possível e do que não é. Esta é uma habilidade legal para um especialista em ML. Se você me perguntar como qualquer algoritmo em particular funciona no aumento de gradiente, será difícil explicar em detalhes, mas posso fazer isso com meus dedos. E na maioria das situações práticas, isso é o suficiente para usar a ferramenta com eficácia.



No final, gostaria de aconselhar a todos que usem essa abordagem iterativa na vida real, em produtos, quando você passa do simples ao complexo. Você começa com hipóteses simples que são testadas rapidamente e, lentamente, chega a esses artigos científicos interessantes e muito complexos. E então a linha de base já está pronta, e você já pode escrever um artigo para KDD, por exemplo.



Também quero dizer - talvez eles me ajudem; Tenho duas apresentações em encontros. Um é dedicado a que tipo de tarefas de ciência de dados podem ser realizadas em publicidade (e, em geral, por que os especialistas em ciência de dados podem estar interessados ​​em tecnologias de publicidade como um trampolim para aplicar suas habilidades em desafios de engenharia interessantes). E a segunda é uma história sobre as armadilhas em que caímos como uma equipe de desenvolvedores de ML do sistema, sobre como saímos delas e como você não caiu nas mesmas armadilhas em que caímos por falta de experiência. Eu gostaria de compartilhar essa experiência. Acho que há muitas coisas úteis para descobrir aqui.



E ainda - antes disso eu falei sobre a comunidade LeanDS dedicada a processos de ciência de dados, gerenciamento de projetos de ciência de dados em ML. Eu também aconselho você a dar uma olhada nos materiais deles, os caras estão fazendo coisas muito legais.



Você já construiu um modelo de funil de vendas completo?



Na verdade, não aconteceu de nós fazermos isso. Mas aqui é muito importante que o anunciante externo configure tudo muito bem. Portanto, é bom lidar com funis de vendas quando você é um cientista de dados do lado de um anunciante. Digamos que você trabalhe para uma grande empresa que trabalha com um grande número de canais de marketing e está tentando construir análises que lhe permitam ter um bom entendimento de como funcionam os diferentes canais de marketing, quão bem os funis de vendas são construídos e assim por diante. Para nós, do lado do VK como sistema para anunciantes, ao trabalhar com essas coisas é muito importante que o anunciante tenha tudo bem configurado. Para que os pixels de publicidade sempre forneçam as informações corretas sobre como o usuário entrou no site, adicionou algo ao carrinho e comprou. E então devemos usar essas informações parapara tornar as estratégias de publicidade melhores e mais eficazes. Eu quero fazer isso; praticamente não fizemos isso, porque configurar esses sistemas costuma ser difícil para um anunciante. Provavelmente é mais fácil fazer isso quando você tem controle total.



E essa pergunta: como conectar entidades (definir atributos) ao construir um modelo?



Por exemplo, visitante do site -> cliente



Provavelmente é bom começar de alguma atividade anterior do usuário. Em geral, isso é feito de várias maneiras; Posso falar sobre um que é usado na construção de sistemas de publicidade, é chamado de sósia. Você deve ter ouvido falar dele. Esta é uma situação quando dizemos: aqui estão os usuários que visitaram o nosso site, e aqui estão os que compraram algo. Vamos dar uma olhada em quais usuários são mais parecidos com aqueles que compraram algo e menos como aqueles que não fizeram nada. Quando treinamos tal modelo, onde “1” são aqueles que compraram, “0” são aqueles que não fizeram nada e condicionalmente “0,5” são aqueles que visitaram o site, podemos aprender como classificar todos os usuários do nosso sistema por semelhança com um cliente potencial. Podemos usar esse conhecimento em nosso modelo e dizer ao cliente quais recursos,em termos de modelo, eles separam os clientes dos visitantes comuns.






All Articles