Hoe om 13 meisies per uur op te tel met masjienleer en Tinder

*Uitsluitlik ter wille van die studie van Masjienleer, natuurlik. Onder die effens ontevrede blik van sy geliefde vrou.

Daar is waarskynlik geen toepassing so eenvoudig op die vlak van ruggraatreflekse soos Tinder nie. Om dit te gebruik, is een vinger genoeg om te swiep en 'n paar neurone om die meisies of mans te kies waarvan jy die beste hou. Die ideale implementering van brute krag in die keuse van 'n paar.

Ek het gedink dit is 'n goeie manier om 'n bietjie voorsmakie van masjienleer op 'n nuwe grafiese kaart te kry. Al wat oorbly is om aan my vrou te verduidelik dat ek nie ’n nuwe dikker vrou nodig het nie, maar ek oefen net neurale netwerke op.

Hoe om 13 meisies per uur op te tel met masjienleer en Tinder

Wat is die probleem met dating netwerke

Daar was so 'n hulpbron - Ashley Madison. Spesifiek, met die slagspreuk “Die lewe is kort. Het 'n verhouding. Die hoofgehoor is getroude mans wat 'n affair aan die kant soek. Monetisering is ook pret – benewens die standaard “bestee punte om te hou en te skryf,” het hulle vir $19 gevra om 'n gebruiker se rekening sonder 'n spoor uit te vee.

In 2015 het die webwerf natuurlik uitgelek en 60 GB persoonlike data het in die publieke domein uitgelek. Benewens die talle verwoeste gesinne, het hierdie lekkasie baie interessante inligting aan ontleders gegee. Ek het altyd vermoed dat daar baie meer mans op afspraakwebwerwe is, maar in hierdie geval was dit nogal interessant. Annalee Newitz joernalis ontleed uitgelekte data gevind dat uit 5 miljoen gebruikers net 12 000 soos regte meisierekeninge gelyk het en gereeld gebruik is. Die res was net bots wat interaksie gehad het met manlike besoekers.

So 'n oorwig teenoor manlike rekeninge is tipies nie net vir hierdie hulpbron nie, maar ook vir die meeste ander afspraakwebwerwe. Ek is seker dat baie hierdie ongetwyfeld onregverdige situasie teëgekom het, wanneer jy mooi moet dink oor 'n kennis, en 'n meisie moet net registreer. Kom ons los die kwaliteit van hierdie skare aanhangers eenkant, maar die feit is onmiskenbaar, die balans van vraag en aanbod is duidelik verskuif ten gunste van meisies.

Tinder-kenmerk

Hoe om 13 meisies per uur op te tel met masjienleer en Tinder
Die ideale brute-forcer in geslagsverhoudings

Die belangrikste kenmerk van hierdie platform is die lae koste per kennis. Die toeval van twee swipes is genoeg en jy praat reeds met 'n potensieel interessante persoon. Die probleem is dat dieselfde geslagswanbalans daartoe lei dat die meeste meisies tientalle wedstryde per dag sal hê. Dit beteken dat hulle heel waarskynlik nie tyd sal hê om aandag aan jou onder ander kandidate te gee nie.

Dit is baie duidelik dat die platform min geleenthede impliseer om die diep innerlike wêreld van 'n persoon te assesseer deur 'n een en 'n half sekonde kyk na 'n foto in 'n swembroek of om 'n nuwerwets getinte motor te bestuur. Daarom, as jy nie bloot goddelik op jou foto's lyk nie, het jy geen ander keuse as om jou kanse te vergroot deur aan te neem nie r-strategie in sommige spesies. Eenvoudig gestel, ons sal brute krag en volume inneem om ons kanse op telingsukses te verhoog. Aangesien jy soms afgelei moet word deur kos en slaap, en swipe beperk is, sal jy waarskynlik verkies dat outomatisering die meisies of mans kies wat die meeste by jou smaak pas. Klein rooikoppies of lang donkerkope - dit is aan jou.

Versameling van data

Eerstens het u baie data nodig vir normale akkuraatheid. Enigiemand wat met masjienleer te doen gehad het, weet hoe moeilik dit kan wees om 'n korrek saamgestelde en benoemde datastel te tik. Teoreties is enige soortgelyke hulpbron geskik as 'n databron, of dit nou Instagram of ander sosiale netwerke is. Maar dit is die beste om op te lei op daardie monsters waarop die netwerk in die toekoms sal werk.

