Un tema muy hablado los últimos meses y que casi todos han escuchado al menos una vez es la evolución de las criptomonedas, tales como Bitcoin o Ethereum. Respecto a la primera se sabe que su preció subió parabólicamente durante un largo período, lo que provocó que se comienze a hablar sobre “la moneda del futuro” y la gente empezó a plantearse que tal vez las criptomonedas acaben desplazando a las otras monedas en el mundo. Sea esto verdad o no, el propósito de este reporte es distinto, se desea ver cómo la evolución de las criptomonedas puede afectar en otro aspecto, específicamente, el precio de las tarjetas gráficas. Con la subida de popularidad de las criptomonedas, mucha gente comenzó a minar estas, y para ello, era necesario invertir en un computador de calidad que pudiese hacer el proceso de manera eficiente, de esta forma, la demanda por las tarjetas gráficas ha aumentado y esto ha afectado bastante en su precio. En este reporte se mostrará con más detalle esta evolución.
Se utilizó un dataset de Kaggle llamado “Ethereum Effect impact on PC parts prices”. Este dataset contiene la información a lo largo del tiempo de más de 2000 tarjetas gráficas, cerca de 1600 procesadores y unas 3700 memorias RAM, además de 15 criptomonedas distintas.
La información de los modelos de GPUs se ve resumida en la siguiente tabla.
head(DIM_GPU_PROD)
## Processor_Manufacturer Processor GPU_Manufacturer Memory_Capacity
## 1 AMD C420 Matrox 2.000
## 2 AMD C680 Matrox 2.000
## 3 AMD C680 Matrox 4.000
## 4 AMD C900 Matrox 4.000
## 5 AMD FireGL V3300 AMD 0.125
## 6 AMD FireGL V3600 AMD 0.250
## Memory_Type ProdId
## 1 GDDR5 1
## 2 GDDR5 2
## 3 GDDR5 3
## 4 GDDR5 4
## 5 GDDR2 5
## 6 GDDR2 6
Las distintas monedas utilizadas se ven aquí.
head(DIM_CRYPTO_DATA)
## Id Code Currency_Name Is_Mineable
## 1 1 ADA Cardano 0
## 2 2 BTC Bitcoin 1
## 3 3 DASH DASH 1
## 4 4 DOGE Dogecoin 1
## 5 5 EOS EOS 0
## 6 6 ETH Ethereum 1
El tiempo está codificado de la siguiente manera:
head(DIM_TIME)
## Id Year Month Day Week
## 1 20130322 2013 3 22 12
## 2 20130323 2013 3 23 12
## 3 20130326 2013 3 26 13
## 4 20130327 2013 3 27 13
## 5 20130328 2013 3 28 13
## 6 20130329 2013 3 29 13
El precio de las GPUs se muestra en la tabla siguiente, donde prodId es una tarjeta en específico, y su precio se muestra en distintas fechas, en distintas regiones y según distintos vendedores.
head(FACT_GPU_PRICE)
## ProdId TimeId RegionId MerchantId Price_USD Price_Original
## 1 1 20140917 4 32 601.7384 463.90
## 2 1 20140918 4 32 551.8853 425.87
## 3 1 20140919 4 32 548.0989 424.53
## 4 1 20140920 4 32 545.0939 424.53
## 5 1 20140921 4 32 544.6742 424.53
## 6 1 20140922 4 32 547.9331 427.07
Por último, las criptomonedas también tienen su precio según fecha, como se muestra aquí:
head(FACT_CRYPTO_RATE)
## CodeId TimeId Open Close High Low Date
## 1 1 20171103 0.021418 0.022628 0.023213 0.019827 2017-11-03
## 2 1 20171104 0.022641 0.022022 0.023849 0.021970 2017-11-04
## 3 1 20171105 0.022054 0.020635 0.023006 0.020635 2017-11-05
## 4 1 20171106 0.020977 0.021881 0.023609 0.020534 2017-11-06
## 5 1 20171107 0.021846 0.022195 0.023347 0.021414 2017-11-07
## 6 1 20171108 0.021912 0.025186 0.026393 0.021660 2017-11-08
Los valores de algunas de las principales criptomonedas minables se ven en los siguientes gráficos. Se puede ver que todos ellos tienen un alza a finales de 2017 y comienzo de 2018.
Se puede observar que todos estos gráficos tienen una característica en común: a mediados de 2017 tuvieron un alza leve, luego continuaron más o menos constantes y a comienzos de 2018 el gráfico se dispara en un peak mucho más alto que en cualquier otro tiempo. Todas estas criptomonedas son minables con tarjetas gráficas.
A través de un poco de investigación se logra adquirir información sobre las GPUs más utilizadas para minar criptomonedas, obteniendo como principales productos los siguientes: NVIDIA Geforce 1060, NVIDIA Geforce 1070, AMD Radeon 570 y AMD Radeon 580. Teniendo esto, se procede a graficar los precios de estas tarjetas en el tiempo, obteniendo los siguientes resultados:
Se puede ver que todos estos gráficos siguen un patrón similar al de las criptomonedas, donde en mitad de 2017 tienen un alza, para luego tener un gran peak a principios de 2018. Esto queda aún más evidenciado al superponer los gráficos de la Geforce 1060 con Ethereum.
Aquí se observa que el gráfico de la Geforce 1060 pareciera ser muy similar al de la criptomoneda, pero desplazado ligeramente hacia la derecha.
Para mostrar mejor la relación entre estas variables, se utilizan algunos métodos estadísticos: primero se realiza una matriz de correlación entre las tarjetas gráficas que se encontraron anteriormente y dos de las critpomonedas más minadas.
## corrplot 0.84 loaded
corrplot.mixed(correlation_GTX)
corrplot.mixed(correlation_RX)
En general tenían todas correlación bastante alta y, en particualar, todas tienen sobre 0,7 con Ethereum. Sin embargo, no se puede concluir mucho con tomar sólo la correlación de estas tarjetas. Es por eso que se decidió calcular la correlación de todas las tarjetas disponibles que tuviesen más de 150 datos con Ethereum y a esta información aplicarle un k-means de 4 clusters. El resultado se observa en el siguiente gráfico:
Primero se nota que casi todas las tarjetas con suficientes datos tienen una correlación positiva y un gran número supera el 0.7. De este gráfico se plantea tomar el cluster de más a la derecha y analizar las tarjetas que pertenezcan a él:
high_correlation
## ProdId correlation size Processor_Manufacturer Processor
## 1 881 0.7170499 191 AMD Radeon RX 480
## 2 924 0.7354206 160 AMD Radeon RX 580
## 3 928 0.6398726 153 AMD Radeon RX 580
## 4 996 0.6843883 327 NVidia GeForce 1050
## 5 999 0.6521984 177 NVidia GeForce 1050
## 6 1008 0.7523829 372 NVidia GeForce 1050 Ti
## 7 1011 0.7639053 305 NVidia GeForce 1050 Ti
## 8 1015 0.6935375 298 NVidia GeForce 1050 Ti
## 9 1018 0.6183120 224 NVidia GeForce 1050 Ti
## 10 1020 0.6221499 163 NVidia GeForce 1060
## 11 1022 0.6339439 339 NVidia GeForce 1060
## 12 1023 0.6858863 417 NVidia GeForce 1060
## 13 1028 0.7613996 234 NVidia GeForce 1060
## 14 1029 0.7162084 360 NVidia GeForce 1060
## 15 1038 0.6998861 381 NVidia GeForce 1060
## 16 1043 0.7267087 262 NVidia GeForce 1060
## 17 1045 0.6492558 237 NVidia GeForce 1060
## 18 1047 0.7019315 382 NVidia GeForce 1070
## 19 1048 0.6932990 513 NVidia GeForce 1070
## 20 1051 0.6401135 282 NVidia GeForce 1070
## 21 1054 0.7056560 382 NVidia GeForce 1070
## 22 1090 0.6704854 227 NVidia GeForce 1080 Ti
## 23 1093 0.6921080 273 NVidia GeForce 1080 Ti
## 24 1102 0.6549090 247 NVidia GeForce 1080 Ti
## GPU_Manufacturer Memory_Capacity Memory_Type
## 1 XFX 8 GDDR5
## 2 MSI 8 GDDR5
## 3 Sapphire 8 GDDR5
## 4 EVGA 2 GDDR5
## 5 Gigabyte 2 GDDR5
## 6 EVGA 4 GDDR5
## 7 Gigabyte 4 GDDR5
## 8 MSI 4 GDDR5
## 9 Zotac 4 GDDR5
## 10 Asus 3 GDDR5
## 11 EVGA 3 GDDR5
## 12 EVGA 6 GDDR5
## 13 Gigabyte 3 GDDR5
## 14 Gigabyte 6 GDDR5
## 15 MSI 6 GDDR5
## 16 PNY 6 GDDR5
## 17 Zotac 6 GDDR5
## 18 Asus 8 GDDR5
## 19 EVGA 8 GDDR5
## 20 Gigabyte 8 GDDR5
## 21 MSI 8 GDDR5
## 22 Asus 11 GDDR5X
## 23 EVGA 11 GDDR5X
## 24 MSI 11 GDDR5X
En este cluster se encontraron 24 GPUs, de ellas, 2 corresponden a la Radeon RX 580 (con distintos fabricantes), 8 corresponden a la Geforce 1060 y 4 corresponden a la Geforce 1070. Dejando un total de 14 tarjetas que corresponden a las más utilizadas para minar. Además, 3 son de Geforce 1080 Ti y 4 de la Geforce 1050 Ti, que también son usadas frecuentemente para este fin. Cabe mencionar que la Radeon RX 570 no se encuentra en el primer cluster, sin embargo, se verificó que ninguna de las versiones de esta tarjeta tenía más de 150 datos, por lo que fue filtrada antes del clustering.
Finalmente se quizo hacer un clasificador para intentar predecir los precios de las GPUs en base al precio de las criptomonedas. Se tomó una GPU en específico y se clasificaron los precios en rangos. A esto se le aplicó un decision tree y se obtuvo lo siguiente:
#from sklearn.tree import DecisionTreeClassifier
#from sklearn.metrics import accuracy_score
#from sklearn.metrics import classification_report
#from sklearn.model_selection import train_test_split
#df = Datosxfinal
#df1 = Datosyfinal
#X=df
#Y=df1
#X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=.33, random_state=37, stratify=Y)
#clf = DecisionTreeClassifier()
#clf.fit(X_train, y_train) ## Entrenamos con X_train y clases y_train
#y_pred = clf.predict(X_test) ## Predecimos con nuevos datos (los de test X_test)
#print("Accuracy en test set:", accuracy_score(y_test, y_pred)) ## Evaluam
clase | precision | recall | f1score | support |
---|---|---|---|---|
0 | 0.9 | 0.95 | 0.93 | 106 |
1 | 0.68 | 0.5 | 0.58 | 26 |
2 | 0.5 | 0.6 | 0.55 | 5 |
3 | 0.5 | 0.5 | 0.5 | 2 |
avg/total | 0.84 | 0.85 | 0.84 | 139 |
Estos resultados no fueron tan satisfactorios comos se esperaba. Lo primero que se nota es que los estadísticos de las clases 2 y 3 son bastante bajos. Esto se podría deber a que la cantidad de datos no era suficiente, pues el support de estas dos clases también es muy inferior a lo que se esperaría de un clasificador.
Se puede notar que las criptomonedas afectaron al precio de las GPUs con bastante seguridad, gracias a los diferentes métodos que se realizaron en el proyecto. Primero que todo se pudo ver una alta correlación entre los GPUs y las criptomonedas a partir de la matriz de correlación de las tarjetas gráficas vs las diferentes GPUs. Además, tras realizar clustering con las Gpus que contenían más datos, se obtiene que las Gpus pertenecientes al clúster de precios más altos son de las GPUs que más se utilizan para minar. No obstante, el predictor del precio de las GPUs no es tan efectivo, debido principalmente a que no hay datos suficientes para realizar un buen clasificador. Finalmente, se puede decir que efectivamente hay una correlación importante entre el mercado de las criptomonedas y las GPUs, lo que demuestra que la hipótesis planteada por el proyecto (basándose en los experimentos) es un fenómeno real.