• No se han encontrado resultados

30 Preguntas Esenciales en Entrevistas de Machine Learning Preguntas Prácticas

N/A
N/A
Protected

Academic year: 2022

Share "30 Preguntas Esenciales en Entrevistas de Machine Learning Preguntas Prácticas"

Copied!
5
0
0

Texto completo

(1)

30 Preguntas Esenciales en Entrevistas de Machine

Learning

Preguntas Prácticas

Pregunta 18: ¿Cuál es la diferencia entre Spark y Hadoop?

Respuesta: Tanto Spark como Hadoop son frameworks para procesamiento distribuido de big data, la cual definimos como data demasiado grande como para caber en un solo computador.

Hadoop está basado en MapReduce, mientras que Spark, aunque también puede usar este protocolo, se centra en el concepto de Transformaciones y Acciones. Una transformación es una operación que se debe llevar a cabo en un futuro, mientras que una acción es una operación que demanda un resultado inmediato.

Spark corre sobre Hadoop, entre otros backends.

Hadoop es “eager”, lo que significa que lleva a cabo todas las operaciones de inmediato, incurriendo en demasiadas escrituras a disco y en comunicación constante por la red. Spark, por su parte, es “lazy”, es decir, que sólo ejecuta las operaciones cuando necesita el resultado, no antes.

Spark utiliza un grafo de ejecución, lo que le facilita hacer la mayoría de los cálculos en memoria, con base a las transformaciones y acciones definidas en el mismo. Por supuesto, como Spark trabaja en memoria, es muchísimo más rápido que Hadoop.

—————

Pregunta 19: Define tu proceso para atacar un proyecto de machine learning

Respuesta: En esta pregunta, el entrevistador lo que quieres es entender tu proceso mental para abordar un proyecto de machine learning, por lo que resulta de gran importancia que

(2)

aprendizaje automático.

Por ejemplo, este es mi proceso:

“En primer lugar, nos familiarizamos con los datos mediante un análisis exploratorio,

visualizaciones y otras herramientas descriptivas para entender la distribución de los mismos, si está o no balanceado, si hay outliers o data faltante, entre otras cosas.

En segunda instancia, nos preguntamos si realmente necesitamos machine learning, o si existe una solución más sencilla y directa a la mano. No siempre machine learning es la solución perfecta, por lo que no debemos subestimar la importancia de este paso.

Si hace falta machine learning, realizamos spot-checking, un proceso que consiste en probar, de manera automática, numerosas combinaciones de algoritmos, transformaciones de datos y otros parámetros, para tener una idea de qué modelos son más prometedores, y cuales hay que descartar.

Con base a los resultados de spot-checking, procedemos a tomar los 2 o 3 mejores candidatos, y los optimizamos, usando herramientas como GridSearchCV de scikit-learn.

Es necesario mencionar que un modelo más complejo debe venir siempre acompañado de una mejora sustancial en el desempeño.”

—————

Pregunta 20: ¿Cuáles librerías de visualización usas?

Respuesta: Esta pregunta lo que busca, más allá de saber qué herramientas usas, es evaluar la importancia que le das a la visualización de los datos. Muchos ingenieros de machine learning se van directamente al entrenamiento, sin prestarle suficiente atención a la data, lo cual es un error fatal.

Esta sería mi respuesta: “Uso matplotlib, ya que es la herramienta más popular y soportada por la comunidad, aunque ocasionalmente utilizo seaborn, ya que su API me parece más sencillo e intuitivo, y sus gráficos son más estilizados que los de matplotlib.”

(3)

—————

Pregunta 21: ¿Cómo lidias con data corrupta o faltante en un conjunto de datos?

Respuesta: Para determinar que hay data corrupta o faltante en nuestro dataset, podemos usar herramientas como Pandas o NumPy. En el caso de pandas, contamos con la función isnull(), la cual nos indica si un valor en una instancia es nulo o no.

Luego, hay varias estrategias que podemos aplicar. La primera sería eliminar las instancias con data corrupta o faltante, para lo cual usaríamos la función dropna() de Pandas. Sin embargo, siempre que podamos evitar perder datos, mejor, razón por la que, en cambio, podríamos sustituir los valores anómalos con una estadística descriptiva, como la media, o con una constante, para lo cual usaríamos la función fillna() de Pandas.

—————

Pregunta 22: ¿Cómo entrenarías un modelo sobre data demasiado grande?

Respuesta: Si estamos trabajando con machine learning tradicional, lo más seguro es que estemos usando scikit-learn. El problema es que la mayoría de los modelos de scikit-learn tienen que almacenar toda la data en memoria para poder entrenar, por lo que nos veríamos forzados a usar un subconjunto, algo que no es ideal.

También podemos optar por herramientas especializadas en big data, como Spark, cuyo módulo SparkML se especializa en machine learning. Si queremos entrenar redes neuronales profundas de forma distribuida, podemos usar DeepLearning4J, un framework de Deep learning que corre sobre Spark.

Un librería experimental que remedia las limitaciones de scikit-learn en este aspecto es Creme.

No obstante, el hecho de que sea experimental la vuelve una opción riesgosa para desarrollar código de producción.

