Arboles de decisión para la predicción de violencia física contra la mujer

j0sue
Data Science Bolivia
8 min readFeb 18, 2020

La violencia contra las mujeres es uno de los principales problemas sociales en Latinoamérica, infortunadamente Bolivia no es la excepción. A lo largo de nuestra historia este problema ha sido relegado, sin embargo los avances en los últimos años son significativos, en cuanto a Tratados y Convenios Internacionales sobre Derechos Humanos suscritos y ratificados por el Estado Plurinacional de Bolivia, la Ley Integral para Garantizar a las Mujeres una Vida Libre de Violencia N° 348 y sus Decretos Reglamentarios; además de su puesta en escena como uno de los principales conflictos, lo que está conduciendo a una concientización de la sociedad.

Antecedentes

En la mayor parte de los países latinoamericanos, entre ellos Bolivia, en la década de los noventa se empezaron a gestionar datos estadísticos sobre mujeres que sufrían violencia y sobre la complejidad del problema.

En el año 2016 el Instituto Nacional de Estadística (INE) presentó a la comunidad en general, los resultados de la primera “Encuesta de Prevalencia y Características de la Violencia contra las Mujeres”. Los datos son alarmantes como a continuación se muestra.

Fuente: Instituto Nacional de Estadística — EPCVcM 2016
DISTRIBUCIÓN PORCENTUAL DE MUJERES CASADAS O EN UNIÓN LIBRE DE 15 AÑOS O MÁS DE EDAD QUE HAN VIVIDO O VIVEN SITUACIONES DE VIOLENCIA A LO LARGO DE SU RELACIÓN DE PAREJA POR DEPARTAMENTO. Fuente: Elaboración propia

De donde se observa que casi el 75% de la población femenina casada o en unión libre ha sufrido una situación de violencia.

Pero también, la creencia de que existe alguna justificación para la violencia por parte de las mismas mujeres es de casi un 40%.

Fuente: Instituto Nacional de Estadística — EPCVcM 2016

Objetivos del proyecto

Predecir mediante un algoritmo de aprendizaje supervisado si una mujer sufrirá violencia física por parte de su pareja conviviente.

Para cumplir con este objetivo se ha seguido la siguiente línea de trabajo

  • Delimitación del proyecto
  • Obtención de los datos
  • Selección de los datos
  • Selección del algoritmo
  • Construcción del modelo predictivo

Delimitación del proyecto

El proyecto está limitado a los casos de violencia física en mujeres casadas o convivientes, dentro de un rango de edad desde los 15 hasta los 60 años, tanto del área urbana como rural.

Obtención de los datos

La “Encuesta de Prevalencia y Características de la Violencia contra las Mujeres” está compuesta de 4 secciones:

  • Primera sección, describe el marco normativo y conceptual.
  • Segunda sección, contiene información sobre mujeres agredidas en el ámbito privado, mujeres que fueron agredidas por su pareja o ex pareja a lo largo de su vida y en los últimos 12 meses.
  • Tercera sección, despliega datos sobre las mujeres agredidas en el ámbito público, en la calle, el trabajo o los centros educativos.
  • Cuarta sección, presenta una síntesis del Diseño Metodológico, con estimaciones confiables para los indicadores de violencia.

Puede encontrarse los cuestionarios, el informe final y los datasets de la encuesta en la pagina web del Instituto Nacional de Estadística (INE) https://www.ine.gob.bo/index.php/prensa/publicaciones/411-publicaciones/todas-las-publicaciones/2017/326-encuesta-de-prevalencia-violencia-contra-la-mujer

Selección y depuración de los datos

Se trabajó con el dataset de la tercera sección. Comprende más de 100 preguntas con 4800 mujeres encuestadas. Esto corresponde a la encuesta 02 CUESTIONARIO_VIOLENCIA_casada.pdf y el dataset de las respuestas EPCVCM_Casadas.xlsx

Fuente: Elaboración propia
CUESTIONARIO_VIOLENCIA_casada.pdf Fuente: Elaboración propia
EPCVCM_Casadas.xlsx Fuente: Elaboración propia

Este cuestionario de la encuesta comprende los siguientes ámbitos, de los cuales se consideró solo los cuatro primeros, por contener información más relevante y manejable.

  • Sección 1 Ámbito social, educativo y laboral
  • Sección 2 Familia de origen y situación patrimonial
  • Sección 3 Relación actual
  • Sección 4 Decisiones y roles
  • Sección 5 Trabajo en el hogar
  • Sección 6 Violencia sexual
  • Sección 7 Violencia obstétrica
  • Sección 8 Solo para mujeres de 60 años o más

