Last Updated on June 7, 2016
After you have been using a tool for a while, you will develop a specific way of working with it.
You may even have deep knowledge of the limitations of the tool and how to fix them, or be frustrated by specific features that are missing.
You can augment machine learning tools to formalize the way you use it, fix limitations and add new features. Augmenting tools by creating plug-ins, patches and wrappers and releasing them as open source projects can also demonstrate your mastery in using the tool.
In this post you will discover a quick 5-step process that you can use to augment a machine learning tool and share the results.
What You Will Learn
Bend The Tool To Your Needs
After you have been using one machine learning tool for a while on a project or across projects, you build up a deep knowledge for how to use it. You also get a good idea of the types of features and capabilities you wish the tool offered.
More often than not, you are likely to build up your own procedures and ways of using the tool that are tailored to the way you like to work. These procedures may even be codified in scripts and documentation that you and your team consult often.
You may even have your own in-house patches and extensions to the tool that you have begun to rely on in your projects.
The chances are that if you have found them useful, other people may as well.
Demonstrate Deeper Skills
It is possible that you have or would like to make substantial changes to the tool. For example, to add a new technique or a new interface.
These types of changes require a depth of knowledge of the tool that is beyond what most practitioners are capable of. It is hard to describe your skills with a tool that you may have been using for months or years.
Demonstrating your deeper knowledge of a machine learning is much simpler than trying to explain and could be useful on new project and even in interviews.
Create Extensions to Machine Learning Tools
The answer is to create extensions or augmentations to the machine learning tools that you use.
Augmenting a tool with the processes you already use, the features you need or have already developed forces you to formalize them and bake them into the tool for you and anyone else to use.
It takes something that might have been a kludge, side project or idea and turns it into a real mini-project with a real outcome that improves the tool.
Also, creating extensions to machine learning tools sends a clear signal that you know enough about the tool to identify and address limitations and develop new features to extend the capability of the tool.
I call these extensions augmentations because they build upon the tool in some way and change or improve their capability.
Augment Any Machine Learning Tool
You need to use a systematic process to create an augmentation to a machine learning tool.
Quick 5-Step Process
- Select Tool. Select the tool that you want to augment. This may be a tool that you have described, proceduralized or investigated. Ideally, it would be a tool that you have used before and use often.
- Select Limitation. Determine the problem that you want to address with your augmentation. This may be a missing feature or a missing capability. Ideally, it would be a feature that you require or one that you are working around with your own fixes. For example scripts that combine existing features of the tool.
- Design Augmentation. Design the change to the tool. This will depend on the tool, but it should align with the design principles of the tool itself including existing APIs. Use other third-party extensions as a template. Consider contacting the development team and ask advice on the best way to create a third party extension if such advice is missing from the documentation.
- Build Augmentation. Use good software engineering practices to ensure you build the right thing, that it works and that you complete quickly.
- Share Augmentation. Share the completed extension with friends, colleagues and even publicly. Consider sharing it with other users of the tool. You may want to host the project on an open source software platform such as GitHub.
Tips To Create Great Augmentations
Below are tips that you can use to make great augmentations to machine learning tools.
- Narrow Focus. Make the focus of your extension as narrow as possible. Ideally it would do one thing, such as provide one additional technique.
- Short Cycle. Get a working version of your extension going as soon as possible. The faster the better, even if it only has a fraction of all the attributes and parameters you have in mind. Use agile engineering process and deliver early and often.
- Small Project. Don’t take too long. Try to complete the first working version of the extension within a week of working nights and weekends. If you don’t have a working version after a week, consider shrinking the scope of the extension.
- Good Documentation. Create documentation for your extension. Give examples that any one can copy and paste or follow step-by-step to make your augmentation work with the tool. Clearly explain why you created and what it provides.
- Open Source. Release your augmentation to the tool as open source. This allows other people to contribute, extend and learn from your work.
- Promote. Share your extension with other users of the tool. Post to forums and mailing lists and even consider emailing specific people. You want people to use your extension and give you feedback so that you might make further improvements.
Examples of Augmentations
Below are some examples of augmentations to machine learning tools that you could make:
- Create a patch. This is a change to the source code of the tool, in the case that it is open source. You could distribute the patch or even make a request that the patch be applied to the tool. In the latter case, if the change was accepted you could even get credit as a contributor to the project.
- Create a plug-in. Some libraries and platforms facilitate the creation of third party plug-ins. Create a standalone plug-in that includes your new feature.
- Create a wrapper. This could be a script or interface that makes it easier to perform some action or task using the tool. This could even be as extravagant as adding a command line interface to a library or a graphical user interface to an existing tool.
You Can Augment Machine Learning Tools
You do not need to be an expert in the tool. You can make extensions for a tool if you can identify a specific limitation or need that is missing from the tool. You only need to know enough about the tool to understand how to extend it effectively. This may include custom APIs used by the tool, which may require specialized knowledge.
You do not need to be an expert in machine learning. Extending a machine learning software tool is more of an engineering challenge than a machine learning challenge. That being said, your augmentation may require deep knowledge of a specific machine learning technique in order for you to implement it. Consider adding a technique that you understand well, or a feature that has more engineering than machine learning, such as combining techniques or providing a new interface.
You do not need to be an excellent programmer. You need good enough engineering skills to complete the extension. This is not master level programming, but you should have good software engineering practices like design, testing and ideally use agile software development processes.
In this post you discovered how to augment machine learning tools.
You discovered that by creating augmentations to machine learning tools that you can formalize the way that you use the tool on your project and fill of missing features provided by the tool.
You also discovered that by sharing your extensions to the tool is a way of demonstrating mastery of the tool to friends, colleagues and other people. This can be useful in interviews.
You learned a quick 5-step process for augmenting a machine learning tool:
- Select the tool that you want augment.
- Identify the limitation in the tool that you want to implement.
- Design your augmentation in the form of a patch, plug-in or wrapper.
- Build your augmentation to the machine learning tool using good engineering practices.
- Share your augmentation so that others can benefit from your work and to demonstrate your mastery of the tool.
Your Next Step
Is there a machine learning tool that you want to augment?
Commit to augmenting the tool Right Now!
- Post a note in the comments. I’d love to know which tool you want to augment.
- Use the process described above and design and share your augmentation.
Do you have any questions about this process? Email me or leave a comment.