Showing posts with label Machine Learning. Show all posts
Showing posts with label Machine Learning. Show all posts

Day 4: PredictionIO--How to Build A Blog Recommender - OpenShift Blog



Day 4: PredictionIO--How to Build A Blog Recommender – OpenShift Blog
PredictionIO is an open source machine learning server application written in Scala. It provides an easy to use REST API to build recommendation engines. It also provides client SDKs, which wraps the REST API. The Client SDKs are available in Java, Python, Ruby, and PHP programming languages. PredictionIO core is using Apache Mahout. Apache Mahout is a scalable machine learning library which provides various clustering, classification, filtering algorithms. Apache Mahout can run these algorithms on distributed Hapoop cluster.
The usecase that we are solving is to recommend blogs to user depending on the blog he has viewed. In the code shown below, we are getting all similar items to blog1 for userId “shekhar”.
import io.prediction.Client;
 
import java.util.Arrays;
 
public class BlogrRecommender {
 
    public static void main(String[] args) throws Exception {
 
        Client client = new Client("wwoTLn0FR7vH6k51Op8KbU1z4tqeFGZyvBpSgafOaSSe40WqdMf90lEncOA0SB13");
        client.identify("shekhar");
        String[] recommendedItems = client.getItemSimTopN("engine1", "blog1", 5);
 
        System.out.println(String.format("User %s is recommended %s", "shekhar", Arrays.toString(recommendedItems)));
 
        client.close();
    }
}
Run the Java program and you will see result as “blog4″,”blog5″,”blog6″ , and “blog7″.
Read full article from Day 4: PredictionIO--How to Build A Blog Recommender – OpenShift Blog

Salmon Run: Using Lucene Similarity in Item-Item Recommenders



By default, Lucene stores document vectors keyed by terms, but can be configured to store term vectors by setting the field attribute TermVector.YES. In case of text documents, words (or terms) are the features which are used to compute similarity between documents. I am using the same dataset as last week, where movies (items) correspond to documents and movie tags correspond to the words. So we build a movie "document" by preprocessing the tags to form individual tokens and concatenating them into a tags field in the index.

Find Movies Similar to given Movie: This is just content based filtering and is implemented as a simple MLT query. Given the itemID, we lookup the docID of the source movie, then get the top N movies that are most like it. We then return a List of tuples of docIDs that are similar and their similarities (scores), except the original docID.

Predict a User's Rating for a Movie: This is the prediction functionality of an item-item CF recommender. The prediction is based on how the user has rated other movies similar to this one. Otherwise, we calculate the average weighted sum of the ratings of already rated items, where the weights are the similarities between the target item and this item. If the movie is already rated, we just return the rating. Similarity between two items are calculated using the MLT query using a simplifying assumption - a target item outside the item neighborhood has 0 similarity with the source item. If we did not use this assumption, we would have to use approaches such as the TermFreqVector API for Lucene 3.x or the Fields API for Lucene 4.x to compute individual doc-doc similarities.

Recommend Movies to a User: This is topN recommender functionality of an item-item CF. We recommend movies that are similar to ones the user has already rated, weighted by the similarity between this item and the rated item. We use the algorithm outlined in Mahout in Action, § 4.4.1, detailed below. The 3rd and 4th lines in the algorithm is essentially the rating prediction task we described above. Essentially, we calculate the prediction for all items not rated so far by the user, and return them sorted by descending order of predicted rating.

Read full article from Salmon Run: Using Lucene Similarity in Item-Item Recommenders

Getting Started with Topic Modeling and MALLET



Getting Started with Topic Modeling and MALLET
To create an environment variable in Windows 7, click on your Start Menu -> Control Panel -> System -> Advanced System Settings (Figures 1,2,3). Click new and type MALLET_HOME in the variable name box. It must be like this – all caps, with an underscore – since that is the shortcut that the programmer built into the program and all of its subroutines. Then type the exact path (location) of where you unzipped MALLET in the variable value, e.g., c:\mallet.

