Falhar na preparação, é se preparar para falhar…

Assunto antigo, mas que deve ser lembrado sempre que possível:

Given this context, it is curious to note that so much of what is published (again, especially on-line; think of titles such as: “The 10 Learning Algorithms Every Data Scientist Must Know”) and so many job listings emphasize- almost to the point of exclusivity- learning algorithms, as opposed to practical questions of data sampling, data preparation and enhancement, variable reduction, solving the business problem (instead of the technical one) or ability to deploy the final product.

 

Anúncios
Falhar na preparação, é se preparar para falhar…

Lições em competições do Kaggle

Já é desnecessário dizer o quando o Kaggle vem contribuindo com a comunidade de Data Science, e essas lições do Harasymiv mostram que essas contribuições vão além do básico.

Vejam abaixo:

  • XG Boosting is the engine of choice for structured problems (where feature manufacturing is the key). Now available as python package. Behind XG are the typical suspects – Random Forest and Gradient Boosted Trees. However, hyper parameter tuning is only the few % accuracy points improvement on top, the major breakthroughs in predictive power come from feature manufacturing;
  • Feature manufacturing for structured problems is the key process (or otherwise random permutation of features to find most predictive/telling combination) either by iteratively trying various approaches (as do thousands of individual contributions to Kaggle.com competition) or in an automatic fashion (as done by DataRobot. BTW, DataRobot is based partially in Boston and partially in Ukraine). Some Amazon engineers who attended from Seattle commented they are building a platform which would iteratively try to permute features to randomly (aka “genetic algorithm” fashion) find best features for structured problems, too;
  • For unstructured problems (visuals, text, sound) – Neural Networks run the show (and their deep learning – auto feature extracting – and variants of those). Great example was application of NN to Diabetic Retinopathy problem at Kaggle.com which surpassed in accuracy commercially available products;
  • Kaggle.com is really suitable for two types of problems:
      A problem solved now for which a more accurate solution is highly desirable – any fraction % accuracy turns into millions of $ (e.g. loan default rate prediction) or

    • Problems which were never tackled by machine learning in order to see if ML can help solve them (e.g. EEG readings to predict epilepsy);
  • Don’t expect data scientists to perform best in the office! Anthony mentioned his first successful 24h data science hackathon when his senior was guiding him 5 min, coding himself for 15 min and then playing basketball for 40 min each hour. Personally, I find walking, gardening and running are great creativity boosters. How will you work tomorrow? 🙂

Lições em competições do Kaggle

Qual a diferença entre LASSO e Ridge Regression?

Eu sei que essa pergunta é velha, mas sempre que alguém não consegue entender alguma coisa é uma nova oportunidade de transmitir esse conhecimento de forma mais inteligente em um novo formato.

Essas duas técnicas derivadas da regressão são conhecidos com métodos regressores de Shrinkage, ou de encolhimento.

Isso torna-se necessário partindo do seguinte princípio: Uma regressão com diversos coeficientes regressores torna o modelo como um todo muito mais complexo e pode tirar características de interpretabilidade. Uma forma de eliminar esse problema, que pode absorver o ruído dos dados e causar o overfitting, esses métodos fazem a retenção de um subconjunto de coeficientes regressores o que não somente reduz a complexidade do modelo e a forma que o mesmo é calculado e construído, como reduz o erro e de quebra miimiza qualquer possibilidade do modelo ter overfitting.

Dentro desses métodos de encolhimento (Shirinkage Methods)  há dois que se destacam em se tratando de aprendizado de máquina que são a Ridge Regression e o LASSO (Least Absolute Shrinkage and Selection Operator).

A Ridge Regression é um método de regularização do modelo que tem como principal objetivo suavizar atributos que sejam relacionados uns aos outros e que aumentam o ruído no modelo (A.K.A multicolinearidade). Com isso com a retirada de determinados atributos do modelo, o mesmo converge para um resultado muito mais estável em que com a redução desses atributos, a redução em termos de acuácia do modelo se mantêm inalterada. O mecanismo algoritmico que faz isso é através de um mecanismo de penalização que coloca um viés e que vai reduzindo os valores os betas até não zero. Com isso os atributos que contribuem menos para o poder preditivo do modelo são levados para a irrelevância usando esse mecanismo de penalização do viés.

Já o LASSO tem o mesmo mecanismo de penalização dos coeficientes com um alto grau de correlação entre si, mas que usa o mecanismo de penalizar os coeficientes de acordo com o seu valor absoluto (soma dos valores dos estimadores) usando o mecanismo de minimizar o erro quadrático. Isso é feito através da penalização do coeficiente até que o mesmo convirja para zero; o que naturalmente vai eliminar o atributo e reduzir a dimensionalidade do modelo.

A pergunta que todo mundo vai fazer no final desse post: “Mas Flavio quando eu posso aplicar um ou outro?

A resposta é um grande depende. 

Como heurística de trabalho, eu particularmente gosto do LASSO para validar um pré-processamento que foi feito usando alguma outra técnica como Rough Sets, ou mesmo quando eu tenho modelos que precisam em um primeiro momento ter o erro bem isolado (e.g. problemas relativos à precisão). Já a Ridge Regression é mais apropriada para problemas em que o erro deve estar contido como parte de uma solução (que nunca será a melhor) em que eu tenha que colocar um pouco mais de aleatoreidade no modelo (e.g. problemas de acurácia).

Abaixo os papers originais de LASSO e de Ridge Regression.

Regression Shrinkage and Selection via LASSO

Ridge Regression – Biased Estimation for Nonorthogonal Problems

 