Finalmente, si se trata de deep learning, librerías como Keras y TensorFlow ofrecen

funcionalidades para entrenar en pequeños lotes de datos a la vez, los cuales se cargan de disco cuando se necesitan.

(4)

—————

Pregunta 23: ¿Cuál es la diferencia entre una lista, un arreglo y un conjunto?

Respuesta: Muchos candidatos a puestos de machine learning cometen el error de ignorar las preguntas sobre estructuras de datos. ¡Recuerda que machine learning es una subárea de la ingeniería de software, por lo que cualquier pregunta técnica de algoritmos y estructuras es válida, al igual que los problemas de programación!

En este caso, lo que se te pide es diferenciar tres estructuras muy similares entre sí.

En primer lugar, una lista es una colección ordenada de elementos que puede crecer

dinámicamente. Esto quiere decir que no necesitamos especificar su tamaño con antelación.

Sin embargo, el acceso aleatorio a este tipo de estructuras es muy lento, ya que tenemos que recorrerla, elemento por elemento, hasta encontrar al que buscamos. La inserción al principio suele hacerse en tiempo constante, pero en el medio es en tiempo lineal, u O(n).

Un arreglo también es una colección ordenada de elementos, pero a diferencia de las listas, tenemos que definir su tamaño al momento de crearla. Esto se debe a que el compilador debe reservar un espacio contiguo en memoria lo suficientemente grande como para almacenar todo sus elementos. Sin embargo, esto resulta ventajoso, ya que acceder cualquier elemento en el arreglo, por su índice, se hace en tiempo constante.

Por último, un conjunto es una colección de elementos donde no hay noción de orden.

Tampoco podemos acceder elementos de manera aleatoria por su índice. El lado positivo es que garantiza unicidad, y como la mayoría de los lenguajes de programación suelen

implementarlos con árboles, la verificación de pertenencia, así como la inserción, suelen ser operaciones relativamente rápidas.

—————

Pregunta 24: ¿Cuál es la diferencia entre concurrencia y paralelismo?

Respuesta: Concurrencia es cuando la ejecución de un programa se puede hacer de forma intercalada sin afectar el resultado final.

(5)

El paralelismo, por su parte, se refiere a la ejecución simultánea de varias partes de un programa o programas. Para que un programa sea paralelizable, las diferentes partes a ser corridas al mismo tiempo deben ser independientes entre sí.

Un ejemplo de un programa paralelizable es la multiplicación de matrices, ya que la

multiplicación de las filas de una de las matrices por las columnas de la otra se puede hacer al mismo tiempo. Sólo al final se juntan los resultados de cada porción independiente de código, mediante la suma de sus valores.

—————

Pregunta 25: En cada una de estas tres situaciones, dime si vale la pena usar paralelismo y por qué:

1) Multiplicar dos matrices de 3x3.

2) Multiplicar dos matrices de 10.000x10.000.

3) Imprimir todos los elementos de una lista gigante en orden.

Respuesta:

En el primer caso, ya que las matrices son muy pequeñas, el costo de paralelización (conocido como overhead) sería mayor que el de multiplicarlas secuencialmente.

En el segundo escenario las matrices son enormes, lo que significa que las ganancias o ventajas de una solución paralela son mucho mayores que el overhead asociado a coordinar los hilos del programa, sin mencionar que una solución secuencial sería varios órdenes de magnitud más lenta.

En el tercer y último caso, aunque se trata de un problema suficientemente grande que en teoría podría beneficiarse del paralelismo, la restricción de que los elementos deben ser impresos en el orden original nos impide usarlo, ya que el paralelismo es no determinístico por naturaleza, lo que se traduce en una imposibilidad de garantizar que los elementos se

imprimirán en el orden en el que aparecen en la lista.

Referencias

Documento similar

1. LAS GARANTÍAS CONSTITUCIONALES.—2. C) La reforma constitucional de 1994. D) Las tres etapas del amparo argentino. F) Las vías previas al amparo. H) La acción es judicial en

El contar con el financiamiento institucional a través de las cátedras ha significado para los grupos de profesores, el poder centrarse en estudios sobre áreas de interés

En cuarto lugar, se establecen unos medios para la actuación de re- fuerzo de la Cohesión (conducción y coordinación de las políticas eco- nómicas nacionales, políticas y acciones

En el capítulo de desventajas o posibles inconvenientes que ofrece la forma del Organismo autónomo figura la rigidez de su régimen jurídico, absorbentemente de Derecho público por

b) El Tribunal Constitucional se encuadra dentro de una organiza- ción jurídico constitucional que asume la supremacía de los dere- chos fundamentales y que reconoce la separación

Volviendo a la jurisprudencia del Tribunal de Justicia, conviene recor- dar que, con el tiempo, este órgano se vio en la necesidad de determinar si los actos de los Estados

(29) Cfr. MUÑOZ MACHADO: Derecho público de las Comunidades Autóno- mas, cit., vol. Es necesario advertir que en la doctrina clásica este tipo de competencias suele reconducirse

"No porque las dos, que vinieron de Valencia, no merecieran ese favor, pues eran entrambas de tan grande espíritu […] La razón porque no vió Coronas para ellas, sería