bin\mallet import-dir --help
To work with this corpus and find out what the topics are that compose these individual documents, we need to transform them from several individual text files into a single MALLET format file. MALLET can import more than one file at a time. We can import the entire directory of text files using the import command. The commands below import the directory, turn it into a MALLET file, keep the original texts in the order in which they were listed, and strip out the stop words (words such as andthebut, and if that occur in such frequencies that they obstruct analysis) using the default English stop-words dictionary. 

This file now contains all of your data, in a format that MALLET can work with.
bin\mallet train-topics --input tutorial.mallet

This command opens your tutorial.mallet file, and runs the topic model routine on it using only the default settings. As it iterates through the routine, trying to find the best division of words into topics.
MALLET includes an element of randomness, so the keyword lists will look different every time the program is run, even if on the same set of data.

bin\mallet train-topics --input tutorial.mallet --num-topics 20 --output-state topic-state.gz --output-topic-keys tutorial_keys.txt --output-doc-topics tutorial_compostion.txt

The second number in each paragraph is the Dirichlet parameter for the topic. This is related to an option which we did not run, and so its default value was used (this is why every topic in this file has the number 2.5).
If when you ran the topic model routine you had included
--optimize-interval 20
bin\mallet train-topics --input tutorial.mallet --num-topics 20 --optimize-interval 20 --output-state topic-state.gz --output-topic-keys tutorial_keys.txt --output-doc-topics tutorial_composition.txt

That is, the first number is the topic (topic 0), and the second number gives an indication of the weight of that topic. In general, including –optimize-interval leads to better topics.


What topics compose your documents? The answer is in thetutorial_composition.txt file. 

How do you know the number of topics to search for? Is there a natural number of topics? What we have found is that one has to run the train-topics with varying numbers of topics to see how the composition file breaks down. If we end up with the majority of our original texts all in a very limited number of topics, then we take that as a signal that we need to increase the number of topics; the settings were too coarse. There are computational ways of searching for this, including using MALLETs hlda command, but for the reader of this tutorial, it is probably just quicker to cycle through a number of iterations 

Read full article from Getting Started with Topic Modeling and MALLET

Introducing myself to MALLET - Emerging Tech in Libraries



Introducing myself to MALLET - Emerging Tech in Libraries
Here’s how I understand it: topic modeling, like other text mining techniques, considers text as a ‘bag of words’ that is more or less organized. It draws out clusters of words (topics) that appear to be related because they statistically occur near each other. We’ve all been subjected to wordles — this is like DIY wordles that can get very specific and can seem to approach semantic understanding with statistics alone.
One tool that DH folks mention often is MALLET, the MAchine Learning for LanguagE Toolkit, open-source software developed at UMass Amherst starting in 2002. I was pleased to see that it not only models topics, but does the things I’d wanted Oracle Data Miner to do, too — classify with decision trees, Naïve Bayes, and more. There are many tutorials and papers written on/about MALLET, but the one I picked was Getting Started with Topic Modeling and MALLET from The Programming Historian 2, a project out of CHNM. The tutorial is very easy to follow and approaches the subject with a DH-y literariness.

Text Analytics in Enterprise Search - Daniel Ling



Text Analytics in Enterprise Search - Daniel Ling
Document Categorization

 To assign a label to the document / content / data.
 Labels for the category or for the sentiment.
 Threshold values for matching a category before labeling.
 Statistics and “knowledge” from previous examples can be used.


 Mallet and the process of setup and train:
Training the component, Mallet (Machine Learning for Language Toolkit).
• Alternative components includes Lucene (TFIDF) index
(MoreLikeThis), OpenNLP, Textcat, Classifier4j.
 Running the new documents against the model/index of trained
documents.
 Training from interface, adhoc, or index pre-categorized

Document Summarization

Summarize a document, at index time or on-demand.
 Leverage from the knowledge and term statistics of the document
and the index.
 Picks the “most important” sentences based on the statistics and
