Marina Velasco, periodista de El HuffPost, me llamó para hablar sobre el sesgo de los algoritmos, y ayer publicó su artículo titulado «Cómo los algoritmos te discriminan por origen racial y por género» (pdf), en el que me cita.
Mi idea durante la conversación con Marina era la de luchar contra un estereotipo muy evidente: el de que los algoritmos, de alguna manera, hacen las cosas mejor que las personas. El origen de esa idea es evidente: como bien decía Arthur C. Clarke, «toda tecnología lo suficientemente avanzada es indistinguible de la magia», lo que nos lleva a que el desconocimiento en torno a lo que es un algoritmo los haga habitualmente protagonistas de todo tipo de creencias, un tema sobre el que ya he escrito en otras ocasiones.
Por supuesto, lo peor que podemos tener es una serie de personas en la sociedad temerosas y desconfiadas con respecto a la supuesta maldad de los algoritmos. Pero del mismo modo, es igualmente peligroso tener segmentos de la población confiados en que un algoritmo hará las cosas inherentemente mejor que una persona, porque ambos supuestos resultan igualmente triviales y absurdos: el algoritmo hace las cosas en función de los datos con los que cuenta para desarrollarse y entrenarse.
Recurriendo a algoritmos cada vez más fácilmente disponibles y utilizables por cualquiera, como los que construyen ilustraciones a partir de una breve descripción en inglés, cuando hacen su trabajo, recurren a una enorme base de datos de ilustraciones que han sido previamente etiquetadas en función de su contenido. Si le pedimos que dibuje a un personaje determinado, ¿qué hace el algoritmo? Simplemente se va a su base de datos, localiza todas las ilustraciones etiquetadas con el nombre de ese personaje, y dibuja algún tipo de composición con los elementos comunes de esas ilustraciones. Si a ese personaje lo retratan habitualmente con una pose angelical y rodeado de nubes, lo dibujará con características similares, mientras que si de manera reiterativa, las ilustraciones con las que cuentan tienden a mostrarlo con aspecto demoníaco y entre rocas semifundidas en tonos rojizos, probablemente generará una imagen con evocaciones satánicas. ¿Quiere eso decir que el algoritmo es particularmente proclive a evaluar a esa persona como buena o mala, a otorgarle una connotación positiva o negativa? En absoluto: ese sesgo es, únicamente, el resultado de la información que el algoritmo tenía a su alcance para procesar.
Ese tipo de sesgos que erróneamente se atribuyen «al algoritmo», por tanto, provienen en realidad de las colecciones de datos de las que proviene. En algunas ocasiones se podrá corregir simplemente evaluando esos datos y corrigiendo eventuales sesgos estadísticos, eliminando datos que reflejen una predominancia concreta, o eliminando outliers, puntos discordantes o anómalos. En otras, el sesgo provendrá de un sesgo real y pre-existente: si en los Estados Unidos utilizamos datos históricos para, por ejemplo, conceder o no préstamos bancarios, seguramente nos encontraremos con que, a lo largo del tiempo, el número de impagos ha sido mayor en familias de determinado origen racial que han tendido a tener un estatus socioeconómico más humilde, y por tanto, el algoritmo tenderá a denegar esos préstamos a quienes posean ese origen étnico. De hecho, es posible que lo haga aunque no cuente con el dato específico, porque seguramente será capaz de deducirlo en función de otros parámetros, desde la residencia al nombre, pasando por otras muchas posibilidades. ¿Es racista el algoritmo? No, lo que es racista es la colección de datos con la que lo hemos definido o entrenado, por mucho que sean rigurosamente correctos.
Con el famoso algoritmo machista que Amazon terminó eliminando porque tendía invariablemente a seleccionar candidatos masculinos ocurre lo mismo: si históricamente, los trabajadores que han dado mejores resultados a lo largo de los años han sido varones, el algoritmo tenderá a seleccionar candidatos varones. ¿Ah, que durante muchos años, los perfiles que se presentaban a determinados tipos de puestos en la compañía han sido de manera aplastantemente elevada, varones? Vaya, qué pequeño detalle sin importancia, ¿no?
Al final, estadística. Y afortunadamente, la estadística hace muchos, muchísimos años que nos permite comprobar las características de las distribuciones de datos que suministramos a un algoritmo: la normalidad de su distribución, sus descriptivos… si una variable es marcadamente no normal, deberemos evaluar la conveniencia de introducirla o no en el cálculo, o incluso, de emplear técnicas de corrección estadística adecuadas para compensar un sesgo determinado. Todo ello dependerá, lógicamente, de los fines del algoritmo y de lo que esperemos extraer de él.
Lo importante es entender que un algoritmo no es más que los elementos utilizados en su diseño y entrenamiento. Si partimos de una muestra de datos sesgada de por sí, si es relativamente pequeña, o si nos dedicamos a hacer sub-muestras persistentemente en ella con el fin de entrenar al algoritmo, es muy posible que esos sesgos se manifiesten en el resultado, y que resulte difícil localizarlos hasta que llegue alguien y los experimente o le dé por comprobarlos. Adscribir a un algoritmo un sesgo determinado o creer que por el hecho de que una decisión provenga de un algoritmo va a ser mejor o peor es, simplemente, antropomorfizar la estadística y adscribir una «personalidad» determinada a algo que no la tiene.
Cuanto antes entendamos esto, más y mejor podremos avanzar poniendo algoritmos allá donde realmente vayan a ser útiles.
This article is also available in English on my Medium page, «Let’s stop wasting time by attributing personality to algorithms»
Parece como si la discriminación fuera un invento de los algoritmos. ¿Creemos que quien nos juzga, no solo un/a juez, que quien nos selecciona para un puesto de trabajo, el/la portero/a de discoteca,… no tiene muchos mas prejuicios, que los que pueda tener un algoritmo?
Pues si.
Si se recopilaran todas las fotos de presidentes de EEUU, premios Nobel, Fields, como base de un algoritmo generador de nuevos presidentes y premiados, habría un sesgo en el resultado casi no habría mujeres ni personas de etnia minorataria en esa salida.
El problema es cuando se relaciona, en las bases de datos IMPORTANTES, por ejemplo concesión de prestamos, ese tipo de variables… ¿ o no?
Es decir si un banco tiene un millón de expedientes y son usados para el aprendizaje automático de su algoritmo … los que son más problemáticos para sus intereses son aquellos que tienen las variables de entrada A, B, C siendo estas por ejemplo: nivel salarial, origen, etnia, género,…. ¿Lo tiene que tener en cuenta el algoritmo o no?
El algoritmo tiene en cuenta las variables que tú introduzcas en el análisis. El proceso suele ser iterativo, porque retirar o introducir variables, siempre que cuentes con ellas y esté limpias de outliers, etc., es extremadamente sencillo con los programas de machine learning actuales (obviamente, si te dedicas a reinventar la rueda programando en Python y esas tonterías, no es tan sencillo). Así que lo que haces, básicamente, es ir probando variables y evaluando el ajuste que te ofrecen, hasta que encuentras una combinación que te satisfaga. Después entrenas el algoritmo con otras combinaciones de datos y compruebas si los resultados tienen sentido o no. Es un proceso que puede hacer básicamente cualquiera, de ahí que en algunos casos obtengamos barbaridades si la persona que lo lleva a cabo no tiene una mínima base de estadística… o de sentido común!
(obviamente, si te dedicas a reinventar la rueda programando en Python y esas tonterías, no es tan sencillo)
agradeceria, Sr Dans, que se explayara en este concepto…
Sr Dans… me tiene en ascuas… :)
Es que no hay que programar NADA. Un proyecto de machine learning hace mucho que no se puede plantear como un proyecto de software, porque no lo es. Si en tu proyecto de machine learning aparecen iluminados a decir que tienen que programarlo en Python, en R o en cualquier otro lenguaje de ese tipo, échalos de la compañía a patadas, o perderás un dineral experimentando con basura que jamás llegaras a poner en producción (como tristemente les pasa a un porcentaje elevadísimo de empresas). Si necesitas hacer cálculos, ¿aceptarías que viniera el iluminado de turno a decirte que “te va a hacer un programita para ello”, o usarías una simple hoja de cálculo? Pues las herramientas para hacer machine learning hace mucho que alcanzaron esa fase. Hoy, pretender programar algoritmos en Python es de losers.
Escribí sobre ello ya hace tiempo.
Señor Dans… si alguna oportunidad tenia de caerle bien, la voy a perder… que le vamos a hacer…
Vamos a ver… a día de hoy, Si hay un lenguaje de programación que se muestre como “prioritario” en temas de IA, es precisamente Python:
Los paquetes de aprendizaje automático y deep learning más conocidos y utilizados del mundo, como Pandas, NumPy, TensorFlow, Keras, Scikit-learn… y miles más, están todos escritos en Python.”
Si usted quiere, le damos la vuelta a eso… le recogeré el guante…
“R” es otro lenguaje, que para tratar datos “a mansalva” va que se las pela… es open source, multiplataforma, funcional y también orientado a objetos, y además, soportado por R-Studio (Python, vaya…)
Ni que decir, del tan anticuado SQL, que a día de hoy, mantiene desde su propia web en WP hasta bases inauditas hace unos años… Si, Python también esta ahí…
Lo que me refenta, ósea, la pregunta que le hacía, era, según usted, cual era el lenguaje “ideal” para poder trabajar en IA… ya que menosprecia a Python (y le digo ya, que no programo en ello)
Es Lisp el idóneo? Es Prolog (con el que he trabajado varios años)? Es C? C++? C#? Java?
>>> Es que no hay que programar NADA.
Senor Dans…. Borre su comentario y borrare mi respuesta… que esta usted en ese Harry Potter que mencionaba… el “algoritmo” no es magia, no surge de la nada, es algoritmo ES CODIGO…
>>> Un proyecto de machine learning hace mucho que no se puede plantear como un proyecto de software, porque no lo es
Por el bien común… me ahorro la respuesta… por favor…
>>> Si en tu proyecto de machine learning aparecen iluminados a decir que tienen que programarlo en Python, en R o en cualquier otro lenguaje de ese tipo, échalos de la compañía a patadas
Insisto, que esa era mi pregunta… según usted… en que se programa el ML la IA o la madre del cordero…???
>>> Hoy, pretender programar algoritmos en Python es de losers.
Se que difícilmente mi comentario saldrá publicado…. Y esa es mi respuesta a esta ultima frase…
Y si se enfada conmigo… enfadese… que he estado programando en Prolog unos cuantos años… (y si, Python no es de mi agrado, pero no le quitare los meritos)
A ver Alfredo, que a Enrique lo que le gustan son las ventanitas y la interfaces de usuario con desplegables, al estilo de BigML
Esa GUI tiene una curva de aprendizaje igual superior a la que una persona acostumbrada a un lenguaje de programación y una CLI, se adapta a Python y un notebook de Jupyter, en un par de díasm pero si él dice que poner 10 comandos juntos es programar y se niega en redondo a usarlo pues es su elección. Faltaría más.
Si entramos a buscar libros sobre Machine Learning normalmente no buscas el lenguaje de programación, sino TensorFlow, Pytorch, etc… y si no sabes pues si puedes buscar machine learning + python ó R, digamos que el 90% usa Python.
¿Qué es dificil? Pues no. Se puede empezar por este
Machine Learning for Kids: A Project-Based Introduction to Artificial Intelligence
Pero esto es como el niño que termina la enseñanza obligatoria, y lo que quiere es ser músico, actor, etc, pues que cada uno haga lo que le de la real gana.
Esto es como el excel, mucha gente jamas va a hacer una macro de VBA. Pues no hay que obligarles, que sean felices con su elección. Luego tu sacas un trabajo en media hora, y ellos en una semana…
Eso si lo que no vale decir, es eso de ir por el carril contrario en la M30, y decir que imbéciles son el resto que no se enteran. Pues no.
Y como pildora. para aquellos que estudian en un sitio que por cojones y les meten una GUI como la de BigML a capón, no desesperéis, que tienen un binding a python, y se puede usar python y un notebook de Jupiter. Que Dios aprieta pero no ahoga Y luego cuando se acabe el master, si veis interesante lo del ML for free lo que querais.
https://bigml.readthedocs.io/en/latest/
PS: Si he probado BigML, hay que saber de todo
Esos mensajes son I-DÉN-TI-COS a los que ya vimos cuando salió el SAS en Windows: bah, vaya mierda, el bueno es el que se programa sobre línea de comando en UNIX, este es malo, tan visual, es para ignorantes… pues no. Era el mismo, igual de bueno, y como las barreras de entrada habían caído, se usaba mucho más y mucho mejor. Con los que quieren programar un machine learning en Python pasa lo que pasa: que se equivocan mucho más, y que cuando llega el momento de poner eso en producción, fallan miserablemente, y se quedan en proyectitos fallidos. Si quieres avanzar en machine learning, tienes que ofrecer a los directivos que toman las decisiones algo visual, sencillo, que se puedan hacer ensayos de prueba y error constantes, variaciones, quince – o cincuenta – en una mañana, hasta dar con las variables adecuadas, sin tener que andar limpiando variables o viendo descriptivos en una aplicación diferente, o sudando tinta para hacer un simple bootstrapping. Programar en machine learning es cosa del pasado: las empresas que hacen machine learning no tienen que programarlo, porque las herramientas ya está programadas y mucho más refinadas y completas que lo que puedan hacer ellos en cuatro líneas de código.
Si quieres fabricar y vender pan, necesitas un horno. ¿Te tienes que meter en la ingeniería de los hornos, en su proceso de fabricación, y contratar a ingenieros expertos en fabricar hornos? No, lo que tienes es que comprar uno, y estudiarlos lo suficiente como para entender qué horno necesitas, ya está. ¿Por qué? Porque tu negocio no es fabricar hornos, es vender pan, y todo lo demás es perder miserablemente el tiempo y desviarte de tu negocio.
Enrique
Te suena lo de transformers que GUI lo tiene? No verdad, luego que si GPT3 o DALLE2 son magníficos, qu usa el tipejo en OpeAI.?
Cuantos libros hay publicados con GUÍs de ML? Y DE PYTHON?
Cuantos papers hay con GUIs?, con que se han hecho los algoritmos, con ventanitas?
Ah si, los Sistemas con ventanitas que si, muy bien, tocino o velocidad?, los servidores de medio mundo corriendo Linux… por algo será… sin derecho a postureo, eso es cierto. De verdad que no usa scripts, ahora me dirá que usa Alfred, o Automator…
Que use lo que quiera, quiere ser un outlier, pues el mundo tan feliz. Pero no despiste a los chavales por promocionar empresas de su entorno… Ahora nos dirá que no es parte de BigML…
¿Qué si yo soy parte de BigML? A ver, vete a mi página de Curriculum: «Miembro del Strategic Advisory Board de BigML». O a mi LinkedIn: «Strategic Advisor BigML, Jun. 2012 to present». Vamos, que según tú, lo oculto, ¿no? Mira, si hay algo que no soporto es que venga alguien a «implicar» que algo completamente positivo y recomendado para un profesor de una escuela de negocios, implicarse en compañías punteras para estar en contacto con la realidad empresarial y evitar «la torre de marfil», resulta ser «un problema» y algo relacionado, no sé, ¿con la «corrupción»?
Por supuesto que recomiendo BigML a mis alumnos. Se usa ya no en el IE, sino en más de quinientas universidades en todo el maldito mundo, porque es la mejor manera de entender el machine learning de manera rápida y eficiente. Cuando lo recomiendo, lo hago de manera completamente transparente, dejando clara mi implicación en la compañía, y si ves algún problema en ello, es que eres directamente tonto y no deberías estar aquí leyendo nada, ni mucho menos comentando.
Si crees qe BigML es un GUI, si comparas el point-and-click con una instrucción de código, estás ignorando todo lo importante. Cada vez que haces clic en BigML hay una multitud de cosas que pasan por debajo. Todas ellas son completamente trazables para poder asegurarse de que los modelos son reproducibles, cada modelo tiene una representación interactiva, etc. No es el click vs código, es la abstracción para poder centrarse en lo importante y toda la representación del modelo: exportable en JSON que se puede leer, etc.
Cuando alguien escribe código, nadie más que él sabe lo que usa para hacerlo, no es reproducible, ni interpretable, ni interactivo, y cuando se exporta es un pedazo de código binario. Eso simplemente ayuda a que haya más modelos con sesgos, mal hechos, etc. Ese es el punto importante, no el que sea point-and-click! Además, en BigML puedes hacer clic porque por debajo hay todo un API que lo hace todo programable y automatizable. En BigML puedes crear mil modelos a la vez o hacer predicciones en tiempo real, cosas que tardarán aún muchos años en implementar con Python si es que llegan a hacerlo. Tus comentarios prueban simplemente ignorancia, es un comentario «generacional»: perteneces a la generación que aprendió a programar su machine learning, y todo lo que no sea eso te parece malo. Estás simplemente desactualizado. Pero peor aún, y lo que más me cabrea, es tu comentario de «y nos dirá que no es parte de BigML»… ese es simplemente para echarte de aquí a patadas!
Por cierto cuando apareció el GUI de Windows, ya existían las X Windows, y podías exportar display desde una máquina en USA para tener un terminal gráfico en España, mientras dabas los primeros pasos con el clipper
Enrique
Pues claro que conocemos tu vida publicada. Y tus aficiones.
Para recomendar algo o su contrario. Hay que tener experiencia en ese campo, y sobre todo ser agnóstico
¿Cual es la curva de aprendizaje en los principales sistemas de ML?
¿Qué referencias comerciales hay en las distintas tecnologías?
¿Qué referencias personales tiene en los distintos sistemas?
¿Que precio tienen las distintas alternativas?
Si una solución de ML en la nube cierra ¿podrá sobrevivir standalone hasta migrar en otra plataforma?
¿Echar a patadas de su negocio? Eso es tan edificante como todos sus comentarios al respecto. No hay una sola frase con sentido. Decía que el 87% de los proyectos de ML no llegan a producción. ¿Qué estadística tienen «cierta» los proyectos con GUI vs proyectos con Python?
Datos si mis opiniones son bananeras, le ofreceré mi rectificación de forma pública, y sobre todo sincera. No creo que esté haciendo un favor al entorno de las ML con GUI con su ataque cerril a las plataformas MAS USADAS, por algo será. ¿Corrupción? eso lo ha dicho vd. D.Enrique
Yo pido datos no opiniones o juicios de valor.
Perdone D.Enrique
Pero no entiendo que tiene que ver mi comentario con su respuesta¿outlier? por supuesto que limpiar los datos es importante, pero una vez que has limpiado los datos:
¿De verdad que un banco tiene que quitar una variable como escala salarial o no?¿por?
Si la quita malo para sus intereses
Si la deja malo por ser discriminatorio
Lo de probar variables con el bastón de ciego es una práctica mejorable en ML, como el burro que va a ver si suena la flauta. Y luego a saber que sale de resultado…. Cualquiera puede hacer el estudio de ML, si. Que se haga bien, menos. Admitamos que hemos meneado las variables para ver como va el asunto (el que esté libre de pecado que tire la primera piedra)
Y lo de elegir el mejor algoritmo…. Así que para vd. Python es un problema…. pues ya tiene más… ¿elegimos aprendizaje supervisado o no supervisado?¿o aprendizaje por refuerzo? ¿algoritmos de regresión?¿cuál? ¿algoritmos bayesianos? o ¿algoritmos de agrupación? ¿pero si tenemos datos categorizado mejor que no? ¿bueno y si vemos árboles de decision? ¿O RNA? etc etc
Pero todas estas dudas son del científico de datos, que más dará si usa python, java, eiffel o C, y el algoritmo que se adpate mejor al problema a resolver, vayamos a mi cuestión, al nabo y no a los grelos!!
¿Debe el banco tener como variable si el que pide el crédito gana 16000€ ó 61000€? creo que todos pensaremos que si, que es una buena variable… ¿pero eso es discriminatorio? ¿Y si el crédito lo pide una mujer o un hombre? ¿o si lo pide un payo o un gitano? ¿estas son discriminatorias? ¿Y si resulta que del histórico casi no hay morosas mujer? ¿eso es discriminación de género?
Creo que esto está en línea con su artículo, ya le he dado respuesta abajo: un algoritmo no puede ser juez. Básicamente porque solamente repetirá resultados que haya visto. Como lo de las imágenes que tanto le llama la atención, son collage de cosas que ha visto, de creativo no tiene nada.
Cierto, Pero ¿me aseguras que quienes eligen a los presidentes de USA y a los premios Nobel, no tienen sesgos parecidos?.
Gorki
No es ese el problema.(el humano) El sesgo que tiene un juez es el que es. Y en este caso, no toca decir si es bueno o malo.
Lo que sucede simplemente es que un algoritmo mira resultados anteriores, y por tanto asumirá el mismo sesgo, que es de lo que estamos hablando.
De ahí que un juez no puede ser un algoritmo, ya que seguro que su fallo será simple y llanamente una regresión estadística de lo que conoce.
¿Es mejor un juez con sesgo hasta que se jubile?
Por cierto, Sr Gorki, me sorprende que siendo cmo dice usted que ha sido «un hacha» en el tema informatico de este pais…. no diga ni mu…
No se lo tome a mal… pero me temo que su opinion, seria de buen agradecer…
Gorki, de verdad que a veces parece usted un Austrolopiteco…
Sabe que existe una cosa llamada elecciones? Y que desgraciadamente, el CGPJ depende de esas elecciones?
Vote usted diferente, hombre…
Me dirá que los votantes no tiene sesgos.
La pregunta es porque el programador eligió variables como el sexo o la etnia (o relacionadas como los nombres) para seleccionar personal si supuestamente buscaba una selección que no discriminara por esas variables.
Me da la sensación de que se puede mejorar mucho el trabajo en el diseño de este tipo de herramientas, desde la selección de datos a la de variable entre otras muchas cosas.
Exacto, si tu utilizas para enseñar a una IA, los datos de la Guía Michelin, saldrán sesgados los sitios turísticos. Son los programadores los que reflejan sus propios sesgos, o al menos no saben detectar los de la base de datos que utilizan en el aprendizaje.
Pero vuelvo a lo del principio. Quien selecciona, ¿no tiene mas sesgos que una IA que se ha nutrido de los datos de Internet? Quien introducen los datos sesgados en Internet. ¿Acaso es una IA, o son personas?
Los programadores no eligen nada. Esas cosas se seleccionan en otros niveles (o debería ser así) entre los que se debe encontrar gente con experiencia en estadística
Si… pero no…
Si el programador es «libre» y no tiene a nadie por encima, la responsabilidad (y el sesgo) es suyo…
La estadistica no tiene porque ir ligada a la mejor decision.
Por otro lado, mi profesor de estadistica, en su primera clase ya nos advirtio «que segun las estadisticas, las estadisticas nunca dicen la verdad»… :)
No creo que sea lo más frecuente pero podría ser el analista de datos, el Product Owner o el programador. Con programación no pienso en picar código sino en crear la estructura lógica del software.
Sr Jerez… dejemonos de nombres rimbombantes como General Manager of Technologies in the Pool of the Flack and the Frostoulus… que de toda la vida el escalafon ha sido:
Jefe -> analista -> programador… o mas bien dicho, el «come marrones»
Las directrices vienen de arriba y el de abajo obedece y si como he dicho, el programador es «libre» (lo hace desde la comodidad de su sillon) posiblemente tendra menos sesgo que si esta en una organizacion…
Se acaban las vacaciones…. disfruten de mi regalo:
MARRONES HANDBOOK
Lo primero que deberíamos hacer, es “definir” que es un algoritmo, porque muchos artículos vamos ya, en los que parece que sea poco más que magia, un “algo” que hace cosas y no se sabe “porque”… (y esto creo que ya lo hizo otro comentarista)
Vamos a la Wiki:
En matemáticas, lógica, ciencias de la computación y disciplinas relacionadas, un algoritmo… es un conjunto de instrucciones o reglas definidas y no-ambiguas, ordenadas y finitas que permite, típicamente, solucionar un problema, realizar un cómputo, procesar datos y llevar a cabo otras tareas o actividades
Culpar a la base de datos… vale, quizas… pero es que en un nivel superior esta el “algoritmo”.
Es decir, quien decide.
Ejem.
If $SUJETO = “blanco”
then PRINT “BLANCO”
else PRINT “NEGRO”
end if
Eso, es un algoritmo (y no hace falta ser programador para entender este pseudocodigo)
Con “que” alimentemos la base de datos, va a dar bastante igual, porque la decisión la tomaran esas 4 líneas de código. Sin mas.
Dejemos de ver a Harry Potter en todas las apps, que lo que realmente hay, son líneas de código…
If $COMENTARIO =”yuyu”
then USER = MODERADO + 1
else USER =PUBLICADO && MODERADO = 0
end if
otro algoritmo… y no se trata de una “maquina”… :)
Siguiendo con tu seudocódigo.
¿Qué pasa cuando llega la foto de un moreno, ¿Es blanco, o es negro?.
El programador decide el grado de «claridad» de la piel. para considerarlo blanco o negro, En el valor de ese límite, está el sesgo.
Sr Gorki, parece mentira que haya sido informatico.
Mi seudocodigo tiene un sesgo intencionado, precisamente, para demostrar que el sesgo lo produce el que programa…
Cualquier resultado «NO BLANCO» sera tratado como NEGRO (y eso incluye moreno, tostado, verde, azul…)
Lo de los algoritmos racistas me parece una tontería como la copa de un pino.
El sesgo es una medida de asimetría de los datos que, como bien dices se puede detectar. No es bueno ni malo, si los datos representan correctamente la realidad que pretenden reflejar. Los datos no son racistas, en todo caso lo serán quienes han generado los datos, o el sistema social que provoca que los datos estén sesgados.
En ciencia de datos y particularmente si hablamos de aprendizaje supervisado se suele distinguir entre el algoritmo y el modelo entrenado con un algoritmo. Por seguir con el ejemplo, desarrollo un modelo de evaluación de riesgo de créditos, usando un algoritmo ampliamente empleado para problemas de clasificación como xgboost. El algoritmo en cuestión (xgboost) es público, se conoce como funciona y, por supuesto, no tiene sesgo de ningún tipo. Para entrenar un modelo predictivo, el cientifico de datos empleará datos de periodos anteriores (créditos concedidos, datos de a quienes y si lo devolvieron)
Cuando construya el modelo, si el científico de datos encuentra una variable predictora (la raza) que correlaciona fuertemente con el riesgo de crédito (está «sesgada») estará encantado y agregará esa variable al modelo, porque así mejorará la tasa de acierto del mismo. ¿Es racista por eso el cientifico de datos? No lo creo. Seguramente sabrá que la causa del default no es ser negro, sino el ser pobre. Pero el trabaja para el banco, solo tiene el dato de raza, es pragmático y le han encargado un trabajo.
¿Darán por eso menos créditos a los negros? Seguramente si. ¿El banco es racista? Tal vez los que concedían los créditos anteriormente y generaron los datos «sesgados» lo eran, o tal vez simplemente hacían su trabajo.
¿Los algoritmos son racistas? Eso es echar balones fuera.
No lo hubiera yo expresado mejor…
Mis +10
Exacto
«Al final, estadística». (EDans). Y ganas de manipular, voluntaria (con determinada intención) o involuntariamente (sin intención predefinida).
El algoritmo solo tiene capacidad estadística . Y una inmensa capacidad para organizar eses datos recogidos (incluso cuántica). Aparte de su enorme capacidad para asumir (sin enfadarse), la mediocridad mental de muchos seres humanos (pienso).
Del resto de lo indicado inicialmente (prejuicios), no puede tener por ahora. Y ya veremos si una IA ultramejorada, llega a tener esa capacidad esencialmente humana de «sesgar». Y lo repito (porque es importante), sesgar conscientemente o inconscientemente, es una capacidad intrinsecamente humana. Son precisas muchas mutaciones durante millones de años, para que un ADN permita establecer algún tipo de código «ético».
Todo lo demás es puro instinto animal.
Que sirva para valorar si algo es bueno para la humanidad. O si algo, que para unos es bueno, puede ser para otros muy malo. E incluso, si lo que hasta ayer era bueno, a partir de hoy se hace malo.
¿Qué algoritmo puede soportar tamaño cúmulo de sandeces?
¿Qué algoritmo sería capaz de mantener su sistema operativo en forma? Eso solo lo puede hacer el cerebro de un ser humano, versión mediocre…, y aún así, mudando en carne de cañón psiquiátrica.
Claro está que, en «mi universo» no caben los algoritmos «del friki lleno de silicona mental», que afirma la consciencia de los algoritmos, que «quieren huir» del universo Google. Stranger Things tambíén lo dan en la TV.
Sr Xaquin, con todo el respeto….
Ya sé que su cometido es arremeter contra ese ser humano (o cría del mismo) que al parecer, ha resultado ser un fracaso de «su» trabajo como formador, de mente y de opinión…
Pero se dan en este artículo, varias nociones, no solo certeras sino veraces, que parece ser, que usted, no lee ni en diagonal como nos dice a veces… o como diríamos en mi pueblo… se la pelan…
A pesar de que algunos hayamos dejado claro, que la base de datos importa tres pitos, porque la decisión la toma el código… y ese código, Sr Xaquin, lo ha escrito esa mediocre cría humana… esa misma, que usted en sus múltiples años de enseñanzas, tenía que haber adoctrinado en el camino correcto…
Si esa cría humana, no «funciona»… de quien es la culpa?
El algoritmo solo tiene capacidad estadística
Falso. Pienselo un poco. Es una estadística, guste o no sesgada. Recuerda usted cuando se lee en las noticias lo de “cocinar los barómetros de opinion”? pues es lo mismo.
Y ya veremos si una IA ultramejorada, llega a tener esa capacidad esencialmente humana de «sesgar».
Tendra esa capacidad si quienes se encargan de ella, tienen esos sesgos. Quien estará libre de tirar la primera piedra? Pues lo mismo.
¿Qué algoritmo puede soportar tamaño cúmulo de sandeces?
No lo hace ya la humanidad como algo intrinseco a ella misma?
Esta usted limpio de ello? Yo no. Lo acepto.
¿Qué algoritmo sería capaz de mantener su sistema operativo en forma?
Eso solo lo puede hacer el cerebro de un ser humano, versión mediocre…, y aún así, mudando en carne de cañón psiquiátrica.
Entonces, en que quedamos? El humano es capaz o no lo es? Porque lo que esta claro, es que si no lo es, la IA resultante, tampoco lo será…
No se si en alguna ocasion, le he recomendado a este paisano suyo…
No tengo por costumbre idolatrar a nadie… pero para mi… Respect.
En el colegio no te enseñarán a inventar aviones
Otro regalo (todo su canal, es un premio) :)
Señor Dans, yo trabajo en ciencia de datos y puedo decirle que pienso que tiene vd una idea equivocada y un tanto idealizada de lo que supone un proyecto de machine learning. Dice vd que programar en machine learning es cosa del pasado y tiene en parte razón, pero se equivoca en lo esencial. Lo esencial es que el 60% – 80% del tiempo de un proyecto de machine learning se dedica a extraer, entender, limpiar y preparar los datos que luego se utilizarán para el proyecto. Esta es la parte «fea» de los proyectos, y al menos las herramientas de autoML que yo conozco aportan bien poco en este aspecto; aportan como mucho en la parte de limpieza, normalización y feature engineering. Y eso con mucho cuidado. Para esta parte, en la caja de herramientas de cualquier cientifico de datos tienen que estar si o sí R o Python, mas SQL por supuesto. SQL normalmente para obtener los datos, y R o Python para describir y preparar.
Es cierto que cuando le pasas los datos preparaditos y limpitos, el autoML te prepara y compara en un plisplas un montón de modelos, te elige los que mejor pinta tienen, te optimiza sus parámetros … Esa es la parte «bonita» de los proyectos. Pero solo funcionan para modelos supervisados empleando los algoritmos habituales (árboles de decisión, SVM, gradient boosting, etc). Para todo lo demás, R o Python. Olvídese, por ejemplo, de Deep Learning, si no conoce Python
Y luego hay que explicar lo que sale, en lenguaje llano, a personas que no entienden de estadistica ni de ciencia de datos. En esta parte, como no use algunas de la librerías que dispone en Python o R para visualizar resultados, está vd perdido.
No me cabe duda de que en el futuro la situación cambiará, pero a día de hoy es lo que hay.
Antes de lanzarse al AutoML hay un buen montón de comandos que te ayudan a limpiar los datos de maravilla, y que, como bien dices, son absolutamente fundamentales en el trabajo previo. Es lo que cuento a mis alumnos: el 80% del trabajo está en la recolección de datos, en la transformación y limpieza de esos datos, y en la ingeniería necesaria para hacerlos utilizables. La mayoría de los data scientists son, en la práctica, data janitors, dedicados a la limpieza, pero claro, eso suena mucho menos sexy…
Python y R son el pasado. Se puede hace Deep Learning (y muchas cosas más) sin conocer Python ni R, y sin tirar ni una línea de código. Esa es la realidad de hoy, pero solo para quienes la saben ver (o los que realmente quieren mirar)…
Enrique
En el primer párrafo podemos conciliar. ¿Qué se puede hacer de otra manera a la que usa «casi todo el mundo»?
Pues me interesa conocer como.
Podría hacer un YT de 5 min, explicando como se hace TODO eso sin tirar código. Seguro que sería un buen incentivo para que los escépticos cambiemos de opinión y sea una buena auto-publicidad.
Pero si lo que nos ofrece es algo como esto:
https://bigml.com/education/videos
Apaga y vámonos. Tenemos conceptos distintos.
Lo lamento, pero no soy capaz de refutar afirmaciones tan categorícas como las suyas, sin datos. Sin duda pertenezco al grupo de los ciegos o impávidos desinformados.
Vuelvo cabizbajo a mi triste ocupacion de limpieza.
Sinceramente creo que los algoritmos se equivocan, pero no porque fallen los datos.
Es cierto que hay ciertos sectores demográficos que todos conocemos (también aquí en España) que da igual si elige un algoritmo o un director de banco, no se les debería dar créditos, ya solo con ver el histórico de impagos de los móviles, coches y embargos a la cuenta bancaria.
Sin embargo, las ML aun no tienen en cuenta el conjunto. Si tengo un equipo de 15 directivos masculinos y quiero elegir al mejor para el puesto 16, la ML debería tener en cuenta que el mejor candidato individual puede no ser el mejor candidato grupal: Hace falta una mujer en ese equipo.
Por eso creo que fallan, porque miran mucho al individuo y poco al conjunto
En ese ejemplo el que se equivoca no es el algoritmo, sino quien ha usado el algoritmo equivocado para tomar esa decisión.
Como cita el autor en alguno de los comentarios más arriba, el sentido común unido a la estadística son dos pilares fundamentales de la implementación de un machine learning adecuado.
En mi blog hemos experimentado con multitud de generadores de textos por IA que prometían maravillas y al final se han quedado siempre en eso, en promesas.
Leídos los diferentes comentarios, y reconociendo de entrada mi absoluta ignorancia en el campo de la ciencia de datos, intuyo que es Gorki quien pone el dedo en la llaga al plantear el dilema de quién es el responsable último de la autoría de los posibles sesgos.
Engroso las filas de los que piensan que es el humano el responsable último. Sólo que llegados a este punto, se nos presenta otro dilema, ya que ciñéndonos estrictamente al tema de los sesgos, existen dos tipos de individuos:
1. Los que viven su vida aplicando sin saberlo e inconscientemente los sesgos cognitivos que la psicología ha ido descubriendo (en mi opinión, la gran mayoría de la población, incluyendo incluso a jueces).
2. Los que por el motivo que sea (profesión, inquietud intelectual etc) tienen conocimiento de la existencia de esos sesgos (asunto aparte es qué hacen con esa valiosa información en la práctica de la vida diária).
Por ilustrar con un ejemplo, se ha observado que las personas agraciadas físicamente tienen muchas más probabilidades de recibir sentencias judiciales favorables o absolutorias que las no agraciadas.
Esto constituye un claro sesgo del que desconozco cuántos jueces son conscientes, pero que me parece que sería fácilmente subsanable (y que me corrijan los comentaristas más avezados en la parte técnica) absteniéndose simplemente de introducir esa variable en el hipotético algoritmo que en un futuro asumiera la función de juzgar.
Llegados a este punto, cabe preguntar si deberían los jueces (y otros gremios también) tomar obligado conocimiento de la existencia de los sesgos y recibir obligada formación sobre cómo introducir algún tipo de factor de corrección en sus condicionadas decisiones, teniendo en cuenta que afectan de manera decisiva e importante a la vida de terceros.
De paso contribuiríamos a fomentar el conocimiento y pensamiento científico en la sociedad, que falta le hace.
Ya en otros casos, no será posible evitar que el algoritmo tenga acceso a datos sesgados o mezclados con otros no sesgados. Como han explicado más arriba, en esos casos el algoritmo amasará los datos a los que le demos acceso y resolverá el problema basándose en ellos. De acuerdo. A partir de ahí pregunta de ignorante en ciencia de datos: sería posible introducirle algún tipo de factor de corrección que posibilitase individualizar en lo posible la decisión de turno?
Leyendo el artículo me da la impresión de que un algoritmo es bueno para tomar una decisión de igual forma que se ha hecho hasta ahora, dado que se basa en datos reales.
Es decir, igual de discriminatoria, racista, sexista, o con las mismas equivocaciones que hasta ahora pero de forma más rápida y económica.
No parece una buena herramienta para evolucionar como negocio, o si me apuras como especie.
Ayer vi un reportaje sobre Instagram en la cadena Arte.fr que hablaba entre otras cosas del seixismo de los algoritmos.
Ayer vi un reportaje sobre Instagram en la cadena Arte.fr que hablaba entre otras cosas del sexismo de los algoritmos.