Optimising algorithms in Go for machine learning - Part 2

This is the second in a series of blog posts sharing my experiences working with algorithms and data structures for machine learning. These experiences were gained whilst building out the nlp project for LSA (Latent Semantic Analysis) of text documents. In Part 1 of this series, I explored alternative approaches for representing and applying TF-IDF transforms for weighting term frequencies across document corpora. We tested the approaches using Go’s inbuilt benchmark functionality and found that our optimisations materially improved not just memory consumption but also performance (reducing memory consumption and processing time from 7 GB and 41 seconds to 250 KB and 0. »

Optimising algorithms in Go for machine learning

In my last blog post I walked through the use of machine learning algorithms in Golang to analyse the latent semantic meaning of documents. These algorithms, like many others in data science, rely on linear algebra and vector space analysis. By their nature, they often have to deal with large data sets, so any inefficiencies in the data structures used or algorithms themselves can result in a large impact on overall performance and/or memory usage. »

Semantic analysis of webpages with machine learning in Go

I spend a lot of time reading articles on the internet and started wondering whether I could develop software to automatically discover and recommend articles relevant to my interests. There are various aspects to this problem but I have decided to concentrate first on the core part of the problem: the analysis and classification of the articles. To illustrate the problem, lets consider the following string representing an article for the purpose of this example. »

Socratic questions revisited [infographic]

A little over a year ago, I wrote a blog post examining Socratic Questions. Socratic Questions are a method of pull influencing that can be used to stimulate critical thinking. To help make the question types easier to understand and remember for use in practice, I have gone back and created an infographic illustrating the 6 types of questions. The infographic is shown below (click on the infographic for the full size version). »

Continuous delivery tool landscape

I have been having a lot of discussions recently about tooling to support continuous delivery and DevOps practices. There is an incredible and ever increasing array of tools available for these practices. Whilst a number of vendors have developed one-stop solutions or suites of integrated tools, many of the tools in the space tend to be tightly focused on addressing a particular problem. Unfortunatley this can be confusing and overwhelming, especially to people starting out, making it difficult to know where to start and which tools to consider. »