|
| 1 | +# ML.NET 0.7 Release Notes |
| 2 | + |
| 3 | +Today we are excited to release ML.NET 0.7, which our algorithms strongly |
| 4 | +recommend you to try out! This release enables making recommendations with |
| 5 | +matrix factorization, identifying unusual events with anomaly detection, |
| 6 | +adding custom transformations to your ML pipeline, and more! We also have a |
| 7 | +small surprise for those who work in teams that use both .NET and Python. |
| 8 | +Finally, we wanted to thank the many new contributors to the project since the |
| 9 | +last release! |
| 10 | + |
| 11 | +### Installation |
| 12 | + |
| 13 | +ML.NET supports Windows, MacOS, and Linux. See [supported OS versions of .NET |
| 14 | +Core |
| 15 | +2.0](https://github.com/dotnet/core/blob/master/release-notes/2.0/2.0-supported-os.md) |
| 16 | +for more details. |
| 17 | + |
| 18 | +You can install ML.NET NuGet from the CLI using: |
| 19 | +``` |
| 20 | +dotnet add package Microsoft.ML |
| 21 | +``` |
| 22 | + |
| 23 | +From package manager: |
| 24 | +``` |
| 25 | +Install-Package Microsoft.ML |
| 26 | +``` |
| 27 | + |
| 28 | +### Release Notes |
| 29 | + |
| 30 | +Below are some of the highlights from this release. |
| 31 | + |
| 32 | +* Added Matrix factorization for recommendation problems |
| 33 | + ([#1263](https://github.com/dotnet/machinelearning/pull/1263)) |
| 34 | + |
| 35 | + * Matrix factorization (MF) is a common approach to recommendations when |
| 36 | + you have data on how users rated items in your catalog. For example, you |
| 37 | + might know how users rated some movies and want to recommend which other |
| 38 | + movies they are likely to watch next. |
| 39 | + * ML.NET's MF uses [LIBMF](https://github.com/cjlin1/libmf). |
| 40 | + * Example usage of MF can be found |
| 41 | + [here](https://github.com/dotnet/machinelearning/blob/d68388a1c9994a5b429b194b64b2b0782834cb78/docs/samples/Microsoft.ML.Samples/Dynamic/MatrixFactorization.cs). |
| 42 | + The example is general but you can imagine that the matrix rows |
| 43 | + correspond to users, matrix columns correspond to movies, and matrix |
| 44 | + values correspond to ratings. This matrix would be quite sparse as users |
| 45 | + have only rated a small subset of the catalog. |
| 46 | + * Note: [ML.NET |
| 47 | + 0.3](https://github.com/dotnet/machinelearning/blob/d68388a1c9994a5b429b194b64b2b0782834cb78/docs/release-notes/0.3/release-0.3.md) |
| 48 | + included Field-Aware Factorization Machines (FFM) as a learner for |
| 49 | + binary classification. FFM is a generalization of MF, but there are a |
| 50 | + few differences: |
| 51 | + * FFM enables taking advantage of other information beyond the rating |
| 52 | + a user assigns to an item (e.g. movie genre, movie release date, |
| 53 | + user profile). |
| 54 | + * FFM is currently limited to binary classification (the ratings needs |
| 55 | + to be converted to 0 or 1), whereas MF solves a regression problem |
| 56 | + (the ratings can be continuous numbers). |
| 57 | + * If the only information available is the user-item ratings, MF is |
| 58 | + likely to be significantly faster than FFM. |
| 59 | + * A more in-depth discussion can be found |
| 60 | + [here](https://www.csie.ntu.edu.tw/~cjlin/talks/recsys.pdf). |
| 61 | + |
| 62 | +* Enabled anomaly detection scenarios |
| 63 | + ([#1254](https://github.com/dotnet/machinelearning/pull/1254)) |
| 64 | + |
| 65 | + * [Anomaly detection](https://en.wikipedia.org/wiki/Anomaly_detection) |
| 66 | + enables identifying unusual values or events. It is used in scenarios |
| 67 | + such as fraud detection (identifying suspicious credit card |
| 68 | + transactions) and server monitoring (identifying unusual activity). |
| 69 | + * This release includes the following anomaly detection techniques: |
| 70 | + SSAChangePointDetector, SSASpikeDetector, IidChangePointDetector, and |
| 71 | + IidSpikeDetector. |
| 72 | + * Example usage can be found |
| 73 | + [here](https://github.com/dotnet/machinelearning/blob/7fb76b026d0035d6da4d0b46bd3f2a6e3c0ce3f1/test/Microsoft.ML.TimeSeries.Tests/TimeSeriesDirectApi.cs). |
| 74 | + |
| 75 | +* Enabled using ML.NET in Windows x86 apps |
| 76 | + ([#1008](https://github.com/dotnet/machinelearning/pull/1008)) |
| 77 | + |
| 78 | + * ML.NET can now be used in x86 apps. |
| 79 | + * Some components that are based on external dependencies (e.g. |
| 80 | + TensorFlow) will not be available in x86. Please open an issue on GitHub |
| 81 | + for discussion if this blocks you. |
| 82 | + |
| 83 | +* Added the `CustomMappingEstimator` for custom data transformations |
| 84 | + [#1406](https://github.com/dotnet/machinelearning/pull/1406) |
| 85 | + |
| 86 | + * ML.NET has a wide variety of data transformations for pre-processing and |
| 87 | + featurizing data (e.g. processing text, images, categorical features, |
| 88 | + etc.). |
| 89 | + * However, there might be application-specific transformations that would |
| 90 | + be useful to do within an ML.NET pipeline (as opposed to as a |
| 91 | + pre-processing step). For example, calculating [cosine |
| 92 | + similarity](https://en.wikipedia.org/wiki/Cosine_similarity) between two |
| 93 | + text columns (after featurization) or something as simple as creating a |
| 94 | + new column that adds the values in two other columns. |
| 95 | + * An example of the `CustomMappingEstimator` can be found |
| 96 | + [here](https://github.com/dotnet/machinelearning/blob/d68388a1c9994a5b429b194b64b2b0782834cb78/test/Microsoft.ML.Tests/Transformers/CustomMappingTests.cs#L55). |
| 97 | + |
| 98 | +* Consolidated several API concepts in `MLContext` |
| 99 | + [#1252](https://github.com/dotnet/machinelearning/pull/1252) |
| 100 | + |
| 101 | + * `MLContext` replaces `LocalEnvironment` and `ConsoleEnvironment` but |
| 102 | + also includes properties for ML tasks like |
| 103 | + `BinaryClassification`/`Regression`, various transforms/trainers, and |
| 104 | + evaluation. More information can be found in |
| 105 | + [#1098](https://github.com/dotnet/machinelearning/issues/1098). |
| 106 | + * Example usage can be found |
| 107 | + [here](https://github.com/dotnet/machinelearning/blob/d68388a1c9994a5b429b194b64b2b0782834cb78/docs/code/MlNetCookBook.md). |
| 108 | + |
| 109 | +* Open sourced [NimbusML](https://github.com/microsoft/nimbusml): experimental |
| 110 | + Python bindings for ML.NET. |
| 111 | + |
| 112 | + * NimbusML makes it easy for data scientists to train models in Python and |
| 113 | + hand them off to .NET developers to include in their apps and services |
| 114 | + using ML.NET. |
| 115 | + * NimbusML components easily integrate into |
| 116 | + [scikit-learn](http://scikit-learn.org/stable/) pipelines. |
| 117 | + * Note that NimbusML is an experimental project without the same support |
| 118 | + level as ML.NET. |
| 119 | + |
| 120 | +### Acknowledgements |
| 121 | + |
| 122 | +Shoutout to [dzban2137](https://github.com/dzban2137), |
| 123 | +[beneyal](https://github.com/beneyal), |
| 124 | +[pkulikov](https://github.com/pkulikov), |
| 125 | +[amiteshenoy](https://github.com/amiteshenoy), |
| 126 | +[DAXaholic](https://github.com/DAXaholic), |
| 127 | +[Racing5372](https://github.com/Racing5372), |
| 128 | +[ThePiranha](https://github.com/ThePiranha), |
| 129 | +[helloguo](https://github.com/helloguo), |
| 130 | +[elbruno](https://github.com/elbruno), |
| 131 | +[harshsaver](https://github.com/harshsaver), |
| 132 | +[f1x3d](https://github.com/f1x3d), [rauhs](https://github.com/rauhs), |
| 133 | +[nihitb06](https://github.com/nihitb06), |
| 134 | +[nandaleite](https://github.com/nandaleite), |
| 135 | +[timitoc](https://github.com/timitoc), |
| 136 | +[feiyun0112](https://github.com/feiyun0112), |
| 137 | +[Pielgrin](https://github.com/Pielgrin), |
| 138 | +[malik97160](https://github.com/malik97160), |
| 139 | +[Niladri24dutta](https://github.com/Niladri24dutta), |
| 140 | +[suhailsinghbains](https://github.com/suhailsinghbains), |
| 141 | +[terop](https://github.com/terop), [Matei13](https://github.com/Matei13), |
| 142 | +[JorgeAndd](https://github.com/JorgeAndd), and the ML.NET team for their |
| 143 | +contributions as part of this release! |
0 commit comments