Kom ons neem die bewaarplek as basis Tinder-outomatisering. Foto's op Tinder is altyd publiek, maar die "laaik"-funksie is reeds beperk. Daarom is dit nodig om alle lewende dinge in die radius te onttrek en dit versigtig te merk. Om te begin, moet jy 'n redelik eenvoudige skrif gebruik:

from skimage.io import imread, imsave, imshow, show
import matplotlib.pyplot as plt
import pynder
from helpers import get_access_token, get_login_credentials
from io_helper import save_image

email, password, FBID = get_login_credentials()
FBTOKEN = get_access_token(email, password)
session = pynder.Session(facebook_token=FBTOKEN)

while True:
    users = session.nearby_users()
    for user in users:
        photos = user.get_photos()
        print("Fetched user photos..")
        for photo in photos:
            print(photo)
            image = imread(photo)
            imshow(image)
            show()

            input_string = "Write 1 to like. Write 2 to dislike."
            ans = str(input(input_string)).lower()

            if ans == "1":
                save_image(image, photo, True)
            else:
                save_image(image, photo, False)

Dit sal jou toelaat om die datastel so vinnig as moontlik met net twee knoppies te merk. Die belangrikste slaggat is dat die werkzeug-biblioteek terugwaartse versoenbaarheid verbreek het en afgegradeer sal moet word. Anders gooi dit hierdie fout.

Traceback (most recent call last):
  File "img_scrape.py", line 4, in <module>
    from helpers import get_access_token, get_login_credentials
  File "/home/someone/tmp/TinderAutomation/helpers.py", line 1, in <module>
    import robobrowser
  File "/home/someone/tmp/TinderAutomation/venv/lib/python3.6/site-packages/robobrowser/__init__.py", line 3, in <module>
    from .browser import RoboBrowser
  File "/home/someone/tmp/TinderAutomation/venv/lib/python3.6/site-packages/robobrowser/browser.py", line 8, in <module>
    from werkzeug import cached_property
ImportError: cannot import name 'cached_property'

Daarom moet werkzeug==0.16.1 in requirements.txt geskryf word. Dan sal dit opstyg.
Die tweede probleem is om hierdie einste teken te kry. Die standaardmetode van die bewaarplek het nie vir my opgestyg nie, maar ek het daarin geslaag om dit van die ontwikkelaarkonsole af te kry. Om dit te doen, gaan na skakel en trek die antwoord op die POST-versoek in www.facebook.com/v2.6/dialog/oauth/confirm?dpr=1. Binne soek ons ​​na 'access_token'. Om een ​​of ander rede het dit nie die eerste keer gewerk nie, maar toe vind ek dit en het dit hardkodeer in 'n skrif.

datastelvereistes

Daar is verskeie sleutelvereistes vir masjienleerdatastelle:

  1. Genoegsaamheid
  2. Eenvormigheid
  3. diversiteit

Voldoende in hierdie geval vereis ten minste 10000 XNUMX foto's om 'n voldoende model te bou. Ja, dis baie. Daarom is daar dienste soos Amazon Meganiese Turk, waar jy teen 'n fooi die opmaak van jou datastel aan ander mense kan uitkontrakteer. Aan die ander kant, wil jy regtig hê jou bot moet van pragtige Asiatiese meisies met maangesig hou of ewe mooi meisies met Indiese wortels? Tog moet die model presies jou smaak weerspieël.

Daar is geen spesifieke probleme met die verskeidenheid nie, alle foto's word in 'n verskeidenheid hoeke en beligting aangebied. In brille, rokke, swemklere en skipakke. Die probleem kan ontstaan ​​met die eenvormigheid van die datastel. Ideaal gesproke, wanneer ons ons monster merk, moet dit uit ongeveer gelyke dele bestaan. As jy 'n "skewe" datastel het, sal jy dit moet verdun met foto's van ander bronne. Mooiers sal bygevoeg moet word, of andersom, jy sal bepaal deur die resultaat van die opmaak. Ek het iets in die omgewing van 60% oulik gekry. Óf ek is nie te kieskeurig nie, óf ek is net gelukkig en daar is baie mooi meisies in die omtrek.

Ek verwerp ook nie die hipotese dat daar baie bots onder hulle is nie. Ons lei 'n bot op wat van ander bots sal hou. Daar is 'n mate van ironie hierin.

Data verwerking