displays those.

Example Solution: Document Summarization

Custom RequestHandler that receives document ID and field to summarize.
 Custom Search Component making the selection of top sentences.
 Selecting a subset of sentences and sends these back in a field.

Please read full article from Text Analytics in Enterprise Search - Daniel Ling

17 Great Machine Learning Libraries



17 Great Machine Learning Libraries
Java
  • Spark: Apache’s new upstart, supposedly up to a hundred times faster than Hadoop, now includes MLLib, which contains a good selection of machine learning algorithms, including classification, clustering and recommendation generation. Currently undergoing rapid development. Development can be in Python as well as JVM languages.
  • Mahout: Apache’s machine learning framework built on top of Hadoop, this looks promising, but comes with all the baggage and overhead of Hadoop.
  • Weka: this is a Java based library with a graphical user interface that allows you to run experiments on small datasets. This is great if you restrict yourself to playing around to get a feel for what is possible with machine learning. However, I would avoid using this in production code at all costs: the API is very poorly designed, the algorithms are not optimised for production use and the documentation is often lacking.
  • Mallet: another Java based library with an emphasis on document classification. I’m not so familiar with this one, but if you have to use Java this is bound to be better than Weka.
  • JSAT: stands for “Java Statistical Analysis Tool” - created by Edward Raff and was born out of his frustation with Weka (I know the feeling). Looks pretty cool.

  • LibSVM and LibLinear: these are C libraries for support vector machines; there are also bindings or implementations for many other languages. These are the libraries used for support vector machine learning in Scikit-learn.
Read full article from 17 Great Machine Learning Libraries

A Detailed Introduction to K-Nearest Neighbor (KNN) Algorithm | God, Your Book Is Great !!




K Nearest Neighbor (KNN from now on) is one of those algorithms that are very simple to understand but works incredibly well in practice.

KNN Introduction

KNN is an non parametric lazy learning algorithm. That is a pretty concise statement. When you say a technique is non parametric , it means that it does not make any assumptions on the underlying data distribution. This is pretty useful , as in the real world , most of the practical data does not obey the typical theoretical assumptions made (eg gaussian mixtures, linearly separable etc) . Non parametric algorithms like KNN come to the rescue here.
It is also a lazy algorithm. What this means is that it does not use the training data points to do any generalization. In other words, there is no explicit training phase or it is very minimal. This means the training phase is pretty fast . Lack of generalization means that KNN keeps all the training data. More exactly, all the training data is needed during the testing phase. (Well this is an exaggeration, but not far from truth). This is in contrast to other techniques like SVM where you can discard all non support vectors without any problem.  Most of the lazy algorithms – especially KNN – makes decision based on the entire training data set (in the best case a subset of them).
The dichotomy is pretty obvious here – There is a non existent or minimal training phase but a costly testing phase. The cost is in terms of both time and memory. More time might be needed as in the worst case, all data points might take point in decision. More memory is needed as we need to store all training data.

Read full article from A Detailed Introduction to K-Nearest Neighbor (KNN) Algorithm | God, Your Book Is Great !!

Pearson r-correlation Coefficient - University of Strathclyde



Pearson r-correlation Coefficient - University of Strathclyde
For example, we might want to know whether the relationship between maths achievement and parental social background is stronger or weaker than that between maths achievement and cognitive ability. Graphs could give us an indication, but will not give us an exact indication of the strength of the relationship. To do that, we need to calculate the correlation coefficient, which is a numerical indicator of the strength and direction (positive or negative) of the linear relationship between two variables. When working with continuous variables, as we have so far in this chapter, the correlation coefficient to use is Pearson’s r.

What does Pearson’s r do? The formula for Pearson’s correlation coefficient for two variables, x and y is computed as:
 (1)