De las más de cien preguntas se descartaron aquellas que eran

  • Abiertas o respuestas libres
  • Secundarias o menos influyentes en la predicción

Como ejemplo, la siguiente pregunta contiene una opción (6. Otro) que es abierta y por tanto no presenta una etiqueta concreta. Además no es relevante, ya que indaga sobre el sitio donde se atendió las heridas causadas producto de la violencia física que sufrió la mujer.

Pregunta descartada por tener respuesta abierta y no ser relevante Fuente: Elaboración propia
  • Parecidas

Como ejemplo, se seleccionó la pregunta 4 (por ser más crítica) descartando la pregunta 3.

Preguntas parecidas, donde se seleccionó la mas crítica Fuente: Elaboración propia

También se agrupó las respuestas de las pregunta del cuestionario en un máximo de 3. Como en el ejemplo de a continuación.

Pregunta seleccionada con 12 posibles respuestas Fuente: Elaboración propia
Agrupamiento de las respuestas de la pregunta seleccionada Fuente: Elaboración propia

Con las consideraciones anteriores y la limpieza de los datos, de las 4800 mujeres encuestas, se seleccionaron 225 para el dataset final de entrenamiento y prueba, y 9 preguntas que abordan tres aspectos importantes para el perfil de la mujer.

  • Aspecto social de la mujer

1 ¿Qué persona adulta la cuidaba y se encargaba de usted principalmente?

a) Padres

b) Otros familiares

2 ¿Usted recuerda si las personas con las que vivía se insultaban o se ofendían entre ellas/os?

a) Sí

b) No

3 ¿Durante su niñez, las personas con las que vivía, alguna vez a usted la

a) Maltrataban

b) Amenazaban

c) Nada

  • Aspecto social de la pareja de la mujer

4 ¿Usted sabe si a su esposo o pareja, lo maltrataban cuando era niño?

a) Sí

b) No

5 ¿Usted sabe si el papá maltrataba a la mamá de su esposo o pareja, cuando él era niño?

a) Sí

b) No

  • Aspecto de la convivencia

6 Usted se casó o empezó a vivir con su actual esposo o pareja por …

a) Embarazo

b) Por amor

7 ¿Qué edad tenía cuando se casó o empezó a vivir con él?

a) 15–24 años

b) 25–34 años

c) 35–59 años

8 ¿Él se enojaba con usted, por problemas

a) Sentimentales

b) Socialización

c) Económicos

9 Cuando se enoja, él…

a) Maltrata físicamente

b) No maltrata físicamente

Esquema del modelo de predicción Fuente: Elaboración propia

Selección del algoritmo

Este es un problema de clasificación debido a la salida discreta. Inicialmente se abordó el problema mediante la Regresión logística, pero debido a la gran imprecisión del modelo se optó por Árboles de decisión. Este modelo dio mejores resultados.

Construcción del modelo predictivo

In [0]:

#importamos libreria pandas
import pandas as pd

In [0]:

#impotamos el dataset
url='https://raw.githubusercontent.com/mirkaoJRC/MaltratoALaMujer/master/dasettt.csv'
#gruardamos el dataset y la designamos en df
df=pd.read_csv(url)

In [4]:

#imprimimos las primeras siete lineas
print(df.head(7))
Encargado Frec_insultosCasa ... EnojoDePareja malltrato
0 padres MuchasVeces ... ProbAlcoholicos si
1 padres pocasVeces ... ProbEconomicos no
2 parientes pocasVeces ... ProbAlcoholicos no
3 parientes MuchasVeces ... ProbSentimentales no
4 padres Norecuerda ... ProbSentimentales no
5 parientes Norecuerda ... ProbAlcoholicos no
6 parientes pocasVeces ... ProbAlcoholicos no
[7 rows x 9 columns]

In [0]:

#impotamos librerias
from sklearn import tree
import pydotplus
from IPython.display import Image

In [6]:

#creamos variablesficticias
violencia_data=pd.get_dummies(df[ ['Encargado','Frec_insultosCasa','ViolenciaCasa','ExistenciaMaltratoPareja','ExistenciaDemaltratoSuegra','MotivoDeJuntarse','EdadJunte','EnojoDePareja'
]])
#imprime
violencia_data

In [0]:

#clasificador de descision Tree
clf=tree.DecisionTreeClassifier()
#Entrenamos
clf_train=clf.fit(violencia_data,df['malltrato'])

In [8]:

#grafico de arbol de decisiones
dot_data=tree.export_graphviz(clf_train,out_file=None,feature_names=list(violencia_data.columns.values),class_names=['No','Si'],rounded=True,filled=True)
graph=pydotplus.graph_from_dot_data(dot_data)
Image(graph.create_png())

