Recuerde la experiencia y las ganancias de la primera competencia de algoritmos de datos CCF (ranking top1, top2%, top8%), ¡CCF se reunirá nuevamente el próximo año!

Solo comencé a aprender ml y dl este año. No aprendí mucho sobre dl, principalmente ml. Comencé a aprender conocimientos teóricos durante las vacaciones de verano. Durante el proceso de aprendizaje, supe que DataWhale, una organización de código abierto relativamente grande en China, puede aprender de ellos. Llegué a mucho y conocí a muchos peces gordos. Poco a poco comencé a comprender la competencia. Desde la introducción basada en 0 a Kaggle, a Tianchi y luego a la competencia CCF posterior, en solo unos meses, tengo una cierta comprensión de las competencias de ciencia de datos. Espero Puede obtener los premios de primera fila en las competencias posteriores y las competencias CCF del próximo año. Esta competencia de la CCF participó en un total de 6 competencias, cinco competencias oficiales y una competencia de entrenamiento.

Inserte la descripción de la imagen aquí
Hay cuatro competencias estructuradas y dos competencias de PNL. Solo hay 3 competencias en las que realmente participaste en todo el proceso. También hay una que tomó algo de tiempo. Si hay dos competencias, hice clic para participar, pero no hubo mención. Y el resultado.

Presentamos algunos de los concursos en los que participé en todo el proceso, uno por uno, y también resumamos algunos de los conocimientos adquiridos en el concurso.



1. Clasificación de los datos de series temporales de movimientos de usuarios en interiores

Dirección de la pregunta: Clasificación de datos de series temporales de deportes de usuarios de interior.
Esta pregunta y los compañeros de equipo trabajaron juntos y obtuvieron el primer lugar. También escribí una línea de base antes de esta competencia.
Inserte la descripción de la imagen aquí

1. Introducción de datos

Con base en las necesidades reales anteriores y el progreso del aprendizaje profundo, esta competencia de capacitación tiene como objetivo construir un algoritmo de clasificación de series de tiempo general. Establezca un modelo de clasificación de series de tiempo preciso a través de esta pregunta y espere que todos exploren métodos de expresión de características de series de tiempo más sólidos.

De hecho, esta pregunta del concurso es bastante vaga y no se da una explicación específica. Para los datos, todos arrojan directamente los datos al modelo al principio y luego envían el resultado directamente para obtener una buena puntuación.

2. Descripción de los datos

Inserte la descripción de la imagen aquí

3. Cosecha de caza

También es la primera vez que entro en contacto con este tipo de problema de series de tiempo. No sabía cómo empezar desde el principio. Con los productos secos compartidos por nuestros compañeros de equipo, comenzamos a crear funciones, agregamos las funciones creadas a los datos originales y luego entrenamos juntos. Ha jugado un buen papel y el aumento de puntuación también es bastante grande.

Por lo tanto, si hay menos funciones para ti cuando juegas, tienes que aprender a buscar nuevas funciones a partir de los datos dados, como

 #统计特征    
    max_X=data.x.max()
    min_X=data.x.min()
    range_X=max_X-min_X
    var_X=data.x.var()
    std_X=data.x.std()
    mean_X=data.x.mean()
    median_X=data.x.median()
    kurtosis_X=data.x.kurtosis()
    skewness_X =data.x.skew()
    Q25_X=data.x.quantile(q=0.25)
    Q75_X=data.x.quantile(q=0.75)
    #聚合特征
    
    #差分值
    max_diff1_x=data.x.diff(1).max()
    min_diff1_x=data.x.diff(1).min()
    range_diff1_x=max_diff1_x-min_diff1_x
    var_diff1_x=data.x.diff(1).var()
    std_diff1_x=data.x.diff(1).std()
    mean_diff1_x=data.x.diff(1).mean()
    median_diff1_x=data.x.diff(1).median()
    kurtosis_diff1_x=data.x.diff(1).kurtosis()
    skewness_diff1_x =data.x.diff(1).skew()
    Q25_diff1_X=data.x.diff(1).quantile(q=0.25)
    Q75_diff1_X=data.x.diff(1).quantile(q=0.75)

Espere, se han creado más de 30 nuevas funciones.

Además, aprendí el método de fusión de apilamiento de este juego, además de las nuevas características de la estructura, y luego utilicé este método de fusión, el aumento de puntaje es particularmente grande, no conozco los otros juegos, ¡al menos este juego es así!

2. Predicción del riesgo de recaudación de fondos ilegal por parte de empresas

Los datos oficiales de este juego son muchos. ¡Cómo extraer funciones útiles de varias mesas es la clave de este juego! También escribí una acción de referencia antes , que se mejoró sobre la base de la referencia de Shui Ge A榜排名36,B榜79. En general es bueno.
Una lista
Lista B

1. Introducción de datos

El conjunto de datos contiene datos de unas 25.000 empresas, de las cuales unas 15.000 empresas han etiquetado los datos como el conjunto de formación y los datos restantes como el conjunto de prueba. Los datos consisten en información corporativa básica, informes anuales corporativos, estado tributario corporativo, etc. Los datos incluyen muchos tipos de datos (insensibilizados) como numérico, carácter y fecha. Algunos campos faltan en algunas empresas. La primera columna es id. Es la identificación única de la empresa.

2. Descripción de los datos

Aquí, tome la primera tabla base_info.csv como ejemplo, que
contiene la información básica de todas las empresas involucradas en los conjuntos de datos 7 y 8. Cada fila representa los datos básicos de una empresa y cada fila tiene 33 columnas. La columna id es la identificación única de la empresa. Las columnas están separadas por separadores ",".

El formato de datos es el siguiente:
Inserte la descripción de la imagen aquí

#读取数据
base_info = pd.read_csv(PATH + 'base_info.csv')
#输出数据shape和不重复企业id数
print(base_info.shape, base_info['id'].nunique())
#读取数据
base_info.head(1)
#查看缺失值,这里借助了missingno这个包,import missingno as msno。
msno.bar(base_info)#查看缺失值

Gráfico de resultados:
Inserte la descripción de la imagen aquí
este gráfico muestra claramente qué datos tienen valores perdidos. El eje horizontal es la característica y el eje vertical es el número de valores no perdidos. ¡Las áreas blancas de cada columna representan valores perdidos!

3. Cosecha de caza

3.1 Selección y construcción de características

En los datos proporcionados por esta competencia, muchas tablas tienen valores perdidos. Para el procesamiento de valores perdidos, la selección y construcción de características, cruce de características, agrupamiento, etc., debe tener cierta comprensión, porque las buenas características son el siguiente paso. La base del entrenamiento modelo. Para el procesamiento de funciones, consulte un artículo que escribí antes.

#orgid	机构标识 oplocdistrict	行政区划代码	  jobid	职位标识	
base_info['district_FLAG1'] = (base_info['orgid'].fillna('').apply(lambda x: str(x)[:6]) == \
    base_info['oplocdistrict'].fillna('').apply(lambda x: str(x)[:6])).astype(int)
base_info['district_FLAG2'] = (base_info['orgid'].fillna('').apply(lambda x: str(x)[:6]) == \
    base_info['jobid'].fillna('').apply(lambda x: str(x)[:6])).astype(int)
base_info['district_FLAG3'] = (base_info['oplocdistrict'].fillna('').apply(lambda x: str(x)[:6]) == \
    base_info['jobid'].fillna('').apply(lambda x: str(x)[:6])).astype(int)

#parnum	合伙人数	exenum	执行人数  empnum	从业人数
base_info['person_SUM'] = base_info[['empnum', 'parnum', 'exenum']].sum(1)
base_info['person_NULL_SUM'] = base_info[['empnum', 'parnum', 'exenum']].isnull().astype(int).sum(1)

#regcap	注册资本(金) congro	投资总额
# base_info['regcap_DIVDE_empnum'] = base_info['regcap'] / base_info['empnum']
# base_info['regcap_DIVDE_exenum'] = base_info['regcap'] / base_info['exenum']

# base_info['reccap_DIVDE_empnum'] = base_info['reccap'] / base_info['empnum']
# base_info['regcap_DIVDE_exenum'] = base_info['regcap'] / base_info['exenum']

#base_info['congro_DIVDE_empnum'] = base_info['congro'] / base_info['empnum']
#base_info['regcap_DIVDE_exenum'] = base_info['regcap'] / base_info['exenum']

base_info['opfrom'] = pd.to_datetime(base_info['opfrom'])#opfrom	经营期限起	
base_info['opto'] = pd.to_datetime(base_info['opto'])#opto	经营期限止
base_info['opfrom_TONOW'] = (datetime.now() - base_info['opfrom']).dt.days
base_info['opfrom_TIME'] = (base_info['opto'] - base_info['opfrom']).dt.days

#opscope	经营范围	
base_info['opscope_COUNT'] = base_info['opscope'].apply(lambda x: len(x.replace("\t", ",").replace("\n", ",").split('、')))

#对类别特征做处理
cat_col = ['oplocdistrict', 'industryphy', 'industryco', 'enttype',
           'enttypeitem', 'enttypeminu', 'enttypegb',
          'dom', 'oploc', 'opform','townsign']
#如果类别特征出现的次数小于10转为-1
for col in cat_col:
    base_info[col + '_COUNT'] = base_info[col].map(base_info[col].value_counts())
    col_idx = base_info[col].value_counts()
    for idx in col_idx[col_idx < 10].index:
        base_info[col] = base_info[col].replace(idx, -1)        