where:
 and  are individual observations (e.g. the grade of a child in English () and the grade of the same child in maths ();
 and  are the means for variables X and Y (e.g. the mean grades in English and maths);
 is the number of cases
and  and  are the standard deviations of the two variables (English and Maths) respectively. 
Looking at formula (1), we see that what is actually happening is that the difference between the individual response and the mean for each variable is calculated. 

These are then multiplied for each individual case. This will give us a positive score if both are positive, so if the respondent scores above the mean on both variables the outcome will be positive. The same is true if the score on both is negative. 
If the respondent scores below the mean on both variables, the outcome will also be positive. If the respondent has a positive score on variable X, and a negative score on variable Y, the outcome will be negative. All these individual scores are then summed to get a total, which is then divided by the product of the standard deviations of both variables to scale it. This will give us the Pearson r correlation coefficient. 
Pearson r coefficient varies between –1 and +1, with +1 indicating a perfect positive relationship (a high score on variable X = a high score on variable Y), -1 a perfect negative relationship (a high score on X = a low score on Y), and 0 no relationship. 
  • The direction of the relationship: a positive sign indicates a positive direction (high scores on X means high scores on Y), a negative sign a negative direction (high score on X means low scores on Y)
  • The strength of the relationship: The closer to 1 (+ or -) the stronger the relationship.
When we want to make inferences from a sample to a population, we obviously want to calculate the statistical significance of the correlation coefficient as well as the effect size, as discussed in previous units. To do this, we use a test called the F-test. Fortunately, we do not need to do this by hand, as Pearson’s r correlation coefficients, and the associated test of statistical significance, can easily be calculated in SPSS.

Plea
Correlation and Variance

The amount of dispersion or spread in a set of scores can be described as Variance (the standard deviation squared) and is expressed in percentage terms. If one set of scores (X, e.g. Intelligence quotients) is correlated with another set (Y, maths scores), the correlation can be expressed as the percentage of variance in Y which is predicted by the variance in X. For example:
  • A correlation of 0.7 means that the variance in X predicts 49% of the variance in Y. [(0.7 x 0.7) /100]
  • A correlation of 0.5 means that the variance in X predicts 25% of the variance in Y. [(0.5 x 0.5) /100]
  • A correlation of 0.3 means that the variance in X predicts 9% of the variance in Y. [(0.3 x 0.3) /100] 
 For a sample
Pearson's correlation coefficient when applied to a sample is commonly represented by the letter r and may be referred to as the sample correlation coefficient or the sample Pearson correlation coefficient. We can obtain a formula for r by substituting estimates of the covariances and variances based on a sample into the formula above. That formula for r is:
r = \frac{\sum ^n _{i=1}(X_i - \bar{X})(Y_i - \bar{Y})}{\sqrt{\sum ^n _{i=1}(X_i - \bar{X})^2} \sqrt{\sum ^n _{i=1}(Y_i - \bar{Y})^2}}
An equivalent expression gives the correlation coefficient as the mean of the products of the standard scores. Based on a sample of paired data (XiYi), the sample Pearson correlation coefficient is
r = \frac{1}{n-1} \sum ^n _{i=1} \left( \frac{X_i - \bar{X}}{s_X} \right) \left( \frac{Y_i - \bar{Y}}{s_Y} \right)
where
\bar{X}=\frac{1}{n}\sum_{i=1}^n X_i, \text{ and } s_X=\sqrt{\frac{1}{n-1}\sum_{i=1}^n(X_i-\bar{X})^2}
are the standard score, sample mean, and sample standard deviation, respectively.
Please read full article from Pearson r-correlation Coefficient - University of Strathclyde

Read full article from Pearson r-correlation Coefficient - University of Strathclyde

Relationship Between Two Continuous Variables - University of Strathclyde



Relationship Between Two Continuous Variables - University of Strathclyde
While a categorical variable is essentially a non-numerical factor that has been assigned a number (e.g. gender, if boys are given the number 2 and girls 1, these numbers don’t signify any kind of order between the two), continuous variables are ordered and the distance between the numbers is fixed (in contrast to ordinal variables where the distance between the numbers is not fixed). A typical example of a continuous variable is weight. Five kilos are more than 4 kilos, and the difference between 4 and 5 kilos is the same as that between 2 and 3 kilos, i.e. 1 kilo



Correlation is the concept of association between one measure and another. It requires a population, e.g., of pupils and two scores from each member, e.g., maths and English score.
The correlation basically tells us the extent to which the two variables co-vary or move in tandem with one another.
Perfect Linear Relationships Between Variables

In statistical terms the relationship between variables is denoted by the correlation coefficient, which is a number between 0 and 1.0.   Pearson’s r is the most common; the main ideas discussed here are similar for all correlation coefficients.
  • If there is no relationship between the variables under investigation (or between the predicted values and the actual values), then the correlation coefficient is 0, or non-existent.
  • As the strength of the relationship between the variables increases, so does the value of the correlation coefficient, with a value of 1 showing a perfect relationship. (As mentioned, in variables studied in educational research, or generally in social sciences, it is highly unlikely that such perfect correlations are found.)
Correlation and Causation

Causation or causality in statistical terms means that variable A isn’t just correlated with variable B, but that it actually produces a change in B.
When conducting a correlation analysis, it is important to remember that we cannot claim that a relationship between variables is a “cause and effect” one. All we can say is that the two variables occur together, that changes in one is accompanied by systematic changes in the other. Causal inferences are made based on underlying theories and knowledge.
Read full article from Relationship Between Two Continuous Variables - University of Strathclyde

Stata Data Analysis Examples: Logistic Regression



Stata Data Analysis Examples: Logistic Regression
Logistic regression, also called a logit model, is used to model dichotomous outcome variables. In the logit model the log odds of the outcome is modeled as a linear combination of the predictor variables.
Please note: The purpose of this page is to show how to use various data analysis commands. It does not cover all aspects of the research process which researchers are expected to do. In particular, it does not cover data cleaning and checking, verification of assumptions, model diagnostics and potential follow-up analyses.

Examples of logistic regression

Example 1:  Suppose that we are interested in the factors that influence whether a political candidate wins an election.  The outcome (response) variable is binary (0/1);  win or lose.  The predictor variables of interest are the amount of money spent on the campaign, the amount of time spent campaigning negatively and whether or not the candidate is an incumbent.
Example 2:  A researcher is interested in how variables, such as GRE (Graduate Record Exam scores), GPA (grade point average) and prestige of the undergraduate institution, effect admission into graduate school. The response variable, admit/don't admit, is a binary variable.
Read full article from Stata Data Analysis Examples: Logistic Regression

logistic回归_百度百科



logistic回归_百度百科
logistic回归又称logistic回归分析,主要在流行病学中应用较多,比较常用的情形是探索某疾病的危险因素,根据危险因素预测某疾病发生的概率等等。例如,想探讨胃癌发生的危险因素,可以选择两组人群,一组是胃癌组,一组是非胃癌组,两组人群肯定有不同的体征和生活方式等。这里的因变量就是是否胃癌,即"是"或"否",为两分类变量,自变量就可以包括很多了,例如年龄性别饮食习惯幽门螺杆菌感染等。自变量既可以是连续的,也可以是分类的。通过logistic回归分析,就可以大致了解到底哪些因素是胃癌的危险因素。

logistic回归与多重线性回归实际上有很多相同之处,最大的区别就在于他们的因变量不同,其他的基本都差不多,正是因为如此,这两种回归可以归于同一个家族,即广义线性模型(generalized linear model)。这一家族中的模型形式基本上都差不多,不同的就是因变量不同,如果是连续的,就是多重线性回归,如果是二项分布,就是logistic回归,如果是poisson分布,就是poisson回归,如果是负二项分布,就是负二项回归,等等。只要注意区分它们的因变量就可以了。
logistic回归的因变量可以是二分类的,也可以是多分类的,但是二分类的更为常用,也更加容易解释。所以实际中最为常用的就是二分类的logistic回归。

Read full article from logistic回归_百度百科

Apache Mahout: Scalable machine learning and data mining



Apache Mahout: Scalable machine learning and data mining
Mahout's recommenders expect interactions between users and items as input. The easiest way to supply such data to Mahout is in the form of a textfile, where every line has the format userID,itemID,value. Here userID and itemID refer to a particular user and a particular item, and value denotes the strength of the interaction (e.g. the rating given to a movie).
1,10,1.0
1,11,2.0
1,12,5.0
https://github.com/jpatanooga/Caduceus/blob/master/src/tv/floe/caduceus/mahout/cf/taste/samples/SampleRecommender.java
public static void main(String[] args) throws IOException, TasteException {
DataModel model = new FileDataModel( new File( "data/mahout/cf/sample_recommender_data.csv" ) ); // load model
UserSimilarity similarity = new PearsonCorrelationSimilarity( model );
UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model );
Recommender recommender = new GenericUserBasedRecommender( model, neighborhood, similarity );
List<RecommendedItem> recommendations = recommender.recommend(1, 1);
for ( RecommendedItem recommendation : recommendations ) {
System.out.println( recommendation );
}
}