Qual a diferença entre LASSO e Ridge Regression?

7 técnicas para redução da dimensionalidade

Na atual era do Big Data em que o custo de armazenamento praticamente foi levado ao nível de commodity, muitas corporações que se gabam que são ‘adeptas’ do Big Data acabam pagando/armazenando ruído ao invés de sinal.

Pelo motivo exposto acima, diante do prisma de Engenharia de Dados o problema de absorção/retenção dessas informações está resolvido.

No entanto, quando é necessário escalar negócios através de inteligência usando os dados (lembrando o que foi dito no passado: Dado > Informação > Conhecimento > Sabedoria) o que era uma característica inerente ao avanço tecnológico de engenharia de dados, torna-se um problema gigante dentro da ciência de dados.

Com esse aumento horizontal das bases de dados (dimensões / atributos) um problema grave é o aumento da dimensionalidade (Course of Dimensionality) em que temos não somente multicolinearidade, heteroscedasticidade e autocorreação para ficar em exemplos estatísticos simples.  Em termos computacionais nem é preciso dizer que o aumento de atributos faz com que os algoritmos de Data Mining ou Inteligência Computacional tenham que processar um volume de dados muito maior (aumento da complexidade do processamento = maior custo temporal).

Dada essa pequena introdução, essa é a razão na qual a redução da dimensionalidade é muito importante para qualquer data miner.

Esse post da Knime apresenta 7 técnicas para redução da dimensionalidade, que são:

Missing Values Ratio. Data columns with too many missing values are unlikely to carry much useful information. Thus data columns with number of missing values greater than a given threshold can be removed. The higher the threshold, the more aggressive the reduction.

Low Variance Filter. Similarly to the previous technique, data columns with little changes in the data carry little information. Thus all data columns with variance lower than a given threshold are removed. A word of caution: variance is range dependent; therefore normalization is required before applying this technique.

High Correlation Filter. Data columns with very similar trends are also likely to carry very similar information. In this case, only one of them will suffice to feed the machine learning model. Here we calculate the correlation coefficient between numerical columns and between nominal columns as the Pearson’s Product Moment Coefficient and the Pearson’s chi square value respectively. Pairs of columns with correlation coefficient higher than a threshold are reduced to only one. A word of caution: correlation is scale sensitive; therefore column normalization is required for a meaningful correlation comparison.

– Random Forests / Ensemble Trees. Decision Tree Ensembles, also referred to as random forests, are useful for feature selection in addition to being effective classifiers. One approach to dimensionality reduction is to generate a large and carefully constructed set of trees against a target attribute and then use each attribute’s usage statistics to find the most informative subset of features. Specifically, we can generate a large set (2000) of very shallow trees (2 levels), with each tree being trained on a small fraction (3) of the total number of attributes. If an attribute is often selected as best split, it is most likely an informative feature to retain. A score calculated on the attribute usage statistics in the random forest tells us ‒ relative to the other attributes ‒ which are the most predictive attributes.

Principal Component Analysis (PCA). Principal Component Analysis (PCA) is a statistical procedure that orthogonally transforms the original n coordinates of a data set into a new set of n coordinates called principal components. As a result of the transformation, the first principal component has the largest possible variance; each succeeding component has the highest possible variance under the constraint that it is orthogonal to (i.e., uncorrelated with) the preceding components. Keeping only the first m < n components reduces the data dimensionality while retaining most of the data information, i.e. the variation in the data. Notice that the PCA transformation is sensitive to the relative scaling of the original variables. Data column ranges need to be normalized before applying PCA. Also notice that the new coordinates (PCs) are not real system-produced variables anymore. Applying PCA to your data set loses its interpretability. If interpretability of the results is important for your analysis, PCA is not the transformation for your project.

Backward Feature Elimination. In this technique, at a given iteration, the selected classification algorithm is trained on n input features. Then we remove one input feature at a time and train the same model on n-1 input features n times. The input feature whose removal has produced the smallest increase in the error rate is removed, leaving us with n-1 input features. The classification is then repeated using n-2 features, and so on. Each iteration k produces a model trained on n-k features and an error rate e(k). Selecting the maximum tolerable error rate, we define the smallest number of features necessary to reach that classification performance with the selected machine learning algorithm.

– Forward Feature Construction. This is the inverse process to the Backward Feature Elimination. We start with 1 feature only, progressively adding 1 feature at a time, i.e. the feature that produces the highest increase in performance. Both algorithms, Backward Feature Elimination and Forward Feature Construction, are quite time and computationally expensive. They are practically only applicable to a data set with an already relatively low number of input columns.

Os resultados obtidos em termos de acurácia foram:

dimensionality_reduction

Alguns insights em relação aos resultados:

  • Apesar da robustez matemática, o PCA apresenta um resultado não tão satisfatório em relação a métodos mais simples de seleção de atributos. Isso pode indicar que esse método não lida tão bem com bases de dados com inconsistências.
  • Filtro de baixa variância e de valores faltantes são técnicas absolutamente simples e tiveram o mesmo resultado de técnicas algoritmicamente mais complexas como Florestas Aleatórias.
  • Construção de modelos com inclusão incremental de atributos e eliminação de atributos retroativa são métodos que apresentam uma menor performance e são proibitivos em termos de processamento.
  • A estatística básica ainda é uma grande ferramenta para qualquer data miner, e não somente ajuda em termos de redução do custo temporal (processamento) quanto em custo espacial (custo de armazenamento).

A metodologia do estudo pode ser encontrada abaixo.

knime_seventechniquesdatadimreduction

7 técnicas para redução da dimensionalidade