# base_info['opscope'] = base_info['opscope'].apply(lambda x: x.replace("\t", " ").replace("\n", " ").replace(",", " "))
# clf_tfidf = TfidfVectorizer(max_features=200)
# tfidf=clf_tfidf.fit_transform(base_info['opscope'])
# tfidf = pd.DataFrame(tfidf.toarray())
# tfidf.columns = ['opscope_' + str(x) for x in range(200)]
# base_info = pd.concat([base_info, tfidf], axis=1)

base_info = base_info.drop(['opfrom', 'opto'], axis=1)#删除时间

for col in ['industryphy', 'dom', 'opform', 'oploc']:
    base_info[col] = pd.factorize(base_info[col])[0]

He agregado los significados de estos campos en el código para que pueda entender estos significados y hacer un poco de procesamiento. También puede agregar estos significados.

3.2 Selección de modelo

En cuanto a la elección de modelos, básicamente todo el mundo elige varios modelos populares para el aprendizaje integrado, como XGboost, Lightgbm y Catboost.

Estos modelos individuales tienen buenos resultados en muchas competiciones. Si se combinan los resultados de estos modelos, el efecto puede ser mejor. Por supuesto, puede haber diferencias en los efectos de varios modelos en algunas competiciones, y estos modelos de aprendizaje integrados pueden corregir automáticamente la falta ¡Las características de valor se manejan por sí mismas!

Pero es recomendable que aprendas los conocimientos teóricos de estos aprendizajes integrados, los cuales te serán de gran ayuda para tu posterior estudio o competencia.

3. Descubrimiento inteligente y clasificación del contenido de datos para la gobernanza de la seguridad de los datos

Esta es una competencia relacionada con la PNL. Para ser honesto, no leo mucho sobre las teorías relacionadas con la PNL, por lo que esta competencia puede considerarse como una competencia introductoria para el aprendizaje personal. No usé métodos de aprendizaje profundo, sino máquinas tradicionales. Para aprender a hacer, el laboratorio no tiene las condiciones para hacer deep learning, y solo una simple comprensión de este modelo de deep learning.
Inserte la descripción de la imagen aquí

1. Introducción de datos

(1) Datos anotados: Un total de 7000 documentos, las categorías incluyen 7 categorías, a saber: finanzas, bienes raíces, muebles para el hogar, educación, tecnología, moda y actualidad.Cada categoría contiene 1000 documentos.
(2) Datos sin etiquetar: 33.000 documentos en total.
(3) Clasificación y datos de prueba de clasificación: un total de 20.000 documentos, incluidas 10 categorías: finanzas, bienes raíces, muebles para el hogar, educación, tecnología, moda, actualidad, juegos, entretenimiento y deportes.

2. Descripción de los datos

Esta competencia es generalmente una tarea de clasificación, pero una dificultad es que el oficial solo dio 7 categorías de conjuntos de entrenamiento, pero usted necesita predecir diez categorías, por lo que las otras tres categorías deben ser dadas por usted mismo. ¡Marcan y entrenan juntos!
Inserte la descripción de la imagen aquí

3. Cosecha de caza

La primera vez que entré en contacto con el conocimiento de PNL, realmente era un poco blanco y no entendía mucho conocimiento teórico, por lo que este juego también es una forma de oportunismo, y también aprendí algunos conceptos nuevos para datos de tipo texto.

Idea 1: el clasificador de aprendizaje automático TF-IDF +
usa directamente TF-IDF para extraer características del texto, usa clasificadores para la clasificación y los clasificadores seleccionados pueden usar SVM, LR, XGboost, etc.

Idea 2: FastText
FastText es un vector de palabras de nivel de entrada. Con la herramienta FastText proporcionada por Facebook, puede construir rápidamente un clasificador

Idea 3: WordVec + clasificador de aprendizaje profundo
WordVec es un vector de palabras avanzado, y la clasificación se completa construyendo una clasificación de aprendizaje profundo. La estructura de red de la clasificación de aprendizaje profundo puede elegir TextCNN, TextRnn o BiLSTM.

Idea 4: vector de palabras de
Bert Bert es un vector de palabras altamente emparejado con potentes capacidades de modelado y aprendizaje.

Cuatro, resumen

Al participar en este tipo de competencia de ciencia de datos por primera vez, he ganado mucho. Puedo crecer rápidamente en la competencia, comunicarme con otros estudiantes y aprender muchos conocimientos nuevos. Es posible que parte del contenido solo se haya visto en teoría, pero no No lo he hecho en la práctica. A través de la competencia, puedo aprender más habilidades y métodos que no se pueden ver en la teoría. La primera competencia CCF terminó con éxito. Pasar a otras competencias. ¡Volveré la competencia CCF el próximo año!

Tiempo de grabación: 7 de diciembre de 2020

Supongo que te gusta

Origin blog.csdn.net/weixin_42305672/article/details/110791479
Recomendado
Clasificación