Creating a user-based recommender

Create a class called SampleRecommender with a main method.
The first thing we have to do is load the data from the file. Mahout's recommenders use an interface called DataModel to handle interaction data. You can load our made up interactions like this:
DataModel model = new FileDataModel(new File("/path/to/dataset.csv"));
In this example, we want to create a user-based recommender. The idea behind this approach is that when we want to compute recommendations for a particular users, we look for other users with a similar taste and pick the recommendations from their items. For finding similar users, we have to compare their interactions. There are several methods for doing this. One popular method is to compute the correlation coefficient between their interactions. In Mahout, you use this method as follows:
UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
The next thing we have to do is to define which similar users we want to leverage for the recommender. For the sake of simplicity, we'll use all that have a similarity greater than 0.1. This is implemented via a ThresholdUserNeighborhood:
UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, model);
Now we have all the pieces to create our recommender:
UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);
We can easily ask the recommender for recommendations now. If we wanted to get three items recommended for the user withuserID 2, we would do it like this:
List recommendations = recommender.recommend(2, 3);
for (RecommendedItem recommendation : recommendations) {
  System.out.println(recommendation);
}

Evaluation

You might ask yourself, how to make sure that your recommender returns good results. Unfortunately, the only way to be really sure about the quality is by doing an A/B test with real users in a live system.
We can however try to get a feel of the quality, by statistical offline evaluation.
One way to check whether the recommender returns good results is by doing a hold-out test. We partition our dataset into two sets: a trainingset consisting of 90% of the data and a testset consisting of 10%. Then we train our recommender using the training set and look how well it predicts the unknown interactions in the testset.
To test our recommender, we create a class called EvaluateRecommender with a main method and add an inner class calledMyRecommenderBuilder that implements the RecommenderBuilder interface. We implement the buildRecommender method and make it setup our user-based recommender:
UserSimilarity similarity = new PearsonCorrelationSimilarity(dataModel);
UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, dataModel);
return new GenericUserBasedRecommender(dataModel, neighborhood, similarity);
Now we have to create the code for the test. We'll check how much the recommender misses the real interaction strength on average. We employ an AverageAbsoluteDifferenceRecommenderEvaluator for this. The following code shows how to put the pieces together and run a hold-out test:
DataModel model = new FileDataModel(new File("/path/to/dataset.csv"));
RecommenderEvaluator evaluator = new AverageAbsoluteDifferenceRecommenderEvaluator();
RecommenderBuilder builder = new MyRecommenderBuilder();
double result = evaluator.evaluate(builder, null, model, 0.9, 1.0);
System.out.println(result);
Note: if you run this test multiple times, you will get different results, because the splitting into trainingset and testset is done randomly.
Please read full article from Apache Mahout: Scalable machine learning and data mining
Read full article from Apache Mahout: Scalable machine learning and data mining

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts