Conceptos básicos y algoritmos del aprendizaje automático.
El aprendizaje automático es una rama de la informática que se centra en dotar a los sistemas informáticos de la capacidad de aprender y mejorar a partir de datos sin tener que programarlos explícitamente. El aprendizaje automático es fundamentalmente diferente de la programación tradicional.
La diferencia entre el aprendizaje automático y la programación tradicional
Programación tradicional:
en la programación tradicional, los desarrolladores escriben reglas e instrucciones detalladas que le indican a la computadora cómo realizar tareas. Las reglas están codificadas y el comportamiento del programa se define de antemano.
def add_numbers(a, b):
return a + b
En el ejemplo anterior, demostramos 明确指定
el comportamiento de una función que realiza una operación de suma de dos números .
Aprendizaje automático:
por el contrario, el aprendizaje automático utiliza datos para entrenar un modelo, que aprende automáticamente tareas basadas en los datos . El comportamiento del modelo se deriva de los datos en lugar de estar codificado. Esto hace que el aprendizaje automático sea muy útil cuando se trata de tareas complejas, ambiguas o que requieren grandes cantidades de datos.
# 一个简单的线性回归模型
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X, y)
En este ejemplo, el modelo aprende una relación lineal a partir de los datos sin escribir explícitamente las reglas para la suma.
Aprendizaje supervisado, aprendizaje no supervisado y aprendizaje por refuerzo.
El aprendizaje automático se puede dividir en tres categorías principales:
- aprendizaje supervisado
- aprendizaje sin supervisión
- aprendizaje reforzado
La diferencia entre ellos es 数据
y 任务类型
.
aprendizaje supervisado
El aprendizaje supervisado es uno de los tipos más comunes de aprendizaje automático. En este caso, el modelo aprende de los datos de entrada y las etiquetas correspondientes (o salidas). La tarea del modelo es predecir etiquetas para datos desconocidos .
Escenario de aplicación:
clasificación de imágenes: el modelo predice los objetos o escenas contenidos en la imagen en función de sus valores de píxeles.
# 一个图像分类示例
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
# 加载手写数字数据集
data = load_digits()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2)
# 创建一个逻辑回归分类器
classifier = LogisticRegression()
classifier.fit(X_train, y_train)
# 预测测试数据
predictions = classifier.predict(X_test)
aprendizaje sin supervisión
El aprendizaje no supervisado no implica etiquetas; el modelo tiene la tarea de descubrir patrones y estructuras en los datos . Este tipo de aprendizaje se utiliza normalmente para 聚类
y 降维
.
Casos de uso:
Agrupación: agrupar puntos de datos similares, como segmentación de mercado o análisis de redes sociales.
# 一个K均值聚类示例
from sklearn.cluster import KMeans
# 创建一个K均值聚类器
kmeans = KMeans(n_clusters=3)
kmeans.fit(X)
# 获取每个样本的簇分配
cluster_assignments = kmeans.labels_
aprendizaje reforzado
El aprendizaje por refuerzo implica que un agente aprenda estrategias de comportamiento óptimas a través de la interacción con el entorno. El agente actúa, observa la retroalimentación del entorno y 反馈
mejora su comportamiento en consecuencia.
Escenario de aplicación:
Conducción autónoma: los vehículos inteligentes aprenden estrategias de conducción óptimas a través de la interacción con el entorno de la carretera.
# 一个强化学习示例
import gym
# 创建CartPole环境
env = gym.make('CartPole-v1')
# 初始化Q学习表
q_table = np.zeros([env.observation_space.shape[0], env.action_space.n])
# Q学习训练
Algoritmos comunes de aprendizaje automático
Los algoritmos de aprendizaje automático son los componentes básicos de los modelos de aprendizaje automático y se eligen en función de diferentes tareas y tipos de datos. A continuación se muestran algunos algoritmos comunes de aprendizaje automático:
regresión lineal
La regresión lineal se utiliza para modelar la relación lineal entre las variables de entrada y las variables de salida. Es adecuado para problemas de regresión donde las salidas son valores continuos .
Escenario de aplicación:
Predicción del precio de la vivienda: predicción de los precios de la vivienda en función de las características de la misma.
# 一个线性回归示例
from sklearn.linear_model import LinearRegression
# 创建一个线性回归模型
model = LinearRegression()
# 拟合模型
model.fit(X, y)
# 进行预测
predictions = model.predict(new_data)
árbol de decisión
Un árbol de decisión es un modelo similar a un árbol que se utiliza para clasificación y regresión . Divide los datos en múltiples subconjuntos, cada subconjunto correspondiente a una ruta de decisión.
Escenario de aplicación:
Predicción de abandono de clientes: prediga si un cliente abandonará en función de su comportamiento histórico.
# 一个决策树分类示例
from sklearn.tree import DecisionTreeClassifier
# 创建一个决策树分类器
classifier =
DecisionTreeClassifier()
# 拟合模型
classifier.fit(X, y)
# 进行预测
predictions = classifier.predict(new_data)
Máquinas de vectores de soporte
La máquina de vectores de soporte es un potente algoritmo que se utiliza para clasificación y regresión. Divide los datos encontrando el hiperplano óptimo.
Escenario de aplicación:
Clasificación de texto: clasifique datos de texto en diferentes categorías, como la detección de spam.
# 一个支持向量机分类示例
from sklearn.svm import SVC
# 创建一个支持向量机分类器
classifier = SVC()
# 拟合模型
classifier.fit(X, y)
# 进行预测
predictions = classifier.predict(new_data)
Redes neuronales
Una red neuronal es un 人脑结构
modelo inspirado en capas de neuronas, cada una de las cuales contiene múltiples nodos.
Escenario de aplicación:
Reconocimiento de imágenes: identificación de objetos o escenas en imágenes.
# 一个简单的神经网络示例
import tensorflow as tf
# 创建一个神经网络模型
model = tf.keras.Sequential([
tf.keras.layers.Dense(128, activation='relu', input_shape=(input_dim,)),
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dense(output_dim, activation='softmax')
])
# 编译模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# 训练模型
model.fit(X_train, y_train, epochs=10, batch_size=32)
# 进行预测
predictions = model.predict(new_data)
La diferencia entre el aprendizaje profundo y el aprendizaje automático tradicional
El aprendizaje profundo es una rama del aprendizaje automático que utiliza redes neuronales profundas para aprender y representar datos. En comparación con el aprendizaje automático tradicional, el aprendizaje profundo tiene las siguientes diferencias:
-
Aprendizaje de funciones: el aprendizaje automático tradicional generalmente requiere la selección y extracción manual de funciones, mientras que el aprendizaje profundo puede aprender automáticamente representaciones de funciones a partir de datos, lo que reduce la necesidad de ingeniería de funciones.
-
Relaciones no lineales complejas: el aprendizaje profundo puede modelar relaciones no lineales complejas, lo que lo convierte en un gran éxito en campos como el reconocimiento de imágenes y el procesamiento del lenguaje natural.
-
Datos a gran escala: el aprendizaje profundo funciona bien en conjuntos de datos a gran escala, lo que requiere más datos para entrenar redes neuronales grandes.
-
Recursos informáticos: el entrenamiento de modelos de aprendizaje profundo generalmente requiere una gran cantidad de recursos informáticos (como GPU o TPU) y tiempo, lo que es más intensivo desde el punto de vista computacional que los algoritmos tradicionales de aprendizaje automático.
-
Naturaleza de caja negra: los modelos de aprendizaje profundo a menudo se consideran modelos de caja negra, lo que dificulta explicar sus procesos de toma de decisiones, mientras que los modelos tradicionales de aprendizaje automático son más fáciles de explicar y comprender.