text:
Impressions of Sea of Thieves, one month in: Deep-diving retro world PvP
Andrew Ross
It's really hard for me to not to gush hard about Sea of Thieves. I know many out there won't agree, and it's easy to say why, especially for RPG and theme park fans. It also may be because I'm late to the party, as the game came out while I was at GDC. That being said, Massively OP doesn't do ratings because we expect the games we cover to evolve, but we do post impressions and hands-on coverage, and as I've played the game before and after it's latest patch, I figure it's time to lay out some judgments. Don't worry, we'll run through the game's grimy pockets before looking at its actual treasure!
Hostile waters
Let's get started with character creation: It sucks. While I understand that Rare may have wanted to get people in and playing ASAP (to the point that its abbreviated character customization was heavily criticized), I still spent far longer on its system than I did in games with actual character creation. You're given several models to choose from, can "favorite" a model to protect it, then reroll to generate new models to potentially become your player.
While I must admit that I was quite tempted to use a female model (which I never do in MMOs), the issue was the character creator is that most of the characters are "non-traditionally beautiful," but the goal of the game is to customize your appearance. The two are at odds with each other, and I say that as someone who tends to make characters that are supposed to be a bit not-pretty. However, there's a difference between being not-pretty and having no strong associations with your character, and Rare's made the latter a potentially dangerous norm.
Aside from the character creation issues, the other big issue people complain about in Sea of Thieves is the repeatable content. To note, I'm not yet at 20 hours played, but because I played with both newbies and high ranked players (there are no levels or stats preventing you from grouping with anyone), I was able to experience "high-end" content right from the start. People looking for something new around every corner are in for disappointment, though. Quests can essentially be one of three options: kill quests, treasure hunts, and delivery quests.
Kill quests involve going to certain locations, killing waves of enemies, and then getting proof of the kill to return to someone. Treasure hunts are probably the most unique, giving you riddles and clues to discover where some treasure if hidden which also needs to be taken to someone (for cash, of course). Finally, there are delivery quests, which are a bit like a time-trial. You're asked to get a specific type of item, hunt it down, and deliver it to the right NPC before the timer's up.
Of the three, treasure hunting feels the most unique. They start easy with maps and red Xs, but they evolve into riddles that unfold as you get closer and closer to the treasure. I've yet to hear about or see a truly hard one, but some did get my crew to scratch their heads a bit. They're not as involved as some of the Secret World's investigation missions, but better than your standard themepark fair. The game's for PC and console (I naturally am on the former), but it feels like something the latter would be more familiar with.
Delivery quests are kind of fun, especially once you get more familiar with what's available. You know which islands tend to have what commodities, grab the quest, and rush to complete it before it expires. Or, for the hoarders, you can just do your best to grab everything, bring it to an outpost, pick up a quest, and deliver the goods you already have in record time. Of course, this isn't fun for everyone, so I can see people getting bored.
The kill quests are pretty meh. Don't get me wrong; the mobs have some uniqueness to them (some enemies get weaker in water, some regen in water, others are invulnerable in shadow and require daylight or a lantern present just to damage them), but two or three people working on even the higher-level quests make them pretty easy.
Most of the time, these are the quests I think people are getting bored with. Especially for people who want visceral difference in their quest types, all three quest types may end up disappointing, especially since there's only one melee weapon and three simple guns: a sniper rifle, a blunderbuss (think shotgun), and a pistol that needs to be reloaded old-timey style. They have some less well-known uses, but don't expect Overwatch levels of variety.
While there are "raids" (skeleton forts that spawn randomly on islands with a Skull Cloud above them, acting as a huge "gank zone!" symbol), without other players killing your team, they're only marginally harder than kill quests, mostly because of the number of mobs and numerous waves of them. The payout is worth it, but as you're only unlocking skins – not abilities, skills, boats, or stats – some readers by now might be seeing why so many MMO and RPG fans seem to dislike complain about the perceived lack of content.
All of this comes before the fact that Sea of Thieves really is a PvP game. If you're not OK with cat and mouse chases, planning escape routes, returning to town frequently, or losing hours of work to player killers, avoid Sea of Thieves. Period. You can play solo, but doing so, especially in prime time, is the game's hard mode. Other friendly players can make the game significantly easier, especially when coordinated to involve multiple crews, which is exactly how I feel MMO difficulty should work, but that's another article altogether. That being said, hostile players can ruin the game for people who don't enjoy PvP.
That's the basic gameplay, and if you don't like it, that's reason enough to avoid it. There's more, though. Disconnecting from play with strangers means losing out on all the rewards for your quests. The in-game voice chat is fine enough but is essentially general chat, so plotting out loud can be heard by enemies. I assume this is a big reason why smarter groups will invite you to a group immediately, but the Xbox party chat client isn't optimized for PC users, and there's no way my fellow players or I could find to turn on push to talk, a feature that Rare was smart enough to add but apparently Microsoft somehow forgot about.
As the game lacks persistent guilds and has no formal way of forming multi-ship alliances to indicate allies, you often have to worry about random people joining groups. While I'm often that random person and was threatened with the brig once or twice, it's because allies can potentially screw you over and log out before you put them in the brig. Even then, they're not completely harmless, as I was taken out by an ally's imprisoned troll during a little celebration on their ship.
In all, it may be fair to say Sea of Thieves is a miniature, full-loot-drop-on death PvP server that automatically assigns you and others to parties (unless you choose to play solo). It's great that loot is something you can put on the ground, but there's no trade windows, no safe zones, and limited gameplay options for $60.
However, despite the slightly steep cost, I love it.
Good old fashioned fun
I know I've said some harsh things about the game already, but especially knowing our readers and hearing about the game from others, it's only fair to address the complaints you're all probably familiar with from the perspectives you readers often express in the comments section. That being said, I may be one of the griefier staff members at Massively OP, so Sea of Thieves is right up my alley.
Now, to be clear, this isn't to say that I'm the tea-bagging, trash-talking sort trying to get you to rage quit. I often have more fun being the mouse rather than the cat. I thoroughly enjoy playing lookout. While my crew is questing and fighting, I'm looking for hostile players, replenishing our supplies, and repairing the ship. The rest of the crew can play hero while I'm playing dad, telling everyone to grab their healing bananas and be back at the boat as soon as they're done. Yes, I enjoy piratey stuff, but it's part of the game, and it's one I embrace usually after you've shown that you really don't want to group up and form an armada with us.
While the game is simple, that's a large part of the appeal to me. There's just enough variety for me to want to learn the game and accept its ever-changing loot locations because that's all the game is: the hunt for potential cash. Much as in Overwatch and its lack of power levels, I enjoy a game that's player skill-based instead of characters skills based. While there may not be a ton of unique abilities, there are certainly different roles, and none involve artificial classes gating your ability to function.
As an MMO fan, this does a few things. First, it's accessible. I did my first skeleton fort a few hours in. That's like starting with World of Warcraft's Molten Core. If you wanted to pick up the game and join me, you could do that right now. There's no need for level or stat scaling; there's no worrying about bound items. Just start playing. It's a simple concept we often lose in hugely complex virtual worlds asking you to min-max stats and ability cooldowns instead of, well, exploring.
Then there's the actual playing of a role. I don't necessarily mean RPing (though with voice chat, you could do that); I mean you're a captain as soon as you grab the wheel and tell other people what you need them to do. I'm often a second mate, handling logistics and enforcing the captain's plan, even when I join three real-life friends as a PUGger.
The community is actually very nice as well. Niche MMO nice, if you know what I mean. The PvP community gets a bad rap, but longtime veterans of Ultima, EVE, and Darkfall will probably agree that these savage communities actually house genuinely kind people. Even people who threatened me with the brig often ended up teaching me about the game, and I got to pass that on to veteran players who hadn't ventured out of their comfort zones with strangers.
It's not just being a newbie either. As some achievements encourage cross-party play, I had other crews give us treasure, help with quests, and protect us as we turned in loot. There are people who'll stab you in the back, but I've yet to feel complete betrayal.
Admittedly, part of this may be because I know how to play FFA PvP games. While Sea of Thieves as a solo player puts me as an eternal PUB player, I know to log out and back in if my team refuses to communicate moments after I join. It's probably the best tip I can give to an MMO player. If you're the guy who can't voice chat or type, and you just want to play solo, again, SOT may not be the game for you. It's practically an MMO, and the difficulty is generally in communicating with people, as I've previously experienced. And that's really something I wish more games would push.
In a way, Sea of Thieves is what I'd hoped to find in ArcheAge, albeit on a smaller scale. No, I can't build a house or custom ship (Rare, I'll pay for this as DLC!), but I can steal bananas and treasure. I can fight huge sea monsters, sneak treasure past my aggressors, and even beat another crew in a war of attrition (which they'll lose due to my packrat ways). There's not as much customization, but the lack of levels means anyone can join without having to slowly use PvE to lure them to PvP. While getting robbed still sucks, you can't lose gold you've already earned, and as gold just unlocks skins, it doesn't sting as badly as losing a ship you spent months to create. The stakes are lower, but that makes it potentially easier to get people outside the current world PvP mindset to give it a whirl.
If you're dead set against PvP, I get that. If you prefer your PvP to be round-based with UI constantly telling you what to do, that's fine too. Sea of Thieves probably isn't a good fit. But for you retro world PvPers who don't have time to deal with 3 a.m. raids, write out truces for the best PvE spots, or just miss the sense of danger while questing, Sea of Thieves can hit many of those same notes on a smaller scale.
Massively Overpowered skips scored reviews; they're outdated in a genre whose games evolve daily. Instead, our veteran reporters immerse themselves in MMOs to present their experiences as hands-on articles, impressions pieces, and previews of games yet to come. First impressions matter, but MMOs change, so why shouldn't our opinions?
item loss
Previous articleConan Exiles is being brought to Asian territories (to the tune of 'Beauty and the Beast')
Next articleStar Citizen shows off its sleek starter ship while Squadron 42 discusses its storytelling
deekay_plus
i discover new things in the game almost every week, playing almost every day since launch.
they may be small things. they may be subtle. but maybe sometimes the world ending big bad with dramatically diferent coloured palette swap mobs adn zones gets fucking old after a while.
and god damn am i glad this game doesn't rely on mmo style quests with worthless walls of text.
i have to say this game really is right up my ally and the ally of a friend or two and we really dig it.
with hungering deeps we are both vaguely dissapointed and materially releived. they very well could have betrayed what makes the game so good and fresh by catering and pandering to the vocal hate train demanding it be something it never was going to be based on the peculiar mmorpg/sp story fps campign definition of content.
we still have some minor complaints and wishes. like we'd like to switch from 2 man sloop party to 3-4 galleon party without exiting or interupting our gameplay beyond having to go to a port to switchkind of deal. but it's not the worst ever as is now. and we'd also like to see cheaper prices on ship cusomtizaton but ehhhhh.
rogbarz
In all honesty this is a great game but not worth the full box price. I got myself a game pass (to play some games on PC) then it is great value. As you get state of decay 2, sea of thieves, gears 4 and etc. the monthly fee is great and you get some nice games.
Damn you, Andrew! – I just got over it, that this game might not be for me, and then you just have to go write this article and make your points. Shooting holes in my wallet isn't fair… Gotta fetch myself some chests, hope they'll prove sturdier than my opinions… ;)
If the game was a 20$ early access game the level of content would be acceptable. Sorry, at 60$ and a promise of future content (Which we expect from literally all games now) does not sell me on a game that has literally a few hours of content.
Also any game that requires you play with other people for it to be fun is not a good game, sorry. Every game is more fun with friends.
eVeRy GaMe iS mOrE fUn WiTh FrIeNdS
jesus christ you're on a site for multiplayer fucking games complaining that the reviewer said it was funnest with friends.
it's like going onto a site for huniepop type games and complaining they aren't multiplayer.
as far as the content goes, the game has loads of content for the type of game it is. do you go into a moba game review and complain it has no mmo style questing and endless recoloured mobs with zero difference in ai to them?
Sadly, no rules PvP and the lack of much content was pretty clear from the start. I'll agree there are nice people who PvP… but without rules it feels less like a world and more like a horror novel. Especially since you essentially can't kill those people off.
Sorenthaz
I think one of the problems with the 'quest' system is it's just three different flavors of the same "go get this and bring it back for gold" gameplay loop. PvP is the only thing that really interrupts it, but that's the biggest problem with this game that I have on a fundamental level: it is supposed to be a "shared world adventure game", NOT a PvP game.
Yet that's what it's become because there's nothing else compelling to really do, and PvP gets to be devoid of consequences + lets you ignore the content that the game has to offer. PvE just fattens targets up for PvP, essentially, and those who don't care about cosmetics in the slightest can just safely ignore all of it and just go chasing after other ships from the get-go.
This game should not devolve into just another PvP game, but that's the way it's going unless Rare can add in some structure, consequences, and/or more compelling PvE content. It's supposed to be a pirate game, and yet there is so much more to being a pirate than just killing and stealing from fellow pirates. It's a disappointment in this regard, because PvP isn't meant to be THE thing to do in the game, it's meant to be A thing to do, yet this mentality is what pervades a lot of folks and has soured the community because of it.
Seriously though I feel that it's utterly dangerous for this game's future if it's just going to be turned into another PvP game due to devs falling back on the lazy easy route that most Early Access sandboxes do. I expected a pirate game that fits the "shared world adventure" description, and yet that's clearly what it isn't as long as open PvP continues to be inconsequential and the only real threat/dynamic element at play. It's cannibalistic game design and there's a reason people have been leaving the game in droves; doesn't help when the forum/reddit communities grow more toxic and intolerant of different opinions as the days go on either.
There should be a balance between PvP and PvE, and yet currently PvP threatens to just run over the entire game. I think this article is a good highlight of just why that's happening. Sea of Thieves being a PvP game isn't a fact, it's an opinion based on playstyle preferences. This game is largely designed as a PvE experience but open PvP with 0 strings attached was thrown in as a way to interrupt and override the rest of the game.
The griefing I've heard so much about might have been the launch situation, but as I mentioned, it wasn't my full experience, and I was a solo player. Much like any other PvP game, the start is the hardest. Once the sheep make a mass exodist, so do the wolves, and what you're left with is more of a cat and mouse situation, in that the cat enjoys the play and won't necessarily kill the mouse each and every time. The mice know what's up and work together, learn from each other's mistake, and can make a life for themselves.
If you own the game, you may actually want to try jumping back in. Just remember to set aside MMMO time instead of lobby shooter time, and remember to ditch any group that doesn't communicate and/or invite you to a formal party minutes after joining. It's really a different experience.
Oh I've played the game plenty and primarily have done the solo sloop since the time it was put into the Pioneer tests, lol. For me the only real fun I have with it is in bursts, as I enjoy the solo experience but get tired when I get chased by 2man Sloops or the like. There's no real point to grinding out reputations for now though (Pirate Legend just adds one new outfit and one new ship customization that uses purple/pale green colors…), and I've basically got a cosmetic outfit already that I'm content with. So at this point it's just grinding to get numbers up or else jumping into random matchmaking/playing occasionally with a few folks on my friend list who still play it off/on.
Pretty much waiting for new content to arrive before bothering to give it a more serious commitment again. I partially burned myself out during testing and after launch it pretty much went the way I expected it to.
i've played almost every day since launch 1 -3 hours.
still discoversing new things. still enjoying the quests, still not getting griefed by anyone.
the hungering deep quest was neat. the event was neat. but not somethign that will survive normal every day pvp in the game that people playing it seem to be quite into and chill about (often trading GG's near the end of engagements in game voice chat)
idk why anyone would even put grinding out the levels and such on the table to begin with. it's vastly far second to the simple enjoyment of the gameplay loops, which i still find fresh and enjoyable in ways mmo content hasn't been for me in years.
if they want to kill the game, all they have to do is hamstring the game with "traditonal" contentthat people for some reason demand it to have but it utterly incompatable with the faundamental nature of the game.
as it is i ended up being somewhat pleased that the hungering deep event is only temporary and not as hamfisted as i was fearing. it would really be a downer if they had brought it into the game in a fashion akin to mmo content.
What to do in World of Warcraft when you're level 110
Perfect Ten: Why Star Trek Online is an underrated MMORPG
Perfect Ten: MMO celebrations that didn't rip off real-world holidays
Perfect Ten: Ten MMO systems that encourage alts
Vague Patch Notes: Sub-optimal play vs. just plain bad play in MMORPGs


Is there a way to do the equivalent of a Spatial Join or Intersect with out having to make a new shapefile?
I just want to update a field in a point layer with the index grid it falls on.
Are you familiar with Python? You could probably get this done with geometry objects and/or a data access cursor.
Here's a version 10.0 model that should do this, it can be run as a GP tool.
You can use Select Layer By Location tool with INTERSECT match option.
Once the right features are selected, use Calculate Field tool to calculate a value for an existing field.


text:
\section{Introduction}

In recent years, the problem of low-rank matrix factorization (LRMF) has
attracted much attention due to its wide range of applications in computer
vision and pattern recognition, such as structure from motion \cite{SFM},
face recognition \cite{RPCA}, shape from varying illumination \cite{SI},
and object tracking \cite{tracking}. Representing the measurements or the
observation data as a $d\times n$ matrix $X
=(\mathbf{x}_{1},\mathbf{x}_{2},\cdots ,\mathbf{x}_{n})$, whose columns
$\mathbf{x}_{i}$s correspond to the $d$-dimensional input measurements and
$n$ is the number of input items, the aim of the LRMF can be
mathematically described as solving the following optimization problem:
\begin{equation}
\underset{U,V}{\min }\left\Vert X-UV^{T}\right\Vert, \label{e1}
\end{equation}
where $U =(\mathbf{u}_{1},\mathbf{u}_{2},\cdots ,\mathbf{u}_{k})\in
R^{d\times k}$, $ V =(\mathbf{v}_{1},\mathbf{v}_{2},\cdots
,\mathbf{v}_{k})\in R^{n\times k}$ and $k<d,n$. To deal with the real LRMF
problems in the presence of missing data, the optimization (\ref{e1}) is
also reformulated as
\begin{equation}
\underset{U,V}{\min }\left\Vert W\odot (X-UV^{T})\right\Vert,  \label{e2}
\end{equation}
where $\odot$ denotes the component-wise multiplication (i.e., the
Hadamard product), and the element $w_{ij}$ of the denotation matrix $W\in
R^{d\times n}$ is $1$ if the corresponding element of $X$ is known, and
$0$ otherwise \cite{L2sur}. Here $\left\Vert \cdot \right\Vert$ is some
form of the matrix norm.

The global minimum of the optimization problem (\ref{e1}) with $L_2$
matrix norm (i.e., the Frobenius norm) can easily be solved by the well
known singular value decomposition (SVD, \cite{svd}) method. To handle
missing data, some methods, such as the Wiberg algorithm \cite{IJCV07} and
the weighted low-rank approximation method (WLRA, \cite{ICML03}), have
further been proposed to solve the optimization (\ref{e2}) with $L_2$
matrix norm. The performance of these techniques, however, is sensitive to
the presence of outliers or noises, which often happen in real
measurements, because the influence of outliers or noises with a large
norm tends to be considerably exaggerated by the use of the $L_2$ norm
\cite{Ini,Pami08}. To alleviate this robustness problem, the often used
approach is to replace the $L_2$ matrix norm with the $L_1$ norm in the
objective functions of (\ref{e1}) and (\ref{e2})
\cite{CVPR10,ICML06,CVPR05,Pami08}. The models are then expressed in the
following forms:
\begin{equation}
\underset{U,V}{\min } \left\Vert X-UV^{T}\right\Vert _{L_{1}} \label{e11}
\end{equation}
and
\begin{equation}
\underset{U,V}{\min }\left\Vert W\odot (X-UV^{T})\right\Vert _{L_{1}}.
\label{e12}
\end{equation}
Unfortunately, it turns out that replacing the $L_2$ norm with $L_1$ norm
in the optimizations makes the problem significantly more difficult
\cite{CVPR10}. First, both (\ref{e11}) and (\ref{e12}) are non-convex
problems, so their global optimality are in general difficult to obtain.
Second, both optimizations are non-smooth problems conducted by the $L_1$
matrix norm, so it is hard to attain an easy closed-form iteration formula
to efficiently approximate their solutions by standard optimization tools.
Third, in real applications, both optimizations can also be very
computationally demanding problems to solve, which always limit their
availability in large-scale practice.

In this paper, by employing an important algorithm design paradigm, namely
divide and conquer, we formulate efficient algorithms against the
optimization models (\ref{e11}) and (\ref{e12}), respectively. The core
idea underlying the new algorithms is to break the original optimizations
into a series of smallest possible problems and recursively solve them.
Each of these small problems is convex and has closed-form solution, which
enables the new algorithms to avoid using a time-consuming numerical
optimization as an inner loop. The proposed algorithms are thus easy to
implement. Especially, it is theoretically evaluated that the
computational speeds of the proposed algorithms are approximately linear
in both data size and dimensionality, which allows them to handle
large-scale $L_1$ norm matrix factorization problems. The efficiency and
robustness of the proposed algorithms have also been substantiated by a
series of experiments implemented on synthetic and real data.

Throughout the paper, we denote matrices, vectors, and scalars by the
upper-case letters, lower case bold-faced letters, and lower-case
non-bold-faced letters, respectively.

\section{Related work}

Various approaches have recently been proposed to deal with the
optimizations (\ref{e11}) and (\ref{e12}) to achieve robust low-rank
matrix factorization results. For the $L_1$ norm model (\ref{e11}), the
iteratively re-weighted least-squares approach introduced by Torre and
Black is one of the first attempts \cite{Ini}. Its main idea is to
iteratively assign a weight to each element in the measurements. The
method, however, is generally very sensitive to initialization
(\cite{CVPR05}). Instead of the $L_1$ matrix norm, Ding et al. utilized
the rotational invariant $R_1$ norm, as defined by
$\left\Vert X\right\Vert _{R_{1}}=\underset{i=1}{\overset{n}{\sum }}(\underse
{i=1}{\overset{d}{\sum }}x_{ji}^{2})^{1/2},$ for the objective function of
(\ref{e11}) (ICML06, \cite{ICML06}). Like the $L_1$ norm, the $R_1$ norm
so defined is also capable of softening the contributions from outliers.
By substituting the maximization of the $L_1$ dispersion of data,
$\|U^TX\|_{L_1}$, for the minimization of the original $L_1$ objective,
$\left\Vert X-UV^{T}\right\Vert_{L_1}$, Kwak presented another approach
for the problem (PAMI08, \cite{Pami08}). The method is also able to
suppress the negative effects of outliers to a certain extent. The most
predominance of this method is its fast computational speed, which is
linear in both measurement size and dimensionality.

Two methods represent the current state of the art of solving the model
(\ref{e12}). The first method is presented by Ke and Kanade, who
formulated the robust $L_1$ norm matrix factorization objective as
alternative convex programs (CVPR05, \cite{CVPR05}). The programs can then
be efficiently solved by linear or quadratic programming. The second
method is designed by Eriksson and Hengel, which represents a
generalization of the traditional Wiberg algorithm (CVPR10,
\cite{CVPR10}). The method has been empirically proved to perform well on
some synthetic and real world problems, such as the structure from motion
(SFM) applications. It should be noted that both methods can also be
employed to solve (\ref{e11}) by setting all elements of the missing data
denotation matrix $W$ to be $1$s.

\section{Divide-and-conquer method for robust matrix factorization}

Unlike the previous methods for robust matrix factorization, the proposed
divide-and-conquer (D\&C in brief) method chooses to solve the smallest
possible sub-problems of (\ref{e11}) and (\ref{e12}) at every step
(involving only one scalar parameter of $U$ or $V$). The advantage of the
new method lies in the fact that each small sub-problem so attained can be
solved analytically. Thus, complicated numerical optimization techniques
are entirely avoided, and the overall problem can thus be efficiently
solved. We introduce our method and its theoretical fundament as follows.

\subsection{Breaking the model into smallest sub-problems}

We first consider the optimization model (\ref{e11}). Since the $k$-rank
matrix $UV^T$ can be partitioned into the sum of $k$ $1$-rank matrices,
i.e., $UV^T=\underset{i=1}{\overset{k}{\sum
}}\mathbf{u}_{i}\mathbf{v}_{i}^{T}$, (\ref{e11}) can thus be equivalently
reformulated as
\begin{equation}
\underset
\left\{ \mathbf{u}_{j},\mathbf{v}_{j}\right\} _{j=1}^{k}}{\min }\left\Vert X
\underset{j=1}{\overset{k}{\sum }}\mathbf{u}_{j}\mathbf{v
_{j}^{T}\right\Vert _{L_{1}}. \label{e3}
\end{equation}
The original $k$-rank matrix factorization problem can then be decomposed
into a series of recursive $1$-rank sub-problems:
\begin{equation}
\underset{\mathbf{u}_{i},\mathbf{v}_{i}}{\min }\left\Vert E_{i}-\mathbf{u
_{i}\mathbf{v}_{i}^{T}\right\Vert _{L_{1}}, \label{e4}
\end{equation}
where $E_{i}=(\mathbf{e}_{1}^{i},\mathbf{e}_{2}^{i},\cdots ,\mathbf{e
_{n}^{i})=X-\underset{j\neq i}{\sum }\mathbf{u}_{j}\mathbf{v}_{j}^{T}$. We
can naturally approximate the solution of (\ref{e3}) by sequentially
solving (\ref{e4}) with respect to $(\mathbf{u}_{i},\mathbf{v}_{i})$ for
$i=1,2,\cdots,k$, with all other $(\mathbf{u}_{j},\mathbf{v}_{j})$s
($j\neq i$) fixed.

Solving (\ref{e4}) can further be simplified to alteratively optimizing
$\mathbf{u}_{i}$ or $\mathbf{v}_{i}$ while letting the other fixed. Since
$\mathbf{u}_{i}$ and $\mathbf{v}_{i}$ can be solved in a completely
symmetrical way (in the sense that $\left\Vert E-\mathbf{uv}^{T}
\right\Vert _{L_{1}}=\left\Vert E^{T}-\mathbf{vu
^{T}\right\Vert _{L_{1}}$), we only need to consider how to efficiently
solve
\begin{equation}
\underset{\mathbf{v}_{i}}{\min }\left\Vert E_{i}-\mathbf{u}_{i}\mathbf{v
_{i}^{T}\right\Vert _{L_{1}}. \label{e5}
\end{equation}

By reformulating (\ref{e5}) to its decoupling form:
\begin{equation}
\underset{\mathbf{v}_{i}=(v_{i1},v_{i2},\cdots ,v_{in})^{T}}{\min }\underset{j=1}{\overset
n}{\sum }}\left\Vert \mathbf{e
_{j}^{i}-\mathbf{u}_{i}v_{ij}\right\Vert _{L_{1}}, \label{e6}
\end{equation}
where $v_{ij}$ is the $j$-th element of the vector $\mathbf{v}_{i}$, the
problem can then be further divided into $n$ small sub-optimizations with
the following expression (for $j=1,2,\cdots,n$):
\begin{equation}
\underset{v_{ij}}{\min }\left\Vert \mathbf{e
_{j}^{i}-\mathbf{u}_{i}v_{ij}\right\Vert _{L_{1}}. \label{e7}
\end{equation}

From (\ref{e3}) to (\ref{e7}), we have broken the original large
optimization (\ref{e11}), with respect to $U$ and $V$, into a series of
smallest possible optimization problems, each with respect to only one
scalar parameter of $U$ or $V$. By utilizing the similar strategy, it is
also easy to decompose the large optimization (\ref{e12}) into a series of
small optimizations, expressed as:
\begin{equation}
\underset{v_{ij}}{\min }\left\Vert \mathbf{w}_{j}\odot (\mathbf{e}_{j}^{i}
\mathbf{u}_{i}v_{ij})\right\Vert _{L_{1}}, \label{e7s}
\end{equation}
where $\mathbf{w}_{j}$ is the $j$-th column of the denotation matrix $W$.

It is very fortunate that both small optimizations (\ref{e7}) and
(\ref{e7s}) are not only convex, but also have closed form solutions. This
implies that it is possible to construct fast algorithms for (\ref{e11})
and (\ref{e12}), as introduced in the following discussion.

\subsection{The closed form solutions of (\ref{e7}) and (\ref{e7s})}

We first formalize (\ref{e7}) as:
\begin{equation}
\underset{v}{\min }\ f_{\mathbf{e},\mathbf{u}}(v)=\left\Vert \mathbf{e}
\mathbf{u}v\right\Vert _{L_{1}} \label{e75}
\end{equation
where both $\mathbf{e}$ and $\mathbf{u}$ are $d$-dimensional vectors, and
denote their $i$-th elements as $e_{i}$ and $u_{i}$, respectively. The
following theorem shows the convexity of this optimization problem (the
proofs of all involved theorems are moved to the supplementary material
due to the page limitation).

\begin{theorem}
$f_{\mathbf{e},\mathbf{u}}(v)$ as defined in (\ref{e75}) is a convex
function with respect to $v$.
\end{theorem}

Theorem 1 implies that it is hopeful to find the global optimum of
(\ref{e75}). We first clarify the case when all elements of $\mathbf{u}$
are positive in the following lemma.

\begin{lemma}
For (\ref{e75}), assuming each element $u_{i}$ of $\mathbf{u}$ is positive
($ u_{i}>0,i=1,2,\cdots ,d$), denote

\begin{itemize}
\item the label set $\mathbf{L}_{\mathbf{e},\mathbf{u}}=(l_{1}^{(\mathbf{e}
\mathbf{u)}},l_{2}^{(\mathbf{e},\mathbf{u)}},\cdots ,l_{d}^{(\mathbf{e}
\mathbf{u)}})$: the permutation of $(1,2,\cdots ,d)$ based on the
ascending
order of $(\frac{e_{1}}{u_{1}},\frac{e_{2}}{u_{2}},\cdots ,\frac{e_{d}}{u_{d
})$;

\item the sequence $\mathbf{\Gamma }_{\mathbf{e},\mathbf{u
}=(a_{0},a_{1},\cdots ,a_{d})$: $a_{0}=-\underset{j=1}{\overset{d}{\sum }
u_{l_{j}^{(\mathbf{e},\mathbf{u)}}},$
$a_{d}=\underset{j=1}{\overset{d}{\sum
}}u_{l_{j}^{(\mathbf{e},\mathbf{u)}}},$ $a_{i}=\underset{j=1}{\overset{i}
\sum
}}u_{l_{j}^{(\mathbf{e},\mathbf{u)}}}-\underset{j=i+1}{\overset{d}{\sum
}}u_{l_{j}^{(\mathbf{e},\mathbf{u)}}},i=1,2,...,d-1$;

\item the label $i_{\mathbf{e},\mathbf{u}}$: the label of the first
non-negative element of $\mathbf{\Gamma }_{\mathbf{e},\mathbf{u
}$;
\end{itemize}
and the following closed form expression provides a global optimum of
(\ref{e75}):
\begin{equation}
P(\mathbf{e},\mathbf{u)}:=\frac{e_{i^*}}{u_{i^*}},\
i^*=l_{i_{\mathbf{e},\mathbf{u}}}^{(\mathbf{e}
\mathbf{u})}. \label{e8}
\end{equation}
\end{lemma}\begin{table*}
\begin{tabular}{l}
\hline \textbf{Algorithm 1}: D\&C algorithm for solving
$\underset{U,V}{\min }\left\Vert X-UV^{T}\right\Vert _{L_{1}}$  \\ \hline
Given: $X=(\mathbf{x}_{1},\mathbf{x}_{2},\cdots ,\mathbf{x}_{n})\in
R^{d\times n}$ \\
Execute: \\
\ \ \ \ \ 1. \ \ Randomly initialize $U^{(0)}=(\mathbf{u}_{1}^{(0)},\mathbf{u
_{2}^{(0)},\cdots ,\mathbf{u}_{k}^{(0)})\in R^{d\times k}$,  $V^{(0)}=(\mathbf{v}_{1}^{(0)},\mathbf{v
_{2}^{(0)},\cdots ,\mathbf{v}_{k}^{(0)})\in R^{n\times k};$\vspace{2mm}\\
\ \ \ \ \ \ \ \ \ \ \ \textbf{For} \ $t\ =\ 1,2,\cdots ,convergence$ \\
\ \ \ \ \ 2. \ \ \ \ \ \ \ \ Let $\mathbf{u}_{i}^{(t)}=\mathbf{u}_{i}^{(t-1)}$,
\mathbf{v}_{i}^{(t)}=\mathbf{v}_{i}^{(t-1)}$, $i=1,2,\cdots k.$ \vspace{2mm}\\
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textbf{For} \ $i\ =\ 1,2,...,k$ \\
\ \ \ \ \ 3. \ \ \ \ \ \ \ \ \ \ \ \ \ \ Compute $E_{i}=X-\underset{j=1,j\neq i}{\overset{k
{\sum }}\mathbf{u}_{j}^{(t)}\mathbf{v}_{j}^{(t)T}$; denote the column and
row vectors of $E_{i}$ as $(\mathbf{e}_{1}^{i},\mathbf{e}_{2}^{i},\cdots
,\mathbf{e}_{n}^{i})$ and \\
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ $(\widetilde{\mathbf{e}}_{1}^{i},\widetilde
\mathbf{e}}_{2}^{i},\cdots ,\widetilde{\mathbf{e}}_{d}^{i})$,
respectively. \\
\ \ \ \ \ 4.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Let
$v_{ij}^{(t)}=Q(\mathbf{e}_{j}^{i},\mathbf{u}_{i}^{(t)})
$ for $j=1,2,\cdots ,n$ based on (\ref{et2}), and then update $\mathbf{v
_{i}^{(t)}=(v_{i1}^{(t)},v_{i2}^{(t)},\cdots ,v_{in}^{(t)})^{T}$. \\
\ \ \ \ \ 5.\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Let
$u_{ij}^{(t)}=Q(\widetilde{\mathbf{e}}_{j}^{i},\mathbf{v}_{i}^{(t)})$ for
$j=1,2,\cdots ,d$ based on (\ref{et2}), and then update $\mathbf{u
_{i}^{(t)}=(u_{i1}^{(t)},u_{i2}^{(t)},\cdots ,u_{id}^{(t)})^{T}$. \\
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textbf{End For} \\
\ \ \ \ \ 6.\ \ \ Update $U^{(t)}=(\mathbf{u}_{1}^{(t)},\mathbf{u
_{2}^{(t)},\cdots ,\mathbf{u}_{k}^{(t)})$, $V^{(t)}=(\mathbf{v}_{1}^{(t)}
\mathbf{v}_{2}^{(t)},\cdots ,\mathbf{v}_{k}^{(t)})$. \\
\ \ \ \ \ \ \ \ \ \ \ \textbf{End For} \\ \hline
\end{tabular}
\end{table*}

It is easy to deduce that $\mathbf{\Gamma }_{\mathbf{e},\mathbf{u}}$ is a
monotonically increasing sequence, and $a_{0}<0$, $a_{d}>0$. Thus, the
label $i_{\mathbf{e},\mathbf{u}}$ can be uniquely found from the sequence.

The above theorem gives a closed form solution for (\ref{e75}) under
positive vector $\mathbf{u}$. Next theorem further gives the solution of
(\ref{e75}) in general cases.

\begin{theorem}
For (\ref{e75}), denote

\begin{itemize}
\item the label set $\mathbf{I}_{\mathbf{u}}=(i_{1},i_{2},\cdots ,i_
\widehat{d}})(\widehat{d}\leq d)$: the labels of the nonzero elements of
\mathbf{u}$;

\item $\mathbf{\Upsilon }_{\mathbf{u}}=(u_{i_{1}},u_{i_{2}},\cdots ,u_{i_
\widehat{d}}})^T,\Psi _{\mathbf{e},\mathbf{u}}=(e_{i_{1}},e_{i_{2}},\cdots
,e_{i_{\widehat{d}}})^T$;

\item $\widetilde{\mathbf{\Upsilon }}_{\mathbf{u}}\mathbf{=}sign(\mathbf
\Upsilon }_{\mathbf{u}})\odot \mathbf{\Upsilon }_{\mathbf{u}}\mathbf{,}$
\widetilde{\Psi }_{\mathbf{e},\mathbf{u}}\mathbf{=}sign(\mathbf{\Upsilon }_
\mathbf{u}})\odot \Psi _{\mathbf{e},\mathbf{u}}$\normalsize, where
$sign(\cdot )$ is the signum function;
\end{itemize}
and the following closed form expression provides a global optimum of
(\ref{e75}):
\begin{equation}
Q(\mathbf{e},\mathbf{u}):=P(\widetilde{\Psi }_{\mathbf{e},\mathbf{u}},
\widetilde{\mathbf{\Upsilon }}_{\mathbf{u}
), \label{et2}
\end{equation}
where the function $P(\cdot,\cdot)$ is defined as (\ref{e8}).
\end{theorem}

We then consider (\ref{e7s}). First formalize it as
\begin{equation}
\underset{v}{\min }\ f_{\mathbf{w},\mathbf{e},\mathbf{u}}(v)=
\left\Vert \mathbf{w}\odot (\mathbf{e}-\mathbf{u
v)\right\Vert _{L_{1}}, \label{e13}
\end{equation
where $\mathbf{w}$, $\mathbf{e}$, $\mathbf{u}$ are all $d$-dimensional
vectors. Since
\begin{equation*}
\left\Vert \mathbf{w}\odot (\mathbf{e}-\mathbf{u}v)\right\Vert
_{L_{1}}=\left\Vert (\mathbf{w}\odot \mathbf{e})-(\mathbf{w}\odot \mathbf{u
)v)\right\Vert _{L_{1}},
\end{equation*
(\ref{e13}) can then be seen as a special case of (\ref{e75}) in the sense
that
\begin{equation*}
f_{\mathbf{w},\mathbf{e},\mathbf{u}}(v)=\ f_{\mathbf{w}\odot \mathbf{e
,\mathbf{w}\odot \mathbf{u}}(v) .
\end{equation*
It thus holds the following theorem based on Theorems 1 and 2.

\begin{theorem}
(\ref{e13}) is a convex optimization problem with closed form solution
\begin{equation}
Q(\mathbf{w}\odot \mathbf{e},\mathbf{w}\odot \mathbf{u}), \label{et3}
\end{equation}
where $Q(\cdot,\cdot)$ is defined as (\ref{et2}).
\end{theorem}

By virtue of the closed form solutions for the small optimization problems
(\ref{e7})/(\ref{e75}) and (\ref{e7s})/(\ref{e13}) given by Theorems 2 and
3, respectively, we can now construct fast algorithms for solving the
original large robust matrix factorization problems (\ref{e11}) and
(\ref{e12}).

\subsection{Fast algorithms for robust matrix factorization}

\begin{table*}
\begin{tabular}{l}
\hline \textbf{Algorithm 2}: D\&C algorithm for solving
$\underset{U,V}{\min }\left\Vert W\odot (X-UV^{T})\right\Vert _{L_{1}}$
\\ \hline \ \ \ \ \ 4.\ \ \ Let $v_{ij}^{(t)}=Q(\mathbf{w}_{j}\odot
\mathbf{e}_{j}^{i},\mathbf{w}_{j}\odot
\mathbf{u
_{i}^{(t)}) $ for $j=1,2,\cdots ,n$ based on
(\ref{et3}), and then update $\mathbf{v
_{i}^{(t)}=(v_{i1}^{(t)},v_{i2}^{(t)},\cdots ,v_{in}^{(t)})^{T}$. \\
\ \ \ \ \ 5.\ \ \ Let $u_{ij}^{(t)}=Q(\widetilde{\mathbf{w}}_{j}\odot
\widetilde{\mathbf{e}}_{j}^{i},\widetilde{\mathbf{w}}_{j}\odot
\mathbf{v}_{i}^{(t)})$ for $j=1,2,\cdots ,d$ based on (\ref{et3}), and then update $\mathbf{u
_{i}^{(t)}=(u_{i1}^{(t)},u_{i2}^{(t)},\cdots ,u_{id}^{(t)})^{T}$. \\
\hline
\end{tabular}
\end{table*}

We first consider the D\&C algorithm for the optimization model
(\ref{e11}). The main idea of our algorithm is to sequentially update each
element of $U$ and $V$. In specific, the algorithm iteratively updates
each element of $\mathbf{u}_{i}$ and $\mathbf{v}_{i}$ for
$i=1,2,\cdots,k$, with other $\mathbf{u}_{j}$s and $\mathbf{v}_{j}$s
($j\neq i$) fixed, in the following way:
\begin{itemize}
\item Update each element $v_{ij}$ ($j=1,2,\cdots,n$) of
$\mathbf{v}_{i}$ under fixed $\mathbf{u}_{i}$: the optimal value $v_{ij}$
is attained through the following closed form expression based on Theorem
2
$$v_{ij}=Q(\mathbf{e}_{j}^{i},\mathbf{u}_{i})=\arg
\underset{v_{ij}}{\min }\left\Vert
\mathbf{e}_{j}^{i}-\mathbf{u}_{i}v_{ij}\right\Vert _{L_{1}}, $$ where
$\mathbf{e}_{j}^{i}$ is the $j$-th column vector of the representation
error matrix
\begin{equation}
E_i=X-\underset{j\neq i}{\sum }\mathbf{u}_{j}\mathbf{v}_{j}^{T}.
\label{RE}
\end{equation}
\item Update each element $u_{ij}$ ($j=1,2,\cdots,d$) of
$\mathbf{u}_{i}$ under fixed $\mathbf{v}_{i}$: the optimal value of
$u_{ij}$ is achieved through
$$u_{ij}=Q(\widetilde{\mathbf{e}}_{j}^{i},\mathbf{v}_{i})=\arg
\underset{u_{ij}}{\min
}\left\Vert \widetilde{\mathbf{e}}_{j}^{i}-\mathbf{v}_{i}u_{ij}\righ
\Vert _{L_{1}}$$ based on Theorem 2, where
$\widetilde{\mathbf{e}}_{j}^{i}$ denotes the $j$-th row vector of $E_i$.
\end{itemize}
Through implementing the above iterations from $i=1$ to $k$, the low-rank
factorized matrices $U$ and $V$ can then be recursively updated until the
termination condition is satisfied. We embed the aforementioned D\&C
technique into Algorithm 1.

The D\&C algorithm for solving (\ref{e12}) is very similar to Algorithm 1,
the only difference is the updating of each element of $\mathbf{u}_{i}$
and $\mathbf{v}_{i}$, which is summarized as follows:
\begin{itemize}
\item Update each element $v_{ij}$ ($j=1,2,\cdots,n$) of
$\mathbf{v}_{i}$ under fixed $\mathbf{u}_{i}$: the optimal value $v_{ij}$
is solved through
\begin{eqnarray*}
v_{ij}&=&Q(\mathbf{w}_{j}\odot \mathbf{e}_{j}^{i},\mathbf{w}_{j}\odot
\mathbf{u
_{i})
\\&=&\arg \underset{v_{ij}}{\min
\left\Vert \mathbf{w}_{j}\odot (\mathbf{e}_{j}^{i}-\mathbf{u
_{i}v_{ij})\right\Vert _{L_{1}} \end{eqnarray*} based on Theorem 3, where
$\mathbf{w}_{j}$ is the $j$-th column vector of $W$, and
$\mathbf{e}_{j}^{i}$ is the $j$-th column vector of the representation
error matrix $E_i$ (defined as (\ref{RE})).

\item Update each element $u_{ij}$ ($j=1,2,\cdots,d$) of
$\mathbf{u}_{i}$ under fixed $\mathbf{v}_{i}$: the optimal value of
$u_{ij}$ is attained by
\begin{eqnarray*}
u_{ij}&=&Q(\widetilde{\mathbf{w}}_{j}\odot
\widetilde{\mathbf{e}}_{j}^{i},\widetilde{\mathbf{w}}_{j}\odot
\mathbf{v}_{i})\\&=&\arg \underset{u_{ij}}{\min
\left\Vert \widetilde{\mathbf{w}}_{j}\odot (\widetilde{\mathbf{e}}_{j}^{i}
\mathbf{v}_{i}u_{ij})\right\Vert _{L_{1}}
\end{eqnarray*}
based on Theorem 3, where $\widetilde{\mathbf{w}}_{j}$ denotes the $j$-th
row vector of $W$, and $\widetilde{\mathbf{e}}_{j}^{i}$ is the $j$-th row
vector of $E_i$.
\end{itemize}
Since the D\&C algorithm for solving (\ref{e12}) differs from Algorithm 1
only in steps 4 and 5, we only list these two steps of the algorithm in
Algorithm 2.

The remaining issues are then on how to appropriately specify the initial
$U$ and $V$ in step 1, and when to terminate the iterative process in
steps 2-6 of the proposed algorithms. In our experiments, we just randomly
initiated each element of $U$ and $V$, and the proposed algorithm
performed well in all experiments under such simple initialization
strategy. As for the termination of the algorithms, since the objective
function of (\ref{e11}) or (\ref{e12}) decreases monotonically throughout
the iterative process (see details in the next section), the algorithms
can reasonably be terminated when the updating extent
$\|U^{(t)}-U^{(t-1)}\|$ (or $\|V^{(t)}-V^{(t-1)}\|$) is smaller than some
preset small threshold, or the process has reached the pre-specified
number of iterations.

\subsection{Convergence and computational complexity}

We now discuss the convergence of the proposed algorithms. It should be
noted that in steps 4 and 5 of Algorithm 1/Algorithm 2, the global minimum
of the objective function of (\ref{e11})/(\ref{e12}) with respect to
$\mathbf{v}_{i}$ and $\mathbf{u}_{i}$ (with other $\mathbf{v}_{j}$s and
$\mathbf{u}_{j}$s fixed) is analytically obtained based on Theorem
2/Theorem 3, respectively, and thus in each of the iteration steps of the
algorithm, the objective function of the problem is monotonically
decreasing. Since it is evident that both objective functions of
(\ref{e11}) and (\ref{e12}) are lower bounded ($\geq 0$), the algorithm is
guaranteed to be convergent.

The computational complexity of Algorithm 1/Algorithm 2 is essentially
determined by the iterations between steps 4 and 5, i.e., the calculation
of the closed form solutions of $\mathbf{v}_{i}$ and $\mathbf{u}_{i}$. To
compute the global optimum for each element $v_{ij}$ of $\mathbf{v}_{i}$
($j=1,2,\cdots ,n$) in step 4 of the algorithm, the closed form expression
$P(\cdot,\cdot)$, as defined in Lemma 1, is utilized, which costs $O(d\log
d)$ computation to obtain the label set
$\mathbf{L}_{\mathbf{e},\mathbf{u}}$ by applying the well-known heap
sorting algorithm \cite{heap}, and costs at most $O(d)$ computation to
seek the label of the first nonzero element $i_{\mathbf{e},\mathbf{u}}$
from the sequence $\mathbf{\Gamma }_{\mathbf{e},\mathbf{u}}$. Altogether,
calculating the global optimum for each $v_{ij}$ needs around $O(d\log d)$
computational time. Updating the entire $\mathbf{v}_{i}$ thus requires
about $O(nd\log d)$ computational cost. It can similarly be deduced that
updating $\mathbf{u}_{i}$ in step 5 needs around $O(nd\log n)$
computational cost. The entire computational complexity of Algorithm
1/Algorithm 2 is thus about $O(k(nd\log d+nd\log n))\times T$, where $T$
is the number of iterations for convergence. That is, the computational
speeds of the proposed algorithms are approximately linear in both the
size and dimensionality of the input measurements $X$, as well as its
intrinsic rank $k$. Such computational complexity makes the use of the
proposed algorithms possible in large-scale $L_1$ norm matrix
factorization problems, as demonstrated in the following experiments.

\section{Experiments}

To evaluate the performance of the proposed D\&C algorithms on robust
matrix factorization, it was applied to various synthetic and real
problems with outliers and missing data. The results are summarized in the
following discussion. All programs were implemented under the Matlab 7.0
platform. The implementation environment was the personal computer with
Intel Core(TM)2 Quad Q9300@2.50 G (CPU), 3.25GB (memory), and Windows XP
(OS).

\subsection{Experiments on data with outliers}

Three series of experiments were designed to evaluate the performance of
the proposed Algorithm 1 on data with intrinsic outliers (for solving the
optimization model (\ref{e11})). The details are listed as follows:

\emph{Small synthetic experiment E1}: Containing $100$ synthetic
$30\times30$ matrices, each with intrinsic rank $3$. Each matrix was first
generated as a product $UV^T$, where $U$ and $V$ are independent $30\times
3$ matrices, whose elements are i.i.d. Gaussian random variables with zero
mean and unit variance; and then $10\%$ elements of the matrix were
randomly picked up and transformed into outliers by randomly assigning
them values in the range of [-40,40].

\emph{Large synthetic experiments E2,E3,E4}: Containing $3$ synthetic
$7000\times7000$ matrices, each with intrinsic rank $3$. Each was first
generated from the product $UV^T$, where $U$ and $V$ are independent
$7000\times 3$ matrices, whose elements are i.i.d. Gaussian random
variables with zero mean and unit variance, and then different extents of
outliers were assigned to randomly selected $10\%$ elements of the
original matrices, with ranges [-40,40], [-400,400], and [-4000,4000], in
E2, E3, and E4, respectively.

\emph{Face recognition experiments E5,E6}: The input data are composed by
$256$ face images, each with pixel size $192\times 168$, i.e., the matrix
is of the size $32256\times 256$. The images were first extracted from
subsets 1-4 of the Extended Yale B database \cite{Yale}, and then were
corrupted with $20\%$ and $50\%$ of dead pixels with either maximum or
minimum intensity values in E5 and E6, respectively. Typical images are
depicted in Figures \ref{f1} and \ref{f2}.

\begin{figure*}[t]
\begin{center}
\scalebox{0.8}[0.8]{\includegraphics[bb=295 240 390 640]{NYale1.eps}}
\end{center}
\caption{From top to bottom: Typical Yale B face images, the corresponding
images corrupted with $20\%$ outliers, and the faces reconstructed by the
SVD, the PAMI08, and the proposed D\&C methods, respectively.} \label{f1}
\end{figure*}

In each of these experiments, the original un-corrupted matrix, denoted as
$X$, is saved as ground truth for comparison purpose.

For comparison, $5$ of the current methods for low-rank matrix
factorization, including SVD, ICML06 \cite{ICML06}, PAMI08 \cite{Pami08},
CVPR05 \cite{CVPR05}, and CVPR10 \cite{CVPR10}, have also been utilized.
Except SVD, which need not be initialized, and ICML06, which requires the
SVD initialization \cite{ICML06}, all of the utilized methods employed the
similar initialization for each involved experiment. The rank $k$ was
preset as $3$ in E1-E4 and $20$ in E5 and E6 for all methods. The
performance comparison of these methods is shown in Table \ref{t1} (that
of E1 is shown as the average result over 100 experiments). In the table,
$/$ means that the corresponding method on the experiment could not be
completed in reasonable time. For easy observation, Figures \ref{f1} and
\ref{f2} demonstrate some of the original and reconstructed images in E5
and E6, respectively. The reconstruction is implemented by the product of
$\widetilde{U}\widetilde{V}^{T}$, where the low-rank matrices
$\widetilde{U}$ and $\widetilde{V}$ are the outputs of the corresponding
matrix factorization method.

\begin{figure*}[t]
\begin{center}
\scalebox{0.8}[0.8]{\includegraphics[bb=275 240 390 650]{NYale2.eps}}
\end{center}
\caption{From top to bottom: Typical Yale B face images, the corresponding
images corrupted with $50\%$ outliers, and the faces reconstructed by the
SVD, the PAMI08, and the proposed D\&C methods, respectively.} \label{f2}
\end{figure*}

The advantage of the proposed Algorithm 1, as compared with other utilized
methods, can evidently be observed from Table \ref{t1} in robust matrix
factorization calculation. Specifically, our method attains the highest
computational accuracy in all of the involved experiments. For Yale B
experiments E5 and E6, it is very interesting that some latent features
underlying the original faces can be extracted from the reconstructed
images, as clearly depicted in Figures \ref{f1} and \ref{f2}. Even more
interesting is that these reconstructions are obtained from the corrupted
but not the original images. The new method is thus potentially useful for
latent feature extraction from noisy measurements in real applications.
Another merit of our method is that it has stable performance on different
extents of outliers, which can evidently be observed in the E2-E4 results,
in which the reconstructed low-rank matrix attained by our method is
always extremely close to the ground truth. Although the computational
speed of the proposed algorithm is slower than the SVD and PAMI08 methods
in the experiments, considering that both SVD and PAMI08 are not designed
against the $L_1$ norm matrix factorization model (\ref{e11}), the
efficiency of the proposed method is still dominant in the methods against
(\ref{e11}), especially in large-scale cases.

\begin{table*}
\centering
\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|c|c|}
\hline
& \multicolumn{6}{|c|}{Computational time (s)} & \multicolumn{6}{|c|}{ Accuracy:\  $\frac
\left\Vert X-\widetilde{U}\widetilde{V}^{T}\right\Vert _{F}}{\left\Vert X\right\Vert _{F}}$\ (\cite{prec})}  \\
\hline\hline
E1 & $0.0045$ & $0.022$ & $\textbf{0.0014}$ & $0.835$ & $411.0$ & $0.048$ &
7.67$ & $7.64$ & $5.95$ & $0.0693$ & $0.0221$ &
\mathbf{3.57\times 10}^{-4}$ \\ \hline E2 & $\mathbf{137.31}$ & $/$ &
$139.06$ & $/$ & $/$ & $7612$ & $0.025$ & $/$ & $0.030$ & $/$ & $/$ &
$\mathbf{7.08\times 10}^{-16}$ \\ \hline E3 & $\mathbf{146.13}$ & $/$ &
$159.60$ & $/$ & $/$ & $6953$ & $3.91$ & $/$ & $3.24$ & $/$ & $/$ &
$\mathbf{2.04\times 10}^{-12}$ \\ \hline E4 & $\mathbf{119.85}$ & $/$ &
$189.54$ & $/$ & $/$ & $7279$ & $293.4$ & $/$ & $222.9$ & $/$ & $/$ &
$\mathbf{4.39\times 10}^{-14}$ \\ \hline E5 & $\mathbf{33.41}$ & $/$ &
$92.64$ & $/$ & $/$ & $7335$ & $0.124$ & $/$ & $0.117$ & $/$ & $/$ &
$\mathbf{0.0312}$ \\ \hline E6 & $\mathbf{59.90}$ & $/$ & $234.78$ & $/$ &
$/$ & $7275$ & $0.384$ & $/$ & $0.338$ & $/$ & $/$ & $\mathbf{0.0959}$ \\
\hline
\end{tabular}
\caption{The performance comparison of the $5$ current matrix
factorization methods and the proposed D\&C method in experiments E1-E6.
In each cell, the values from the left to the right refer to the SVD,
ICML06, PAMI08, CVPR05, CVPR10, and D\&C methods, respectively. The best
result in each experiment is highlighted. $X$ denotes the original
un-corrupted matrix (ground truth), and $\widetilde{U}$ and
$\widetilde{V}$ denote the outputs of the corresponding matrix
factorization method. $/$ means that the corresponding method on the
experiment could not be completed in reasonable time.} \label{t1}
\end{table*}

\subsection{Experiments on data with outliers and missing components}

We also implemented three series of experiments to evaluate the
performance of Algorithm 2 on data with intrinsic outliers and missing
components (for solving the optimization model (\ref{e12})). The details
are summarized as follows:

\emph{Small synthetic experiment E7}: Containing $100$ synthetic
$20\times30$ matrices, each with intrinsic rank $3$. Each matrix was first
generated as a product $UV^T$, where $U$ and $V$ are $20\times 3$ and
$30\times 3$ matrices, respectively, whose elements were generated from
the Gaussian distribution with zero mean and unit variance. Then $5\%$ of
the elements were selected at random and designated as missing by setting
the corresponding entry in the matrix $W$ to zero. To simulate outliers,
uniformly distributed noises over $[-5, 5]$ were additionally added to
$10\%$ of the elements of the matrix.

\emph{Large synthetic experiment E8}: Containing one synthetic
$10000\times700$ data matrix, with intrinsic rank $40$. The matrix was
first generated as a product $UV^T$, where $U$ and $V$ are $10000\times
40$ and $700\times 40$ matrices, randomly generated from the Gaussian
distribution with zero mean and unit variance. Then $20\%$ and $10\%$ of
the elements were selected at random and designated as missing components
and outliers (randomly chosen in $[-5, 5]$), respectively.

\begin{table*}
\centering
\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|}
\hline
& \multicolumn{5}{|c|}{Computational time (s)} & \multicolumn{5}{|c|}{Accuracy: $\frac
\left\Vert X-\widetilde{U}\widetilde{V}^{T}\right\Vert _{F}}{\left\Vert X\right\Vert _{F}}$ (E7,E8),\ \ $\frac
\left\Vert W\odot (X-\widetilde{U}\widetilde{V}^{T})\right\Vert
_{F}}{\left\Vert W\odot X\right\Vert _{F}}$ (E9-E11)} \\ \hline\hline
E7 & $61.50$ & $24.02$ & $3.53$ & $1781$ & $\mathbf{0.221}$ & $6.5864$ &
15.0713$ & $0.3274$ & $0.3051$ & $\mathbf{0.2626}$ \\ \hline E8 & $134070$
& $/$ & $/$ & $/$ & $\mathbf{90766}$ & $0.0130$ & $/$ & $/$ & $/ $ &
$\mathbf{4.9173\times 10}^{-19}$ \\ \hline E9 & $\mathbf{2.9447}$ &
$127.37$ & $24.93$ & $132.79$ & $10.071$ & $0.4539$ & $0.7749$ & $0.0426$
& $0.0405$ & $\mathbf{0.0031}$ \\ \hline
E10 & $202.49$ & $/$ & $13788$ & $/$ & $\mathbf{61.917}$ & $0.4462$ & $/$ &
0.3385$ & $/$ & $\mathbf{0.0765}$ \\ \hline
E11 & $224.91$ & $/$ & $718.82$ & $/$ & $\mathbf{70.950}$ & $0.3498$ & $/$ &
0.0903$ & $/$ & $\mathbf{0.0151}$ \\ \hline
\end{tabular}
\caption{The performance comparison of the $4$ current matrix
factorization methods and the proposed D\&C method in experiments E7-E11.
In each cell, the values from the left to the right refer to the WLRA,
Wiberg, CVPR05, CVPR10, and D\&C methods, respectively. The best result in
each experiment is highlighted. $X$ denotes the original un-corrupted
matrix, and $\widetilde{U}$ and $\widetilde{V}$ denote the outputs of the
corresponding matrix factorization method. $/$ means that the
corresponding method on the experiment could not be completed in
reasonable time.} \label{t2}
\end{table*}

\emph{Structure from motion experiments E9,E10,E11}: The structure from
motion (SFM) problem can be posed as a typical low-rank matrix
approximation task \cite{CVPR10,CVPR05}. In this series of experiments, we
employ two well known SFM data sequence, the dinosaur sequence, available
at http://www.robots.ox.ac.uk/\~{}vgg/, and the pingpong ball sequence,
available at http://vasc.ri.cmu.edu/idb/, for substantiation. The entire
dinosaur and pingpong sequence contain projections of $4983$ and $839$
points tracked over $36$ and $226$ frames, respectively, composing
$4983\times 72$ and $839\times 452$ SFM matrices correspondingly. Each
matrix contains more than $80\%$ missing data due to occlusions or
tracking failures. As considering robust approximation in this work, we
further include outliers uniformly generated from $[-5000, 5000]$ in
$10\%$ components of two matrices to form the input data of the
experiments E10 and E11, respectively\footnote{The components of both SFM
matrices are also approximately located in $[-5000, 5000]$.}. Since some
other robust matrix factorization methods cannot be made available at such
data scales (see Table \ref{t2}), we further picked up $336$ points from
the dinosaur sequence to form a smaller $336\times 72$ matrix, and also
added $10\%$ outliers to it to compose the input measurements of the
experiment E9.

As the experiments E1-E6, the original un-corrupted matrix, denoted as
$X$, is saved as ground truth in each experiment for comparison purpose.

Four current low-rank matrix factorization methods were employed for
comparison. They include the WLRA \cite{ICML03} and Wiberg methods
\cite{IJCV07}, which are typical methods designed for the $L_2$ norm model
(\ref{e2}), the CVPR05 \cite{CVPR05} and CVPR10 \cite{CVPR10} methods,
which are current state-of-the-art methods for solving the $L_1$ norm
model (\ref{e12}). All of the utilized methods adopted similar
initialization for each of the involved experiments. The performances of
these methods are compared in Table \ref{t2} (that of E7 is depicted as
the average result over $100$ experiments).

The advantage of the proposed D\&C method is evident based on Table
\ref{t2}, in terms of both computational speed and accuracy. On one hand,
our algorithm always attains the most accurate reconstruction of the
original data matrix by the product of the obtained low-rank matrices
$\widetilde{U}$ and $\widetilde{V}$, and on the other hand, the
computation cost of the proposed algorithm is the smallest of all employed
methods in most experiments (except being the second smallest in E9). It
is very impressive that the computational speed of the proposed algorithm
is even faster than the WLRA and the Wiberg methods, which are constructed
for $L_2$ norm matrix factorization model, in most cases (except slower
than WLRA in E9). Considering the difficulty of solving the $L_1$ model
due to its non-convexity and non-smoothness, the efficiency of the
proposed method is more prominent.

\section{conclusion}

In this paper we have tried a new methodology, the divide and conquer
technique, for solving the $L_1$ norm low-rank matrix factorization
problems (\ref{e11}) and (\ref{e12}). The main idea is to break the
original large problems into smallest possible sub-problems, each
involving only one unique scalar parameter. We have proved that these
sub-problems are convex, and have closed form solutions. Inspired by this
theoretical result, fast algorithms have been constructed to handle the
original large problems, entirely avoiding the complicated numerical
optimization for the inner loops of the iteration. In specific, we have
proved that the computational complexity of the new algorithms is
approximately linear in both the size and dimensionality of the input
data, which enables the possible utilization of the new algorithms in
large-scale $L_1$ norm matrix factorization problems. The convergence of
the new algorithms have also been theoretically validated. Based on the
experimental results on a series of synthetic and real data sets, it has
been substantiated that the proposed algorithms attain very robust
performance on data with outliers and missing components. As compared with
the current state-of-the-art methods, our algorithms exhibit notable
advantages in both computational speed and accuracy. The experimental
results also illuminate the potential usefulness of the proposed
algorithms on large-scale face recognition and SFM applications.

redpajama_set_name: RedPajamaArXiv


Tin size: 6⅝ x 5 x ⅝ in.
After serving two years as a soldier, Colin Gill returned to Arras, France, in November 1918 as an official war artist. This painting, one of his smaller works, shows three soldiers reporting on the accuracy of artillery fire.


text:
import datetime
from typing import Any, Callable, Dict, Optional, TypeVar

from azure.core.exceptions import (
    ClientAuthenticationError,
    HttpResponseError,
    ResourceExistsError,
    ResourceNotFoundError,
    ResourceNotModifiedError,
    map_error,
)
from azure.core.pipeline import PipelineResponse
from azure.core.pipeline.transport import HttpResponse
from azure.core.rest import HttpRequest
from azure.core.tracing.decorator import distributed_trace
from azure.core.utils import case_insensitive_dict
from azure.mgmt.core.exceptions import ARMErrorFormat

from .. import models as _models
from ..._serialization import Serializer
from .._vendor import _convert_request, _format_url_section

T = TypeVar("T")
ClsType = Optional[Callable[[PipelineResponse[HttpRequest, HttpResponse], T, Dict[str, Any]], Any]]

_SERIALIZER = Serializer()
_SERIALIZER.client_side_validation = False

def build_get_request(
    resource_group_name: str,
    autoscale_setting_name: str,
    subscription_id: str,
    *,
    timespan: str,
    interval: datetime.timedelta,
    metric_namespace: str,
    metric_name: str,
    aggregation: str,
    **kwargs: Any
) -> HttpRequest:
    _headers = case_insensitive_dict(kwargs.pop("headers", {}) or {})
    _params = case_insensitive_dict(kwargs.pop("params", {}) or {})

    api_version = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01"))  # type: str
    accept = _headers.pop("Accept", "application/json")

    # Construct URL
    _url = kwargs.pop(
        "template_url",
        "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Insights/autoscalesettings/{autoscaleSettingName}/predictiveMetrics",
    )  # pylint: disable=line-too-long
    path_format_arguments = {
        "subscriptionId": _SERIALIZER.url("subscription_id", subscription_id, "str", min_length=1),
        "resourceGroupName": _SERIALIZER.url(
            "resource_group_name", resource_group_name, "str", max_length=90, min_length=1
        ),
        "autoscaleSettingName": _SERIALIZER.url("autoscale_setting_name", autoscale_setting_name, "str"),
    }

    _url = _format_url_section(_url, **path_format_arguments)

    # Construct parameters
    _params["timespan"] = _SERIALIZER.query("timespan", timespan, "str")
    _params["interval"] = _SERIALIZER.query("interval", interval, "duration")
    _params["metricNamespace"] = _SERIALIZER.query("metric_namespace", metric_namespace, "str")
    _params["metricName"] = _SERIALIZER.query("metric_name", metric_name, "str")
    _params["aggregation"] = _SERIALIZER.query("aggregation", aggregation, "str")
    _params["api-version"] = _SERIALIZER.query("api_version", api_version, "str")

    # Construct headers
    _headers["Accept"] = _SERIALIZER.header("accept", accept, "str")

    return HttpRequest(method="GET", url=_url, params=_params, headers=_headers, **kwargs)

class PredictiveMetricOperations:
    """
    .. warning::
        **DO NOT** instantiate this class directly.

        Instead, you should access the following operations through
        :class:`~$(python-base-namespace).v2022_10_01.MonitorManagementClient`'s
        :attr:`predictive_metric` attribute.
    """

    models = _models

    def __init__(self, *args, **kwargs):
        input_args = list(args)
        self._client = input_args.pop(0) if input_args else kwargs.pop("client")
        self._config = input_args.pop(0) if input_args else kwargs.pop("config")
        self._serialize = input_args.pop(0) if input_args else kwargs.pop("serializer")
        self._deserialize = input_args.pop(0) if input_args else kwargs.pop("deserializer")

    @distributed_trace
    def get(
        self,
        resource_group_name: str,
        autoscale_setting_name: str,
        timespan: str,
        interval: datetime.timedelta,
        metric_namespace: str,
        metric_name: str,
        aggregation: str,
        **kwargs: Any
    ) -> _models.PredictiveResponse:
        """get predictive autoscale metric future data.

        :param resource_group_name: The name of the resource group. The name is case insensitive.
         Required.
        :type resource_group_name: str
        :param autoscale_setting_name: The autoscale setting name. Required.
        :type autoscale_setting_name: str
        :param timespan: The timespan of the query. It is a string with the following format
         'startDateTime_ISO/endDateTime_ISO'. Required.
        :type timespan: str
        :param interval: The interval (i.e. timegrain) of the query. Required.
        :type interval: ~datetime.timedelta
        :param metric_namespace: Metric namespace to query metric definitions for. Required.
        :type metric_namespace: str
        :param metric_name: The names of the metrics (comma separated) to retrieve. Special case: If a
         metricname itself has a comma in it then use %2 to indicate it. Eg: 'Metric,Name1' should be
         **'Metric%2Name1'**. Required.
        :type metric_name: str
        :param aggregation: The list of aggregation types (comma separated) to retrieve. Required.
        :type aggregation: str
        :keyword callable cls: A custom type or function that will be passed the direct response
        :return: PredictiveResponse or the result of cls(response)
        :rtype: ~$(python-base-namespace).v2022_10_01.models.PredictiveResponse
        :raises ~azure.core.exceptions.HttpResponseError:
        """
        error_map = {
            401: ClientAuthenticationError,
            404: ResourceNotFoundError,
            409: ResourceExistsError,
            304: ResourceNotModifiedError,
        }
        error_map.update(kwargs.pop("error_map", {}) or {})

        _headers = kwargs.pop("headers", {}) or {}
        _params = case_insensitive_dict(kwargs.pop("params", {}) or {})

        api_version = kwargs.pop("api_version", _params.pop("api-version", "2022-10-01"))  # type: str
        cls = kwargs.pop("cls", None)  # type: ClsType[_models.PredictiveResponse]

        request = build_get_request(
            resource_group_name=resource_group_name,
            autoscale_setting_name=autoscale_setting_name,
            subscription_id=self._config.subscription_id,
            timespan=timespan,
            interval=interval,
            metric_namespace=metric_namespace,
            metric_name=metric_name,
            aggregation=aggregation,
            api_version=api_version,
            template_url=self.get.metadata["url"],
            headers=_headers,
            params=_params,
        )
        request = _convert_request(request)
        request.url = self._client.format_url(request.url)  # type: ignore

        pipeline_response = self._client._pipeline.run(  # type: ignore # pylint: disable=protected-access
            request, stream=False, **kwargs
        )

        response = pipeline_response.http_response

        if response.status_code not in [200]:
            map_error(status_code=response.status_code, response=response, error_map=error_map)
            error = self._deserialize.failsafe_deserialize(_models.AutoscaleErrorResponse, pipeline_response)
            raise HttpResponseError(response=response, model=error, error_format=ARMErrorFormat)

        deserialized = self._deserialize("PredictiveResponse", pipeline_response)

        if cls:
            return cls(pipeline_response, deserialized, {})

        return deserialized

    get.metadata = {"url": "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Insights/autoscalesettings/{autoscaleSettingName}/predictiveMetrics"}  # type: ignore

redpajama_set_name: RedPajamaGithub


Canning jars are used for many things... preserving fruits and vegetables, holding pencils, storing nuts and bolts and serving cocktails! With warm weather on it's way, I was inspired to make a few ATC sized recipe cards using the GSL Mini Canning Jars.
For inside the jars, I selected a sheet of DCWV Snack Stack scrapbook paper and found the perfect Basic Grey Life of the Party paper to use for the straws.
The mini canning jars come in two pieces. I painted both the jar outline and the lid overlay with a base coat of white gesso.
The jar outline then got a coat of Lumiere pearl white paint while the lid overlay got a coat of Martha Stewart Glitter paint in Sugar Cube.
The DCWV paper I chose for the jar's contents featured some glistening condensation droplets which I accentuated with dots of Glossy Accents.
The background paper I chose was Bo Bunny's Double Dot Vintage. I cut the paper to fit a GSL Chunky ATC Blank and inked the edges to give it a bit of aging.
Here's the jar assembled. The mini canning jar fits the ATC perfectly. I cut a few pieces of fruit from the same Snack Stack paper pack and cut a few plastic sword cocktail picks to fit the project.
The recipes were printed out and glued into the back.
This was a simple and fun project. A great way to share some favorite recipes!
Learn how to get over a hangover with Detoxicated supplements- it's what I use, for more information you can check out their website.
Messing around at being creative!
A card for all occasions . . .
An Attache for Dad . . .


Jamak dijumpai, khususnya pada sektor perkebunan, adanya pembebanan berupa catu beras. Dengan segala macam kondisi yang ada di lapangan, pada umumnya perusahaan perkebunan memberikan benefit in kind kepada karyawannya berupa beras. Permasalahan kemudian timbul, apakah pembebanan catu beras ini dapat dikurangkan secara fiskal.
Menarik untuk membaca majalah Inside Tax Edisi Khusus 2015-2016, khususnya pada kolom pengamat Enny Sri Hartati.
Beberapa hari terakhir media sosial dihebohkan dengan diblokirnya situs layanan streaming berbayar Netflix. Telkom, sebagai ISP pertama yang melakukan pemblokiran ini, beralasan bahwa Netflix mengandung unsur pornografi dan tidak memenuhi regulasi di Indonesia. Namun ada satu alasan penting yang luput hampir sebagian besar dari kita semua, alasan perpajakan.
Transfer pricing has emerged as one of the most important issue worldwide especially in taxation. Transfer pricing has been accused as the main tools to avoid tax in developed and developing countries by shifting income to lower tax rate countries so the company will save the tax expense globally. Realizing this matter, many countries have developed their transfer pricing regulation to minimize their tax leakage and maintain their nation interest for their nation welfare.
OECD TP guideline as the main source of the local TP regulation across worldwide, has delineated 5 main methods to test the arm length principle in controlled transaction i.e. TNMM, Profit Split Method, Cost Plus Method, Resale Price Method, and CUP Method. The main principle for those methods are comparison of rate of return across firms. Basically the rate of return from independent transaction is imputed to the controlled transaction in accordance to find the arm length amount of affiliated transaction.
Theoretically, the economic rate of return in market are equalized in long run in competitive market condition, nevertheless TP methodologies use accounting rate of return to substitute the economic rate of return although those rate of return concept is significantly different and can not interchangeable. The calculation of economics profit reflects the actual timing of investment and incorporates all cost including the cost of equity capital. The economic profit rate is defined as the rate that equates the discounted present value of forecasted after tax free cash flow generated by given investment project with the initial outlays required.
Accounting analysis only present a performance indicator for short period of time, therefore firms generally do not maximize their accounting rate of return because that effort do not yield highest possible return for shareholder. As the consequence, there are no enough argumentation and theory to use profit level indicator across firms as a basis to determine arms length PLI for affiliated companies.
CPM and TNMM are indirect method that is used in determining the arms length value of the controlled transaction. Those methods are applied by using net income as the basis of profit level indicator. Some ratio that is frequently used are operating profit to sales or total cost, gross profit to operating expense (berry ratio) etc. The arm length principle for this method is applied by comparing the independent company ratio to tested party ratio and use the difference as the basis in determining the arms length value.
Those ratio that is used in CPM and TNMM is accounting rate of return that theoretically different with the economic rate of return. We can only equalize, across the companies, the economic rate of return (not accounting rate of return) in competitive market and only in long term period. For those reason, that's way there is no evidence to expect firms to earns the same accounting rate of return in applying arms length principle in controlled transaction.
CP and RP methods are include in direct methods in TP regulation. Basically these two methods use the same profit level indicator i.e. gross profit, but different in the application. CP use cost of goods sold (COGS) as the basis (mark up) but RP use sales of the reseller as the basis (gross profit margin).
As previously noted, there is no reason to expect gross margin or mark up to equalized across firms, therefore the application of arms length principle by using mark up/gross margin from independent transaction to controlled transaction, can not be justified.
This method is the most direct method and OECD's most favorable method as declared on their TP Guideline. This method compare sales of the independent transaction directly to sales in the controlled transaction. Hence, the standard of comparability for this method is very high as compared to others methods.
For this method, the sales of tangible goods and service of independent transaction may or may not be equalized to the affiliated transaction depending on the degree of market competitiveness. When the companies operate in truly competitive market, the CUP method is accepted in the economic principle, conversely when the market is imperfectly competitive, the CUP method can not be justified. The main problem today is the difficulties in finding the pure product that is traded in competitive market. Competitive market always require several prerequisite, e.g. homogeneity of product, relatively ease in entering the market, symmetric information between buyer and seller, and ease in switching buyer or seller.


text:
Q: Glassfish Form Based security get user info I configured the GlassFish JDBC realm with form based authentication in my Java EE app so, everything is ok.
But I want to get the user's info (user_id) and I want to keep it in a list during his session. After his session is timed out or a log out occurred, I will remove it from this list.
Should I change the auth method?

A: Unfortunately the Java EE security APIs are not rich enough to provide detailed info about the user that is logged-in.
The only thing you can ask for is the name that the user used to login. You can do this via HttpServletRequest#getUserPrincipal#getName or it's alternative HttpServletRequest#getRemoteUser.
There are a few workarounds:

*

*In a Servlet Filter, check if this "list" you talk of is empty and either of the above methods returns a non null value. If this condition holds, query your user details manually based on the username and put them into this "list". (I'm not really sure why you specifically use a list for this, but that aside)

*Indeed change the auth method to a programmatic variant. This means you build your own form, dialog, or whatever. Then in your backing code (backing bean if using JSF, otherwise a Servlet or whatever) load the user details, and call HttpServletRequest#login with the username from those details. If this call succeeds immediately put your extended user info in your "list" again.

*(advanced method) Use a custom auth module (e.g. via JASPIC) and let this auth module delegate to code in your application. This application based code then returns the username and roles to the container and simultaneously puts the user details into the HTTP session. The advantage of this method is that you have the user login/load code in one place, and it's also done once. With the JDBC realm the code (query) is in two places and is also done twice.
I suggest trying option 1 or 2 first. If you want to pursue the advanced method, check out http://jdevelopment.nl/open-source/java-ee-kickoff-app for an example.
If it bothers you that Java EE doesn't have an easier and more powerful mechanism to do this out of the box, please consider voting for this issue: https://java.net/jira/browse/JAVAEE_SPEC-9

redpajama_set_name: RedPajamaStackExchange


text:
Q: Why is that the same equation with different x values produces drastically different round-off errors? (1 + 1/n)^n approximates e^1.
Case 1: When n is equally spaced between 10^4 and 10^9 with 10000 different numbers, linspace(10.^4, 10.^9, 10000) (Done in Matlab). Here's the graph:

Case 2: When n is in power of 2, i.e. 2^0, 2^1, 2^2..... Here's the graph:

I just started to learn numerical analysis, so this really puzzles me.
I am wondering what's the logic behind it. I understand that 1 + 1/n can't be represented correctly in floating point number, so when calculating there would be error like this: 1 + 1/n + δ. But why is that the 2 graphs are so different though? Case 1, the graph fluctuates drastically between 10^8 to 10^9. But in case 2, from 10^8 to 10^9, it's a straight line. And starting from 10^15, the round-off errors are exponentially increasing..... why?
I should note that the calculation is done in 16 digits of precision. In 32 digits of precision, both cases produce straight line. But I would like to know why is that in 16 digits of precision, things are so different.

A: The $δ$ occurs from rounding $1+\frac1n$ to the mantissa length. As such, $2^{52}δ$ is the distance of $\frac{2^{52}}n$ to the next integer, thus is a number between $\pm2^{-53}$. With $\mu=2^{-52}$ the machine number $=$ distance between floating point numbers in $[1,2]$, this can be summarized as $|δ|\le\fracμ2$.
This then leads to the main error contributions $-\frac1{2n}$ and $nδ$ in the computed result as in this answer to your previous question.
Now one can make out several special cases

*

*$δ=0$ if $1+1/n$ can be expressed exactly as binary number, requiring $n=2^k$, $k\le 52$. Then the relative error is, for $k>26$, also exactly $-\frac1{2n}$, leading to the straight line in the second loglog plot.

*$δ>0$ in such a way that $1+\frac1n+δ=e^{\frac1n}$ exactly or with a very small error. Then $(1+\frac1n+δ)^n=e$ also either exactly or with an unusually small error. Using $\frac1n+δ=2^{-52}m$ to get $m=[\frac{2^{52}}n]$ and $n=\lceil\frac1{\ln(1+2^{-52}m)}\rceil$ in an iteration to get such special $n$ from a given start point. Just one such iteration starting from a geometric sampling of $10^4+1$ numbers between $10^7$ and $10^{11}$ gives the following plot comparing the original error and the error of the optimized near-by integer.

Exceptionally small errors found within this plot are at
n=  81959632 : err[n]= 8.30669e-13, 1/(2n)= 6.10056e-09
n=  92214671 : err[n]= 4.14113e-12, 1/(2n)= 5.42213e-09
n= 269153484 : err[n]= 9.54792e-14, 1/(2n)= 1.85768e-09
n= 374282918 : err[n]= 7.42517e-13, 1/(2n)= 1.33589e-09
n=2664404105 : err[n]= 4.04121e-14, 1/(2n)= 1.87659e-10
n=9323952572 : err[n]= 1.11022e-15, 1/(2n)= 5.36253e-11

*As for $n>2^{26}$ one gets $m<2^{26}$, in the floating point calculation only the first two terms of the logarithm series expansion are effective, thus $\frac1{\ln(1+2^{-52}m)}\approx\frac{2^{52}}{m-2^{-53}m^2}\approx\frac{2^{52}}m+0.5+2^{-54}m$, so that one can simplify the iteration to $m=[\frac{2^{52}}{n}]$, $n=\lceil 0.5+\frac{2^{52}}m\rceil$, giving a similar plot.
As can be seen, this "optimization" for the most part gives samples where $|δ|$ is close to $\frac1{2n^2}$ or smaller, so that the theoretical error terms dominate the floating point errors, the relative errors accumulate closely around the line $\frac1{2n}$.


This time I want to draw your attention to 3.1 Phillip Lim Pre-Fall season's collection what is all about functional women's clothes. The following pre-collection consists of pragmatic, commercial clothing sets with an American sportswear and suiting touches. You are going to see sport-inspired separates, functional skirts, feminine blouses, unfussy frocks, wool pleated pants and many other eye-catching clothes. What I love about his creations then it's simplicity with bright details. All in all, 3.1 Philip Lim pre-collection is still urban and functional. I personally love the feminine aesthetic that looks relaxed and charming.
The tailored jacquard floral bomber is tucked in mannish trousers. That's a pretty outfit for those ladies who want something modern to wear at the office.
Keep it cool and sophisticated with the following 1990's trend. Today I bring you 3.1 Phillip Lim women's backpacks which feature designer's beautiful everyday classic details, accents and sense of madness. I think it's the right time to fall in this qualitative, functional accessory, which is cool, chic, easy and elegant to wear. Thanks to these essentials you will get that unique, 1990's inspired update. The following collection of stunning bags comes with small and large models with that special school vibe, which takes us back in those nineties fashion. I have scored the web finding only the best pieces which will look good with your everyday apparel. These options will be ideal accessories for you to try on from Mondays to Fridays. From the very first sight we can surely say that these styles are really practical and sustainable. So, if you are looking for something classic and old-school inspired, then try one of these goodies.
3.1 Phillip Lim Pashli black version with signature zippered style. Love the ridged leather and exposed zips at the front. It has adjustable shoulder straps and rolled top handle.
It's about time to view 3.1 Phillip Lim Spring-Summer collection of women's shoes and today we are going to observe this timeless and practical footwear lookbook. My favorite one is MORGAN High Top sneakers in black and white with black ink print on the sides, this model is extremely practical and can be worn with your airy summer dresses or cool skinnies. The other pair is the same MORGAN High Top sneakers, but this time it is totally black. The FLOREANA open toe lace-up bootie come in beige and black variations, these designs can be worn with your favorite skirt and pretty blouse. The last one is CRISTOBAL closed toe sling-back sandals which come in pale pink and black colors. As you can see, 3.1 Phillip Lim is for practicality and comfort.
3.1 Phillip Lim has really great Spring-Summer collection of leather bags, which are feminine, practical and versatile. Here are presented Wednesday medium Boston satchel with charms in sandy color (exclusive one), Wednesday medium Boston satchel in ultramarine, black, black and white (black ink print), Wednesday Large Boston satchel and eye-catching Wednesday Flap shoulder bag. The shapes of the presented bags are quite simple, while the squared top handles look timeless and interesting. All in all, the spring features versatile bags that can be worn at work and special occasions.
Classy tomboy style features in the latest 3.1 Phillip Lim Autumn-Winter collection, which is inspired by designer's imaginary fall muse with a name and an identity: Soleil, who is a fun and culturally curious woman. The next season comes with eye-catching collage prints, colored patchwork shearlings, exaggerated proportions, mix of cartoon inspired colors, slouchy tailoring and oversize knits. Models appeared on the runway sporting slouchy pants, shearling coats, baggy trench-coats, bomber jacket, jean jackets, ruffled sweaters and chunky turtlenecks, classic boxy denim jackets, multicolored coats and stand-out lace-up boots. The color palette of the show features bright pastels and deep colors, navy, khaki, gray and black. All in all, the cold season comes with relaxed and boyish appeal, which makes these clothes look unique and individual.
Exaggerated luxury of menswear beauty is seen in the latest 3.1 Phillip Lim Autumn-Winter collection's runway show. We see here leather outerwear and leather lounge pants, oversize shirt-jackets, horse-print sweatshirts, sleek denim tailoring, slim riding trousers, raw denim lounge pants and rustic cowboy boots. The Fall season seems to be a bit western and cowboy inspired, as we see easy and comfortable modern clothes. My personal favorites from the show are curly mohair twill parka capes and bulky knitted turtlenecks. So, I hope you like those Wild West midnight cowboys the same as me.
3.1 Phillip Lim latest pre-Fall colelction is Night Club inspired. This collection was inspired by Berlin (Germany), where is felt relaxed club culture, urban landscape where classic buildings harmonize with glass skyscrapers. The rave culture was Lim's main inspiration, that's why we see light and relaxed silhouettes. I personally love those pantsuits which can be easily pulled on with sneakers and boat-shoes, as well as banana pants, loose-fit tops, biker leather jackets and eye-catching sweatshirts. So, the next pre-fall comes with whimsical vibe and abstract motifs.
Here is a fresh look into 3.1 Phillip Lim Holiday collection of women's modern and practical garments. These gorgeous looks will look amazing on you at the Christmas party. Here you will find amazing off white sulpted coats with raw edge leather lapels, black sleeveless zip jackets, long sleeve and metallic striped pullovers, leather trousers, sleeveless knit and rabbit fur vests, shell shirts, leather peplum flare skirts, striped pullovers, oversized double pleated wide leg trousers, pea green sleeveless jumpsuits with embellished collars, burnt orange slim single breasted blazers with raw edge lapels, green rabbit fur bomber jackets and many other amazing designs. So, if you are in search of something elegant but street style inspired, then 3.1 Phillip Lim is what you really need for these holidays.
Phillip Lim presented his label 3.1 Phillip Lim spring-summer collection's runway show during New York Fashion Week. I like that solid urban basic touch in each of the presented stark silhouette looks. Designer said he was feeling "very elemental" for spring, so you will see here boxy silhouettes, minimalism touch. Models appeared in kimono sleeve boxy jackets, A-line dresses, knee-length skirts, wide-leg cuffed trousers, vests, voluminous tops, bomber jackets and sweaters in light blue, bleached denim motorcycle jackets, carryalls, monk-strap loafers and studded hiking sandals.
Love that mineral palette and psychedelic patterns of new summer collection. Here you will find his take on the future, as we see iridescent pieces paired with spring basics.