Ons het 'n klomp gemerkte foto's, maar hulle is baie deurmekaar. Dag, nag, van agter en ander. Met spyt verstaan ​​ek dat dit nie besonder moontlik is om op foto's vanuit die omgekeerde hoek te oefen nie, aangesien die monster baie ongelyk sal wees. Daarom sal die beste opsie wees om gesigte te gebruik as 'n verwysingsteken van "mooiheid". Tog, vir ons, soos vir ander primate, is dit 'n sleutelparameter.

Daarom gebruik ons kaskenades van haar. Dit is 'n uitstekende algoritme waarmee u gesigte in beelde met 'n lae persentasie vals positiewe foute kan vind.

Hoe om 13 meisies per uur op te tel met masjienleer en Tinder
Dit word in meer besonderhede beskryf in die handleiding vir OpenCV

In die volgende stadium, nadat slegs gesigte in die monster is, maak dit sin om die kleur te verwyder. Trouens, dit is onwaarskynlik dat jy moet kies tussen 'n pragtige blou Pandora-vrou of 'n skoonheid met 'n groen vel.

Hoe om 13 meisies per uur op te tel met masjienleer en Tinder
Bron

In Hue-mense dra die velkleurparameter nie beduidend by tot die oulikheidtelling nie.
Daarom is dit die moeite werd om die werk van die neurale netwerk te vereenvoudig en net grysskaal te laat.

Model gebou

Ek wil dadelik sê dat sonder 'n goeie videokaart en CUDA, jy heel waarskynlik eenvoudig nie 'n opgeleide model in 'n voldoende tyd sal kry nie. Doel dus onmiddellik na berekeninge in gespesialiseerde wolke of met behulp van python-CUDA.

Ek het 'n basiese drie-laag voorbeeld van die skrywer van die bewaarplek geneem en, verbasend genoeg, het dit 'n akkuraatheid van ongeveer 72% getoon, wat nogal 'n goeie resultaat is.

model = Sequential()
model.add(Convolution2D(32, 3, 3, activation='relu', input_shape=(img_size, img_size, 3)))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Convolution2D(32, 3, 3, activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Convolution2D(64, 3, 3, activation='relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
          
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(2, activation='softmax'))

adam = optimizers.SGD(lr=1e-4, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy',
              optimizer= adam,
              metrics=['accuracy'])

As daar 'n goeie steekproef is, is dit dalk genoeg om 'n werkbare model te kry.

Begin die bot

Hoe om 13 meisies per uur op te tel met masjienleer en Tinder

Dankie aan die skrywer van die bewaarplek vir die klaargemaakte weergawe om die idee vinnig te toets. Trouens, dit werk redelik goed in die basiese weergawe en kan in beginsel op ons bekendgestel word gereed gehuurde bediener. Dit sal nog nie moontlik wees om op te lei nie, op die oomblik bied ons nie virtuele masjiene met CUDA-ondersteuning vir berekeninge nie, maar jy kan iets sonder probleme vir 24/7 werk hardloop. Die bot is redelik liggewig, so dit sal meer winsgewend wees om 'n tarief te neem met betaling vir die hulpbronne wat gebruik word.

Bevindinge

Hoe om 13 meisies per uur op te tel met masjienleer en Tinder
Ek moet baie oulik wees. En ek het 'n ryk innerlike wêreld. Het binne 'n uur iets in die omgewing van 13 wedstryde gekry. Boonop het die meisies verskeie kere eers geskryf.
Gevolglik is baie mooi dialoë verkry, waar ek gesê het dat ek net met masjienleer en data-opmerk kom speel het. Een van die meisies was baie geïnteresseerd, aangesien sy self 'n ontwikkelaar is. Daar is 'n sterk gevoel dat sy uiteindelik hierdie berig op Habré gaan lees. Ek hoop regtig dat Oksana my anonimiteit sal behou. 🙂
*waai poot en sê hallo

'n Bietjie oor die etiese kant van die saak

Om eerlik te wees, ek hou glad nie van die idee van robotisering van verhoudings tussen mans en meisies nie. Daar is iets baie reg daaraan om jou baadjie oor die skouers te gooi van 'n bevrore vreemdeling wat alleen staan. Of nader 'n mooi meisie in 'n somerkafee en drink saam koffie. Kom uit agter die monitors.

Rondom die somer. Dit is tyd om kennis te maak.

Hoe om 13 meisies per uur op te tel met masjienleer en Tinder

Hoe om 13 meisies per uur op te tel met masjienleer en Tinder

Bron: will.com

Voeg 'n opmerking