In [0]:

#importamos libreria clasificador de arbol de desiciones
from sklearn.tree import DecisionTreeClassifier
#importamos libreria para dividir el dataset entre entrenamiento y testing
from sklearn.model_selection import train_test_split
#importamos librerias para graficar arbol de decisiones
from sklearn.tree import export_graphviz
import graphviz
import matplotlib.pyplot as plt
import numpy as np

In [0]:

#importamos mismo dataset pero con cambio de varibales(letras por numeros)
url='https://raw.githubusercontent.com/mirkaoJRC/MaltratoALaMujer/master/base.csv'
#guradamos dataset en df1
df1=pd.read_csv(url)

In [11]:

#separamos df1 en data
data=pd.get_dummies(df1[['S2_2','S2_3','S2_5','S2_6','S2_7','S3_1','S3_2','S3_3','S3_8']])
data
#separamos df1 en una columna de target
target=pd.get_dummies(df1[['S1_9']])
target

In [0]:

#creamos cuatro variables:X_entrenamiento,X_test,y_entrenamiento,y_test sobre nuestro data y target
X_entrenamiento,X_test,y_entrenamiento,y_test=train_test_split(data,target)

In [0]:

#pasamos a nuestra variable arbol el clasificador de arbol de decisiones
arbol=DecisionTreeClassifier()

In [14]:

#utilizamos funcion.fit en la data de x e y de entrenamiento
arbol.fit(X_entrenamiento,y_entrenamiento)

Out[14]:

DecisionTreeClassifier(ccp_alpha=0.0, class_weight=None, criterion='gini',
max_depth=None, max_features=None, max_leaf_nodes=None,
min_impurity_decrease=0.0, min_impurity_split=None,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, presort='deprecated',
random_state=None, splitter='best')

In [15]:

#utilizamos funcion.score para saber las prediciones en X_test,y_test
arbol.score(X_test,y_test)

Out[15]:

0.8596491228070176

In [16]:

#utilizamos funcion.score sobre X_entrenamiento,y_entrenamiento
arbol.score(X_entrenamiento,y_entrenamiento)

Out[16]:

0.9881656804733728

In [24]:

#caso extremadamente peligroso
#Encargado=pariente,Frec_insultosCasa=muchas,ViolenciaCasas=maltrato y amenzas,ExistenciaMaltratoPareja=No,ExistenciaDemaltratoSuegra=si,MotivoDeJuntarse=embarazo y obligacion,EdadJunte=25 a 30,EnojoDePareja=celos,Alcoholicos
prediction=clf_train.predict([[0,1,1,0,0,0,1,1,1,0,0,0,0,0,1,0,1,1,1,0,0,0,1,0,1,0]])
prediction

Out[24]:

array(['si'], dtype=object)

In [25]:

#caso no péligroso
#Encargado=padre,Frec_insultosCasa=no Paso,ViolenciaCasas=no,ExistenciaMaltratoPareja=no,ExistenciaDemaltratoSuegra=no,MotivoDeJuntarse=amor,EdadJunte=30 a 60,EnojoDePareja=ninguna
prediction=clf_train.predict([[1,0,0,1,0,0,0,0,1,1,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0]])
prediction

Out[25]:

array(['no'], dtype=object)

Conclusiones y recomendaciones

Al probar el modelo con los datos de prueba, este resulto en casi un 86% de precisión. Sin embargo, se aprecia un sobreajuste con los datos de entrenamiento al tener una precisión de casi el 99%.

Algunos puntos a mejorar o añadir en el modelo serían:

  • Incluir más preguntas en el perfil de la mujer, como su lugar de residencia (urbano o rural), tipo de educación o formación, si la mujer justifica algún tipo de violencia, entre otros.
  • Valorar la influencia de las preguntas en el resultado del modelo.
  • Abordar el proyecto con otros modelos de predicción de aprendizaje supervisado.
  • Profundizar en el modelo de Arboles de decisión para mejorar los resultados obtenidos.
  • Mejorar el proyecto para que pueda servir a terapeutas o profesionales como psicólogos que tratan con mujeres en situación de violencia.

Más Información

La documentación(encuesta, dataset e informe) puede encontrarse en

El código más el dataset puede encontrarse en

Este Proyecto fue realizado por:

  • Josue Miguel Castillo Bustamante
  • Mirko Josue Ramirez Calle
  • Damaris Blas Ayllon

¡Gracias por tomarte el tiempo de leer! te agradecería un montón darle un aplauso a este artículo. Asegúrate de seguir a Data Science Bolivia para estar al tanto en nuevas publicaciones relacionadas a Inteligencia Artificial, Machine Learning, Data Science y más.

--

--